<?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>217335</bug_id>
          
          <creation_ts>2020-10-05 13:55:33 -0700</creation_ts>
          <short_desc>Promote WKWebView media playback SPI to API</short_desc>
          <delta_ts>2020-10-09 14:45:59 -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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1694838</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-05 13:55:33 -0700</bug_when>
    <thetext>Various WKWebView SPI related to playing/pausing video would be useful as API instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694840</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-05 13:56:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/63406100&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694848</commentid>
    <comment_count>2</comment_count>
      <attachid>410557</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-05 14:13:59 -0700</bug_when>
    <thetext>Created attachment 410557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695042</commentid>
    <comment_count>3</comment_count>
      <attachid>410557</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-05 22:51:12 -0700</bug_when>
    <thetext>Comment on attachment 410557
Patch

I believe this needs to go through the internal API review channels, but I have some initial feedback:
It&apos;s not clear what the difference between suspendAllMediaPlayback and pauseAllMediaPlayback is.
Do we also want a way to query whether there is media playback or presentations, and if it is paused or resumed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695052</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-06 00:35:05 -0700</bug_when>
    <thetext>I agree with Alex, we probably want to expose whether there is media playback so that the app can react and decide to pause.
MacOS Safari is for instance displaying an audio icon when a page is playing, it would be a useful addition for other apps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695154</commentid>
    <comment_count>5</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-06 08:26:26 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 410557 [details]
&gt; Patch
&gt; 
&gt; I believe this needs to go through the internal API review channels, but I
&gt; have some initial feedback:

I kicked off the internal API Review Process before uploading this, and it is my understanding that it is ok to start patch review while that is happening.

&gt; It&apos;s not clear what the difference between suspendAllMediaPlayback and
&gt; pauseAllMediaPlayback is.

Noted, I can clarify that in the abstract.

&gt; Do we also want a way to query whether there is media playback or
&gt; presentations, and if it is paused or resumed?

That is a good idea. This may be better in another patch. I filed rdar://70000262 to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695202</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-06 10:21:14 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #5)
&gt; (In reply to Alex Christensen from comment #3)
&gt; &gt; Comment on attachment 410557 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I believe this needs to go through the internal API review channels, but I
&gt; &gt; have some initial feedback:
&gt; 
&gt; I kicked off the internal API Review Process before uploading this, and it
&gt; is my understanding that it is ok to start patch review while that is
&gt; happening.
Yep, that&apos;s fine.  I just didn&apos;t see that.

&gt; &gt; Do we also want a way to query whether there is media playback or
&gt; &gt; presentations, and if it is paused or resumed?
&gt; 
&gt; That is a good idea. This may be better in another patch. I filed
&gt; rdar://70000262 to track this.
I think they should be done at the same time.  It is very strange to add an API to toggle something without being able to see what the toggle state is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695293</commentid>
    <comment_count>7</comment_count>
      <attachid>410557</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-10-06 13:40:55 -0700</bug_when>
    <thetext>Comment on attachment 410557
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Change stopAllMediaPlayback to be more aptly named
&gt; +        pauseAllMediaPlayback.

I&apos;m not sure about this. I think &quot;pause&quot; implies playback can be started again, but from the app&apos;s perspective it is a one-time operation.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:325
&gt; + @discussion Includes picture-in-picture, video fullscreen, and element fullscreen.

I don&apos;t think we need a distinction between &quot;video fullscreen&quot; and &quot;element fullscreen&quot;. 

I&apos;d just say `Includes picture-in-picture and fullscreen`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695325</commentid>
    <comment_count>8</comment_count>
      <attachid>410696</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-06 14:55:42 -0700</bug_when>
    <thetext>Created attachment 410696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695326</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-06 14:56:31 -0700</bug_when>
    <thetext>(In reply to Eric Carlson from comment #7)
&gt; Comment on attachment 410557 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410557&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Change stopAllMediaPlayback to be more aptly named
&gt; &gt; +        pauseAllMediaPlayback.
&gt; 
&gt; I&apos;m not sure about this. I think &quot;pause&quot; implies playback can be started
&gt; again, but from the app&apos;s perspective it is a one-time operation.
&gt; 

We will have to loop in Jer on this, I made this change based on a conversation we had.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:325
&gt; &gt; + @discussion Includes picture-in-picture, video fullscreen, and element fullscreen.
&gt; 
&gt; I don&apos;t think we need a distinction between &quot;video fullscreen&quot; and &quot;element
&gt; fullscreen&quot;. 
&gt; 
&gt; I&apos;d just say `Includes picture-in-picture and fullscreen`.

Fixed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695328</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-06 15:02:21 -0700</bug_when>
    <thetext>The new patch has the additional APIs to check for media playback existence, and whether the state is suspended or paused, plus testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695386</commentid>
    <comment_count>11</comment_count>
      <attachid>410696</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 16:48:13 -0700</bug_when>
    <thetext>Comment on attachment 410696
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:357
&gt; +/*! @abstract Check if media playback exists in the current WKWebView.
&gt; + @result true if media playback exists in the current WKWebView, otherwise false.
&gt; + */
&gt; +- (void)mediaPlaybackExists:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; +
&gt; +/*! @abstract Check if media playback is suspended in the current WKWebView.
&gt; + @result true if media playback in the current WKWebView is suspended, otherwise false.
&gt; + */
&gt; +- (void)mediaPlaybackIsSuspended:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; +
&gt; +/*! @abstract Check if media playback is paused in the current WKWebView.
&gt; + @result true if media playback in the current WKWebView is paused, otherwise false.
&gt; + */
&gt; +- (void)mediaPlaybackIsPaused:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

Have you considered merging these into one -(void)mediaPlaybackState(void (^)(WKMediaPlaybackState, NSError *))completionHandler type callback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695390</commentid>
    <comment_count>12</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-06 16:55:56 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #11)
&gt; Comment on attachment 410696 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410696&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:357
&gt; &gt; +/*! @abstract Check if media playback exists in the current WKWebView.
&gt; &gt; + @result true if media playback exists in the current WKWebView, otherwise false.
&gt; &gt; + */
&gt; &gt; +- (void)mediaPlaybackExists:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; +
&gt; &gt; +/*! @abstract Check if media playback is suspended in the current WKWebView.
&gt; &gt; + @result true if media playback in the current WKWebView is suspended, otherwise false.
&gt; &gt; + */
&gt; &gt; +- (void)mediaPlaybackIsSuspended:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; +
&gt; &gt; +/*! @abstract Check if media playback is paused in the current WKWebView.
&gt; &gt; + @result true if media playback in the current WKWebView is paused, otherwise false.
&gt; &gt; + */
&gt; &gt; +- (void)mediaPlaybackIsPaused:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; Have you considered merging these into one -(void)mediaPlaybackState(void
&gt; (^)(WKMediaPlaybackState, NSError *))completionHandler type callback?

I did not consider it, but that is a very good idea. I&apos;ll upload again with that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695413</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-06 17:38:03 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #12)
&gt; (In reply to Sam Weinig from comment #11)
&gt; &gt; Comment on attachment 410696 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=410696&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:357
&gt; &gt; &gt; +/*! @abstract Check if media playback exists in the current WKWebView.
&gt; &gt; &gt; + @result true if media playback exists in the current WKWebView, otherwise false.
&gt; &gt; &gt; + */
&gt; &gt; &gt; +- (void)mediaPlaybackExists:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; &gt; +
&gt; &gt; &gt; +/*! @abstract Check if media playback is suspended in the current WKWebView.
&gt; &gt; &gt; + @result true if media playback in the current WKWebView is suspended, otherwise false.
&gt; &gt; &gt; + */
&gt; &gt; &gt; +- (void)mediaPlaybackIsSuspended:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; &gt; +
&gt; &gt; &gt; +/*! @abstract Check if media playback is paused in the current WKWebView.
&gt; &gt; &gt; + @result true if media playback in the current WKWebView is paused, otherwise false.
&gt; &gt; &gt; + */
&gt; &gt; &gt; +- (void)mediaPlaybackIsPaused:(void (^)(BOOL))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; &gt; 
&gt; &gt; Have you considered merging these into one -(void)mediaPlaybackState(void
&gt; &gt; (^)(WKMediaPlaybackState, NSError *))completionHandler type callback?
&gt; 
&gt; I did not consider it, but that is a very good idea. I&apos;ll upload again with
&gt; that change.

:thumbs-up:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695674</commentid>
    <comment_count>14</comment_count>
      <attachid>410778</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-07 14:25:09 -0700</bug_when>
    <thetext>Created attachment 410778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695691</commentid>
    <comment_count>15</comment_count>
      <attachid>410778</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-07 14:42:55 -0700</bug_when>
    <thetext>Comment on attachment 410778
Patch

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

&gt; Source/WebKit/ChangeLog:22
&gt; +        * UIProcess/API/Cocoa/WKMediaPlaybackState.h: Added.

New API headers should be included in WebKit.h for modules to work well.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKError.h:67
&gt; +    WKErrorNoMediaPlayback WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)),

I don&apos;t think we need this error at all.  Having no media playback is a valid state to be in.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKMediaPlaybackState.h:32
&gt; +    WKNoMediaPlayback,

WKMediaPlaybackStateNone?
For some reason, all the enums like this I&apos;ve seen have all their members begin with the name of the enum.  It probably looks better in swift, too.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:344
&gt; +- (void)resumeAllMediaPlayback WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

These should probably all have _Nullable completion handlers so you can write an app that knows when the state is set, especially since it is not set right away.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:353
&gt; +- (void)mediaPlaybackState:(void (^)(WKMediaPlaybackState, NSError *))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

I&apos;d remove the NSError *.
The name of this is a little strange because it indicates the argument should be a state, but it&apos;s a block that receives the state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695708</commentid>
    <comment_count>16</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-07 15:14:47 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; Comment on attachment 410778 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=410778&amp;action=review
&gt; 

Thanks, will fix all of these.

&gt; &gt; Source/WebKit/ChangeLog:22
&gt; &gt; +        * UIProcess/API/Cocoa/WKMediaPlaybackState.h: Added.
&gt; 
&gt; New API headers should be included in WebKit.h for modules to work well.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKError.h:67
&gt; &gt; +    WKErrorNoMediaPlayback WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)),
&gt; 
&gt; I don&apos;t think we need this error at all.  Having no media playback is a
&gt; valid state to be in.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKMediaPlaybackState.h:32
&gt; &gt; +    WKNoMediaPlayback,
&gt; 
&gt; WKMediaPlaybackStateNone?
&gt; For some reason, all the enums like this I&apos;ve seen have all their members
&gt; begin with the name of the enum.  It probably looks better in swift, too.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:344
&gt; &gt; +- (void)resumeAllMediaPlayback WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; These should probably all have _Nullable completion handlers so you can
&gt; write an app that knows when the state is set, especially since it is not
&gt; set right away.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:353
&gt; &gt; +- (void)mediaPlaybackState:(void (^)(WKMediaPlaybackState, NSError *))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; I&apos;d remove the NSError *.
&gt; The name of this is a little strange because it indicates the argument
&gt; should be a state, but it&apos;s a block that receives the state.

requestMediaPlaybackState?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695764</commentid>
    <comment_count>17</comment_count>
      <attachid>410805</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-07 17:44:24 -0700</bug_when>
    <thetext>Created attachment 410805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695773</commentid>
    <comment_count>18</comment_count>
      <attachid>410807</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-07 18:34:57 -0700</bug_when>
    <thetext>Created attachment 410807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696244</commentid>
    <comment_count>19</comment_count>
      <attachid>410807</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-10-09 09:47:55 -0700</bug_when>
    <thetext>Comment on attachment 410807
Patch

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

R=me with just a couple nits:

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:351
&gt; + WKNoMediaPlayback and the callback will return the error WKErrorNoMediaPlayback.

This makes it sounds like an error will be returned if there’s no media playback.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:931
&gt; +    return _page-&gt;requestMediaPlaybackState([completionHandler = makeBlockPtr(completionHandler)] (auto&amp;&amp; mediaPlaybackState) {

I think this needs a nil check on completionHandler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696248</commentid>
    <comment_count>20</comment_count>
      <attachid>410945</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-09 09:58:04 -0700</bug_when>
    <thetext>Created attachment 410945
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696249</commentid>
    <comment_count>21</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-09 09:58:49 -0700</bug_when>
    <thetext>Thanks Jer! (And Alex, Youenn, Eric and Sam)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696262</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-09 10:37:30 -0700</bug_when>
    <thetext>Committed r268268: &lt;https://trac.webkit.org/changeset/268268&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410945.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696371</commentid>
    <comment_count>23</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-10-09 14:45:59 -0700</bug_when>
    <thetext>Follow up fix for Catalyst build: https://trac.webkit.org/changeset/268290/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410557</attachid>
            <date>2020-10-05 14:13:59 -0700</date>
            <delta_ts>2020-10-06 14:55:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217335-20201005141358.patch</filename>
            <type>text/plain</type>
            <size>14886</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE2MTIzNmMwMDY1Yjdk
ZjVjODdhOTI5NjU0NTJhYjE0MDgzMTMyMC4uMWFkZmRlY2JmOTczMTJjODJhNGNlOGMyYTMzYjgz
MDcyNjFlM2ZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTEwLTA1ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUg
V0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2hhbmdlIHN0b3BBbGxNZWRpYVBsYXliYWNrIHRvIGJlIG1vcmUgYXB0bHkgbmFtZWQK
KyAgICAgICAgcGF1c2VBbGxNZWRpYVBsYXliYWNrLgorCisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c3RvcEFsbE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjpwYXVzZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c3RvcEFsbE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvUGFnZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBhdXNl
QWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c3RvcEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmg6CisKIDIwMjAtMTAtMDUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBNb3ZlIERpc3BsYXk6OklubGluZUNvbnRlbnQg
dG8gTGF5b3V0SW50ZWdyYXRpb24gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRhZjJmOWJmNmEwOTE5
M2MyMWY0MWM0MjcyYTE5NmJlYzU2MjU1YWQuLmJiYjRjYzlmOWE0NTY2NDg4NTBiNTYzZDNhZTM5
YTc3MGU5MWFlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMTAtMDUgIEthdGUg
Q2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbW90ZSBX
S1dlYlZpZXcgbWVkaWEgcGxheWJhY2sgU1BJIHRvIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MzQwNjEwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDdXJyZW50bHkgdGhlIG9ubHkgd2F5IHRvIGludGVyYWN0IHdpdGggdmlkZW8gaW4gV0tX
ZWJWaWV3IGlzIGJ5IGluamVjdGluZworICAgICAgICBKYXZhU2NyaXB0IGludG8gYSBwYWdlLiBJ
dCB3b3VsZCBiZSB1c2VmdWwgdG8gcHJvbW90ZSB2YXJpb3VzIG1lZGlhCisgICAgICAgIHBsYXli
YWNrIFNQSSB0byBBUEkgdG8gbWFrZSB0aGlzIGVhc2llciBmb3IgY2xpZW50cy4gVGhpcyBwYXRj
aCBhZGRzIG5ldworICAgICAgICBmdW5jdGlvbnMgd2l0aG91dCBhbiB1bmRlcnNjb3JlLCBidXQg
a2VlcHMgdGhlIFNQSSBhcm91bmQgZm9yIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgSXQgYWxz
byBjaGFuZ2VzIHN0b3BBbGxNZWRpYVBsYXliYWNrIHRvIGJlIG1vcmUgYXB0bHkgbmFtZWQKKyAg
ICAgICAgcGF1c2VBbGxNZWRpYVBsYXliYWNrLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2tdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyByZXN1bWVBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2xv
c2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9wQWxs
TWVkaWFQbGF5YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N1c3BlbmRBbGxNZWRpYVBs
YXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c3RvcEFsbE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBhdXNlQWxsTWVkaWFQbGF5
YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN0b3BBbGxNZWRpYVBsYXliYWNrKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDIwLTEwLTA1
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5pZnkgbGlua2VkT25PckFmdGVyIGR1cGxpY2F0ZSBjb2RlIGFuZCB1c2UgU1BJL1dlYkNvcmVU
ZXN0U3VwcG9ydCBpbnN0ZWFkIG9mIE5TVXNlckRlZmF1bHRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCA4ZTliMjE5MGY4ZTJiMWE3NDlkMzNmYjMyYzE3ZDBlOWZiY2RjZTRjLi44M2VjYmZi
ZDEzOWY0YjQxNmQyYzdlMzMzMDg1YTM2YWY4OGZiYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTcwNSw3ICs3MDUsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICAgICAgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci0+c2V0RG9jdW1lbnQobnVsbHB0cik7CiAKICNpZiBFTkFCTEUo
VklERU8pCi0gICAgc3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBwYXVzZUFsbE1lZGlhUGxh
eWJhY2soKTsKICNlbmRpZgogCiAgICAgLy8gV2UgbXVzdCBjYWxsIGNsZWFyUmFyZURhdGEoKSBo
ZXJlIHNpbmNlIGEgRG9jdW1lbnQgY2xhc3MgaW5oZXJpdHMgVHJlZVNjb3BlCkBAIC0xNzk5LDEw
ICsxNzk5LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmZvckVhY2hNZWRpYUVsZW1lbnQoY29uc3QgRnVu
Y3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Jik+JiBmdW5jCiAgICAgICAgIGZ1bmN0aW9uKGVs
ZW1lbnQpOwogfQogCi12b2lkIERvY3VtZW50OjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit2b2lk
IERvY3VtZW50OjpwYXVzZUFsbE1lZGlhUGxheWJhY2soKQogewogICAgIGlmIChhdXRvKiBwbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNo
YXJlZE1hbmFnZXJJZkV4aXN0cygpKQotICAgICAgICBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXItPnN0b3BBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoaWRlbnRpZmllcigpKTsKKyAgICAg
ICAgcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLT5wYXVzZUFsbE1lZGlhUGxheWJhY2tGb3JE
b2N1bWVudChpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIERvY3VtZW50OjpzdXNwZW5kQWxsTWVk
aWFQbGF5YmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGM3ODI1YzU0ZDRhOTBmMzE0MDFm
MjYyMDViMTE1M2NkMjBmOWViNTMuLmJjODA3ZDhlYTExNWM1NDliYTcxNTNhMjUzZDZkODc2NDVk
MzllZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTEzLDcgKzExMTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhW
aXNpYmlsaXR5Q2hhbmdlQ2xpZW50Jik7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgdm9pZCBz
dG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIHZvaWQgcGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7
CiAgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIHZvaWQgcmVzdW1lQWxs
TWVkaWFQbGF5YmFjaygpOwogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhQnVmZmVyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCA2OGRjYzkwNWZmYzRhMTc5Y2EzYjMwZDA5ZjJmODdlZGEwZGZh
NDc1Li5iOTdmNDI4OTFlNTAyN2M3NDQyMTlmNTI1NGQzOWJjZTI4ZDNmYzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKQEAgLTIwMjgsMTEgKzIwMjgsMTEgQEAgdm9pZCBQYWdlOjpzdG9wTWVkaWFDYXB0
dXJlKCkKICNlbmRpZgogfQogCi12b2lkIFBhZ2U6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK3Zv
aWQgUGFnZTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKCkKIHsKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKLSAgICAgICAgZG9j
dW1lbnQuc3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICAgICAgZG9jdW1lbnQucGF1c2VBbGxN
ZWRpYVBsYXliYWNrKCk7CiAgICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMjEx
N2EyM2E4ODAyZDdmYzc0ZjA1ZTdhZGU2MDhiODRhYjUzMGYzOC4uZjMxMDljNzM0ZGZjZGUyY2Mz
MGY0OTYyZTBlMDlhMjJlNTFmYmQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTY0Miw3ICs2NDIsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNdXRlZChNZWRpYVByb2R1Y2Vy
OjpNdXRlZFN0YXRlRmxhZ3MpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1lZGlhQ2Fw
dHVyZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIGJvb2wgbWVkaWFQ
bGF5YmFja0lzU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVBsYXliYWNrSXNTdXNw
ZW5kZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGQ4YTc1ZjI4ZGQzMTU4YmIw
NGE3MzM5YmIwNjA0NjE4YTdkYzQ2NmYuLjhhZTg0YTc3NThkYmFlMGU3ODBjZWYxOTIwZTdkZWQ0
ODU3OTgwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtNDU5LDcgKzQ1OSw3IEBA
IHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzU3lzdGVtRGlkV2FrZSgp
CiAgICAgfSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzdG9wQWxs
TWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50
aWZpZXIpCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cGF1c2VBbGxNZWRpYVBs
YXliYWNrRm9yRG9jdW1lbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikK
IHsKICAgICBmb3JFYWNoRG9jdW1lbnRTZXNzaW9uKGRvY3VtZW50SWRlbnRpZmllciwgW10oYXV0
byYgc2Vzc2lvbikgewogICAgICAgICBzZXNzaW9uLnBhdXNlU2Vzc2lvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaAppbmRleCAzNDI5OWIxMTJiNWYyOWRhMjVmMGUyY2E4MjFjMDNiMmQyOGExMWI5
Li42MjNiZmZjMDk2ZTZhYTYwNzA5NDE0NTI4NWViMDZlYjMxMjJkMzgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwcm9jZXNzV2lsbFN1c3BlbmQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nl
c3NEaWRSZXN1bWUoKTsKIAotICAgIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVu
dChEb2N1bWVudElkZW50aWZpZXIpOworICAgIHZvaWQgcGF1c2VBbGxNZWRpYVBsYXliYWNrRm9y
RG9jdW1lbnQoRG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0
b3BBbGxNZWRpYVBsYXliYWNrRm9yUHJvY2VzcygpOwogCiAgICAgdm9pZCBzdXNwZW5kQWxsTWVk
aWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNDY1OWJmMzAxMjkwNTAx
NDY0OWM2NTFmNGYwY2UxZmZkNjFiMjA5Ni4uYmU3MmYzNmIxMWY0ZTA4YzNiZWUyZDY2Y2FkMjk4
NTVkZWIzZTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcuaApAQCAtMzIxLDYgKzMyMSwyNSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAu
MTApLCBpb3MoOC4wKSkKICovCiAtICh2b2lkKWNhbGxBc3luY0phdmFTY3JpcHQ6KE5TU3RyaW5n
ICopZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czoobnVsbGFibGUgTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqKWFyZ3VtZW50cyBpbkZyYW1lOihudWxsYWJsZSBXS0ZyYW1lSW5mbyAqKWZyYW1l
IGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXiBfTnVsbGFibGUpKF9OdWxsYWJsZSBpZCwgTlNFcnJvciAqIF9OdWxs
YWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIgTlNfUkVGSU5FRF9GT1JfU1dJRlQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLyohIEBh
YnN0cmFjdCBDbG9zZSBhbGwgb3V0LW9mLXdpbmRvdyBtZWRpYSBwcmVzZW50YXRpb25zIGluIGEg
V0tXZWJWaWV3LgorIEBkaXNjdXNzaW9uIEluY2x1ZGVzIHBpY3R1cmUtaW4tcGljdHVyZSwgdmlk
ZW8gZnVsbHNjcmVlbiwgYW5kIGVsZW1lbnQgZnVsbHNjcmVlbi4KKyAqLworLSAodm9pZCljbG9z
ZUFsbE1lZGlhUHJlc2VudGF0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFBhdXNlIG1lZGlhIHBsYXliYWNr
IGluIFdLV2ViVmlldy4KKyAqLworLSAodm9pZClwYXVzZUFsbE1lZGlhUGxheWJhY2sgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBh
YnN0cmFjdCBTdXNwZW5kIG1lZGlhIHBsYXliYWNrIGluIFdLV2ViVmlldy4KKyBAZGlzY3Vzc2lv
biBUaGlzIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIGluIHBhaXJzIHdpdGggcmVzdW1lQWxsTWVk
aWFQbGF5YmFjay4KKyAqLworLSAodm9pZClzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFi
c3RyYWN0IFJlc3VtZSBtZWRpYSBwbGF5YmFjayBpbiBXS1dlYlZpZXcuCisgQGRpc2N1c3Npb24g
VGhpcyBzaG91bGQgYWx3YXlzIGJlIGNhbGxlZCBpbiBwYWlycyB3aXRoIHN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrLgorICovCistICh2b2lkKXJlc3VtZUFsbE1lZGlhUGxheWJhY2sgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyohIEBhYnN0
cmFjdCBHZXQgYSBzbmFwc2hvdCBmb3IgdGhlIHZpc2libGUgdmlld3BvcnQgb2YgV0tXZWJWaWV3
LgogIEBwYXJhbSBzbmFwc2hvdENvbmZpZ3VyYXRpb24gQW4gb2JqZWN0IHRoYXQgc3BlY2lmaWVz
IGhvdyB0aGUgc25hcHNob3QgaXMgY29uZmlndXJlZC4KICBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0aGUgc25hcHNob3QgaXMgcmVhZHkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBlMmQyZjNl
ZWY1N2E2YmE4ZWMwYjMzNTVmMDA3YmJlODQ1YWU2ZGRkLi4wYjdkZDgyNGNmZWM5MjQ1YjU3ODI2
ODg0ODc5MDBlNWZiZjdiY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KQEAgLTg2Myw2ICs4NjMsMzUgQEAgc3RhdGljIGJvb2wgdmFsaWRh
dGVBcmd1bWVudChpZCBhcmd1bWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKy0gKHZvaWQp
Y2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgaWYgKGF1dG8gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IF9wYWdlLT52aWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyKCkpIHsKKyAgICAgICAgdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+Zm9yRWFj
aFNlc3Npb24oW10gKGF1dG8mIG1vZGVsLCBhdXRvJiBpbnRlcmZhY2UpIHsKKyAgICAgICAgICAg
IG1vZGVsLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
aWYgKGF1dG8gZnVsbFNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKTsg
ZnVsbFNjcmVlbk1hbmFnZXIgJiYgZnVsbFNjcmVlbk1hbmFnZXItPmlzRnVsbFNjcmVlbigpKQor
ICAgICAgICBmdWxsU2NyZWVuTWFuYWdlci0+Y2xvc2UoKTsKKyNlbmRpZgorfQorCistICh2b2lk
KXBhdXNlQWxsTWVkaWFQbGF5YmFjaworeworICAgIF9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJh
Y2soKTsKK30KKworLSAodm9pZClzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaworeworICAgIF9wYWdl
LT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOworfQorCistICh2b2lkKXJlc3VtZUFsbE1lZGlh
UGxheWJhY2sKK3sKKyAgICBfcGFnZS0+cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOworfQorCiBz
dGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyhjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiBkZXRhaWxzKQogewogICAgIGF1dG8gdXNlcklu
Zm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwpAQCAtMTg3
MCwxNiArMTg5OSw3IEBAIC0gKF9XS01lZGlhTXV0ZWRTdGF0ZSlfbWVkaWFNdXRlZFN0YXRlCiAK
IC0gKHZvaWQpX2Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zCiB7Ci0jaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQotICAgIGlmIChhdXRvIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+
dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpKSB7Ci0gICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXItPmZvckVhY2hTZXNzaW9uKFtdIChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJmYWNlKSB7Ci0g
ICAgICAgICAgICBtb2RlbC5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Ci0gICAgICAgIH0pOwotICAg
IH0KLQotICAgIGlmIChhdXRvIGZ1bGxTY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPmZ1bGxTY3JlZW5N
YW5hZ2VyKCk7IGZ1bGxTY3JlZW5NYW5hZ2VyICYmIGZ1bGxTY3JlZW5NYW5hZ2VyLT5pc0Z1bGxT
Y3JlZW4oKSkKLSAgICAgICAgZnVsbFNjcmVlbk1hbmFnZXItPmNsb3NlKCk7Ci0jZW5kaWYKKyAg
ICBbc2VsZiBjbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9uc107CiB9CiAKIC0gKHZvaWQpX3N0b3BN
ZWRpYUNhcHR1cmUKQEAgLTE4ODksMTcgKzE5MDksMTcgQEAgLSAodm9pZClfc3RvcE1lZGlhQ2Fw
dHVyZQogCiAtICh2b2lkKV9zdG9wQWxsTWVkaWFQbGF5YmFjawogewotICAgIF9wYWdlLT5zdG9w
QWxsTWVkaWFQbGF5YmFjaygpOworICAgIFtzZWxmIHBhdXNlQWxsTWVkaWFQbGF5YmFja107CiB9
CiAKIC0gKHZvaWQpX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrCiB7Ci0gICAgX3BhZ2UtPnN1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgW3NlbGYgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2td
OwogfQogCiAtICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiB7Ci0gICAgX3BhZ2UtPnJl
c3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBbc2VsZiByZXN1bWVBbGxNZWRpYVBsYXliYWNr
XTsKIH0KIAogLSAoTlNVUkwgKilfdW5yZWFjaGFibGVVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGI3YjgxNzVjZjAzNWVkZTA4ZWUxNDk1ZjRjMzY3NTgz
MTZiZDhkOGYuLmQxYTNhZTFhMzljMWUzNzVjNzQwMmRlMDFjM2Q5ZjMzNDkwYWQxOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjAxNiwxMiArNjAxNiwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAjZW5kaWYKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpwYXVzZUFsbE1lZGlhUGxheWJhY2soKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3Rv
cEFsbE1lZGlhUGxheWJhY2soKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGF1c2VB
bGxNZWRpYVBsYXliYWNrKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1l
ZGlhUGxheWJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4
MjE5ZWJiNTNiMWNmZTM2MzlmMmRjMTZjNzdjOTFmY2Y1ZmViMDFiLi44ZDYxYTFmZDgwMzhjZjMw
ZDBhYWNkN2RmYzM4YjI1NTBiOWNhZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtMTMzNCw3ICsxMzM0LDcgQEAgcHVibGljOgogICAgIGJvb2wgbWVkaWFDYXB0
dXJlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDYXB0dXJlRW5hYmxlZDsgfQogICAg
IHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCi0gICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFj
aygpOworICAgIHZvaWQgcGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgdm9pZCBzdXNwZW5k
QWxsTWVkaWFQbGF5YmFjaygpOwogICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ5
OTQ2MzQ4NGQ0ODdkZjE5NTA1MTFjM2IxNmM5NDZkODY3MGE3NDMuLjVlMDczYjg5NDJjNzUzMWQy
NTEzMDIwMGUxMDE4NTcwODJjZWZmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC04MDIsOSArODAyLDkgQEAgV2ViUGFnZTo6V2ViUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzdG9w
QWxsTWVkaWFQbGF5YmFjaygpCit2b2lkIFdlYlBhZ2U6OnBhdXNlQWxsTWVkaWFQbGF5YmFjaygp
CiB7Ci0gICAgbV9wYWdlLT5zdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIG1fcGFnZS0+cGF1
c2VBbGxNZWRpYVBsYXliYWNrKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c3VzcGVuZEFsbE1lZGlh
UGxheWJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IGY5MTA2NmQ3YmJhOGE4NmE0MDFlNDkyMDFjOWMzZTNlYjU3NGYxMzEuLmMwOTUzMDIzNjFk
NjI5NDgwODczZTlkNmY5Mzk0ODYyOWQ1NmU1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE2NDIsNyArMTY0Miw3IEBAIHByaXZhdGU6CiAKICNl
bmRpZgogCi0gICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIHZvaWQgcGF1c2VB
bGxNZWRpYVBsYXliYWNrKCk7CiAgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOwog
ICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAzN2IzYzMz
MmFmNTUwY2U2Mjc5OGQzMjVhMTA3ZTY2MTUzZWNlMWQ1Li45ZTEzMWNhMDY3ZDI0ODlmZTNmYzI2
MTQ2NGJhNWRjOTgyYjNhYWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM3OSw3ICszNzksNyBAQCBHZW5lcmF0
ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZQogICAgIENhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpCiAjZW5kaWYKIAot
ICAgIFN0b3BBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgUGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7
CiAgICAgU3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKICAgICBSZXN1bWVBbGxNZWRpYVBsYXli
YWNrKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410696</attachid>
            <date>2020-10-06 14:55:42 -0700</date>
            <delta_ts>2020-10-07 14:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217335-20201006145541.patch</filename>
            <type>text/plain</type>
            <size>27402</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE2MTIzNmMwMDY1Yjdk
ZjVjODdhOTI5NjU0NTJhYjE0MDgzMTMyMC4uOTYwMGUwMDQyZGI5M2ZiMGI1NzhmNjc0M2IyNmZk
ODI2N2UwOWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIwLTEwLTA2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUg
V0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2hhbmdlIHN0b3BBbGxNZWRpYVBsYXliYWNrIHRvIGJlIG1vcmUgYXB0bHkgbmFtZWQK
KyAgICAgICAgcGF1c2VBbGxNZWRpYVBsYXliYWNrLiBBZGQgYSBmdW5jdGlvbiB0byB0aGUgRG9j
dW1lbnQgYW5kIFBhZ2Ugb2JqZWN0cworICAgICAgICB0byBzZWUgaWYgbWVkaWEgcGxheWJhY2sg
ZXhpc3RzIG9yIGlzIHBhdXNlZC4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjptZWRpYVBsYXliYWNrRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjptZWRpYVBsYXliYWNrSXNQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBh
dXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3RvcEFs
bE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptZWRpYVBsYXli
YWNrRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhUGxheWJhY2tJc1BhdXNl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwYXVzZUFsbE1lZGlhUGxheWJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcEFsbE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6Om1lZGlhUGxheWJhY2tJc1BhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnBhdXNlQWxsTWVkaWFQbGF5YmFja0ZvckRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3Rv
cEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisKIDIwMjAtMTAtMDUgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0
aW9uXSBNb3ZlIERpc3BsYXk6OklubGluZUNvbnRlbnQgdG8gTGF5b3V0SW50ZWdyYXRpb24gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDRhZjJmOWJmNmEwOTE5M2MyMWY0MWM0MjcyYTE5NmJlYzU2MjU1
YWQuLjgxZGMzZjVlMWUzYjNjNzQ3Yjg5NzE3OTQ1YWM3NGQ3MzQ5N2Q1MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMjAtMTAtMDYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5l
eUBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvbW90ZSBXS1dlYlZpZXcgbWVkaWEgcGxheWJhY2sg
U1BJIHRvIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3MzM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzQwNjEwMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgdGhlIG9ubHkg
d2F5IHRvIGludGVyYWN0IHdpdGggdmlkZW8gaW4gV0tXZWJWaWV3IGlzIGJ5IGluamVjdGluZwor
ICAgICAgICBKYXZhU2NyaXB0IGludG8gYSBwYWdlLiBJdCB3b3VsZCBiZSB1c2VmdWwgdG8gcHJv
bW90ZSB2YXJpb3VzIG1lZGlhCisgICAgICAgIHBsYXliYWNrIFNQSSB0byBBUEkgdG8gbWFrZSB0
aGlzIGVhc2llciBmb3IgY2xpZW50cy4gQWxvbmcgd2l0aCB0aGlzLAorICAgICAgICB3ZSBzaG91
bGQgYWRkIG5ldyBBUEkgdG8gY2hlY2sgZm9yIGV4aXN0aW5nIG1lZGlhIHBsYXliYWNrLCBhbmQg
dG8gc2VlCisgICAgICAgIGlmIG1lZGlhIHBsYXliYWNrIGlzIHN1c3BlbmRlZCBvciBwYXVzZWQu
IFRoaXMgcGF0Y2ggYWRkcyBrZWVwcyB0aGUKKyAgICAgICAgU1BJIGFyb3VuZCBmb3IgY29tcGF0
aWJpbGl0eS4KKworICAgICAgICBJdCBhbHNvIGNoYW5nZXMgc3RvcEFsbE1lZGlhUGxheWJhY2sg
dG8gYmUgbW9yZSBhcHRseSBuYW1lZAorICAgICAgICBwYXVzZUFsbE1lZGlhUGxheWJhY2suCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgY2xv
c2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHBhdXNlQWxs
TWVkaWFQbGF5YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3VzcGVuZEFsbE1lZGlhUGxh
eWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlc3VtZUFsbE1lZGlhUGxheWJhY2tdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IG1lZGlhUGxheWJhY2tFeGlzdHM6XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBtZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQ6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBtZWRpYVBsYXliYWNrSXNQYXVzZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2xv
c2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9wQWxs
TWVkaWFQbGF5YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N1c3BlbmRBbGxNZWRpYVBs
YXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja10p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6Om1lZGlhUGxheWJhY2tFeGlzdHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6Om1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpwYXVzZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN0b3BBbGxNZWRpYVBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptZWRpYVBsYXliYWNrRXhpc3Rz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c3RvcEFsbE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMjAtMTAtMDUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbmlmeSBsaW5rZWRPbk9yQWZ0
ZXIgZHVwbGljYXRlIGNvZGUgYW5kIHVzZSBTUEkvV2ViQ29yZVRlc3RTdXBwb3J0IGluc3RlYWQg
b2YgTlNVc2VyRGVmYXVsdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDhlOWIyMTkwZjhl
MmIxYTc0OWQzM2ZiMzJjMTdkMGU5ZmJjZGNlNGMuLjYwOTYxNmJiYTU1YmJiZDlhMWEyNmY0ODVk
NGRiNjk0NDI4NjdjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzA1LDcgKzcwNSw3
IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVy
LT5zZXREb2N1bWVudChudWxscHRyKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBzdG9wQWxs
TWVkaWFQbGF5YmFjaygpOworICAgIHBhdXNlQWxsTWVkaWFQbGF5YmFjaygpOwogI2VuZGlmCiAK
ICAgICAvLyBXZSBtdXN0IGNhbGwgY2xlYXJSYXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1bWVu
dCBjbGFzcyBpbmhlcml0cyBUcmVlU2NvcGUKQEAgLTE3OTksMTAgKzE3OTksMjQgQEAgdm9pZCBE
b2N1bWVudDo6Zm9yRWFjaE1lZGlhRWxlbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKEhUTUxNZWRp
YUVsZW1lbnQmKT4mIGZ1bmMKICAgICAgICAgZnVuY3Rpb24oZWxlbWVudCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnQ6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK2Jvb2wgRG9jdW1lbnQ6Om1lZGlhUGxh
eWJhY2tFeGlzdHMoKQogewogICAgIGlmIChhdXRvKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygp
KQotICAgICAgICBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXItPnN0b3BBbGxNZWRpYVBsYXli
YWNrRm9yRG9jdW1lbnQoaWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuICFwbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXItPmhhc05vU2Vzc2lvbigpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBEb2N1bWVudDo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKCkKK3sKKyAgICBpZiAoYXV0
byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci0+bWVkaWFQbGF5YmFja0lzUGF1c2VkKGlkZW50aWZpZXIoKSk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERvY3VtZW50OjpwYXVzZUFsbE1lZGlhUGxheWJh
Y2soKQoreworICAgIGlmIChhdXRvKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygpKQorICAgICAg
ICBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXItPnBhdXNlQWxsTWVkaWFQbGF5YmFja0ZvckRv
Y3VtZW50KGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYzc4MjVjNTRkNGE5MGYzMTQwMWYy
NjIwNWIxMTUzY2QyMGY5ZWI1My4uOWEwNTI3YmQyOTIyY2YzNzlkOTdjZWJiNmU0NTdiMzZlNzNj
ZDYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTExMTMsNyArMTExMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKFZp
c2liaWxpdHlDaGFuZ2VDbGllbnQmKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICB2b2lkIHN0
b3BBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgYm9vbCBtZWRpYVBsYXliYWNrRXhpc3RzKCk7Cisg
ICAgYm9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQoKTsKKyAgICB2b2lkIHBhdXNlQWxsTWVkaWFQ
bGF5YmFjaygpOwogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKICAgICB2b2lk
IHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKICAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYUJ1ZmZl
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNjhkY2M5MDVmZmM0YTE3OWNhM2IzMGQwOWYy
Zjg3ZWRhMGRmYTQ3NS4uODMyZDc5OWIyNDI1NjNiYTA5ZTRkNDFlMmY0NzM1ZTk1NWU4MGE0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMDI4LDExICsyMDI4LDM5IEBAIHZvaWQgUGFnZTo6c3Rv
cE1lZGlhQ2FwdHVyZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBQYWdlOjpzdG9wQWxsTWVkaWFQbGF5
YmFjaygpCitib29sIFBhZ2U6Om1lZGlhUGxheWJhY2tFeGlzdHMoKQoreworI2lmIEVOQUJMRShW
SURFTykKKyAgICBib29sIG1lZGlhUGxheWJhY2tFeGlzdHMgPSBmYWxzZTsKKyAgICBmb3JFYWNo
RG9jdW1lbnQoWyZtZWRpYVBsYXliYWNrRXhpc3RzXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Cisg
ICAgICAgIGlmIChkb2N1bWVudC5tZWRpYVBsYXliYWNrRXhpc3RzKCkpCisgICAgICAgICAgICBt
ZWRpYVBsYXliYWNrRXhpc3RzID0gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVkaWFQbGF5
YmFja0V4aXN0czsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wg
UGFnZTo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKCkKK3sKKyNpZiBFTkFCTEUoVklERU8pCisgICAg
Ym9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQgPSBmYWxzZTsKKyAgICBmb3JFYWNoRG9jdW1lbnQo
WyZtZWRpYVBsYXliYWNrSXNQYXVzZWRdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAg
aWYgKGRvY3VtZW50Lm1lZGlhUGxheWJhY2tJc1BhdXNlZCgpKQorICAgICAgICAgICAgbWVkaWFQ
bGF5YmFja0lzUGF1c2VkID0gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVkaWFQbGF5YmFj
a0lzUGF1c2VkOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBQ
YWdlOjpwYXVzZUFsbE1lZGlhUGxheWJhY2soKQogewogI2lmIEVOQUJMRShWSURFTykKICAgICBm
b3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewotICAgICAgICBkb2N1bWVu
dC5zdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgICAgICBkb2N1bWVudC5wYXVzZUFsbE1lZGlh
UGxheWJhY2soKTsKICAgICB9KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCAyMTE3YTIz
YTg4MDJkN2ZjNzRmMDVlN2FkZTYwOGI4NGFiNTMwZjM4Li4xOTcyZTU1ZWE4ZDUwNmM2YTlkZjE2
NWUwZTQ4MzEyZDI0ZjE1MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjQyLDcgKzY0Miw5IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE11dGVkKE1lZGlhUHJvZHVjZXI6Ok11
dGVkU3RhdGVGbGFncyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTWVkaWFDYXB0dXJl
KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxNZWRpYVBsYXliYWNrKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtZWRpYVBsYXliYWNrRXhpc3RzKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2soKTsKICAgICBib29sIG1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAppbmRleCBkOGE3NWYyOGRkMzE1OGJiMDRhNzMzOWJiMDYwNDYxOGE3ZGM0
NjZmLi5lZDQ4NzI1NTE5YzI3NjhlZDA2M2I3Y2IxOGJmMTVjYjhhYTkyZTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAKQEAgLTQ1OSwxMyArNDU5LDI0IEBAIHZvaWQgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzU3lzdGVtRGlkV2FrZSgpCiAgICAgfSk7CiB9CiAKLXZv
aWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzdG9wQWxsTWVkaWFQbGF5YmFja0ZvckRv
Y3VtZW50KERvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIpCit2b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cGF1c2VBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQo
RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikKIHsKICAgICBmb3JFYWNoRG9j
dW1lbnRTZXNzaW9uKGRvY3VtZW50SWRlbnRpZmllciwgW10oYXV0byYgc2Vzc2lvbikgewogICAg
ICAgICBzZXNzaW9uLnBhdXNlU2Vzc2lvbigpOwogICAgIH0pOwogfQogCisKK2Jvb2wgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjptZWRpYVBsYXliYWNrSXNQYXVzZWQoRG9jdW1lbnRJZGVu
dGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikKK3sKKyAgICBib29sIG1lZGlhUGxheWJhY2tJc1Bh
dXNlZCA9IGZhbHNlOworICAgIGZvckVhY2hEb2N1bWVudFNlc3Npb24oZG9jdW1lbnRJZGVudGlm
aWVyLCBbJm1lZGlhUGxheWJhY2tJc1BhdXNlZF0oYXV0byYgc2Vzc2lvbikgeworICAgICAgICBp
ZiAoc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZWQpCisgICAg
ICAgICAgICBtZWRpYVBsYXliYWNrSXNQYXVzZWQgPSB0cnVlOworICAgIH0pOworICAgIHJldHVy
biBtZWRpYVBsYXliYWNrSXNQYXVzZWQ7Cit9CisKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzdG9wQWxsTWVkaWFQbGF5YmFja0ZvclByb2Nlc3MoKQogewogICAgIGZvckVhY2hT
ZXNzaW9uKFtdIChhdXRvJiBzZXNzaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IDM0
Mjk5YjExMmI1ZjI5ZGEyNWYwZTJjYTgyMWMwM2IyZDI4YTExYjkuLjFlNjdmOGU5MDY0MGY2ZjZk
NzNjYjZhNTIyYWRkOTVkMDBhNTkwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC04OCw3
ICs4OCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NXaWxsU3Vz
cGVuZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgpOwogCi0g
ICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRpZmll
cik7CisgICAgYm9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQoRG9jdW1lbnRJZGVudGlmaWVyKTsK
KyAgICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRp
Zmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFja0ZvclBy
b2Nlc3MoKTsKIAogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChE
b2N1bWVudElkZW50aWZpZXIpOwpAQCAtMTQzLDYgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NEaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopOwogCiAgICAgYm9vbCBpc0lu
dGVycnVwdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnJ1cHRlZDsgfQorICAgIGJvb2wgaGFz
Tm9TZXNzaW9uKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUGxhdGZv
cm1NZWRpYVNlc3Npb247CkBAIC0xNjgsNyArMTcwLDYgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAK
ICAgICBpbnQgY291bnRBY3RpdmVBdWRpb0NhcHR1cmVTb3VyY2VzKCk7Ci0gICAgYm9vbCBoYXNO
b1Nlc3Npb24oKSBjb25zdDsKIAogICAgIGJvb2wgY29tcHV0ZVN1cHBvcnRzU2Vla2luZygpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgK
aW5kZXggNDY1OWJmMzAxMjkwNTAxNDY0OWM2NTFmNGYwY2UxZmZkNjFiMjA5Ni4uNGYyNWM1MGJj
MmVjNTEwM2E4YmI2ODVjOWFmNDM2MWQ0MTcxZTI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMzIxLDYgKzMyMSw0MSBAQCBXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKICovCiAtICh2b2lkKWNhbGxBc3lu
Y0phdmFTY3JpcHQ6KE5TU3RyaW5nICopZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czoobnVsbGFibGUg
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBpbkZyYW1lOihudWxsYWJs
ZSBXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNv
bnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiBfTnVsbGFibGUpKF9OdWxsYWJs
ZSBpZCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIgTlNfUkVG
SU5FRF9GT1JfU1dJRlQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAorLyohIEBhYnN0cmFjdCBDbG9zZSBhbGwgb3V0LW9mLXdpbmRvdyBtZWRp
YSBwcmVzZW50YXRpb25zIGluIGEgV0tXZWJWaWV3LgorIEBkaXNjdXNzaW9uIEluY2x1ZGVzIHBp
Y3R1cmUtaW4tcGljdHVyZSBhbmQgZnVsbHNjcmVlbi4KKyAqLworLSAodm9pZCljbG9zZUFsbE1l
ZGlhUHJlc2VudGF0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFBhdXNlIG1lZGlhIHBsYXliYWNrIGluIFdL
V2ViVmlldy4KKyBAZGlzY3Vzc2lvbiBUaGlzIHBhdXNlcyBtZWRpYSBwbGF5YmFjayB3aGlsZSBz
dGlsbCBhbGxvd2luZyB0aGUgcGFnZSB0byByZXN1bWUgcGxheWJhY2sgYXQgYW55IHRpbWUuCisg
Ki8KKy0gKHZvaWQpcGF1c2VBbGxNZWRpYVBsYXliYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgU3VzcGVuZCBt
ZWRpYSBwbGF5YmFjayBpbiBXS1dlYlZpZXcuCisgQGRpc2N1c3Npb24gVGhpcyBwYXVzZXMgbWVk
aWEgcGxheWJhY2sgYW5kIGJsb2NrcyBhbGwgYXR0ZW1wdHMgYnkgdGhlIHBhZ2UgdG8gcmVzdW1l
IHVudGlsIHJlc3VtZUFsbE1lZGlhUGxheWJhY2sgaXMgY2FsbGVkLiBUaGlzIHNob3VsZCBhbHdh
eXMgYmUgY2FsbGVkIGluIHBhaXJzIHdpdGggcmVzdW1lQWxsTWVkaWFQbGF5YmFjay4KKyAqLwor
LSAodm9pZClzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFJlc3VtZSBtZWRp
YSBwbGF5YmFjayBpbiBXS1dlYlZpZXcuCisgQGRpc2N1c3Npb24gVGhpcyBzaG91bGQgYWx3YXlz
IGJlIGNhbGxlZCBpbiBwYWlycyB3aXRoIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrLgorICovCist
ICh2b2lkKXJlc3VtZUFsbE1lZGlhUGxheWJhY2sgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBDaGVjayBpZiBtZWRp
YSBwbGF5YmFjayBleGlzdHMgaW4gdGhlIGN1cnJlbnQgV0tXZWJWaWV3LgorIEByZXN1bHQgdHJ1
ZSBpZiBtZWRpYSBwbGF5YmFjayBleGlzdHMgaW4gdGhlIGN1cnJlbnQgV0tXZWJWaWV3LCBvdGhl
cndpc2UgZmFsc2UuCisgKi8KKy0gKHZvaWQpbWVkaWFQbGF5YmFja0V4aXN0czoodm9pZCAoXiko
Qk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBDaGVjayBpZiBtZWRpYSBwbGF5
YmFjayBpcyBzdXNwZW5kZWQgaW4gdGhlIGN1cnJlbnQgV0tXZWJWaWV3LgorIEByZXN1bHQgdHJ1
ZSBpZiBtZWRpYSBwbGF5YmFjayBpbiB0aGUgY3VycmVudCBXS1dlYlZpZXcgaXMgc3VzcGVuZGVk
LCBvdGhlcndpc2UgZmFsc2UuCisgKi8KKy0gKHZvaWQpbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVk
Oih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IENoZWNrIGlm
IG1lZGlhIHBsYXliYWNrIGlzIHBhdXNlZCBpbiB0aGUgY3VycmVudCBXS1dlYlZpZXcuCisgQHJl
c3VsdCB0cnVlIGlmIG1lZGlhIHBsYXliYWNrIGluIHRoZSBjdXJyZW50IFdLV2ViVmlldyBpcyBw
YXVzZWQsIG90aGVyd2lzZSBmYWxzZS4KKyAqLworLSAodm9pZCltZWRpYVBsYXliYWNrSXNQYXVz
ZWQ6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8qISBAYWJzdHJhY3QgR2V0IGEg
c25hcHNob3QgZm9yIHRoZSB2aXNpYmxlIHZpZXdwb3J0IG9mIFdLV2ViVmlldy4KICBAcGFyYW0g
c25hcHNob3RDb25maWd1cmF0aW9uIEFuIG9iamVjdCB0aGF0IHNwZWNpZmllcyBob3cgdGhlIHNu
YXBzaG90IGlzIGNvbmZpZ3VyZWQuCiAgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sg
dG8gaW52b2tlIHdoZW4gdGhlIHNuYXBzaG90IGlzIHJlYWR5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZTJkMmYzZWVmNTdhNmJhOGVj
MGIzMzU1ZjAwN2JiZTg0NWFlNmRkZC4uMGJhYTE2NjM0ZThlNWJkYTI0YzYzODU4ZDUzMDY2NzAx
YjNmODU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC04NjMsNiArODYzLDUwIEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQXJndW1lbnQo
aWQgYXJndW1lbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCistICh2b2lkKWNsb3NlQWxsTWVk
aWFQcmVzZW50YXRpb25zCit7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmIChh
dXRvIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdl
cigpKSB7CisgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmZvckVhY2hTZXNzaW9uKFtd
IChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJmYWNlKSB7CisgICAgICAgICAgICBtb2RlbC5yZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGlmIChhdXRvIGZ1
bGxTY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCk7IGZ1bGxTY3JlZW5N
YW5hZ2VyICYmIGZ1bGxTY3JlZW5NYW5hZ2VyLT5pc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgZnVs
bFNjcmVlbk1hbmFnZXItPmNsb3NlKCk7CisjZW5kaWYKK30KKworLSAodm9pZClwYXVzZUFsbE1l
ZGlhUGxheWJhY2sKK3sKKyAgICBfcGFnZS0+cGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7Cit9CisK
Ky0gKHZvaWQpc3VzcGVuZEFsbE1lZGlhUGxheWJhY2sKK3sKKyAgICBfcGFnZS0+c3VzcGVuZEFs
bE1lZGlhUGxheWJhY2soKTsKK30KKworLSAodm9pZClyZXN1bWVBbGxNZWRpYVBsYXliYWNrCit7
CisgICAgX3BhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKK30KKworLSAodm9pZCltZWRp
YVBsYXliYWNrRXhpc3RzOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IHJldHVybiBfcGFnZS0+bWVkaWFQbGF5YmFja0V4aXN0cyhtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKworLSAodm9pZCltZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQ6KHZvaWQg
KF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgcmV0dXJuIF9wYWdlLT5tZWRpYVBs
YXliYWNrSXNTdXNwZW5kZWQobWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisK
Ky0gKHZvaWQpbWVkaWFQbGF5YmFja0lzUGF1c2VkOih2b2lkICheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIHJldHVybiBfcGFnZS0+bWVkaWFQbGF5YmFja0lzUGF1c2VkKG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiBzdGF0aWMgUmV0YWluUHRyPE5TRXJy
b3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyhjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzJiBkZXRhaWxzKQogewogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwpAQCAtMTg3MCwxNiArMTkxNCw3IEBAIC0gKF9X
S01lZGlhTXV0ZWRTdGF0ZSlfbWVkaWFNdXRlZFN0YXRlCiAKIC0gKHZvaWQpX2Nsb3NlQWxsTWVk
aWFQcmVzZW50YXRpb25zCiB7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlmIChh
dXRvIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdl
cigpKSB7Ci0gICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmZvckVhY2hTZXNzaW9uKFtd
IChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJmYWNlKSB7Ci0gICAgICAgICAgICBtb2RlbC5yZXF1
ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGlmIChhdXRvIGZ1
bGxTY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCk7IGZ1bGxTY3JlZW5N
YW5hZ2VyICYmIGZ1bGxTY3JlZW5NYW5hZ2VyLT5pc0Z1bGxTY3JlZW4oKSkKLSAgICAgICAgZnVs
bFNjcmVlbk1hbmFnZXItPmNsb3NlKCk7Ci0jZW5kaWYKKyAgICBbc2VsZiBjbG9zZUFsbE1lZGlh
UHJlc2VudGF0aW9uc107CiB9CiAKIC0gKHZvaWQpX3N0b3BNZWRpYUNhcHR1cmUKQEAgLTE4ODks
MTcgKzE5MjQsMTcgQEAgLSAodm9pZClfc3RvcE1lZGlhQ2FwdHVyZQogCiAtICh2b2lkKV9zdG9w
QWxsTWVkaWFQbGF5YmFjawogewotICAgIF9wYWdlLT5zdG9wQWxsTWVkaWFQbGF5YmFjaygpOwor
ICAgIFtzZWxmIHBhdXNlQWxsTWVkaWFQbGF5YmFja107CiB9CiAKIC0gKHZvaWQpX3N1c3BlbmRB
bGxNZWRpYVBsYXliYWNrCiB7Ci0gICAgX3BhZ2UtPnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7
CisgICAgW3NlbGYgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2tdOwogfQogCiAtICh2b2lkKV9yZXN1
bWVBbGxNZWRpYVBsYXliYWNrCiB7Ci0gICAgX3BhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2so
KTsKKyAgICBbc2VsZiByZXN1bWVBbGxNZWRpYVBsYXliYWNrXTsKIH0KIAogLSAoTlNVUkwgKilf
dW5yZWFjaGFibGVVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IGI3YjgxNzVjZjAzNWVkZTA4ZWUxNDk1ZjRjMzY3NTgzMTZiZDhkOGYuLjE1MjY1ODMxMDU0
NDI3OTFiMzk4ZGQ0ZTliNjU5MTk2ZTJlNjYxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNjAxNiwxMiArNjAxNiw0MyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnN0
b3BBbGxNZWRpYVBsYXliYWNrKCkKK3ZvaWQgV2ViUGFnZVByb3h5OjptZWRpYVBsYXliYWNrRXhp
c3RzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TWVkaWFQbGF5YmFja0V4aXN0cygpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjptZWRpYVBsYXliYWNr
SXNTdXNwZW5kZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpNZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
bWVkaWFQbGF5YmFja0lzUGF1c2VkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6TWVkaWFQbGF5YmFja0lz
UGF1c2VkKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworCit2b2lkIFdlYlBh
Z2VQcm94eTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlN0b3BBbGxNZWRpYVBsYXliYWNrKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBh
dXNlQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRB
bGxNZWRpYVBsYXliYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggODIxOWViYjUzYjFjZmUzNjM5ZjJkYzE2Yzc3YzkxZmNmNWZlYjAxYi4uODJlODQyOTQyYjJm
ZTAzYThiZTU4ODVkNWFlNjNmN2FmYjQ5MWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTEzMzQsOSArMTMzNCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBtZWRp
YUNhcHR1cmVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhcHR1cmVFbmFibGVkOyB9
CiAgICAgdm9pZCBzdG9wTWVkaWFDYXB0dXJlKCk7CiAKLSAgICB2b2lkIHN0b3BBbGxNZWRpYVBs
YXliYWNrKCk7CisgICAgdm9pZCBwYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKICAgICB2b2lkIHN1
c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgdm9pZCByZXN1bWVBbGxNZWRpYVBsYXliYWNr
KCk7CisgICAgdm9pZCBtZWRpYVBsYXliYWNrRXhpc3RzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgbWVkaWFQbGF5YmFja0lzUGF1c2VkKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9D
SykKICAgICB2b2lkIGRpZEFsbG93UG9pbnRlckxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDk5NDYzNDg0ZDQ4N2RmMTk1MDUxMWMz
YjE2Yzk0NmQ4NjcwYTc0My4uNmNmOTE4YmNjMTVhMTdiMTY0NDBlZWJkNzdmMjJhNWNiNTYxNWQ5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTgwMiw5ICs4MDIsMjQgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHVwZGF0ZVRocm90
dGxlU3RhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit2
b2lkIFdlYlBhZ2U6Om1lZGlhUGxheWJhY2tFeGlzdHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3BhZ2UtPnN0b3BBbGxNZWRpYVBs
YXliYWNrKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobV9wYWdlLT5tZWRpYVBsYXliYWNrRXhp
c3RzKCkpOworfQorCit2b2lkIFdlYlBhZ2U6Om1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1fcGFnZS0+bWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKCkpOworfQor
Cit2b2lkIFdlYlBhZ2U6Om1lZGlhUGxheWJhY2tJc1BhdXNlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVy
KG1fcGFnZS0+bWVkaWFQbGF5YmFja0lzUGF1c2VkKCkpOworfQorCit2b2lkIFdlYlBhZ2U6OnBh
dXNlQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgbV9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJh
Y2soKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjkxMDY2ZDdiYmE4
YTg2YTQwMWU0OTIwMWM5YzNlM2ViNTc0ZjEzMS4uZDhkZjMxZmRkNTk0MzJmNWU2YmYwMWQzZDEy
MTQ2ZGFiYzgyNGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtMTY0Miw3ICsxNjQyLDEwIEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi0gICAgdm9p
ZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIHZvaWQgbWVkaWFQbGF5YmFja0V4aXN0cyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIG1lZGlhUGxheWJhY2tJ
c1N1c3BlbmRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIG1l
ZGlhUGxheWJhY2tJc1BhdXNlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlh
UGxheWJhY2soKTsKICAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
aW5kZXggMzdiM2MzMzJhZjU1MGNlNjI3OThkMzI1YTEwN2U2NjE1M2VjZTFkNS4uYzYxZDYyYjRh
MWYzMTE1NWE0YjEwMTk2ZjQzZTZmMzI2YTE3M2Q3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zNzksNyArMzc5
LDEwIEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktp
dDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ2FwdHVyZURldmljZXNDaGFuZ2Vk
KCkKICNlbmRpZgogCi0gICAgU3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBNZWRpYVBsYXli
YWNrRXhpc3RzKCkgLT4gKGJvb2wgZXhpc3RzKSBBc3luYworICAgIE1lZGlhUGxheWJhY2tJc1N1
c3BlbmRlZCgpIC0+IChib29sIGlzU3VzcGVuZGVkKSBBc3luYworICAgIE1lZGlhUGxheWJhY2tJ
c1BhdXNlZCgpIC0+IChib29sIGlzU3VzcGVuZGVkKSBBc3luYworICAgIFBhdXNlQWxsTWVkaWFQ
bGF5YmFjaygpOwogICAgIFN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgUmVzdW1lQWxs
TWVkaWFQbGF5YmFjaygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNGEyMmQ4ZTRkMzQ4ZGMyYjJhZjRmOGVhMDI5MDhmYWUyNzZjNzJhYy4u
MWI0OGZhZDkyZTkyNDBlNmQwMTk5MjkyYTgzNTM2MmIyMWNhNjk0YSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIw
LTEwLTA2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAg
ICAgIFByb21vdGUgV0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0aW5nIGNvdmVyYWdlLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlh
Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMTAtMDUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbmlmeSBs
aW5rZWRPbk9yQWZ0ZXIgZHVwbGljYXRlIGNvZGUgYW5kIHVzZSBTUEkvV2ViQ29yZVRlc3RTdXBw
b3J0IGluc3RlYWQgb2YgTlNVc2VyRGVmYXVsdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxN
ZWRpYS5tbQppbmRleCAyZGQyYWMyZmY1MTdjMTZmZTUzYmIwNDBmYmQxY2VkNWYxNDBmNDZjLi5k
MWVkMjc3ZjI1MDM1NjJiYWVjNmIxZTI1ZDJlNDk2ZDI2OWVhODA5IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3BTdXNwZW5kUmVzdW1lQWxsTWVk
aWEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3Vz
cGVuZFJlc3VtZUFsbE1lZGlhLm1tCkBAIC0xMzYsNiArMTM2LDExMSBAQCBURVNUKFdLV2ViVmll
dywgU3VzcGVuZFJlc3VtZUFsbE1lZGlhUGxheWJhY2tNdWx0aXBsZVRpbWVzKQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsKIH0KIAorVEVTVChXS1dlYlZp
ZXcsIENoZWNrTWVkaWFQbGF5YmFja1N1c3BlbmRlZCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjx2aWRlbyBzcmM9XCJ2aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdlYmtp
dC1wbGF5c2lubGluZT48L3ZpZGVvPiJdOworCisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImZ1bmN0aW9uIGV2ZW50VG9NZXNzYWdlKGV2ZW50KXt3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC50eXBlKTt9
IHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7IHZpZGVvLmFkZEV2
ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBldmVudFRvTWVzc2FnZSk7IHZpZGVvLmFkZEV2ZW50TGlz
dGVuZXIoJ3BhdXNlJywgZXZlbnRUb01lc3NhZ2UpOyJdOworCisgICAgX19ibG9jayBib29sIGRp
ZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigndmlkZW8nKS5wbGF5KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOworCisgICAgX19ibG9jayBib29sIGRp
ZFBhdXNlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2Fn
ZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1c2UgPSB0cnVlOyB9XTsKKyAgICBbd2ViVmlldyBf
c3VzcGVuZEFsbE1lZGlhUGxheWJhY2tdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZGlkUGF1c2UpOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IG1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZDpeKEJPT0wgaXNTdXNwZW5kZWQpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoaXNTdXNwZW5kZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGRpZEJl
Z2luUGxheWluZyA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01l
c3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07Cisg
ICAgW3dlYlZpZXcgX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2tdOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsKKyAgICAKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBtZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQ6XihCT09MIGlzU3VzcGVuZGVk
KSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShpc1N1c3BlbmRlZCk7CisgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
fQorCitURVNUKFdLV2ViVmlldywgQ2hlY2tNZWRpYVBsYXliYWNrRXhpc3RzKQoreworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93OllFU10pOworCisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgbmV0d29yayBwcm9jZXNzIl07CisK
KyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbWVkaWFQbGF5
YmFja0V4aXN0czpeKEJPT0wgZXhpc3RzKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShleGlzdHMp
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8dmlkZW8gc3JjPVwidmlkZW8td2l0aC1hdWRpby5tcDRcIiB3ZWJraXQtcGxh
eXNpbmxpbmU+PC92aWRlbz4iXTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IG1lZGlhUGxheWJhY2tFeGlzdHM6XihCT09MIGV4aXN0cykgeworICAgICAgICBFWFBFQ1RfVFJV
RShleGlzdHMpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48L2JvZHk+Il07CisgICAgaXNEb25lID0gZmFsc2U7
CisgICAgW3dlYlZpZXcgbWVkaWFQbGF5YmFja0V4aXN0czpeKEJPT0wgZXhpc3RzKSB7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShleGlzdHMpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChXS1dl
YlZpZXcsIENoZWNrTWVkaWFQbGF5YmFja1BhdXNlZCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjx2aWRlbyBzcmM9XCJ2aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdlYmtp
dC1wbGF5c2lubGluZT48L3ZpZGVvPiJdOworCisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImZ1bmN0aW9uIGV2ZW50VG9NZXNzYWdlKGV2ZW50KXt3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC50eXBlKTt9
IHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7IHZpZGVvLmFkZEV2
ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBldmVudFRvTWVzc2FnZSk7IHZpZGVvLmFkZEV2ZW50TGlz
dGVuZXIoJ3BhdXNlJywgZXZlbnRUb01lc3NhZ2UpOyJdOworCisgICAgX19ibG9jayBib29sIGRp
ZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigndmlkZW8nKS5wbGF5KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOworCisgICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IG1lZGlhUGxheWJhY2tJc1BhdXNlZDpeKEJPT0wg
aXNQYXVzZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlzUGF1c2VkKTsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisgICAgCisgICAgX19ibG9jayBib29sIGRpZFBhdXNlID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1
c2UgPSB0cnVlOyB9XTsKKyAgICBbd2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2tdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkUGF1c2UpOworICAgIAorICAgIGlzRG9uZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IG1lZGlhUGxheWJhY2tJc1BhdXNlZDpeKEJPT0wgaXNQYXVz
ZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNQYXVzZWQpOworICAgICAgICBpc0RvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410778</attachid>
            <date>2020-10-07 14:25:09 -0700</date>
            <delta_ts>2020-10-07 17:44:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217335-20201007142508.patch</filename>
            <type>text/plain</type>
            <size>40129</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE2MTIzNmMwMDY1Yjdk
ZjVjODdhOTI5NjU0NTJhYjE0MDgzMTMyMC4uNWZlOWY5ZTMzM2Q5ZTcxN2M0NmE5NDNhOTFlOGYy
MjNiNmQ2MDg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTA3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUg
V0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2hhbmdlIHN0b3BBbGxNZWRpYVBsYXliYWNrIHRvIGJlIG1vcmUgYXB0bHkgbmFtZWQK
KyAgICAgICAgcGF1c2VBbGxNZWRpYVBsYXliYWNrIGJlY2F1c2UgaXQgaXMgcG9zc2libGUgdG8g
cmVzdW1lCisgICAgICAgIHBsYXlpbmcgbWVkaWEgYWZ0ZXIgdGhpcyBpcyBjYWxsZWQuICdTdG9w
JyBpbXBsaWVzIG1vcmUgcGVybWFuZW5jZS4KKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gdGhl
IERvY3VtZW50IGFuZCBQYWdlIG9iamVjdHMgdG8gc2VlIGlmIG1lZGlhIHBsYXliYWNrCisgICAg
ICAgIGV4aXN0cywgaXMgcGF1c2VkLCBvciBpcyBzdXNwZW5kZWQgdG8gZGV0ZXJtaW5lIG1lZGlh
IHBsYXliYWNrIHN0YXRlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om1lZGlhUGxheWJhY2tFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1l
ZGlhUGxheWJhY2tJc1BhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGF1c2VB
bGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9wQWxsTWVk
aWFQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhUGxheWJhY2tF
eGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cGF1c2VBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjptZWRpYVBsYXliYWNrSXNQYXVzZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzdG9wQWxs
TWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKwogMjAyMC0xMC0wNSAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25d
IE1vdmUgRGlzcGxheTo6SW5saW5lQ29udGVudCB0byBMYXlvdXRJbnRlZ3JhdGlvbiBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggNGFmMmY5YmY2YTA5MTkzYzIxZjQxYzQyNzJhMTk2YmVjNTYyNTVhZC4u
NTFmZjA1ZDQ1ODRiZmY1OGNhNGI2YWM2OWJiY2YzNTg1Mzk5NGM5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAyMC0xMC0wNyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFw
cGxlLmNvbT4KKworICAgICAgICBQcm9tb3RlIFdLV2ViVmlldyBtZWRpYSBwbGF5YmFjayBTUEkg
dG8gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTczMzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzNDA2MTAwPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB0aGUgb25seSB3YXkg
dG8gaW50ZXJhY3Qgd2l0aCB2aWRlbyBpbiBXS1dlYlZpZXcgaXMgYnkgaW5qZWN0aW5nCisgICAg
ICAgIEphdmFTY3JpcHQgaW50byBhIHBhZ2UuIEl0IHdvdWxkIGJlIHVzZWZ1bCB0byBwcm9tb3Rl
IHZhcmlvdXMgbWVkaWEKKyAgICAgICAgcGxheWJhY2sgU1BJIHRvIEFQSSB0byBtYWtlIHRoaXMg
ZWFzaWVyIGZvciBjbGllbnRzLiBBbG9uZyB3aXRoIHRoaXMsCisgICAgICAgIHdlIHNob3VsZCBh
ZGQgbmV3IEFQSSB0byBjaGVjayBmb3IgbWVkaWEgcGxheWJhY2sgc3RhdGUuCisgICAgICAgIFRo
aXMgcGF0Y2gga2VlcHMgdGhlIFNQSSBhcm91bmQgZm9yIGNvbXBhdGliaWxpdHkuCisKKyAgICAg
ICAgKiBTaGFyZWQvTWVkaWFQbGF5YmFja1N0YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tFcnJvci5tbToKKyAgICAgICAgKGxvY2FsaXplZERlc2NyaXB0aW9uRm9yRXJyb3JDb2RlKToK
KyAgICAgICAgTmV3IGVycm9yIGNvZGUgdG8gYWNjb3VudCBmb3Igbm9uLWV4aXN0ZW50IG1lZGlh
IHBsYXliYWNrIHdoZW4gbWVkaWEKKyAgICAgICAgcGxheWJhY2sgc3RhdGUgaXMgcmVxdWVzdGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS01lZGlhUGxheWJhY2tTdGF0ZS5o
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IHBhdXNlQWxsTWVkaWFQbGF5YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc3VzcGVuZEFs
bE1lZGlhUGxheWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlc3VtZUFsbE1lZGlhUGxh
eWJhY2tdKToKKyAgICAgICAgKHRvV0tNZWRpYVBsYXliYWNrU3RhdGUpOgorICAgICAgICAoLVtX
S1dlYlZpZXcgbWVkaWFQbGF5YmFja1N0YXRlOl0pOgorCisgICAgICAgICgtW1dLV2ViVmlldyBf
Y2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9w
QWxsTWVkaWFQbGF5YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3N1c3BlbmRBbGxNZWRp
YVBsYXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFj
a10pOgorICAgICAgICBLZWVwIFNQSSBhcm91bmQgZm9yIGNvbXBhdGliaWxpdHkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjptZWRpYVBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3RvcEFsbE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6Om1lZGlhUGxheWJhY2tTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnN0b3BBbGxNZWRpYVBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorCiAyMDIwLTEwLTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5pZnkgbGlua2VkT25PckFmdGVyIGR1cGxpY2F0ZSBj
b2RlIGFuZCB1c2UgU1BJL1dlYkNvcmVUZXN0U3VwcG9ydCBpbnN0ZWFkIG9mIE5TVXNlckRlZmF1
bHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4ZTliMjE5MGY4ZTJiMWE3NDlkMzNmYjMy
YzE3ZDBlOWZiY2RjZTRjLi42MDk2MTZiYmE1NWJiYmQ5YTFhMjZmNDg1ZDRkYjY5NDQyODY3Y2Fk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcwNSw3ICs3MDUsNyBAQCBEb2N1bWVudDo6
fkRvY3VtZW50KCkKICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+c2V0RG9jdW1lbnQo
bnVsbHB0cik7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgc3RvcEFsbE1lZGlhUGxheWJhY2so
KTsKKyAgICBwYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKICNlbmRpZgogCiAgICAgLy8gV2UgbXVz
dCBjYWxsIGNsZWFyUmFyZURhdGEoKSBoZXJlIHNpbmNlIGEgRG9jdW1lbnQgY2xhc3MgaW5oZXJp
dHMgVHJlZVNjb3BlCkBAIC0xNzk5LDEwICsxNzk5LDI0IEBAIHZvaWQgRG9jdW1lbnQ6OmZvckVh
Y2hNZWRpYUVsZW1lbnQoY29uc3QgRnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Jik+JiBm
dW5jCiAgICAgICAgIGZ1bmN0aW9uKGVsZW1lbnQpOwogfQogCi12b2lkIERvY3VtZW50OjpzdG9w
QWxsTWVkaWFQbGF5YmFjaygpCitib29sIERvY3VtZW50OjptZWRpYVBsYXliYWNrRXhpc3RzKCkK
IHsKICAgICBpZiAoYXV0byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKLSAgICAgICAgcGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLT5zdG9wQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50
KGlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiAhcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLT5oYXNOb1Nlc3Npb24oKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRG9jdW1l
bnQ6Om1lZGlhUGxheWJhY2tJc1BhdXNlZCgpCit7CisgICAgaWYgKGF1dG8qIHBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlciA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcklmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXItPm1lZGlhUGxheWJhY2tJc1BhdXNlZChpZGVudGlmaWVyKCkpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBEb2N1bWVudDo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBp
ZiAoYXV0byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKKyAgICAgICAgcGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLT5wYXVzZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChpZGVudGlm
aWVyKCkpOwogfQogCiB2b2lkIERvY3VtZW50OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IGM3ODI1YzU0ZDRhOTBmMzE0MDFmMjYyMDViMTE1M2NkMjBm
OWViNTMuLjlhMDUyN2JkMjkyMmNmMzc5ZDk3Y2ViYjZlNDU3YjM2ZTczY2Q2MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMTEzLDcgKzExMTMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJl
Z2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhWaXNpYmlsaXR5Q2hhbmdl
Q2xpZW50Jik7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5
YmFjaygpOworICAgIGJvb2wgbWVkaWFQbGF5YmFja0V4aXN0cygpOworICAgIGJvb2wgbWVkaWFQ
bGF5YmFja0lzUGF1c2VkKCk7CisgICAgdm9pZCBwYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKICAg
ICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgdm9pZCByZXN1bWVBbGxNZWRp
YVBsYXliYWNrKCk7CiAgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFCdWZmZXJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDY4ZGNjOTA1ZmZjNGExNzljYTNiMzBkMDlmMmY4N2VkYTBkZmE0NzUu
LjgzMmQ3OTliMjQyNTYzYmEwOWU0ZDQxZTJmNDczNWU5NTVlODBhNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMjAyOCwxMSArMjAyOCwzOSBAQCB2b2lkIFBhZ2U6OnN0b3BNZWRpYUNhcHR1cmUo
KQogI2VuZGlmCiB9CiAKLXZvaWQgUGFnZTo6c3RvcEFsbE1lZGlhUGxheWJhY2soKQorYm9vbCBQ
YWdlOjptZWRpYVBsYXliYWNrRXhpc3RzKCkKK3sKKyNpZiBFTkFCTEUoVklERU8pCisgICAgYm9v
bCBtZWRpYVBsYXliYWNrRXhpc3RzID0gZmFsc2U7CisgICAgZm9yRWFjaERvY3VtZW50KFsmbWVk
aWFQbGF5YmFja0V4aXN0c10gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICBpZiAoZG9j
dW1lbnQubWVkaWFQbGF5YmFja0V4aXN0cygpKQorICAgICAgICAgICAgbWVkaWFQbGF5YmFja0V4
aXN0cyA9IHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIG1lZGlhUGxheWJhY2tFeGlzdHM7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIFBhZ2U6Om1lZGlhUGxh
eWJhY2tJc1BhdXNlZCgpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJvb2wgbWVkaWFQbGF5
YmFja0lzUGF1c2VkID0gZmFsc2U7CisgICAgZm9yRWFjaERvY3VtZW50KFsmbWVkaWFQbGF5YmFj
a0lzUGF1c2VkXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgIGlmIChkb2N1bWVudC5t
ZWRpYVBsYXliYWNrSXNQYXVzZWQoKSkKKyAgICAgICAgICAgIG1lZGlhUGxheWJhY2tJc1BhdXNl
ZCA9IHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIG1lZGlhUGxheWJhY2tJc1BhdXNlZDsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZTo6cGF1c2VBbGxN
ZWRpYVBsYXliYWNrKCkKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgZm9yRWFjaERvY3VtZW50
KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKLSAgICAgICAgZG9jdW1lbnQuc3RvcEFsbE1lZGlh
UGxheWJhY2soKTsKKyAgICAgICAgZG9jdW1lbnQucGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7CiAg
ICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMjExN2EyM2E4ODAyZDdmYzc0ZjA1
ZTdhZGU2MDhiODRhYjUzMGYzOC4uMTk3MmU1NWVhOGQ1MDZjNmE5ZGYxNjVlMGU0ODMxMmQyNGYx
NTFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTY0Miw3ICs2NDIsOSBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRNdXRlZChNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgbWVkaWFQbGF5YmFja0V4aXN0cygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bWVkaWFQbGF5YmFja0lzUGF1c2VkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZUFs
bE1lZGlhUGxheWJhY2soKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbGxNZWRpYVBsYXli
YWNrKCk7CiAgICAgYm9vbCBtZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAK
aW5kZXggZDhhNzVmMjhkZDMxNThiYjA0YTczMzliYjA2MDQ2MThhN2RjNDY2Zi4uZWQ0ODcyNTUx
OWMyNzY4ZWQwNjNiN2NiMThiZjE1Y2I4YWE5MmU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCkBAIC00NTksMTMgKzQ1OSwyNCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6cHJvY2Vzc1N5c3RlbURpZFdha2UoKQogICAgIH0pOwogfQogCi12b2lkIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c3RvcEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChEb2N1bWVu
dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyKQordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnBhdXNlQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRp
ZmllciBkb2N1bWVudElkZW50aWZpZXIpCiB7CiAgICAgZm9yRWFjaERvY3VtZW50U2Vzc2lvbihk
b2N1bWVudElkZW50aWZpZXIsIFtdKGF1dG8mIHNlc3Npb24pIHsKICAgICAgICAgc2Vzc2lvbi5w
YXVzZVNlc3Npb24oKTsKICAgICB9KTsKIH0KIAorCitib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKERvY3VtZW50SWRlbnRpZmllciBkb2N1bWVu
dElkZW50aWZpZXIpCit7CisgICAgYm9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQgPSBmYWxzZTsK
KyAgICBmb3JFYWNoRG9jdW1lbnRTZXNzaW9uKGRvY3VtZW50SWRlbnRpZmllciwgWyZtZWRpYVBs
YXliYWNrSXNQYXVzZWRdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKHNlc3Npb24uc3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VkKQorICAgICAgICAgICAgbWVkaWFQ
bGF5YmFja0lzUGF1c2VkID0gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVkaWFQbGF5YmFj
a0lzUGF1c2VkOworfQorCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3RvcEFs
bE1lZGlhUGxheWJhY2tGb3JQcm9jZXNzKCkKIHsKICAgICBmb3JFYWNoU2Vzc2lvbihbXSAoYXV0
byYgc2Vzc2lvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCAzNDI5OWIxMTJiNWYyOWRh
MjVmMGUyY2E4MjFjMDNiMmQyOGExMWI5Li4xZTY3ZjhlOTA2NDBmNmY2ZDczY2I2YTUyMmFkZDk1
ZDAwYTU5MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtODgsNyArODgsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzV2lsbFN1c3BlbmQoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NEaWRSZXN1bWUoKTsKIAotICAgIHZvaWQgc3RvcEFs
bE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChEb2N1bWVudElkZW50aWZpZXIpOworICAgIGJvb2wg
bWVkaWFQbGF5YmFja0lzUGF1c2VkKERvY3VtZW50SWRlbnRpZmllcik7CisgICAgdm9pZCBwYXVz
ZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChEb2N1bWVudElkZW50aWZpZXIpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2tGb3JQcm9jZXNzKCk7CiAKICAg
ICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoRG9jdW1lbnRJZGVudGlm
aWVyKTsKQEAgLTE0Myw2ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwcm9jZXNzRGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKTsKIAogICAgIGJvb2wgaXNJbnRlcnJ1cHRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJydXB0ZWQ7IH0KKyAgICBib29sIGhhc05vU2Vzc2lvbigpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OwpAQCAtMTY4LDcgKzE3MCw2IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgaW50IGNvdW50
QWN0aXZlQXVkaW9DYXB0dXJlU291cmNlcygpOwotICAgIGJvb2wgaGFzTm9TZXNzaW9uKCkgY29u
c3Q7CiAKICAgICBib29sIGNvbXB1dGVTdXBwb3J0c1NlZWtpbmcoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTWVkaWFQbGF5YmFja1N0YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9NZWRpYVBsYXliYWNrU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWNmYjViZTcx
YjlmMTI2NDgwMWIyYTU0YmViNTNmYTYwZTQ0YTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvTWVkaWFQbGF5YmFja1N0YXRlLmgKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFz
cyBNZWRpYVBsYXliYWNrU3RhdGUgOiB1aW50OF90IHsKKyAgICBOb01lZGlhUGxheWJhY2ssCisg
ICAgTWVkaWFQbGF5YmFja1BhdXNlZCwKKyAgICBNZWRpYVBsYXliYWNrU3VzcGVuZGVkLAorICAg
IE1lZGlhUGxheWJhY2tQbGF5aW5nCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpNZWRp
YVBsYXliYWNrU3RhdGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAg
ICBXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpNZWRpYVBsYXli
YWNrU3RhdGU6Ok5vTWVkaWFQbGF5YmFjaywKKyAgICAgICAgV2ViS2l0OjpNZWRpYVBsYXliYWNr
U3RhdGU6Ok1lZGlhUGxheWJhY2tQYXVzZWQsCisgICAgICAgIFdlYktpdDo6TWVkaWFQbGF5YmFj
a1N0YXRlOjpNZWRpYVBsYXliYWNrU3VzcGVuZGVkLAorICAgICAgICBXZWJLaXQ6Ok1lZGlhUGxh
eWJhY2tTdGF0ZTo6TWVkaWFQbGF5YmFja1BsYXlpbmcKKyAgICA+OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tFcnJvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaApp
bmRleCBhMGE4YTdkYmVjOGVkYTA5MjhiYmZjNTZkNjU1ODdiZmMzZTdkNTViLi4zNzNkMzM2ZWY5
MGI2OTM3OTBlNTVjOWE0NDQ3ODY5NWI2Y2Q5NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgV0tfRVhURVJOIE5TU3Ry
aW5nICogY29uc3QgV0tFcnJvckRvbWFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwg
aW9zKDguMCkKICBAY29uc3RhbnQgV0tFcnJvckF0dHJpYnV0ZWRTdHJpbmdDb250ZW50TG9hZFRp
bWVkT3V0ICBJbmRpY2F0ZXMgdGhhdCBsb2FkaW5nIGF0dHJpYnV0ZWQgc3RyaW5nIGNvbnRlbnQg
dGltZWQgb3V0LgogIEBjb25zdGFudCBXS0Vycm9yTmF2aWdhdGlvbkFwcEJvdW5kRG9tYWluICBJ
bmRpY2F0ZXMgdGhhdCBhIG5hdmlnYXRpb24gZmFpbGVkIGR1ZSB0byBhbiBhcHAtYm91bmQgZG9t
YWluIHJlc3RyaWN0aW9uLgogIEBjb25zdGFudCBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9t
YWluICBJbmRpY2F0ZXMgdGhhdCBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBmYWlsZWQgZHVlIHRvIGFu
IGFwcC1ib3VuZCBkb21haW4gcmVzdHJpY3Rpb24uCisgQGNvbnN0YW50IFdLRXJyb3JOb01lZGlh
UGxheWJhY2sgSW5kaWNhdGVzIHRoYXQgbm8gbWVkaWEgcGxheWJhY2sgZXhpc3RzIGluIHRoZSBj
dXJyZW50IFdLV2ViVmlldy4KICAqLwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tFcnJv
ckNvZGUpIHsKICAgICBXS0Vycm9yVW5rbm93biA9IDEsCkBAIC02Myw2ICs2NCw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLRXJyb3JDb2RlKSB7CiAgICAgV0tFcnJvckphdmFTY3Jp
cHRJbnZhbGlkRnJhbWVUYXJnZXQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKSwKICAgICBXS0Vycm9yTmF2aWdhdGlvbkFwcEJvdW5kRG9tYWluIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSksCiAgICAg
V0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAorICAgIFdLRXJyb3JOb01lZGlhUGxheWJhY2sg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwKIH0g
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKTsKIAogTlNfQVNTVU1FX05P
Tk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tFcnJvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1t
CmluZGV4IGVmMDVlMGFiMTQ3MjgxNzFjMzk5MDcwZWQ2NDI5ZTMzYTVhNjhhMzYuLjdmOWMxMTJl
NTEyN2FhNDQ5ZjM0NDJhOTIyNTM5MmU5MTRkOTM2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tCkBAIC04Miw2ICs4MiwxMCBAQCBOU1N0cmluZyAq
bG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUoV0tFcnJvckNvZGUgZXJyb3JDb2RlKQog
CiAgICAgY2FzZSBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9tYWluOgogICAgICAgICByZXR1
cm4gV0VCX1VJX1NUUklORygiSmF2YVNjcmlwdCBleGVjdXRpb24gdGFyZ2V0ZWQgYSBmcmFtZSB0
aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIiwgIldLRXJyb3JKYXZhU2NyaXB0QXBw
Qm91bmREb21haW4gZGVzY3JpcHRpb24iKTsKKyAgICAgICAgICAgIAorICAgIGNhc2UgV0tFcnJv
ck5vTWVkaWFQbGF5YmFjazoKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlJlcXVlc3Qg
dG8gY2hlY2sgbWVkaWEgcGxheWJhY2sgc3RhdGUgZmFpbGVkIGJlY2F1c2Ugbm8gbWVkaWEgcGxh
eWJhY2sgZXhpc3RzIiwgIldLRXJyb3JOb01lZGlhUGxheWJhY2sgZGVzY3JpcHRpb24iKTsKKwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTWVkaWFQbGF5YmFja1N0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tNZWRpYVBsYXliYWNrU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMTkzYTZiZDdkYzcyMmIwYjFj
YzYxNGFlYTg3ZjRiZDNjNDAzODllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTWVkaWFQbGF5YmFja1N0YXRlLmgKQEAgLTAsMCArMSwzOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCit0
eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgV0tNZWRpYVBsYXliYWNrU3RhdGUpIHsKKyAgICBX
S05vTWVkaWFQbGF5YmFjaywKKyAgICBXS01lZGlhUGxheWJhY2tTdGF0ZVBhdXNlZCwKKyAgICBX
S01lZGlhUGxheWJhY2tTdGF0ZVN1c3BlbmRlZCwKKyAgICBXS01lZGlhUGxheWJhY2tTdGF0ZVBs
YXlpbmcKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNDY1OWJmMzAxMjkwNTAxNDY0OWM2NTFmNGYw
Y2UxZmZkNjFiMjA5Ni4uMjlhOWZmYTNkZmVhNzJkMGMzMjZmYmRhOTE2NGEwOTNlM2ExODM1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAt
NDcsNiArNDcsOCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQHByb3RvY29sIFdLTmF2aWdh
dGlvbkRlbGVnYXRlOwogQHByb3RvY29sIFdLVUlEZWxlZ2F0ZTsKIAordHlwZWRlZiBOU19FTlVN
KE5TVUludGVnZXIsIFdLTWVkaWFQbGF5YmFja1N0YXRlKTsKKwogLyohCiAgQSBXS1dlYlZpZXcg
b2JqZWN0IGRpc3BsYXlzIGludGVyYWN0aXZlIFdlYiBjb250ZW50LgogIEBoZWxwZXJjbGFzcyBA
bGluayBXS1dlYlZpZXdDb25maWd1cmF0aW9uIEAvbGluawpAQCAtMzIxLDYgKzMyMywzNSBAQCBX
S19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKICovCiAtICh2b2lkKWNh
bGxBc3luY0phdmFTY3JpcHQ6KE5TU3RyaW5nICopZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czoobnVs
bGFibGUgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBpbkZyYW1lOihu
dWxsYWJsZSBXS0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3Js
ZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiBfTnVsbGFibGUpKF9O
dWxsYWJsZSBpZCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIg
TlNfUkVGSU5FRF9GT1JfU1dJRlQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAorLyohIEBhYnN0cmFjdCBDbG9zZXMgYWxsIG91dC1vZi13aW5k
b3cgbWVkaWEgcHJlc2VudGF0aW9ucyBpbiBhIFdLV2ViVmlldy4KKyBAZGlzY3Vzc2lvbiBJbmNs
dWRlcyBwaWN0dXJlLWluLXBpY3R1cmUgYW5kIGZ1bGxzY3JlZW4uCisgKi8KKy0gKHZvaWQpY2xv
c2VBbGxNZWRpYVByZXNlbnRhdGlvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBQYXVzZXMgbWVkaWEgcGxheWJh
Y2sgaW4gV0tXZWJWaWV3LgorIEBkaXNjdXNzaW9uIFBhdXNlcyBtZWRpYSBwbGF5YmFjay4gTWVk
aWEgaW4gdGhlIHBhZ2UgY2FuIGJlIHJlc3RhcnRlZCBieSBjYWxsaW5nIHBsYXkoKSBvbiBhIG1l
ZGlhIGVsZW1lbnQgb3IgcmVzdW1lKCkgb24gYW4gQXVkaW9Db250ZXh0LgorICovCistICh2b2lk
KXBhdXNlQWxsTWVkaWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFN1c3BlbmRzIG1lZGlhIHBsYXli
YWNrIGluIFdLV2ViVmlldy4KKyBAZGlzY3Vzc2lvbiBQYXVzZXMgbWVkaWEgcGxheWJhY2sgYW5k
IGJsb2NrcyBhbGwgYXR0ZW1wdHMgYnkgdGhlIHBhZ2UgdG8gcmVzdW1lIHVudGlsIHJlc3VtZUFs
bE1lZGlhUGxheWJhY2sgaXMgY2FsbGVkLiBUaGlzIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIGlu
IHBhaXJzIHdpdGggcmVzdW1lQWxsTWVkaWFQbGF5YmFjay4KKyAqLworLSAodm9pZClzdXNwZW5k
QWxsTWVkaWFQbGF5YmFjayBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFJlc3VtZXMgbWVkaWEgcGxheWJhY2sgaW4g
V0tXZWJWaWV3LgorIEBkaXNjdXNzaW9uIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgaW4g
cGFpcnMgd2l0aCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjay4KKyAqLworLSAodm9pZClyZXN1bWVB
bGxNZWRpYVBsYXliYWNrIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgR2V0IHRoZSBjdXJyZW50IG1lZGlhIHBsYXli
YWNrIHN0YXRlIG9mIGEgV0tXZWJWaWV3LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJs
b2NrIHRvIGludm9rZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwu
CisgQGRpc2N1c3Npb24gSWYgbWVkaWEgcGxheWJhY2sgZXhpc3RzLCBXS01lZGlhUGxheWJhY2tT
dGF0ZSB3aWxsIGJlIG9uZSBvZiB0aHJlZQorIHZhbHVlczogV0tNZWRpYVBsYXliYWNrUGF1c2Vk
LCBXS01lZGlhUGxheWJhY2tTdXNwZW5kZWQsIG9yIFdLTWVkaWFQbGF5YmFja1BsYXlpbmcuCisg
SWYgbm8gbWVkaWEgcGxheWJhY2sgZXhpc3RzIGluIHRoZSBjdXJyZW50IFdLV2ViVmlldywgV0tN
ZWRpYVBsYXliYWNrU3RhdGUgd2lsbCBlcXVhbAorIFdLTm9NZWRpYVBsYXliYWNrIGFuZCB0aGUg
Y2FsbGJhY2sgd2lsbCByZXR1cm4gdGhlIGVycm9yIFdLRXJyb3JOb01lZGlhUGxheWJhY2suCisg
Ki8KKy0gKHZvaWQpbWVkaWFQbGF5YmFja1N0YXRlOih2b2lkICheKShXS01lZGlhUGxheWJhY2tT
dGF0ZSwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IEdldCBhIHNu
YXBzaG90IGZvciB0aGUgdmlzaWJsZSB2aWV3cG9ydCBvZiBXS1dlYlZpZXcuCiAgQHBhcmFtIHNu
YXBzaG90Q29uZmlndXJhdGlvbiBBbiBvYmplY3QgdGhhdCBzcGVjaWZpZXMgaG93IHRoZSBzbmFw
c2hvdCBpcyBjb25maWd1cmVkLgogIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRv
IGludm9rZSB3aGVuIHRoZSBzbmFwc2hvdCBpcyByZWFkeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGUyZDJmM2VlZjU3YTZiYThlYzBi
MzM1NWYwMDdiYmU4NDVhZTZkZGQuLmNkNjA3NzlhZWNiYzYyODY3YTMyOTI3ODZmNjZlZGMxYmUx
YTVjYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtNjMsNiArNjMsNyBAQAogI2ltcG9ydCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tMYXlvdXRN
b2RlLmgiCisjaW1wb3J0ICJXS01lZGlhUGxheWJhY2tTdGF0ZS5oIgogI2ltcG9ydCAiV0tOU0Rh
dGEuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldLTmF2aWdhdGlvbkRl
bGVnYXRlLmgiCkBAIC04NjMsNiArODY0LDYzIEBAIHN0YXRpYyBib29sIHZhbGlkYXRlQXJndW1l
bnQoaWQgYXJndW1lbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCistICh2b2lkKWNsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zCit7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlm
IChhdXRvIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpKSB7CisgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmZvckVhY2hTZXNzaW9u
KFtdIChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJmYWNlKSB7CisgICAgICAgICAgICBtb2RlbC5y
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGlmIChhdXRv
IGZ1bGxTY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCk7IGZ1bGxTY3Jl
ZW5NYW5hZ2VyICYmIGZ1bGxTY3JlZW5NYW5hZ2VyLT5pc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAg
ZnVsbFNjcmVlbk1hbmFnZXItPmNsb3NlKCk7CisjZW5kaWYKK30KKworLSAodm9pZClwYXVzZUFs
bE1lZGlhUGxheWJhY2sKK3sKKyAgICBfcGFnZS0+cGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7Cit9
CisKKy0gKHZvaWQpc3VzcGVuZEFsbE1lZGlhUGxheWJhY2sKK3sKKyAgICBfcGFnZS0+c3VzcGVu
ZEFsbE1lZGlhUGxheWJhY2soKTsKK30KKworLSAodm9pZClyZXN1bWVBbGxNZWRpYVBsYXliYWNr
Cit7CisgICAgX3BhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKK30KKworc3RhdGljIFdL
TWVkaWFQbGF5YmFja1N0YXRlIHRvV0tNZWRpYVBsYXliYWNrU3RhdGUoV2ViS2l0OjpNZWRpYVBs
YXliYWNrU3RhdGUgbWVkaWFQbGF5YmFja1N0YXRlKQoreworICAgIHN3aXRjaCAobWVkaWFQbGF5
YmFja1N0YXRlKSB7CisgICAgY2FzZSBXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZTo6Tm9NZWRp
YVBsYXliYWNrOgorICAgICAgICByZXR1cm4gV0tOb01lZGlhUGxheWJhY2s7CisgICAgY2FzZSBX
ZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZTo6TWVkaWFQbGF5YmFja1BhdXNlZDoKKyAgICAgICAg
cmV0dXJuIFdLTWVkaWFQbGF5YmFja1N0YXRlUGF1c2VkOworICAgIGNhc2UgV2ViS2l0OjpNZWRp
YVBsYXliYWNrU3RhdGU6Ok1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6CisgICAgICAgIHJldHVybiBX
S01lZGlhUGxheWJhY2tTdGF0ZVN1c3BlbmRlZDsKKyAgICBjYXNlIFdlYktpdDo6TWVkaWFQbGF5
YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrUGxheWluZzoKKyAgICAgICAgcmV0dXJuIFdLTWVkaWFQ
bGF5YmFja1N0YXRlUGxheWluZzsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdLTm9NZWRpYVBsYXliYWNr
OworfQorCistICh2b2lkKW1lZGlhUGxheWJhY2tTdGF0ZToodm9pZCAoXikoV0tNZWRpYVBsYXli
YWNrU3RhdGUsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICByZXR1cm4gX3Bh
Z2UtPm1lZGlhUGxheWJhY2tTdGF0ZShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIG1lZGlhUGxheWJhY2tTdGF0ZSkgeworICAgICAg
ICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgaWYgKG1lZGlhUGxheWJhY2tTdGF0ZSA9
PSBXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZTo6Tm9NZWRpYVBsYXliYWNrKQorICAgICAgICAg
ICAgZXJyb3IgPSBjcmVhdGVOU0Vycm9yKFdLRXJyb3JOb01lZGlhUGxheWJhY2spLmdldCgpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b1dLTWVkaWFQbGF5YmFja1N0YXRlKG1lZGlhUGxh
eWJhY2tTdGF0ZSksIGVycm9yKTsKKyAgICB9KTsKK30KKwogc3RhdGljIFJldGFpblB0cjxOU0Vy
cm9yPiBuc0Vycm9yRnJvbUV4Y2VwdGlvbkRldGFpbHMoY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGV0YWlscyYgZGV0YWlscykKIHsKICAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKQEAgLTE4NzAsMTYgKzE5MjgsNyBAQCAtIChf
V0tNZWRpYU11dGVkU3RhdGUpX21lZGlhTXV0ZWRTdGF0ZQogCiAtICh2b2lkKV9jbG9zZUFsbE1l
ZGlhUHJlc2VudGF0aW9ucwogewotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAo
YXV0byB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIoKSkgewotICAgICAgICB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5mb3JFYWNoU2Vzc2lvbihb
XSAoYXV0byYgbW9kZWwsIGF1dG8mIGludGVyZmFjZSkgewotICAgICAgICAgICAgbW9kZWwucmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBpZiAoYXV0byBm
dWxsU2NyZWVuTWFuYWdlciA9IF9wYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpOyBmdWxsU2NyZWVu
TWFuYWdlciAmJiBmdWxsU2NyZWVuTWFuYWdlci0+aXNGdWxsU2NyZWVuKCkpCi0gICAgICAgIGZ1
bGxTY3JlZW5NYW5hZ2VyLT5jbG9zZSgpOwotI2VuZGlmCisgICAgW3NlbGYgY2xvc2VBbGxNZWRp
YVByZXNlbnRhdGlvbnNdOwogfQogCiAtICh2b2lkKV9zdG9wTWVkaWFDYXB0dXJlCkBAIC0xODg5
LDE3ICsxOTM4LDE3IEBAIC0gKHZvaWQpX3N0b3BNZWRpYUNhcHR1cmUKIAogLSAodm9pZClfc3Rv
cEFsbE1lZGlhUGxheWJhY2sKIHsKLSAgICBfcGFnZS0+c3RvcEFsbE1lZGlhUGxheWJhY2soKTsK
KyAgICBbc2VsZiBwYXVzZUFsbE1lZGlhUGxheWJhY2tdOwogfQogCiAtICh2b2lkKV9zdXNwZW5k
QWxsTWVkaWFQbGF5YmFjawogewotICAgIF9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygp
OworICAgIFtzZWxmIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrXTsKIH0KIAogLSAodm9pZClfcmVz
dW1lQWxsTWVkaWFQbGF5YmFjawogewotICAgIF9wYWdlLT5yZXN1bWVBbGxNZWRpYVBsYXliYWNr
KCk7CisgICAgW3NlbGYgcmVzdW1lQWxsTWVkaWFQbGF5YmFja107CiB9CiAKIC0gKE5TVVJMICop
X3VucmVhY2hhYmxlVVJMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCBiN2I4MTc1Y2YwMzVlZGUwOGVlMTQ5NWY0YzM2NzU4MzE2YmQ4ZDhmLi4yYmRmNWZhNWVh
ZTllZjY5ODg3YmIyNjU2YTAxNWFmNzRlODcwYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTYwMTYsMTIgKzYwMTYsMjIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnN0b3BNZWRpYUNhcHR1cmUoKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpz
dG9wQWxsTWVkaWFQbGF5YmFjaygpCit2b2lkIFdlYlBhZ2VQcm94eTo6bWVkaWFQbGF5YmFja1N0
YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGUpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpNZWRpYVBsYXliYWNr
U3RhdGUoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0
b3BBbGxNZWRpYVBsYXliYWNrKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBhdXNl
QWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxN
ZWRpYVBsYXliYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ODIxOWViYjUzYjFjZmUzNjM5ZjJkYzE2Yzc3YzkxZmNmNWZlYjAxYi4uNjMxZTIwMWM4MmQzYTM2
MWNjMGJmY2U5YjAwNzBkY2Q0YWE1MDE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiSGlkZGVuUGFnZVRocm90dGxpbmdB
dXRvSW5jcmVhc2VzQ291bnRlci5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNp
bmNsdWRlICJNZWRpYVBsYXliYWNrU3RhdGUuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIK
ICNpbmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgiCkBAIC0xMzM0LDkgKzEzMzUsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgbWVkaWFDYXB0dXJlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bWVkaWFDYXB0dXJlRW5hYmxlZDsgfQogICAgIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCi0g
ICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIHZvaWQgcGF1c2VBbGxNZWRpYVBs
YXliYWNrKCk7CiAgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIHZvaWQg
cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOworICAgIHZvaWQgbWVkaWFQbGF5YmFja1N0YXRlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGUpPiYmKTsKIAog
I2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdm9pZCBkaWRBbGxvd1BvaW50ZXJMb2NrKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA1NzIxMzU2MmFiYzFiZTM4NDJiZTMxZTg2MTczNzBkZTI4NzhjZDBhLi5jYzFiNTdiYmQxN2Ez
ZjI4Y2IzOTMwZDcwNjQzYzA1MTNmZWFkZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1Nyw2ICs5NTcsNyBAQAogCQk0OTczREY0
ODI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NzNERjQ3MjQyMjk0MUYw
MEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovOyB9OwogCQk0OTkwMDAy
MTI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdL
UmVuZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0OTkwMDAyNDI0RDI0QzI5MDAwNDlDQjQgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTAwMDIzMjREMjRD
MUMwMDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ5OTE3REE3MjUyRDY0OUUwMDUwMzEzRiAvKiBXS01l
ZGlhUGxheWJhY2tTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDk5MTdEQTYyNTJENjQ5RTAwNTAzMTNGIC8qIFdLTWVkaWFQbGF5YmFja1N0YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDlC
Q0ExOTIyM0ExNzc2NjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBh
cnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJD
QTE5MTIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFy
dHkuaCAqLzsgfTsKIAkJNDlCQ0ExOTUyM0ExOENGRDAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkNBMTkwMjNBMTc1NDkwMDI4QTgzNiAvKiBfV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmggKi87IH07CiAJCTQ5QkNBMTk3
MjNBMTkzMEQwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTYy
M0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lmgg
Ki87IH07CkBAIC0zNTc5LDYgKzM1ODAsOCBAQAogCQk0OTkwMDAxRjI0RDI0MjlDMDAwNDlDQjQg
LyogV0tSZW5kZXJMYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1JlbmRlckxheWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTAwMDIyMjREMjRDMUMwMDA0OUNCNCAvKiBXS1Jl
bmRlck9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1JlbmRlck9iamVjdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTAwMDIzMjREMjRDMUMwMDA0OUNCNCAvKiBX
S1JlbmRlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1JlbmRlck9iamVjdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0OTkxN0RBNjI1MkQ2NDlFMDA1MDMxM0YgLyogV0tNZWRp
YVBsYXliYWNrU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tNZWRpYVBsYXliYWNrU3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDk5MTdEQjAyNTJFMzA3NTAwNTAzMTNGIC8q
IE1lZGlhUGxheWJhY2tTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXliYWNrU3RhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCQ0ExOTAyM0ExNzU0OTAwMjhBODM2
IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUJDQTE5MTIzQTE3NzY2MDAyOEE4MzYgLyog
QVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUaGlyZFBhcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTYzLDYgKzYx
NjYsNyBAQAogCQkJCTQ5NjBBM0JDMjNDNTI4NjQwMDk2MTg0MiAvKiBXZWJWaWV3Q2F0ZWdvcnku
aCAqLywKIAkJCQlDMDMzN0REMDEyN0EyOTgwMDA4RkY0RjQgLyogV2ViV2hlZWxFdmVudC5jcHAg
Ki8sCiAJCQkJMEY0MDAwRkQyNTI3RDY5RDAwRTkxREE3IC8qIFdlYldoZWVsRXZlbnQuaCAqLywK
KwkJCQk0OTkxN0RCMDI1MkUzMDc1MDA1MDMxM0YgLyogTWVkaWFQbGF5YmFja1N0YXRlLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC03NDQ2LDYgKzc0NTAsNyBAQAogCQkJCTFBRDYwRjVCMThFMjBGNEMwMDIwQzAzNCAvKiBXS1dp
bmRvd0ZlYXR1cmVzLm1tICovLAogCQkJCTFBRDYwRjVGMThFMjBGNzQwMDIwQzAzNCAvKiBXS1dp
bmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCAqLywKIAkJCQk2QTUwODBCRTFGMEVEQUFBMDBFNjE3QzUg
LyogV0tXaW5kb3dGZWF0dXJlc1ByaXZhdGUuaCAqLywKKwkJCQk0OTkxN0RBNjI1MkQ2NDlFMDA1
MDMxM0YgLyogV0tNZWRpYVBsYXliYWNrU3RhdGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29j
b2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTA5ODAsNiArMTA5ODUsNyBAQAog
CQkJCTFBQzc1MzdDMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQThCNjZCMDFCQzQzQzg2MDA4MkRGNzcgLyogUGFnZUxvYWRTdGF0ZU9ic2Vy
dmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTc0QTU4MTEyRTY2NjgxMDAyREZFOTggLyogUGFz
dGVib2FyZFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTkxN0RBNzI1MkQ2NDlFMDA1MDMx
M0YgLyogV0tNZWRpYVBsYXliYWNrU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNzk4QjUx
MjIzMEExMEUwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExNzk4QjNFMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE3OThCNDMyMjJEOThERjAw
MDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBkOTk0NjM0ODRkNDg3ZGYxOTUwNTExYzNiMTZjOTQ2ZDg2NzBhNzQzLi5hZmY2YjA2YWQ5NGVj
NzkwYzc3MmQ2ZDk3MDRlZjc0NjY3ZTZmNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkxpYldl
YlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1N0YXRlLmgiCiAjaW5jbHVkZSAiTWVk
aWFSZWNvcmRlclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW4uaCIKICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCkBAIC04MDIsOSAr
ODAzLDIxIEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICB1cGRhdGVUaHJvdHRsZVN0YXRl
KCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6c3RvcEFsbE1lZGlhUGxheWJhY2soKQordm9pZCBXZWJQ
YWdlOjptZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1l
ZGlhUGxheWJhY2tTdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wYWdlLT5z
dG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIGlmICghbV9wYWdlLT5tZWRpYVBsYXliYWNrRXhp
c3RzKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBsYXliYWNrU3Rh
dGU6Ok5vTWVkaWFQbGF5YmFjayk7CisgICAgaWYgKG1fcGFnZS0+bWVkaWFQbGF5YmFja0lzUGF1
c2VkKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBsYXliYWNrU3Rh
dGU6Ok1lZGlhUGxheWJhY2tQYXVzZWQpOworICAgIGlmIChtX3BhZ2UtPm1lZGlhUGxheWJhY2tJ
c1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTWVkaWFQbGF5
YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrU3VzcGVuZGVkKTsKKworICAgIGNvbXBsZXRpb25IYW5k
bGVyKE1lZGlhUGxheWJhY2tTdGF0ZTo6TWVkaWFQbGF5YmFja1BsYXlpbmcpOworfQorCit2b2lk
IFdlYlBhZ2U6OnBhdXNlQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgbV9wYWdlLT5wYXVzZUFs
bE1lZGlhUGxheWJhY2soKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzdXNwZW5kQWxsTWVkaWFQbGF5
YmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
ZjkxMDY2ZDdiYmE4YTg2YTQwMWU0OTIwMWM5YzNlM2ViNTc0ZjEzMS4uNjY5ODQ2ZTQzZWQwMzU0
NjNjYjU5MDdmODFiMmE3YWRmNGM2YTkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTY0Miw3ICsxNjQyLDkgQEAgcHJpdmF0ZToKIAogI2VuZGlm
CiAKLSAgICB2b2lkIHN0b3BBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgdm9pZCBtZWRpYVBsYXli
YWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0
ZSk+JiYpOworCisgICAgdm9pZCBwYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKICAgICB2b2lkIHN1
c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgdm9pZCByZXN1bWVBbGxNZWRpYVBsYXliYWNr
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCmluZGV4IDM3YjNjMzMyYWY1NTBjZTYyNzk4ZDMyNWExMDdlNjYxNTNlY2Ux
ZDUuLjg5MmNlZjllMmY0ZTRlMTM1NWQwZTVhODFkMWE1NmNhOTk1ZGQ5N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpA
QCAtMzc5LDcgKzM3OSw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAgICAgQ2FwdHVyZURl
dmljZXNDaGFuZ2VkKCkKICNlbmRpZgogCi0gICAgU3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAg
ICBNZWRpYVBsYXliYWNrU3RhdGUoKSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6TWVkaWFQbGF5
YmFja1N0YXRlIHN0YXRlKSBBc3luYworICAgIFBhdXNlQWxsTWVkaWFQbGF5YmFjaygpOwogICAg
IFN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgUmVzdW1lQWxsTWVkaWFQbGF5YmFjaygp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
NGEyMmQ4ZTRkMzQ4ZGMyYjJhZjRmOGVhMDI5MDhmYWUyNzZjNzJhYy4uMTA5ZWQxYjcxM2E4NGE5
MmE2NmRlNzYyNzY1OTA0NGVkMTc1Y2VkOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTEwLTA3ICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgV0tX
ZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIEFQSSB0ZXN0aW5nIGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMTAtMDUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVbmlmeSBsaW5rZWRPbk9yQWZ0ZXIg
ZHVwbGljYXRlIGNvZGUgYW5kIHVzZSBTUEkvV2ViQ29yZVRlc3RTdXBwb3J0IGluc3RlYWQgb2Yg
TlNVc2VyRGVmYXVsdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbQppbmRleCAy
ZGQyYWMyZmY1MTdjMTZmZTUzYmIwNDBmYmQxY2VkNWYxNDBmNDZjLi5iNjczZDY3ODc5NWQwNTdj
NjlmMGQwY2UyMGQ2ODc4MmVlOGM1Y2JlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1N0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1l
ZGlhLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tNZWRpYVBsYXli
YWNrU3RhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTEzNiw2ICsxMzcsMTIwIEBAIFRFU1QoV0tXZWJWaWV3LCBTdXNwZW5kUmVz
dW1lQWxsTWVkaWFQbGF5YmFja011bHRpcGxlVGltZXMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOwogfQogCitURVNUKFdLV2ViVmlldywgQ2hlY2tNZWRp
YVBsYXliYWNrU3VzcGVuZGVkKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRv
V2luZG93OllFU10pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiPHZpZGVvIHNyYz1cInZpZGVvLXdpdGgtYXVkaW8ubXA0XCIgd2Via2l0LXBsYXlzaW5saW5l
PjwvdmlkZW8+Il07CisKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZnVuY3Rpb24gZXZlbnRUb01lc3NhZ2UoZXZlbnQpe3dpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGV2ZW50LnR5cGUpO30gdmFyIHZpZGVvID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTsgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcign
cGxheWluZycsIGV2ZW50VG9NZXNzYWdlKTsgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2Un
LCBldmVudFRvTWVzc2FnZSk7Il07CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkQmVnaW5QbGF5aW5n
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBs
YXlpbmciIGFjdGlvbjpeeyBkaWRCZWdpblBsYXlpbmcgPSB0cnVlOyB9XTsKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpLnBs
YXkoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZEJlZ2luUGxheWluZyk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkUGF1c2UgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGF1c2UiIGFj
dGlvbjpeeyBkaWRQYXVzZSA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3IF9zdXNwZW5kQWxsTWVk
aWFQbGF5YmFja107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRQYXVzZSk7CisK
KyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbWVkaWFQbGF5
YmFja1N0YXRlOl4oV0tNZWRpYVBsYXliYWNrU3RhdGUgc3RhdGUsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRl
LCBXS01lZGlhUGxheWJhY2tTdGF0ZVN1c3BlbmRlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAg
ZGlkQmVnaW5QbGF5aW5nID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpAInBsYXlpbmciIGFjdGlvbjpeeyBkaWRCZWdpblBsYXlpbmcgPSB0cnVlOyB9
XTsKKyAgICBbd2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja107CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOworICAgIAorICAgIGlzRG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IG1lZGlhUGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQbGF5YmFja1N0
YXRlIHN0YXRlLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJv
cik7CisgICAgICAgIEVYUEVDVF9FUShzdGF0ZSwgV0tNZWRpYVBsYXliYWNrU3RhdGVQbGF5aW5n
KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBDaGVja01lZGlhUGxheWJh
Y2tFeGlzdHMpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVT
XSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBu
ZXR3b3JrIHByb2Nlc3MiXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBtZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJhY2tTdGF0ZSBzdGF0
ZSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAg
ICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBXS0Vycm9yTm9NZWRpYVBsYXliYWNrKTsKKyAgICAg
ICAgRVhQRUNUX0VRKHN0YXRlLCBXS05vTWVkaWFQbGF5YmFjayk7CisgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
ICAgIAorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjx2aWRlbyBz
cmM9XCJ2aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdlYmtpdC1wbGF5c2lubGluZT48L3ZpZGVvPiJd
OworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbWVkaWFQbGF5YmFja1N0YXRl
Ol4oV0tNZWRpYVBsYXliYWNrU3RhdGUgc3RhdGUsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9GQUxTRSghIWVycm9yKTsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRlLCBXS01lZGlh
UGxheWJhY2tTdGF0ZVBsYXlpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48L2JvZHk+Il07CisgICAgaXNE
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbWVkaWFQbGF5YmFja1N0YXRlOl4oV0tNZWRpYVBs
YXliYWNrU3RhdGUgc3RhdGUsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KCEhZXJyb3IpOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJvck5vTWVkaWFQ
bGF5YmFjayk7CisgICAgICAgIEVYUEVDVF9FUShzdGF0ZSwgV0tOb01lZGlhUGxheWJhY2spOwor
ICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChXS1dlYlZpZXcsIENoZWNrTWVkaWFQbGF5YmFja1Bh
dXNlZCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAx
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsK
KworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjx2aWRlbyBzcmM9
XCJ2aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdlYmtpdC1wbGF5c2lubGluZT48L3ZpZGVvPiJdOwor
CisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZ1bmN0aW9uIGV2
ZW50VG9NZXNzYWdlKGV2ZW50KXt3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFu
ZGxlci5wb3N0TWVzc2FnZShldmVudC50eXBlKTt9IHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ3ZpZGVvJyk7IHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBldmVu
dFRvTWVzc2FnZSk7IHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgZXZlbnRUb01lc3Nh
Z2UpOyJdOworCisgICAgX19ibG9jayBib29sIGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246
XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKS5wbGF5KCkiIGNvbXBsZXRp
b25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBs
YXlpbmcpOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IG1lZGlhUGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQbGF5YmFja1N0YXRlIHN0YXRlLCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgIEVYUEVD
VF9FUShzdGF0ZSwgV0tNZWRpYVBsYXliYWNrU3RhdGVQbGF5aW5nKTsKKyAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CisgICAgCisgICAgX19ibG9jayBib29sIGRpZFBhdXNlID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
cGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1c2Ug
PSB0cnVlOyB9XTsKKyAgICBbd2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2tdOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkUGF1c2UpOworICAgIAorICAgIGlzRG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IG1lZGlhUGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQbGF5YmFja1N0
YXRlIHN0YXRlLCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJv
cik7CisgICAgICAgIEVYUEVDVF9UUlVFKFdLTWVkaWFQbGF5YmFja1N0YXRlUGF1c2VkKTsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410805</attachid>
            <date>2020-10-07 17:44:24 -0700</date>
            <delta_ts>2020-10-07 18:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217335-20201007174423.patch</filename>
            <type>text/plain</type>
            <size>43996</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI2NDU1N2UzNjczNGY5
MDczNTQ3ZmY4NjcxMzY5NWY5YTA5NGUzNy4uMzUwNDMyODM1Yzg5NmIzY2ZmZjk5ZTI4ZmMxMzM4
ZDcxYmU3YmYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTA3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUg
V0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2hhbmdlIHN0b3BBbGxNZWRpYVBsYXliYWNrIHRvIGJlIG1vcmUgYXB0bHkgbmFtZWQK
KyAgICAgICAgcGF1c2VBbGxNZWRpYVBsYXliYWNrIGJlY2F1c2UgaXQgaXMgcG9zc2libGUgdG8g
cmVzdW1lCisgICAgICAgIHBsYXlpbmcgbWVkaWEgYWZ0ZXIgdGhpcyBpcyBjYWxsZWQuICdTdG9w
JyBpbXBsaWVzIG1vcmUgcGVybWFuZW5jZS4KKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gdGhl
IERvY3VtZW50IGFuZCBQYWdlIG9iamVjdHMgdG8gc2VlIGlmIG1lZGlhIHBsYXliYWNrCisgICAg
ICAgIGV4aXN0cywgaXMgcGF1c2VkLCBvciBpcyBzdXNwZW5kZWQgdG8gZGV0ZXJtaW5lIG1lZGlh
IHBsYXliYWNrIHN0YXRlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om1lZGlhUGxheWJhY2tFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1l
ZGlhUGxheWJhY2tJc1BhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGF1c2VB
bGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9wQWxsTWVk
aWFQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhUGxheWJhY2tF
eGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cGF1c2VBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjptZWRpYVBsYXliYWNrSXNQYXVzZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzdG9wQWxs
TWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKwogMjAyMC0xMC0wNyAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdGQ6Om1heCB0byBtYWtl
IHN1cmUgdGhlIGxpbmUgZ2FwIGlzIGFsd2F5cyBsYXJnZXIgdGhhbiAwIChzZWUgRklYTUUpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBiZGQ5ZGEwYzJlYWE0NjFiMTJmMzM4ZmI1OWVmMGVjNmYwNTM0ZDg1Li5lNTk3
NjdmNDg0ZmVmODczMmI1OGQxM2MwZGI3Y2IzYTU5YmQ3OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUwIEBACisyMDIwLTEwLTA3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIFByb21vdGUgV0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMz
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IHdheSB0byBp
bnRlcmFjdCB3aXRoIHZpZGVvIGluIFdLV2ViVmlldyBpcyBieSBpbmplY3RpbmcKKyAgICAgICAg
SmF2YVNjcmlwdCBpbnRvIGEgcGFnZS4gSXQgd291bGQgYmUgdXNlZnVsIHRvIHByb21vdGUgdmFy
aW91cyBtZWRpYQorICAgICAgICBwbGF5YmFjayBTUEkgdG8gQVBJIHRvIG1ha2UgdGhpcyBlYXNp
ZXIgZm9yIGNsaWVudHMsIGluY2x1ZGluZyBhZGRpbmcKKyAgICAgICAgY29tcGxldGlvbiBoYW5k
bGVycyB0byB0aGUgbmV3IEFQSSBjYWxscy4gQWxvbmcgd2l0aCB0aGlzLAorICAgICAgICB3ZSBz
aG91bGQgYWRkIG5ldyBBUEkgdG8gY2hlY2sgZm9yIG1lZGlhIHBsYXliYWNrIHN0YXRlLgorICAg
ICAgICBUaGlzIHBhdGNoIGtlZXBzIHRoZSBTUEkgYXJvdW5kIGZvciBjb21wYXRpYmlsaXR5Lgor
CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQv
TWVkaWFQbGF5YmFja1N0YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tNZWRpYVBsYXliYWNrU3RhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25z
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2s6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IHJlc3VtZUFsbE1lZGlhUGxheWJhY2s6XSk6CisgICAgICAgICh0b1dLTWVkaWFQ
bGF5YmFja1N0YXRlKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNr
U3RhdGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlv
bnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9wQWxsTWVkaWFQbGF5YmFja10pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RNZWRpYVBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBh
dXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Vz
cGVuZEFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c3VtZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0
b3BBbGxNZWRpYVBsYXliYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZXN1bWVBbGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3RvcEFs
bE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKIDIwMjAtMTAtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBtaXNzaW5nIGAjZGVmaW5lYCBmb3IgYFBFTkNJTEtJVF9URVhUX0lOUFVUYCBm
bGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2NWE5Mzk2ZmNlOTE1ZGY3N2Y5NjQzOTg2
M2U3NmNmMDM1ZWZmYTk3Li4wODUzNTg5ZWFiYWMzNWU3NmFiYTZmMjgyYWU1NzZjNTkyZTFlOGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcwMiw3ICs3MDIsNyBAQCBEb2N1bWVudDo6
fkRvY3VtZW50KCkKICAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+c2V0RG9jdW1lbnQo
bnVsbHB0cik7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgc3RvcEFsbE1lZGlhUGxheWJhY2so
KTsKKyAgICBwYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKICNlbmRpZgogCiAgICAgLy8gV2UgbXVz
dCBjYWxsIGNsZWFyUmFyZURhdGEoKSBoZXJlIHNpbmNlIGEgRG9jdW1lbnQgY2xhc3MgaW5oZXJp
dHMgVHJlZVNjb3BlCkBAIC0xNzk2LDEwICsxNzk2LDI0IEBAIHZvaWQgRG9jdW1lbnQ6OmZvckVh
Y2hNZWRpYUVsZW1lbnQoY29uc3QgRnVuY3Rpb248dm9pZChIVE1MTWVkaWFFbGVtZW50Jik+JiBm
dW5jCiAgICAgICAgIGZ1bmN0aW9uKGVsZW1lbnQpOwogfQogCi12b2lkIERvY3VtZW50OjpzdG9w
QWxsTWVkaWFQbGF5YmFjaygpCitib29sIERvY3VtZW50OjptZWRpYVBsYXliYWNrRXhpc3RzKCkK
IHsKICAgICBpZiAoYXV0byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKLSAgICAgICAgcGxh
dGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLT5zdG9wQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50
KGlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiAhcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLT5oYXNOb1Nlc3Npb24oKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRG9jdW1l
bnQ6Om1lZGlhUGxheWJhY2tJc1BhdXNlZCgpCit7CisgICAgaWYgKGF1dG8qIHBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlciA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFu
YWdlcklmRXhpc3RzKCkpCisgICAgICAgIHJldHVybiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXItPm1lZGlhUGxheWJhY2tJc1BhdXNlZChpZGVudGlmaWVyKCkpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwordm9pZCBEb2N1bWVudDo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBp
ZiAoYXV0byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKKyAgICAgICAgcGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyLT5wYXVzZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChpZGVudGlm
aWVyKCkpOwogfQogCiB2b2lkIERvY3VtZW50OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IGVkMjg5NTYyZWY3ZDkzOTIyMDE5MjdmNGFhZjUxODA0MjRk
ZWI0MmEuLmRkODgzYjJhMDdjNTYyMzZlY2NmZDUwNDVhYWU2MDZiMzk2ZTg3NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMTEzLDcgKzExMTMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJl
Z2lzdGVyRm9yVmlzaWJpbGl0eVN0YXRlQ2hhbmdlZENhbGxiYWNrcyhWaXNpYmlsaXR5Q2hhbmdl
Q2xpZW50Jik7CiAKICNpZiBFTkFCTEUoVklERU8pCi0gICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5
YmFjaygpOworICAgIGJvb2wgbWVkaWFQbGF5YmFja0V4aXN0cygpOworICAgIGJvb2wgbWVkaWFQ
bGF5YmFja0lzUGF1c2VkKCk7CisgICAgdm9pZCBwYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKICAg
ICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgdm9pZCByZXN1bWVBbGxNZWRp
YVBsYXliYWNrKCk7CiAgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFCdWZmZXJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDVlMDcyYzgzZTllNGM0Mjc0MWZkY2YyODkxMDZkZjdhOGM3ZmIxNDUu
LmQ3YzQyYzQyNDFkMmI4NDE2Y2M4NGQ3NjNmZTAwYzI5MmEyYTdhOWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMjA2NiwxMSArMjA2NiwzOSBAQCB2b2lkIFBhZ2U6OnN0b3BNZWRpYUNhcHR1cmUo
KQogI2VuZGlmCiB9CiAKLXZvaWQgUGFnZTo6c3RvcEFsbE1lZGlhUGxheWJhY2soKQorYm9vbCBQ
YWdlOjptZWRpYVBsYXliYWNrRXhpc3RzKCkKK3sKKyNpZiBFTkFCTEUoVklERU8pCisgICAgYm9v
bCBtZWRpYVBsYXliYWNrRXhpc3RzID0gZmFsc2U7CisgICAgZm9yRWFjaERvY3VtZW50KFsmbWVk
aWFQbGF5YmFja0V4aXN0c10gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICBpZiAoZG9j
dW1lbnQubWVkaWFQbGF5YmFja0V4aXN0cygpKQorICAgICAgICAgICAgbWVkaWFQbGF5YmFja0V4
aXN0cyA9IHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIG1lZGlhUGxheWJhY2tFeGlzdHM7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIFBhZ2U6Om1lZGlhUGxh
eWJhY2tJc1BhdXNlZCgpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJvb2wgbWVkaWFQbGF5
YmFja0lzUGF1c2VkID0gZmFsc2U7CisgICAgZm9yRWFjaERvY3VtZW50KFsmbWVkaWFQbGF5YmFj
a0lzUGF1c2VkXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgIGlmIChkb2N1bWVudC5t
ZWRpYVBsYXliYWNrSXNQYXVzZWQoKSkKKyAgICAgICAgICAgIG1lZGlhUGxheWJhY2tJc1BhdXNl
ZCA9IHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIG1lZGlhUGxheWJhY2tJc1BhdXNlZDsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK3ZvaWQgUGFnZTo6cGF1c2VBbGxN
ZWRpYVBsYXliYWNrKCkKIHsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgZm9yRWFjaERvY3VtZW50
KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKLSAgICAgICAgZG9jdW1lbnQuc3RvcEFsbE1lZGlh
UGxheWJhY2soKTsKKyAgICAgICAgZG9jdW1lbnQucGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7CiAg
ICAgfSk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYTAyMGU4ODFhMjZhZTY1MWY1NTE0
NjIwMTVkODRjZWE5NzI1YTBhOC4uZDNkZmU1Y2JmNjk2ZjM0ZmRjODk4ZWE5NjkxNjRjZTQyMDZl
ZTIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTY5MCw3ICs2OTAsOSBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRNdXRlZChNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgbWVkaWFQbGF5YmFja0V4aXN0cygpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
bWVkaWFQbGF5YmFja0lzUGF1c2VkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZUFs
bE1lZGlhUGxheWJhY2soKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVBbGxNZWRpYVBsYXli
YWNrKCk7CiAgICAgYm9vbCBtZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVy
biBtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAK
aW5kZXggZDhhNzVmMjhkZDMxNThiYjA0YTczMzliYjA2MDQ2MThhN2RjNDY2Zi4uZWQ0ODcyNTUx
OWMyNzY4ZWQwNjNiN2NiMThiZjE1Y2I4YWE5MmU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
Y3BwCkBAIC00NTksMTMgKzQ1OSwyNCBAQCB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6cHJvY2Vzc1N5c3RlbURpZFdha2UoKQogICAgIH0pOwogfQogCi12b2lkIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c3RvcEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChEb2N1bWVu
dElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVyKQordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnBhdXNlQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRp
ZmllciBkb2N1bWVudElkZW50aWZpZXIpCiB7CiAgICAgZm9yRWFjaERvY3VtZW50U2Vzc2lvbihk
b2N1bWVudElkZW50aWZpZXIsIFtdKGF1dG8mIHNlc3Npb24pIHsKICAgICAgICAgc2Vzc2lvbi5w
YXVzZVNlc3Npb24oKTsKICAgICB9KTsKIH0KIAorCitib29sIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKERvY3VtZW50SWRlbnRpZmllciBkb2N1bWVu
dElkZW50aWZpZXIpCit7CisgICAgYm9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQgPSBmYWxzZTsK
KyAgICBmb3JFYWNoRG9jdW1lbnRTZXNzaW9uKGRvY3VtZW50SWRlbnRpZmllciwgWyZtZWRpYVBs
YXliYWNrSXNQYXVzZWRdKGF1dG8mIHNlc3Npb24pIHsKKyAgICAgICAgaWYgKHNlc3Npb24uc3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGF1c2VkKQorICAgICAgICAgICAgbWVkaWFQ
bGF5YmFja0lzUGF1c2VkID0gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVkaWFQbGF5YmFj
a0lzUGF1c2VkOworfQorCiB2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3RvcEFs
bE1lZGlhUGxheWJhY2tGb3JQcm9jZXNzKCkKIHsKICAgICBmb3JFYWNoU2Vzc2lvbihbXSAoYXV0
byYgc2Vzc2lvbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAppbmRleCAzNDI5OWIxMTJiNWYyOWRh
MjVmMGUyY2E4MjFjMDNiMmQyOGExMWI5Li4xZTY3ZjhlOTA2NDBmNmY2ZDczY2I2YTUyMmFkZDk1
ZDAwYTU5MGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtODgsNyArODgsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzV2lsbFN1c3BlbmQoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NEaWRSZXN1bWUoKTsKIAotICAgIHZvaWQgc3RvcEFs
bE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChEb2N1bWVudElkZW50aWZpZXIpOworICAgIGJvb2wg
bWVkaWFQbGF5YmFja0lzUGF1c2VkKERvY3VtZW50SWRlbnRpZmllcik7CisgICAgdm9pZCBwYXVz
ZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChEb2N1bWVudElkZW50aWZpZXIpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2tGb3JQcm9jZXNzKCk7CiAKICAg
ICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoRG9jdW1lbnRJZGVudGlm
aWVyKTsKQEAgLTE0Myw2ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwcm9jZXNzRGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUsIGNvbnN0IFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb21tYW5kQXJndW1lbnQqKTsKIAogICAgIGJvb2wgaXNJbnRlcnJ1cHRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJydXB0ZWQ7IH0KKyAgICBib29sIGhhc05vU2Vzc2lvbigpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OwpAQCAtMTY4LDcgKzE3MCw2IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgaW50IGNvdW50
QWN0aXZlQXVkaW9DYXB0dXJlU291cmNlcygpOwotICAgIGJvb2wgaGFzTm9TZXNzaW9uKCkgY29u
c3Q7CiAKICAgICBib29sIGNvbXB1dGVTdXBwb3J0c1NlZWtpbmcoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCmluZGV4IGUyYzI4ODJkMDFlM2Y3MzVkZTdk
YTU1ZmQzYjJhMGQwMTljNjg1M2MuLjFmN2EzZGQzYzY5NzNlMTA5OTRmNWRjMTM3ZmFmNDA2YTI1
ZWEyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktp
dC9XS0ZyYW1lSW5mby5oPgogI2ltcG9ydCA8V2ViS2l0L1dLSFRUUENvb2tpZVN0b3JlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tNZWRpYVBsYXliYWNrU3RhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S05hdmlnYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25BY3Rpb24uaD4KICNp
bXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvTWVkaWFQbGF5YmFja1N0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9NZWRpYVBsYXliYWNrU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWNmYjViZTcxYjlmMTI2NDgwMWIy
YTU0YmViNTNmYTYwZTQ0YTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTWVkaWFQbGF5YmFja1N0YXRlLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBNZWRpYVBsYXli
YWNrU3RhdGUgOiB1aW50OF90IHsKKyAgICBOb01lZGlhUGxheWJhY2ssCisgICAgTWVkaWFQbGF5
YmFja1BhdXNlZCwKKyAgICBNZWRpYVBsYXliYWNrU3VzcGVuZGVkLAorICAgIE1lZGlhUGxheWJh
Y2tQbGF5aW5nCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpNZWRpYVBsYXliYWNrU3Rh
dGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJLaXQ6Ok1l
ZGlhUGxheWJhY2tTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGU6Ok5v
TWVkaWFQbGF5YmFjaywKKyAgICAgICAgV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGU6Ok1lZGlh
UGxheWJhY2tQYXVzZWQsCisgICAgICAgIFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRlOjpNZWRp
YVBsYXliYWNrU3VzcGVuZGVkLAorICAgICAgICBXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZTo6
TWVkaWFQbGF5YmFja1BsYXlpbmcKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tNZWRpYVBsYXli
YWNrU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS01lZGlhUGxh
eWJhY2tTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4Njk3MzA3ODFjMjgxNjEwNTk4MGFkNzY1NjkyZDlh
NjFhYTI5ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tNZWRpYVBsYXliYWNrU3RhdGUuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK3R5cGVkZWYgTlNfRU5V
TShOU1VJbnRlZ2VyLCBXS01lZGlhUGxheWJhY2tTdGF0ZSkgeworICAgIFdLTWVkaWFQbGF5YmFj
a1N0YXRlTm9uZSwKKyAgICBXS01lZGlhUGxheWJhY2tTdGF0ZVBhdXNlZCwKKyAgICBXS01lZGlh
UGxheWJhY2tTdGF0ZVN1c3BlbmRlZCwKKyAgICBXS01lZGlhUGxheWJhY2tTdGF0ZVBsYXlpbmcK
K30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
KworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNDY1OWJmMzAxMjkwNTAxNDY0OWM2NTFmNGYwY2UxZmZk
NjFiMjA5Ni4uY2ZhNDQwMTc2MzBhZWMxZmMwZTNiMDA4MzkwOTZiMTQzZDQxOTQ1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMjUsNiAr
MjUsOCBAQAogCiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CiAKKyNpbXBvcnQgPFdl
YktpdC9XS01lZGlhUGxheWJhY2tTdGF0ZS5oPgorCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogI2lt
cG9ydCA8VUlLaXQvVUlLaXQuaD4KICNlbHNlCkBAIC0zMjEsNiArMzIzLDM1IEBAIFdLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogKi8KIC0gKHZvaWQpY2FsbEFzeW5j
SmF2YVNjcmlwdDooTlNTdHJpbmcgKilmdW5jdGlvbkJvZHkgYXJndW1lbnRzOihudWxsYWJsZSBO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGluRnJhbWU6KG51bGxhYmxl
IFdLRnJhbWVJbmZvICopZnJhbWUgaW5Db250ZW50V29ybGQ6KFdLQ29udGVudFdvcmxkICopY29u
dGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheIF9OdWxsYWJsZSkoX051bGxhYmxl
IGlkLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSljb21wbGV0aW9uSGFuZGxlciBOU19SRUZJ
TkVEX0ZPUl9TV0lGVCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCisvKiEgQGFic3RyYWN0IENsb3NlcyBhbGwgb3V0LW9mLXdpbmRvdyBtZWRp
YSBwcmVzZW50YXRpb25zIGluIGEgV0tXZWJWaWV3LgorIEBkaXNjdXNzaW9uIEluY2x1ZGVzIHBp
Y3R1cmUtaW4tcGljdHVyZSBhbmQgZnVsbHNjcmVlbi4KKyAqLworLSAodm9pZCljbG9zZUFsbE1l
ZGlhUHJlc2VudGF0aW9ucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IFBhdXNlcyBtZWRpYSBwbGF5YmFjayBpbiBX
S1dlYlZpZXcuCisgQGRpc2N1c3Npb24gUGF1c2VzIG1lZGlhIHBsYXliYWNrLiBNZWRpYSBpbiB0
aGUgcGFnZSBjYW4gYmUgcmVzdGFydGVkIGJ5IGNhbGxpbmcgcGxheSgpIG9uIGEgbWVkaWEgZWxl
bWVudCBvciByZXN1bWUoKSBvbiBhbiBBdWRpb0NvbnRleHQuCisgKi8KKy0gKHZvaWQpcGF1c2VB
bGxNZWRpYVBsYXliYWNrOih2b2lkICheX051bGxhYmxlKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
CisvKiEgQGFic3RyYWN0IFN1c3BlbmRzIG1lZGlhIHBsYXliYWNrIGluIFdLV2ViVmlldy4KKyBA
ZGlzY3Vzc2lvbiBQYXVzZXMgbWVkaWEgcGxheWJhY2sgYW5kIGJsb2NrcyBhbGwgYXR0ZW1wdHMg
YnkgdGhlIHBhZ2UgdG8gcmVzdW1lIHVudGlsIHJlc3VtZUFsbE1lZGlhUGxheWJhY2sgaXMgY2Fs
bGVkLiBUaGlzIHNob3VsZCBhbHdheXMgYmUgY2FsbGVkIGluIHBhaXJzIHdpdGggcmVzdW1lQWxs
TWVkaWFQbGF5YmFjay4KKyAqLworLSAodm9pZClzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazoodm9p
ZCAoXl9OdWxsYWJsZSkodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBSZXN1
bWVzIG1lZGlhIHBsYXliYWNrIGluIFdLV2ViVmlldy4KKyBAZGlzY3Vzc2lvbiBUaGlzIHNob3Vs
ZCBhbHdheXMgYmUgY2FsbGVkIGluIHBhaXJzIHdpdGggc3VzcGVuZEFsbE1lZGlhUGxheWJhY2su
CisgKi8KKy0gKHZvaWQpcmVzdW1lQWxsTWVkaWFQbGF5YmFjazoodm9pZCAoXiBfTnVsbGFibGUp
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgR2V0IHRoZSBjdXJyZW50IG1l
ZGlhIHBsYXliYWNrIHN0YXRlIG9mIGEgV0tXZWJWaWV3LgorIEBwYXJhbSBjb21wbGV0aW9uSGFu
ZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0
aW9uIGNhbGwuCisgQGRpc2N1c3Npb24gSWYgbWVkaWEgcGxheWJhY2sgZXhpc3RzLCBXS01lZGlh
UGxheWJhY2tTdGF0ZSB3aWxsIGJlIG9uZSBvZiB0aHJlZQorIHZhbHVlczogV0tNZWRpYVBsYXli
YWNrUGF1c2VkLCBXS01lZGlhUGxheWJhY2tTdXNwZW5kZWQsIG9yIFdLTWVkaWFQbGF5YmFja1Bs
YXlpbmcuCisgSWYgbm8gbWVkaWEgcGxheWJhY2sgZXhpc3RzIGluIHRoZSBjdXJyZW50IFdLV2Vi
VmlldywgV0tNZWRpYVBsYXliYWNrU3RhdGUgd2lsbCBlcXVhbAorIFdLTm9NZWRpYVBsYXliYWNr
IGFuZCB0aGUgY2FsbGJhY2sgd2lsbCByZXR1cm4gdGhlIGVycm9yIFdLRXJyb3JOb01lZGlhUGxh
eWJhY2suCisgKi8KKy0gKHZvaWQpcmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZToodm9pZCAoXiko
V0tNZWRpYVBsYXliYWNrU3RhdGUpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8qISBAYWJzdHJhY3QgR2V0
IGEgc25hcHNob3QgZm9yIHRoZSB2aXNpYmxlIHZpZXdwb3J0IG9mIFdLV2ViVmlldy4KICBAcGFy
YW0gc25hcHNob3RDb25maWd1cmF0aW9uIEFuIG9iamVjdCB0aGF0IHNwZWNpZmllcyBob3cgdGhl
IHNuYXBzaG90IGlzIGNvbmZpZ3VyZWQuCiAgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxv
Y2sgdG8gaW52b2tlIHdoZW4gdGhlIHNuYXBzaG90IGlzIHJlYWR5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMmY5OGU0ZGM3Nzk0OTcz
YmM1MjU5ZWY1NzlhN2M3ODliYTMxNTNhNy4uNWFlZDdlOGIxZTI5MjQ5YjZiM2M4MmEwY2EyZDFj
MGYwYzE5NWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC02Myw2ICs2Myw3IEBACiAjaW1wb3J0ICJXS0ZpbmRSZXN1bHRJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS0xh
eW91dE1vZGUuaCIKKyNpbXBvcnQgIldLTWVkaWFQbGF5YmFja1N0YXRlLmgiCiAjaW1wb3J0ICJX
S05TRGF0YS5oIgogI2ltcG9ydCAiV0tOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0
aW9uRGVsZWdhdGUuaCIKQEAgLTg2NSw2ICs4NjYsNzMgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVB
cmd1bWVudChpZCBhcmd1bWVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKy0gKHZvaWQpY2xv
c2VBbGxNZWRpYVByZXNlbnRhdGlvbnMKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisg
ICAgaWYgKGF1dG8gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IF9wYWdlLT52aWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyKCkpIHsKKyAgICAgICAgdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+Zm9yRWFjaFNl
c3Npb24oW10gKGF1dG8mIG1vZGVsLCBhdXRvJiBpbnRlcmZhY2UpIHsKKyAgICAgICAgICAgIG1v
ZGVsLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgaWYg
KGF1dG8gZnVsbFNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKTsgZnVs
bFNjcmVlbk1hbmFnZXIgJiYgZnVsbFNjcmVlbk1hbmFnZXItPmlzRnVsbFNjcmVlbigpKQorICAg
ICAgICBmdWxsU2NyZWVuTWFuYWdlci0+Y2xvc2UoKTsKKyNlbmRpZgorfQorCistICh2b2lkKXBh
dXNlQWxsTWVkaWFQbGF5YmFjazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIF9wYWdlLT5wYXVzZUFsbE1l
ZGlhUGxheWJhY2soW10geyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9wYWdl
LT5wYXVzZUFsbE1lZGlhUGxheWJhY2sobWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKKy0gKHZvaWQpc3VzcGVuZEFsbE1lZGlhUGxheWJhY2s6KHZvaWQgKF4pKHZvaWQpKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAg
ICBfcGFnZS0+c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soW10geyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBfcGFnZS0+c3VzcGVuZEFsbE1lZGlhUGxheWJhY2sobWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKy0gKHZvaWQpcmVzdW1lQWxsTWVkaWFQbGF5YmFj
azoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIWNvbXBsZXRp
b25IYW5kbGVyKSB7CisgICAgICAgIF9wYWdlLT5yZXN1bWVBbGxNZWRpYVBsYXliYWNrKFtdIHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgX3BhZ2UtPnJlc3VtZUFsbE1lZGlhUGxh
eWJhY2sobWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3N0YXRpYyBXS01l
ZGlhUGxheWJhY2tTdGF0ZSB0b1dLTWVkaWFQbGF5YmFja1N0YXRlKFdlYktpdDo6TWVkaWFQbGF5
YmFja1N0YXRlIG1lZGlhUGxheWJhY2tTdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKG1lZGlhUGxheWJh
Y2tTdGF0ZSkgeworICAgIGNhc2UgV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGU6Ok5vTWVkaWFQ
bGF5YmFjazoKKyAgICAgICAgcmV0dXJuIFdLTWVkaWFQbGF5YmFja1N0YXRlTm9uZTsKKyAgICBj
YXNlIFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrUGF1c2VkOgorICAg
ICAgICByZXR1cm4gV0tNZWRpYVBsYXliYWNrU3RhdGVQYXVzZWQ7CisgICAgY2FzZSBXZWJLaXQ6
Ok1lZGlhUGxheWJhY2tTdGF0ZTo6TWVkaWFQbGF5YmFja1N1c3BlbmRlZDoKKyAgICAgICAgcmV0
dXJuIFdLTWVkaWFQbGF5YmFja1N0YXRlU3VzcGVuZGVkOworICAgIGNhc2UgV2ViS2l0OjpNZWRp
YVBsYXliYWNrU3RhdGU6Ok1lZGlhUGxheWJhY2tQbGF5aW5nOgorICAgICAgICByZXR1cm4gV0tN
ZWRpYVBsYXliYWNrU3RhdGVQbGF5aW5nOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV0tNZWRpYVBsYXli
YWNrU3RhdGVOb25lOworfQorCistICh2b2lkKXJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6KHZv
aWQgKF4pKFdLTWVkaWFQbGF5YmFja1N0YXRlKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIHJl
dHVybiBfcGFnZS0+cmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZShbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIG1lZGlhUGxheWJhY2tT
dGF0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b1dLTWVkaWFQbGF5YmFja1N0YXRl
KG1lZGlhUGxheWJhY2tTdGF0ZSkpOworICAgIH0pOworfQorCiBzdGF0aWMgUmV0YWluUHRyPE5T
RXJyb3I+IG5zRXJyb3JGcm9tRXhjZXB0aW9uRGV0YWlscyhjb25zdCBXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJiBkZXRhaWxzKQogewogICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwpAQCAtMTg1MywxNiArMTkyMSw3IEBAIC0g
KF9XS01lZGlhTXV0ZWRTdGF0ZSlfbWVkaWFNdXRlZFN0YXRlCiAKIC0gKHZvaWQpX2Nsb3NlQWxs
TWVkaWFQcmVzZW50YXRpb25zCiB7Ci0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlm
IChhdXRvIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpKSB7Ci0gICAgICAgIHZpZGVvRnVsbHNjcmVlbk1hbmFnZXItPmZvckVhY2hTZXNzaW9u
KFtdIChhdXRvJiBtb2RlbCwgYXV0byYgaW50ZXJmYWNlKSB7Ci0gICAgICAgICAgICBtb2RlbC5y
ZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlTm9uZSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGlmIChhdXRv
IGZ1bGxTY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCk7IGZ1bGxTY3Jl
ZW5NYW5hZ2VyICYmIGZ1bGxTY3JlZW5NYW5hZ2VyLT5pc0Z1bGxTY3JlZW4oKSkKLSAgICAgICAg
ZnVsbFNjcmVlbk1hbmFnZXItPmNsb3NlKCk7Ci0jZW5kaWYKKyAgICBbc2VsZiBjbG9zZUFsbE1l
ZGlhUHJlc2VudGF0aW9uc107CiB9CiAKIC0gKHZvaWQpX3N0b3BNZWRpYUNhcHR1cmUKQEAgLTE4
NzIsMTcgKzE5MzEsMTcgQEAgLSAodm9pZClfc3RvcE1lZGlhQ2FwdHVyZQogCiAtICh2b2lkKV9z
dG9wQWxsTWVkaWFQbGF5YmFjawogewotICAgIF9wYWdlLT5zdG9wQWxsTWVkaWFQbGF5YmFjaygp
OworICAgIFtzZWxmIHBhdXNlQWxsTWVkaWFQbGF5YmFjazpuaWxdOwogfQogCiAtICh2b2lkKV9z
dXNwZW5kQWxsTWVkaWFQbGF5YmFjawogewotICAgIF9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5
YmFjaygpOworICAgIFtzZWxmIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrOm5pbF07CiB9CiAKIC0g
KHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKIHsKLSAgICBfcGFnZS0+cmVzdW1lQWxsTWVk
aWFQbGF5YmFjaygpOworICAgIFtzZWxmIHJlc3VtZUFsbE1lZGlhUGxheWJhY2s6bmlsXTsKIH0K
IAogLSAoTlNVUkwgKilfdW5yZWFjaGFibGVVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGRmNGZiZjY0YmU3NjM4ZGFmZDQ1YzJiZTk0OTFlZmY3YjNjMzUy
YmMuLmExYzFlMzQ4ZGVlMjQ0MWU0YTVkNzU5OTg2NjdlZjc0ZTA3N2I1NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNjAyMCw0MCArNjAyMCw2MCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpN
ZWRpYVBsYXliYWNrU3RhdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdE1lZGlhUGxheWJh
Y2tTdGF0ZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpwYXVzZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
IAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRpYVBsYXliYWNrKCkpOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UGF1c2VBbGxNZWRpYVBs
YXliYWNrKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNw
ZW5kQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyKys7Ci0g
ICAgaWYgKG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKQorICAgIGlmIChtX21lZGlhUGxheWJh
Y2tJc1N1c3BlbmRlZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkID0gdHJ1ZTsKIAot
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKKyAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNr
KCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFs
bE1lZGlhUGxheWJhY2soKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCit2b2lkIFdlYlBhZ2VQcm94
eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291
bnRlciA+IDApCiAgICAgICAgIG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyLS07CiAKLSAg
ICBpZiAoIW1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkIHx8IG1fc3VzcGVuZE1lZGlhUGxheWJh
Y2tDb3VudGVyKQorICAgIGlmICghbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgfHwgbV9zdXNw
ZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCA9
IGZhbHNlOwogCi0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVk
aWFQbGF5YmFjaygpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29s
IG1heVN0YXJ0TWVkaWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGU0N2NiNWU0MWYzOWRkYjc5ZmQ1MWQ3NTFmOTNhZWYzZGNiYzI1NWEuLjc2YzIyNjBhYTY1N2Yz
NWRiNmZhYTI1YjQ0MzcxZDk0ZTkzM2Q4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIkhpZGRlblBhZ2VUaHJvdHRsaW5n
QXV0b0luY3JlYXNlc0NvdW50ZXIuaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCisj
aW5jbHVkZSAiTWVkaWFQbGF5YmFja1N0YXRlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmgi
CiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmllci5oIgpAQCAtMTMzMyw5ICsxMzM0LDEwIEBA
IHB1YmxpYzoKICAgICBib29sIG1lZGlhQ2FwdHVyZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhQ2FwdHVyZUVuYWJsZWQ7IH0KICAgICB2b2lkIHN0b3BNZWRpYUNhcHR1cmUoKTsKIAot
ICAgIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2soKTsKLSAgICB2b2lkIHN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKCk7Ci0gICAgdm9pZCByZXN1bWVBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgdm9p
ZCBwYXVzZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJik7
CisgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHZvaWQpPiYmKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh2b2lkKT4mJik7CisgICAgdm9pZCByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGUpPiYmKTsK
IAogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCiAgICAgdm9pZCBkaWRBbGxvd1BvaW50ZXJMb2Nr
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2NWZmODZkYjNkMjNmMGNhYTI4YjJlNmM3MzVlY2Y0MzlmYjFkMDY5Li42YWFiNjczNjQ4
NzVjMjNlN2U5NWNmYjY5MTI2MTgwNTBhZWVhNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1Nyw2ICs5NTcsNyBAQAogCQk0OTcz
REY0ODI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NzNERjQ3MjQyMjk0
MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovOyB9OwogCQk0OTkw
MDAyMTI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8q
IFdLUmVuZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0OTkwMDAyNDI0RDI0QzI5MDAwNDlDQjQgLyogV0tSZW5kZXJPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTAwMDIzMjRE
MjRDMUMwMDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ5OTE3REE3MjUyRDY0OUUwMDUwMzEzRiAvKiBX
S01lZGlhUGxheWJhY2tTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDk5MTdEQTYyNTJENjQ5RTAwNTAzMTNGIC8qIFdLTWVkaWFQbGF5YmFja1N0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk0
OUJDQTE5MjIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQ
YXJ0eS5oICovOyB9OwogCQk0OUJDQTE5NTIzQTE4Q0ZEMDAyOEE4MzYgLyogX1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTAyM0ExNzU0OTAwMjhBODM2IC8qIF9XS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCAqLzsgfTsKIAkJNDlCQ0Ex
OTcyM0ExOTMwRDAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJDQTE5
NjIzQTE4RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHku
aCAqLzsgfTsKQEAgLTM1ODAsNiArMzU4MSw4IEBACiAJCTQ5OTAwMDFGMjREMjQyOUMwMDA0OUNC
NCAvKiBXS1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyTGF5ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAwMjIyNEQyNEMxQzAwMDQ5Q0I0IC8qIFdL
UmVuZGVyT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmVuZGVyT2JqZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAwMjMyNEQyNEMxQzAwMDQ5Q0I0IC8q
IFdLUmVuZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyT2JqZWN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTE3REE2MjUyRDY0OUUwMDUwMzEzRiAvKiBXS01l
ZGlhUGxheWJhY2tTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01lZGlhUGxheWJhY2tTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTkxN0RCMDI1MkUzMDc1MDA1MDMxM0Yg
LyogTWVkaWFQbGF5YmFja1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tTdGF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUJDQTE5MDIzQTE3NTQ5MDAyOEE4
MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAv
KiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
UElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0OUJDQTE5NjIzQTE4RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RoaXJkUGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwMjgsNiAr
NjAzMSw3IEBACiAJCQkJMUE5MkRDMTAxMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRl
eHQuaCAqLywKIAkJCQkyRDEwODc1RTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMu
Y3BwICovLAogCQkJCTJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5o
ICovLAorCQkJCTQ5OTE3REIwMjUyRTMwNzUwMDUwMzEzRiAvKiBNZWRpYVBsYXliYWNrU3RhdGUu
aCAqLywKIAkJCQkyRDUwMzY2QTFCQ0RFMTc5MDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2
ZW50LmggKi8sCiAJCQkJQzAyQkZGMTUxMjUxNEZEODAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQuaCAqLywKIAkJCQkzMUVBMjVEMzEzNEY3OEQ2MDA1QjE0NTIgLyogTmF0aXZlV2Vi
TW91c2VFdmVudC5oICovLApAQCAtNzM2MSw2ICs3MzY1LDcgQEAKIAkJCQk1MUQxMjQ4NTFFNzM0
QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCiAJCQkJNTFEMTI0ODYxRTcz
NEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCAqLywKIAkJCQlERjQ2
MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8sCisJ
CQkJNDk5MTdEQTYyNTJENjQ5RTAwNTAzMTNGIC8qIFdLTWVkaWFQbGF5YmFja1N0YXRlLmggKi8s
CiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5t
bSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZp
ZXJzUHJpdmF0ZS5oICovLAogCQkJCTFBNUIxQzRGMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmln
YXRpb24uaCAqLywKQEAgLTExNjA5LDYgKzExNjE0LDcgQEAKIAkJCQk1MUE5RTEwQjEzMTVDRDE4
MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyRDc5MEE5RjFBRDcxNjQ5MDBBQjkwQjMgLyogV0tMYXlvdXRNb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0U5MTIxNDIyOTNDMjgwMDA1QkVDNzggLyogV0tNYWluLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0OTkxN0RBNzI1MkQ2NDlFMDA1MDMxM0YgLyogV0tNZWRpYVBsYXliYWNrU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJ
dGVtSWRlbnRpZmllcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FCREM4NjIyQzQw
RkRFMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMx
MUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjYw
YTBlMmFjYjRiZTllYTdiM2QwZjNhYmNmZDA2MDJmNTE0NzJiNS4uY2ZiN2NhMDBjYWQyYmY5OGRl
OTg4MTZiOTk5YTQzNzRiYzcwOWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJMaWJXZWJSVENQ
cm92aWRlci5oIgogI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tTdGF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVj
b3JkZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtODAyLDE5ICs4MDMs
MzQgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit2b2lkIFdlYlBhZ2U6
OnJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6
Ok1lZGlhUGxheWJhY2tTdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wYWdl
LT5zdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIGlmICghbV9wYWdlLT5tZWRpYVBsYXliYWNr
RXhpc3RzKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBsYXliYWNr
U3RhdGU6Ok5vTWVkaWFQbGF5YmFjayk7CisgICAgaWYgKG1fcGFnZS0+bWVkaWFQbGF5YmFja0lz
UGF1c2VkKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBsYXliYWNr
U3RhdGU6Ok1lZGlhUGxheWJhY2tQYXVzZWQpOworICAgIGlmIChtX3BhZ2UtPm1lZGlhUGxheWJh
Y2tJc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTWVkaWFQ
bGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrU3VzcGVuZGVkKTsKKworICAgIGNvbXBsZXRpb25I
YW5kbGVyKE1lZGlhUGxheWJhY2tTdGF0ZTo6TWVkaWFQbGF5YmFja1BsYXlpbmcpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKK3ZvaWQgV2ViUGFnZTo6cGF1
c2VBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFj
aygpCit2b2lkIFdlYlBhZ2U6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh2b2lkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UtPnJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYUJ1ZmZlcmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWZmMzVmYjA5MzZhNWM3NzE2YWE0YzAxMmQy
NmUwNzNiNDQ3OGU5NS4uNDcxNDFhNDRkNGFmOGViNmZlNzdjNzA0YTQ3NDIwZTA5N2I5ZDEzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTY0OSw5
ICsxNjQ5LDExIEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi0gICAgdm9pZCBzdG9wQWxsTWVkaWFQ
bGF5YmFjaygpOwotICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKLSAgICB2b2lk
IHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lkIHJlcXVlc3RNZWRpYVBsYXliYWNr
U3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSk+
JiYpOworCisgICAgdm9pZCBwYXVzZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh2b2lkKT4mJik7CisgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJh
Y2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VU
b05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNo
YW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAwYzlk
OTY3YjZjZDY0NDU1MWVhZTczYTM4OWQ2MjZhYjY3MWNjYWFiLi4xNTVmMWY0YTRhOTYyODllMTA4
NzFmMjJhNTk1NTA3MGVkMGVlNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM3OCw5ICszNzgsMTAgQEAgR2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDYXB0dXJlRGV2aWNlc0NoYW5nZWQoKQogI2VuZGlm
CiAKLSAgICBTdG9wQWxsTWVkaWFQbGF5YmFjaygpOwotICAgIFN1c3BlbmRBbGxNZWRpYVBsYXli
YWNrKCk7Ci0gICAgUmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOworICAgIFJlcXVlc3RNZWRpYVBs
YXliYWNrU3RhdGUoKSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRl
IHN0YXRlKSBBc3luYworICAgIFBhdXNlQWxsTWVkaWFQbGF5YmFjaygpIC0+ICgpIEFzeW5jCisg
ICAgU3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKSAtPiAoKSBBc3luYworICAgIFJlc3VtZUFsbE1l
ZGlhUGxheWJhY2soKSAtPiAoKSBBc3luYwogCiAgICAgIyBOb3RpZmljYXRpb24KICAgICBEaWRS
ZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklELCBib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZmY0MWY2MTk5NWY1YTc5MGFmNGRiM2RmY2U0ZjBmNjdiZWNjOTRiNy4u
OWE0ZGM1MzAwODY1NWFkNDAwMjllMzBkMDQwMmYxYTljZmMwMDM3ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIw
LTEwLTA3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAg
ICAgIFByb21vdGUgV0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0aW5nIGNvdmVyYWdlIGZvciBuZXcgQVBJLiBB
bHNvIGNvbnZlcnRlZCB0ZXN0aW5nIHRvCisgICAgICAgIHVzZSB0aGUgbmV3IEFQSSBpbnN0ZWFk
IG9mIFNQSS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3Rv
cFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDIwLTEwLTA3ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4K
IAogICAgICAgICBbR1RLXVtXUEVdIFJlbW92ZSBBcGFjaGUncyBtb2RfYncgZnJvbSBpbnN0YWxs
LWRlcGVuZGVuY2llcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tCmluZGV4IDJk
ZDJhYzJmZjUxN2MxNmZlNTNiYjA0MGZiZDFjZWQ1ZjE0MGY0NmMuLmU3N2JlZDZiOGJiYmU0OTdl
Y2FiNTlhYTM3NDU4M2RhN2U5NDM4M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3BTdXNwZW5kUmVzdW1lQWxsTWVk
aWEubW0KQEAgLTI5LDYgKzI5LDggQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS01lZGlhUGxheWJh
Y2tTdGF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9y
VGVzdGluZy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTEsNyArNTMsNyBAQCBU
RVNUKFdLV2ViVmlldywgU3RvcEFsbE1lZGlhUGxheWJhY2spCiAKICAgICBfX2Jsb2NrIGJvb2wg
ZGlkUGF1c2UgPSBmYWxzZTsKICAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNz
YWdlOkAicGF1c2UiIGFjdGlvbjpeeyBkaWRQYXVzZSA9IHRydWU7IH1dOwotICAgIFt3ZWJWaWV3
IF9zdG9wQWxsTWVkaWFQbGF5YmFja107CisgICAgW3dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXli
YWNrOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRQYXVzZSk7CiB9CiAK
QEAgLTcxLDcgKzczLDcgQEAgVEVTVChXS1dlYlZpZXcsIFN1c3BlbmRSZXN1bWVBbGxNZWRpYVBs
YXliYWNrKQogCiAgICAgX19ibG9jayBib29sIGRpZFBhdXNlID0gZmFsc2U7CiAgICAgW3dlYlZp
ZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1
c2UgPSB0cnVlOyB9XTsKLSAgICBbd2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxheWJhY2tdOwor
ICAgIFt3ZWJWaWV3IHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrOm5pbF07CiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkaWRQYXVzZSk7CiAKICAgICBfX2Jsb2NrIGJvb2wgZGlkUmVqZWN0
ID0gZmFsc2U7CkBAIC04MSw3ICs4Myw3IEBAIFRFU1QoV0tXZWJWaWV3LCBTdXNwZW5kUmVzdW1l
QWxsTWVkaWFQbGF5YmFjaykKIAogICAgIGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOwogICAgIFt3
ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246Xnsg
ZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07Ci0gICAgW3dlYlZpZXcgX3Jlc3VtZUFsbE1lZGlh
UGxheWJhY2tdOworICAgIFt3ZWJWaWV3IHJlc3VtZUFsbE1lZGlhUGxheWJhY2s6bmlsXTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEJlZ2luUGxheWluZyk7CiB9CiAKQEAgLTEw
MSw3ICsxMDMsNyBAQCBURVNUKFdLV2ViVmlldywgU3VzcGVuZFJlc3VtZUFsbE1lZGlhUGxheWJh
Y2tNdWx0aXBsZVRpbWVzKQogCiAgICAgX19ibG9jayBib29sIGRpZFBhdXNlID0gZmFsc2U7CiAg
ICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246
XnsgZGlkUGF1c2UgPSB0cnVlOyB9XTsKLSAgICBbd2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxh
eWJhY2tdOworICAgIFt3ZWJWaWV3IHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrOm5pbF07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRQYXVzZSk7CiAKICAgICBfX2Jsb2NrIGJvb2wg
ZGlkUmVqZWN0ID0gZmFsc2U7CkBAIC0xMTAsMTkgKzExMiwxNyBAQCBURVNUKFdLV2ViVmlldywg
U3VzcGVuZFJlc3VtZUFsbE1lZGlhUGxheWJhY2tNdWx0aXBsZVRpbWVzKQogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZGlkUmVqZWN0KTsKIAogICAgIC8vIFN1c3BlbmQgYWdhaW4gdG8g
aW5jcmVtZW50IHRoZSBjb3VudGVyLgotICAgIFt3ZWJWaWV3IF9zdXNwZW5kQWxsTWVkaWFQbGF5
YmFja107Ci0gICAgZG8gewotICAgICAgICBpZiAoW3dlYlZpZXcgX3N1c3BlbmRNZWRpYVBsYXli
YWNrQ291bnRlcl0uaW50VmFsdWUgPj0gMikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKLSAgICB9IHdoaWxlICh0cnVlKTsK
LQotICAgIFt3ZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXliYWNrXTsKLSAgICBkbyB7Ci0gICAg
ICAgIGlmIChbd2ViVmlldyBfc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyXS5pbnRWYWx1ZSA8
PSAxKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNw
aW5SdW5Mb29wKDEpOwotICAgIH0gd2hpbGUgKHRydWUpOworICAgIF9fYmxvY2sgYm9vbCBpc0Rv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazpeeworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHJlc3VtZUFs
bE1lZGlhUGxheWJhY2s6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhl
IG1lZGlhIGlzIHN0aWxsIHN1c3BlbmRlZC4KICAgICBkaWRSZWplY3QgPSBmYWxzZTsKQEAgLTEz
MiwxMCArMTMyLDExNSBAQCBURVNUKFdLV2ViVmlldywgU3VzcGVuZFJlc3VtZUFsbE1lZGlhUGxh
eWJhY2tNdWx0aXBsZVRpbWVzKQogCiAgICAgZGlkQmVnaW5QbGF5aW5nID0gZmFsc2U7CiAgICAg
W3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciIGFjdGlvbjpe
eyBkaWRCZWdpblBsYXlpbmcgPSB0cnVlOyB9XTsKLSAgICBbd2ViVmlldyBfcmVzdW1lQWxsTWVk
aWFQbGF5YmFja107CisgICAgW3dlYlZpZXcgcmVzdW1lQWxsTWVkaWFQbGF5YmFjazpuaWxdOwog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsKIH0KIAorVEVT
VChXS1dlYlZpZXcsIENoZWNrTWVkaWFQbGF5YmFja1N1c3BlbmRlZCkKK3sKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjx2aWRlbyBzcmM9XCJ2aWRlby13aXRoLWF1ZGlvLm1w
NFwiIHdlYmtpdC1wbGF5c2lubGluZT48L3ZpZGVvPiJdOworCisgICAgW3dlYlZpZXcgb2JqZWN0
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZ1bmN0aW9uIGV2ZW50VG9NZXNzYWdlKGV2ZW50KXt3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVu
dC50eXBlKTt9IHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7IHZp
ZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBldmVudFRvTWVzc2FnZSk7IHZpZGVvLmFk
ZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgZXZlbnRUb01lc3NhZ2UpOyJdOworCisgICAgX19ibG9j
ayBib29sIGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRl
clJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0g
dHJ1ZTsgfV07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigndmlkZW8nKS5wbGF5KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOworCisgICAgX19ibG9j
ayBib29sIGRpZFBhdXNlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1c2UgPSB0cnVlOyB9XTsKKyAgICBb
d2ViVmlldyBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkUGF1c2UpOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJh
Y2tTdGF0ZSBzdGF0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGUsIFdLTWVkaWFQbGF5YmFj
a1N0YXRlU3VzcGVuZGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBkaWRCZWdpblBsYXlpbmcg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxh
eWluZyIgYWN0aW9uOl57IGRpZEJlZ2luUGxheWluZyA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3
IHJlc3VtZUFsbE1lZGlhUGxheWJhY2s6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZEJlZ2luUGxheWluZyk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgcmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQbGF5YmFja1N0YXRlIHN0
YXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShzdGF0ZSwgV0tNZWRpYVBsYXliYWNrU3RhdGVQbGF5
aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBDaGVja01lZGlhUGxh
eWJhY2tFeGlzdHMpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6
WUVTXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFy
dCBuZXR3b3JrIHByb2Nlc3MiXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlOl4oV0tNZWRpYVBsYXliYWNr
U3RhdGUgc3RhdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRlLCBXS01lZGlhUGxheWJhY2tT
dGF0ZU5vbmUpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8dmlkZW8gc3JjPVwidmlkZW8td2l0aC1hdWRpby5tcDRcIiB3
ZWJraXQtcGxheXNpbmxpbmU+PC92aWRlbz4iXTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJhY2tTdGF0
ZSBzdGF0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGUsIFdLTWVkaWFQbGF5YmFja1N0YXRl
UGxheWluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxib2R5PjwvYm9keT4iXTsKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlOl4oV0tNZWRpYVBsYXliYWNr
U3RhdGUgc3RhdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRlLCBXS01lZGlhUGxheWJhY2tT
dGF0ZU5vbmUpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChXS1dlYlZpZXcsIENoZWNrTWVk
aWFQbGF5YmFja1BhdXNlZCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dp
bmRvdzpZRVNdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
Ijx2aWRlbyBzcmM9XCJ2aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdlYmtpdC1wbGF5c2lubGluZT48
L3ZpZGVvPiJdOworCisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImZ1bmN0aW9uIGV2ZW50VG9NZXNzYWdlKGV2ZW50KXt3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC50eXBlKTt9IHZhciB2aWRlbyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7IHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3Bs
YXlpbmcnLCBldmVudFRvTWVzc2FnZSk7IHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywg
ZXZlbnRUb01lc3NhZ2UpOyJdOworCisgICAgX19ibG9jayBib29sIGRpZEJlZ2luUGxheWluZyA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5
aW5nIiBhY3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKS5wbGF5
KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkaWRCZWdpblBsYXlpbmcpOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJhY2tT
dGF0ZSBzdGF0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGUsIFdLTWVkaWFQbGF5YmFja1N0
YXRlUGxheWluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCBkaWRQ
YXVzZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6
QCJwYXVzZSIgYWN0aW9uOl57IGRpZFBhdXNlID0gdHJ1ZTsgfV07CisgICAgW3dlYlZpZXcgcGF1
c2VBbGxNZWRpYVBsYXliYWNrOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
aWRQYXVzZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcmVxdWVz
dE1lZGlhUGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQbGF5YmFja1N0YXRlIHN0YXRlKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFdLTWVkaWFQbGF5YmFja1N0YXRlUGF1c2VkKTsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410807</attachid>
            <date>2020-10-07 18:34:57 -0700</date>
            <delta_ts>2020-10-09 09:58:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217335-20201007183456.patch</filename>
            <type>text/plain</type>
            <size>45757</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI2NDU1N2UzNjczNGY5
MDczNTQ3ZmY4NjcxMzY5NWY5YTA5NGUzNy4uMzUwNDMyODM1Yzg5NmIzY2ZmZjk5ZTI4ZmMxMzM4
ZDcxYmU3YmYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTA3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUg
V0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ2hhbmdlIHN0b3BBbGxNZWRpYVBsYXliYWNrIHRvIGJlIG1vcmUgYXB0bHkgbmFtZWQK
KyAgICAgICAgcGF1c2VBbGxNZWRpYVBsYXliYWNrIGJlY2F1c2UgaXQgaXMgcG9zc2libGUgdG8g
cmVzdW1lCisgICAgICAgIHBsYXlpbmcgbWVkaWEgYWZ0ZXIgdGhpcyBpcyBjYWxsZWQuICdTdG9w
JyBpbXBsaWVzIG1vcmUgcGVybWFuZW5jZS4KKyAgICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gdGhl
IERvY3VtZW50IGFuZCBQYWdlIG9iamVjdHMgdG8gc2VlIGlmIG1lZGlhIHBsYXliYWNrCisgICAg
ICAgIGV4aXN0cywgaXMgcGF1c2VkLCBvciBpcyBzdXNwZW5kZWQgdG8gZGV0ZXJtaW5lIG1lZGlh
IHBsYXliYWNrIHN0YXRlLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om1lZGlhUGxheWJhY2tFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1l
ZGlhUGxheWJhY2tJc1BhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGF1c2VB
bGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzdG9wQWxsTWVk
aWFQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhUGxheWJhY2tF
eGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6cGF1c2VBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjptZWRpYVBsYXliYWNrSXNQYXVzZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzdG9wQWxs
TWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaDoKKwogMjAyMC0xMC0wNyAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdGQ6Om1heCB0byBtYWtl
IHN1cmUgdGhlIGxpbmUgZ2FwIGlzIGFsd2F5cyBsYXJnZXIgdGhhbiAwIChzZWUgRklYTUUpLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBiZGQ5ZGEwYzJlYWE0NjFiMTJmMzM4ZmI1OWVmMGVjNmYwNTM0ZDg1Li5lNDIz
YWM0YWQ2OTNjYWE1NGE3MDEyMzRmYjQ1ZWFjYWJiYWExYjg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDUyIEBACisyMDIwLTEwLTA3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIFByb21vdGUgV0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBB
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMz
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IHdheSB0byBp
bnRlcmFjdCB3aXRoIHZpZGVvIGluIFdLV2ViVmlldyBpcyBieSBpbmplY3RpbmcKKyAgICAgICAg
SmF2YVNjcmlwdCBpbnRvIGEgcGFnZS4gSXQgd291bGQgYmUgdXNlZnVsIHRvIHByb21vdGUgdmFy
aW91cyBtZWRpYQorICAgICAgICBwbGF5YmFjayBTUEkgdG8gQVBJIHRvIG1ha2UgdGhpcyBlYXNp
ZXIgZm9yIGNsaWVudHMsIGluY2x1ZGluZyBhZGRpbmcKKyAgICAgICAgY29tcGxldGlvbiBoYW5k
bGVycyB0byB0aGUgbmV3IEFQSSBjYWxscy4gQWxvbmcgd2l0aCB0aGlzLAorICAgICAgICB3ZSBz
aG91bGQgYWRkIG5ldyBBUEkgdG8gY2hlY2sgZm9yIG1lZGlhIHBsYXliYWNrIHN0YXRlLgorICAg
ICAgICBUaGlzIHBhdGNoIGtlZXBzIHRoZSBTUEkgYXJvdW5kIGZvciBjb21wYXRpYmlsaXR5Lgor
CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQv
TWVkaWFQbGF5YmFja1N0YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tNZWRpYVBsYXliYWNrU3RhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25z
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2s6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazpdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IHJlc3VtZUFsbE1lZGlhUGxheWJhY2s6XSk6CisgICAgICAgICh0b1dLTWVkaWFQ
bGF5YmFja1N0YXRlKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNr
U3RhdGU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlv
bnNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9wQWxsTWVkaWFQbGF5YmFja10pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgX3Nob3dQaGlzaGluZ0FsZXJ0XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3RvcEFsbE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwYXVzZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0xMC0wNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1pc3NpbmcgYCNkZWZpbmVgIGZvciBgUEVOQ0lMS0lU
X1RFWFRfSU5QVVRgIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDY1YTkzOTZmY2U5
MTVkZjc3Zjk2NDM5ODYzZTc2Y2YwMzVlZmZhOTcuLjA4NTM1ODllYWJhYzM1ZTc2YWJhNmYyODJh
ZTU3NmM1OTJlMWU4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzAyLDcgKzcwMiw3
IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVy
LT5zZXREb2N1bWVudChudWxscHRyKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBzdG9wQWxs
TWVkaWFQbGF5YmFjaygpOworICAgIHBhdXNlQWxsTWVkaWFQbGF5YmFjaygpOwogI2VuZGlmCiAK
ICAgICAvLyBXZSBtdXN0IGNhbGwgY2xlYXJSYXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1bWVu
dCBjbGFzcyBpbmhlcml0cyBUcmVlU2NvcGUKQEAgLTE3OTYsMTAgKzE3OTYsMjQgQEAgdm9pZCBE
b2N1bWVudDo6Zm9yRWFjaE1lZGlhRWxlbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKEhUTUxNZWRp
YUVsZW1lbnQmKT4mIGZ1bmMKICAgICAgICAgZnVuY3Rpb24oZWxlbWVudCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnQ6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK2Jvb2wgRG9jdW1lbnQ6Om1lZGlhUGxh
eWJhY2tFeGlzdHMoKQogewogICAgIGlmIChhdXRvKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygp
KQotICAgICAgICBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXItPnN0b3BBbGxNZWRpYVBsYXli
YWNrRm9yRG9jdW1lbnQoaWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuICFwbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXItPmhhc05vU2Vzc2lvbigpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBEb2N1bWVudDo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKCkKK3sKKyAgICBpZiAoYXV0
byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci0+bWVkaWFQbGF5YmFja0lzUGF1c2VkKGlkZW50aWZpZXIoKSk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERvY3VtZW50OjpwYXVzZUFsbE1lZGlhUGxheWJh
Y2soKQoreworICAgIGlmIChhdXRvKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgPSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygpKQorICAgICAg
ICBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXItPnBhdXNlQWxsTWVkaWFQbGF5YmFja0ZvckRv
Y3VtZW50KGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZWQyODk1NjJlZjdkOTM5MjIwMTky
N2Y0YWFmNTE4MDQyNGRlYjQyYS4uZGQ4ODNiMmEwN2M1NjIzNmVjY2ZkNTA0NWFhZTYwNmIzOTZl
ODc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTExMTMsNyArMTExMyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVucmVnaXN0ZXJGb3JWaXNpYmlsaXR5U3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKFZp
c2liaWxpdHlDaGFuZ2VDbGllbnQmKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICB2b2lkIHN0
b3BBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgYm9vbCBtZWRpYVBsYXliYWNrRXhpc3RzKCk7Cisg
ICAgYm9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQoKTsKKyAgICB2b2lkIHBhdXNlQWxsTWVkaWFQ
bGF5YmFjaygpOwogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKICAgICB2b2lk
IHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKICAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYUJ1ZmZl
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNWUwNzJjODNlOWU0YzQyNzQxZmRjZjI4OTEw
NmRmN2E4YzdmYjE0NS4uZDdjNDJjNDI0MWQyYjg0MTZjYzg0ZDc2M2ZlMDBjMjkyYTJhN2E5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yMDY2LDExICsyMDY2LDM5IEBAIHZvaWQgUGFnZTo6c3Rv
cE1lZGlhQ2FwdHVyZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBQYWdlOjpzdG9wQWxsTWVkaWFQbGF5
YmFjaygpCitib29sIFBhZ2U6Om1lZGlhUGxheWJhY2tFeGlzdHMoKQoreworI2lmIEVOQUJMRShW
SURFTykKKyAgICBib29sIG1lZGlhUGxheWJhY2tFeGlzdHMgPSBmYWxzZTsKKyAgICBmb3JFYWNo
RG9jdW1lbnQoWyZtZWRpYVBsYXliYWNrRXhpc3RzXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Cisg
ICAgICAgIGlmIChkb2N1bWVudC5tZWRpYVBsYXliYWNrRXhpc3RzKCkpCisgICAgICAgICAgICBt
ZWRpYVBsYXliYWNrRXhpc3RzID0gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVkaWFQbGF5
YmFja0V4aXN0czsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2Jvb2wg
UGFnZTo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKCkKK3sKKyNpZiBFTkFCTEUoVklERU8pCisgICAg
Ym9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQgPSBmYWxzZTsKKyAgICBmb3JFYWNoRG9jdW1lbnQo
WyZtZWRpYVBsYXliYWNrSXNQYXVzZWRdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAg
aWYgKGRvY3VtZW50Lm1lZGlhUGxheWJhY2tJc1BhdXNlZCgpKQorICAgICAgICAgICAgbWVkaWFQ
bGF5YmFja0lzUGF1c2VkID0gdHJ1ZTsKKyAgICB9KTsKKyAgICByZXR1cm4gbWVkaWFQbGF5YmFj
a0lzUGF1c2VkOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwordm9pZCBQ
YWdlOjpwYXVzZUFsbE1lZGlhUGxheWJhY2soKQogewogI2lmIEVOQUJMRShWSURFTykKICAgICBm
b3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewotICAgICAgICBkb2N1bWVu
dC5zdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgICAgICBkb2N1bWVudC5wYXVzZUFsbE1lZGlh
UGxheWJhY2soKTsKICAgICB9KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBhMDIwZTg4
MWEyNmFlNjUxZjU1MTQ2MjAxNWQ4NGNlYTk3MjVhMGE4Li5kM2RmZTVjYmY2OTZmMzRmZGM4OThl
YTk2OTE2NGNlNDIwNmVlMjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNjkwLDcgKzY5MCw5IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE11dGVkKE1lZGlhUHJvZHVjZXI6Ok11
dGVkU3RhdGVGbGFncyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTWVkaWFDYXB0dXJl
KCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxNZWRpYVBsYXliYWNrKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtZWRpYVBsYXliYWNrRXhpc3RzKCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2soKTsKICAgICBib29sIG1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAppbmRleCBkOGE3NWYyOGRkMzE1OGJiMDRhNzMzOWJiMDYwNDYxOGE3ZGM0
NjZmLi5lZDQ4NzI1NTE5YzI3NjhlZDA2M2I3Y2IxOGJmMTVjYjhhYTkyZTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5jcHAKQEAgLTQ1OSwxMyArNDU5LDI0IEBAIHZvaWQgUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpwcm9jZXNzU3lzdGVtRGlkV2FrZSgpCiAgICAgfSk7CiB9CiAKLXZv
aWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzdG9wQWxsTWVkaWFQbGF5YmFja0ZvckRv
Y3VtZW50KERvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXIpCit2b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cGF1c2VBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQo
RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikKIHsKICAgICBmb3JFYWNoRG9j
dW1lbnRTZXNzaW9uKGRvY3VtZW50SWRlbnRpZmllciwgW10oYXV0byYgc2Vzc2lvbikgewogICAg
ICAgICBzZXNzaW9uLnBhdXNlU2Vzc2lvbigpOwogICAgIH0pOwogfQogCisKK2Jvb2wgUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyOjptZWRpYVBsYXliYWNrSXNQYXVzZWQoRG9jdW1lbnRJZGVu
dGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikKK3sKKyAgICBib29sIG1lZGlhUGxheWJhY2tJc1Bh
dXNlZCA9IGZhbHNlOworICAgIGZvckVhY2hEb2N1bWVudFNlc3Npb24oZG9jdW1lbnRJZGVudGlm
aWVyLCBbJm1lZGlhUGxheWJhY2tJc1BhdXNlZF0oYXV0byYgc2Vzc2lvbikgeworICAgICAgICBp
ZiAoc2Vzc2lvbi5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpQYXVzZWQpCisgICAg
ICAgICAgICBtZWRpYVBsYXliYWNrSXNQYXVzZWQgPSB0cnVlOworICAgIH0pOworICAgIHJldHVy
biBtZWRpYVBsYXliYWNrSXNQYXVzZWQ7Cit9CisKIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzdG9wQWxsTWVkaWFQbGF5YmFja0ZvclByb2Nlc3MoKQogewogICAgIGZvckVhY2hT
ZXNzaW9uKFtdIChhdXRvJiBzZXNzaW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IDM0
Mjk5YjExMmI1ZjI5ZGEyNWYwZTJjYTgyMWMwM2IyZDI4YTExYjkuLjFlNjdmOGU5MDY0MGY2ZjZk
NzNjYjZhNTIyYWRkOTVkMDBhNTkwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBAIC04OCw3
ICs4OCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NXaWxsU3Vz
cGVuZCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvY2Vzc0RpZFJlc3VtZSgpOwogCi0g
ICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRpZmll
cik7CisgICAgYm9vbCBtZWRpYVBsYXliYWNrSXNQYXVzZWQoRG9jdW1lbnRJZGVudGlmaWVyKTsK
KyAgICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRp
Zmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFja0ZvclBy
b2Nlc3MoKTsKIAogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChE
b2N1bWVudElkZW50aWZpZXIpOwpAQCAtMTQzLDYgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHByb2Nlc3NEaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoUGxh
dGZvcm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSwgY29uc3QgUGxhdGZv
cm1NZWRpYVNlc3Npb246OlJlbW90ZUNvbW1hbmRBcmd1bWVudCopOwogCiAgICAgYm9vbCBpc0lu
dGVycnVwdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnJ1cHRlZDsgfQorICAgIGJvb2wgaGFz
Tm9TZXNzaW9uKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUGxhdGZv
cm1NZWRpYVNlc3Npb247CkBAIC0xNjgsNyArMTcwLDYgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAK
ICAgICBpbnQgY291bnRBY3RpdmVBdWRpb0NhcHR1cmVTb3VyY2VzKCk7Ci0gICAgYm9vbCBoYXNO
b1Nlc3Npb24oKSBjb25zdDsKIAogICAgIGJvb2wgY29tcHV0ZVN1cHBvcnRzU2Vla2luZygpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggZTJjMjg4
MmQwMWUzZjczNWRlN2RhNTVmZDNiMmEwZDAxOWM2ODUzYy4uMWY3YTNkZDNjNjk3M2UxMDk5NGY1
ZGMxMzdmYWY0MDZhMjVlYTI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJL
aXQuaApAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLRnJhbWVJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tIVFRQQ29v
a2llU3RvcmUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS01lZGlhUGxheWJhY2tTdGF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlv
bkFjdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9NZWRpYVBsYXliYWNrU3RhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL01lZGlhUGxheWJhY2tTdGF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxY2ZiNWJl
NzFiOWYxMjY0ODAxYjJhNTRiZWI1M2ZhNjBlNDRhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9NZWRpYVBsYXliYWNrU3RhdGUuaApAQCAtMCwwICsxLDUxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNs
YXNzIE1lZGlhUGxheWJhY2tTdGF0ZSA6IHVpbnQ4X3QgeworICAgIE5vTWVkaWFQbGF5YmFjaywK
KyAgICBNZWRpYVBsYXliYWNrUGF1c2VkLAorICAgIE1lZGlhUGxheWJhY2tTdXNwZW5kZWQsCisg
ICAgTWVkaWFQbGF5YmFja1BsYXlpbmcKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Ok1l
ZGlhUGxheWJhY2tTdGF0ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAg
ICAgIFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRlLAorICAgICAgICBXZWJLaXQ6Ok1lZGlhUGxh
eWJhY2tTdGF0ZTo6Tm9NZWRpYVBsYXliYWNrLAorICAgICAgICBXZWJLaXQ6Ok1lZGlhUGxheWJh
Y2tTdGF0ZTo6TWVkaWFQbGF5YmFja1BhdXNlZCwKKyAgICAgICAgV2ViS2l0OjpNZWRpYVBsYXli
YWNrU3RhdGU6Ok1lZGlhUGxheWJhY2tTdXNwZW5kZWQsCisgICAgICAgIFdlYktpdDo6TWVkaWFQ
bGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrUGxheWluZworICAgID47Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS01lZGlhUGxheWJhY2tTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTWVkaWFQbGF5YmFja1N0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzg2OTczMDc4MWMyODE2MTA1
OTgwYWQ3NjU2OTJkOWE2MWFhMjlkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS01lZGlhUGxheWJhY2tTdGF0ZS5oCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBv
cnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
dHlwZWRlZiBOU19FTlVNKE5TVUludGVnZXIsIFdLTWVkaWFQbGF5YmFja1N0YXRlKSB7CisgICAg
V0tNZWRpYVBsYXliYWNrU3RhdGVOb25lLAorICAgIFdLTWVkaWFQbGF5YmFja1N0YXRlUGF1c2Vk
LAorICAgIFdLTWVkaWFQbGF5YmFja1N0YXRlU3VzcGVuZGVkLAorICAgIFdLTWVkaWFQbGF5YmFj
a1N0YXRlUGxheWluZworfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAppbmRleCA0NjU5YmYzMDEyOTA1MDE0NjQ5
YzY1MWY0ZjBjZTFmZmQ2MWIyMDk2Li5jZmE0NDAxNzYzMGFlYzFmYzBlM2IwMDgzOTA5NmIxNDNk
NDE5NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5oCkBAIC0yNSw2ICsyNSw4IEBACiAKICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4K
IAorI2ltcG9ydCA8V2ViS2l0L1dLTWVkaWFQbGF5YmFja1N0YXRlLmg+CisKICNpZiBUQVJHRVRf
T1NfSVBIT05FCiAjaW1wb3J0IDxVSUtpdC9VSUtpdC5oPgogI2Vsc2UKQEAgLTMyMSw2ICszMjMs
MzUgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAqLwogLSAo
dm9pZCljYWxsQXN5bmNKYXZhU2NyaXB0OihOU1N0cmluZyAqKWZ1bmN0aW9uQm9keSBhcmd1bWVu
dHM6KG51bGxhYmxlIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5G
cmFtZToobnVsbGFibGUgV0tGcmFtZUluZm8gKilmcmFtZSBpbkNvbnRlbnRXb3JsZDooV0tDb250
ZW50V29ybGQgKiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4gX051bGxh
YmxlKShfTnVsbGFibGUgaWQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyIE5TX1JFRklORURfRk9SX1NXSUZUIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8qISBAYWJzdHJhY3QgQ2xvc2VzIGFsbCBvdXQt
b2Ytd2luZG93IG1lZGlhIHByZXNlbnRhdGlvbnMgaW4gYSBXS1dlYlZpZXcuCisgQGRpc2N1c3Np
b24gSW5jbHVkZXMgcGljdHVyZS1pbi1waWN0dXJlIGFuZCBmdWxsc2NyZWVuLgorICovCistICh2
b2lkKWNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgUGF1c2VzIG1lZGlh
IHBsYXliYWNrIGluIFdLV2ViVmlldy4KKyBAZGlzY3Vzc2lvbiBQYXVzZXMgbWVkaWEgcGxheWJh
Y2suIE1lZGlhIGluIHRoZSBwYWdlIGNhbiBiZSByZXN0YXJ0ZWQgYnkgY2FsbGluZyBwbGF5KCkg
b24gYSBtZWRpYSBlbGVtZW50IG9yIHJlc3VtZSgpIG9uIGFuIEF1ZGlvQ29udGV4dC4KKyAqLwor
LSAodm9pZClwYXVzZUFsbE1lZGlhUGxheWJhY2s6KHZvaWQgKF5fTnVsbGFibGUpKHZvaWQpKWNv
bXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgU3VzcGVuZHMgbWVkaWEgcGxheWJhY2sgaW4g
V0tXZWJWaWV3LgorIEBkaXNjdXNzaW9uIFBhdXNlcyBtZWRpYSBwbGF5YmFjayBhbmQgYmxvY2tz
IGFsbCBhdHRlbXB0cyBieSB0aGUgcGFnZSB0byByZXN1bWUgdW50aWwgcmVzdW1lQWxsTWVkaWFQ
bGF5YmFjayBpcyBjYWxsZWQuIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgaW4gcGFpcnMg
d2l0aCByZXN1bWVBbGxNZWRpYVBsYXliYWNrLgorICovCistICh2b2lkKXN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrOih2b2lkICheX051bGxhYmxlKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEg
QGFic3RyYWN0IFJlc3VtZXMgbWVkaWEgcGxheWJhY2sgaW4gV0tXZWJWaWV3LgorIEBkaXNjdXNz
aW9uIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgaW4gcGFpcnMgd2l0aCBzdXNwZW5kQWxs
TWVkaWFQbGF5YmFjay4KKyAqLworLSAodm9pZClyZXN1bWVBbGxNZWRpYVBsYXliYWNrOih2b2lk
ICheIF9OdWxsYWJsZSkodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBHZXQg
dGhlIGN1cnJlbnQgbWVkaWEgcGxheWJhY2sgc3RhdGUgb2YgYSBXS1dlYlZpZXcuCisgQHBhcmFt
IGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdpdGggdGhlIHJldHVybiB2YWx1
ZSBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KKyBAZGlzY3Vzc2lvbiBJZiBtZWRpYSBwbGF5YmFjayBl
eGlzdHMsIFdLTWVkaWFQbGF5YmFja1N0YXRlIHdpbGwgYmUgb25lIG9mIHRocmVlCisgdmFsdWVz
OiBXS01lZGlhUGxheWJhY2tQYXVzZWQsIFdLTWVkaWFQbGF5YmFja1N1c3BlbmRlZCwgb3IgV0tN
ZWRpYVBsYXliYWNrUGxheWluZy4KKyBJZiBubyBtZWRpYSBwbGF5YmFjayBleGlzdHMgaW4gdGhl
IGN1cnJlbnQgV0tXZWJWaWV3LCBXS01lZGlhUGxheWJhY2tTdGF0ZSB3aWxsIGVxdWFsCisgV0tO
b01lZGlhUGxheWJhY2sgYW5kIHRoZSBjYWxsYmFjayB3aWxsIHJldHVybiB0aGUgZXJyb3IgV0tF
cnJvck5vTWVkaWFQbGF5YmFjay4KKyAqLworLSAodm9pZClyZXF1ZXN0TWVkaWFQbGF5YmFja1N0
YXRlOih2b2lkICheKShXS01lZGlhUGxheWJhY2tTdGF0ZSkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyoh
IEBhYnN0cmFjdCBHZXQgYSBzbmFwc2hvdCBmb3IgdGhlIHZpc2libGUgdmlld3BvcnQgb2YgV0tX
ZWJWaWV3LgogIEBwYXJhbSBzbmFwc2hvdENvbmZpZ3VyYXRpb24gQW4gb2JqZWN0IHRoYXQgc3Bl
Y2lmaWVzIGhvdyB0aGUgc25hcHNob3QgaXMgY29uZmlndXJlZC4KICBAcGFyYW0gY29tcGxldGlv
bkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0aGUgc25hcHNob3QgaXMgcmVhZHkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAy
Zjk4ZTRkYzc3OTQ5NzNiYzUyNTllZjU3OWE3Yzc4OWJhMzE1M2E3Li41YWVkN2U4YjFlMjkyNDli
NmIzYzgyYTBjYTJkMWMwZjBjMTk1ZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTYzLDYgKzYzLDcgQEAKICNpbXBvcnQgIldLRmlu
ZFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIK
ICNpbXBvcnQgIldLTGF5b3V0TW9kZS5oIgorI2ltcG9ydCAiV0tNZWRpYVBsYXliYWNrU3RhdGUu
aCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1w
b3J0ICJXS05hdmlnYXRpb25EZWxlZ2F0ZS5oIgpAQCAtODY1LDYgKzg2Niw3MyBAQCBzdGF0aWMg
Ym9vbCB2YWxpZGF0ZUFyZ3VtZW50KGlkIGFyZ3VtZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorLSAodm9pZCljbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucworeworI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICBpZiAoYXV0byB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gX3BhZ2Ut
PnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKSkgeworICAgICAgICB2aWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLT5mb3JFYWNoU2Vzc2lvbihbXSAoYXV0byYgbW9kZWwsIGF1dG8mIGludGVyZmFjZSkgewor
ICAgICAgICAgICAgbW9kZWwucmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBpZiAoYXV0byBmdWxsU2NyZWVuTWFuYWdlciA9IF9wYWdlLT5mdWxsU2NyZWVu
TWFuYWdlcigpOyBmdWxsU2NyZWVuTWFuYWdlciAmJiBmdWxsU2NyZWVuTWFuYWdlci0+aXNGdWxs
U2NyZWVuKCkpCisgICAgICAgIGZ1bGxTY3JlZW5NYW5hZ2VyLT5jbG9zZSgpOworI2VuZGlmCit9
CisKKy0gKHZvaWQpcGF1c2VBbGxNZWRpYVBsYXliYWNrOih2b2lkICheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIGlmICghY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgX3Bh
Z2UtPnBhdXNlQWxsTWVkaWFQbGF5YmFjayhbXSB7IH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgX3BhZ2UtPnBhdXNlQWxsTWVkaWFQbGF5YmFjayhtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKworLSAodm9pZClzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIWNvbXBsZXRpb25IYW5k
bGVyKSB7CisgICAgICAgIF9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjayhbXSB7IH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIF9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFj
ayhtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworLSAodm9pZClyZXN1bWVB
bGxNZWRpYVBsYXliYWNrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IGlmICghY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgX3BhZ2UtPnJlc3VtZUFsbE1lZGlh
UGxheWJhY2soW10geyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+cmVz
dW1lQWxsTWVkaWFQbGF5YmFjayhtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kworc3RhdGljIFdLTWVkaWFQbGF5YmFja1N0YXRlIHRvV0tNZWRpYVBsYXliYWNrU3RhdGUoV2Vi
S2l0OjpNZWRpYVBsYXliYWNrU3RhdGUgbWVkaWFQbGF5YmFja1N0YXRlKQoreworICAgIHN3aXRj
aCAobWVkaWFQbGF5YmFja1N0YXRlKSB7CisgICAgY2FzZSBXZWJLaXQ6Ok1lZGlhUGxheWJhY2tT
dGF0ZTo6Tm9NZWRpYVBsYXliYWNrOgorICAgICAgICByZXR1cm4gV0tNZWRpYVBsYXliYWNrU3Rh
dGVOb25lOworICAgIGNhc2UgV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGU6Ok1lZGlhUGxheWJh
Y2tQYXVzZWQ6CisgICAgICAgIHJldHVybiBXS01lZGlhUGxheWJhY2tTdGF0ZVBhdXNlZDsKKyAg
ICBjYXNlIFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrU3VzcGVuZGVk
OgorICAgICAgICByZXR1cm4gV0tNZWRpYVBsYXliYWNrU3RhdGVTdXNwZW5kZWQ7CisgICAgY2Fz
ZSBXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZTo6TWVkaWFQbGF5YmFja1BsYXlpbmc6CisgICAg
ICAgIHJldHVybiBXS01lZGlhUGxheWJhY2tTdGF0ZVBsYXlpbmc7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBXS01lZGlhUGxheWJhY2tTdGF0ZU5vbmU7Cit9CisKKy0gKHZvaWQpcmVxdWVzdE1lZGlhUGxh
eWJhY2tTdGF0ZToodm9pZCAoXikoV0tNZWRpYVBsYXliYWNrU3RhdGUpKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgcmV0dXJuIF9wYWdlLT5yZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYg
bWVkaWFQbGF5YmFja1N0YXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvV0tNZWRp
YVBsYXliYWNrU3RhdGUobWVkaWFQbGF5YmFja1N0YXRlKSk7CisgICAgfSk7Cit9CisKIHN0YXRp
YyBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZyb21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGRldGFpbHMpCiB7CiAgICAgYXV0byB1c2VySW5mbyA9
IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CkBAIC0xODUzLDE2
ICsxOTIxLDcgQEAgLSAoX1dLTWVkaWFNdXRlZFN0YXRlKV9tZWRpYU11dGVkU3RhdGUKIAogLSAo
dm9pZClfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnMKIHsKLSNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCi0gICAgaWYgKGF1dG8gdmlkZW9GdWxsc2NyZWVuTWFuYWdlciA9IF9wYWdlLT52aWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyKCkpIHsKLSAgICAgICAgdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+
Zm9yRWFjaFNlc3Npb24oW10gKGF1dG8mIG1vZGVsLCBhdXRvJiBpbnRlcmZhY2UpIHsKLSAgICAg
ICAgICAgIG1vZGVsLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgaWYgKGF1dG8gZnVsbFNjcmVlbk1hbmFnZXIgPSBfcGFnZS0+ZnVsbFNjcmVlbk1hbmFn
ZXIoKTsgZnVsbFNjcmVlbk1hbmFnZXIgJiYgZnVsbFNjcmVlbk1hbmFnZXItPmlzRnVsbFNjcmVl
bigpKQotICAgICAgICBmdWxsU2NyZWVuTWFuYWdlci0+Y2xvc2UoKTsKLSNlbmRpZgorICAgIFtz
ZWxmIGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXTsKIH0KIAogLSAodm9pZClfc3RvcE1lZGlh
Q2FwdHVyZQpAQCAtMTg3MiwxNyArMTkzMSwxNyBAQCAtICh2b2lkKV9zdG9wTWVkaWFDYXB0dXJl
CiAKIC0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXliYWNrCiB7Ci0gICAgX3BhZ2UtPnN0b3BBbGxN
ZWRpYVBsYXliYWNrKCk7CisgICAgW3NlbGYgcGF1c2VBbGxNZWRpYVBsYXliYWNrOm5pbF07CiB9
CiAKIC0gKHZvaWQpX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrCiB7Ci0gICAgX3BhZ2UtPnN1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgW3NlbGYgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2s6
bmlsXTsKIH0KIAogLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjawogewotICAgIF9wYWdl
LT5yZXN1bWVBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgW3NlbGYgcmVzdW1lQWxsTWVkaWFQbGF5
YmFjazpuaWxdOwogfQogCiAtIChOU1VSTCAqKV91bnJlYWNoYWJsZVVSTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGY0ZmJmNjRiZTc2MzhkYWZkNDVjMmJl
OTQ5MWVmZjdiM2MzNTJiYy4uYTFjMWUzNDhkZWUyNDQxZTRhNWQ3NTk5ODY2N2VmNzRlMDc3YjU3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC02MDIwLDQw
ICs2MDIwLDYwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTWVkaWFDYXB0dXJlKCkKICNlbmRp
ZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c3RvcEFsbE1lZGlhUGxheWJhY2soKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1
ZXN0TWVkaWFQbGF5YmFja1N0YXRlKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHZvaWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcEFsbE1lZGlh
UGxheWJhY2soKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpQ
YXVzZUFsbE1lZGlhUGxheWJhY2soKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQordm9pZCBXZWJQ
YWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9zdXNwZW5kTWVkaWFQbGF5YmFj
a0NvdW50ZXIrKzsKLSAgICBpZiAobV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQpCisgICAgaWYg
KG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5k
ZWQgPSB0cnVlOwogCi0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQorICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICByZXR1cm47CisgICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFs
bE1lZGlhUGxheWJhY2soKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1fc3VzcGVuZE1l
ZGlhUGxheWJhY2tDb3VudGVyID4gMCkKICAgICAgICAgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0Nv
dW50ZXItLTsKIAotICAgIGlmICghbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgfHwgbV9zdXNw
ZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIpCisgICAgaWYgKCFtX21lZGlhUGxheWJhY2tJc1N1c3Bl
bmRlZCB8fCBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcikgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fbWVkaWFQbGF5YmFj
a0lzU3VzcGVuZGVkID0gZmFsc2U7CiAKLSAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYXlTdGFydE1lZGlhV2hl
bkluV2luZG93KGJvb2wgbWF5U3RhcnRNZWRpYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggZTQ3Y2I1ZTQxZjM5ZGRiNzlmZDUxZDc1MWY5M2FlZjNkY2JjMjU1YS4u
NzZjMjI2MGFhNjU3ZjM1ZGI2ZmFhMjViNDQzNzFkOTRlOTMzZDg4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiSGlkZGVu
UGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlci5oIgogI2luY2x1ZGUgIkxheWVyVHJl
ZUNvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrU3RhdGUuaCIKICNpbmNsdWRlICJN
ZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgiCkBAIC0xMzMz
LDkgKzEzMzQsMTAgQEAgcHVibGljOgogICAgIGJvb2wgbWVkaWFDYXB0dXJlRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVkaWFDYXB0dXJlRW5hYmxlZDsgfQogICAgIHZvaWQgc3RvcE1lZGlh
Q2FwdHVyZSgpOwogCi0gICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOwotICAgIHZvaWQg
c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKLSAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJh
Y2soKTsKKyAgICB2b2lkIHBhdXNlQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQodm9pZCk+JiYpOworICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFj
ayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RNZWRp
YVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJh
Y2tTdGF0ZSk+JiYpOwogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKICAgICB2b2lkIGRpZEFs
bG93UG9pbnRlckxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0K
aW5kZXggYWE2YzQwMjFmYzMzY2FmNmM0OTQ3OThiN2VkMmQxZjc3NDQyMDdiYS4uYTMxZGIzYmVh
ZTIwMDQ1NmMyZTJhNzExMmE0NDY2YWFhODMwMzI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVu
Vmlld0NvbnRyb2xsZXIubW0KQEAgLTQ5Myw3ICs0OTMsNyBAQCAtICh2b2lkKV9zaG93UGhpc2hp
bmdBbGVydAogICAgIFVJQWxlcnRDb250cm9sbGVyKiBhbGVydCA9IFtVSUFsZXJ0Q29udHJvbGxl
ciBhbGVydENvbnRyb2xsZXJXaXRoVGl0bGU6YWxlcnRUaXRsZSBtZXNzYWdlOmFsZXJ0TWVzc2Fn
ZSBwcmVmZXJyZWRTdHlsZTpVSUFsZXJ0Q29udHJvbGxlclN0eWxlQWxlcnRdOwogCiAgICAgaWYg
KGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXSkgewotICAgICAgICBwYWdlLT5zdXNw
ZW5kQWxsTWVkaWFQbGF5YmFjaygpOworICAgICAgICBwYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5
YmFjayhbXSB7IH0pOwogICAgICAgICBwYWdlLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKTsKICAgICB9CiAKQEAgLTUwMSwxNCArNTAxLDE0IEBAIC0gKHZvaWQpX3Nob3dQ
aGlzaGluZ0FsZXJ0CiAgICAgICAgIFtzZWxmIF9jYW5jZWxBY3Rpb246YWN0aW9uXTsKICAgICAg
ICAgaWYgKGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXSkgewogICAgICAgICAgICAg
cGFnZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKLSAgICAgICAgICAg
IHBhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICAgICAgICAgIHBhZ2UtPnJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2soW10geyB9KTsKICAgICAgICAgfQogICAgIH1dOwogCiAgICAgVUlB
bGVydEFjdGlvbiogc3RheUFjdGlvbiA9IFtVSUFsZXJ0QWN0aW9uIGFjdGlvbldpdGhUaXRsZTpX
RUJfVUlfU1RSSU5HX0tFWSgiU3RheSBpbiBGdWxsIFNjcmVlbiIsICJTdGF5IGluIEZ1bGwgU2Ny
ZWVuIChFbGVtZW50IEZ1bGwgU2NyZWVuKSIsICJGdWxsIFNjcmVlbiBEZWNlcHRpdmUgV2Vic2l0
ZSBTdGF5IEFjdGlvbiIpIHN0eWxlOlVJQWxlcnRBY3Rpb25TdHlsZURlZmF1bHQgaGFuZGxlcjpe
KFVJQWxlcnRBY3Rpb24gKiBhY3Rpb24pIHsKICAgICAgICAgaWYgKGF1dG8gcGFnZSA9IFtzZWxm
Ll93ZWJWaWV3IF9wYWdlXSkgewogICAgICAgICAgICAgcGFnZS0+cmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKTsKLSAgICAgICAgICAgIHBhZ2UtPnJlc3VtZUFsbE1lZGlhUGxh
eWJhY2soKTsKKyAgICAgICAgICAgIHBhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soW10geyB9
KTsKICAgICAgICAgfQogICAgICAgICBfc2VjaGV1cmlzdGljLnJlc2V0KCk7CiAgICAgfV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
NWZmODZkYjNkMjNmMGNhYTI4YjJlNmM3MzVlY2Y0MzlmYjFkMDY5Li42YWFiNjczNjQ4NzVjMjNl
N2U5NWNmYjY5MTI2MTgwNTBhZWVhNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1Nyw2ICs5NTcsNyBAQAogCQk0OTczREY0ODI0
MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NzNERjQ3MjQyMjk0MUYwMEU0
QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovOyB9OwogCQk0OTkwMDAyMTI0
RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVu
ZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0OTkwMDAyNDI0RDI0QzI5MDAwNDlDQjQgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTAwMDIzMjREMjRDMUMw
MDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTQ5OTE3REE3MjUyRDY0OUUwMDUwMzEzRiAvKiBXS01lZGlh
UGxheWJhY2tTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk5MTdEQTYyNTJENjQ5RTAwNTAzMTNGIC8qIFdLTWVkaWFQbGF5YmFja1N0YXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk0OUJDQTE5
MjIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkNBMTkx
MjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5o
ICovOyB9OwogCQk0OUJDQTE5NTIzQTE4Q0ZEMDAyOEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTAyM0ExNzU0OTAwMjhBODM2IC8qIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCAqLzsgfTsKIAkJNDlCQ0ExOTcyM0Ex
OTMwRDAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJDQTE5NjIzQTE4
RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCAqLzsg
fTsKQEAgLTM1ODAsNiArMzU4MSw4IEBACiAJCTQ5OTAwMDFGMjREMjQyOUMwMDA0OUNCNCAvKiBX
S1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyTGF5ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAwMjIyNEQyNEMxQzAwMDQ5Q0I0IC8qIFdLUmVuZGVy
T2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmVuZGVyT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAwMjMyNEQyNEMxQzAwMDQ5Q0I0IC8qIFdLUmVu
ZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ5OTE3REE2MjUyRDY0OUUwMDUwMzEzRiAvKiBXS01lZGlhUGxh
eWJhY2tTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS01lZGlhUGxheWJhY2tTdGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTkxN0RCMDI1MkUzMDc1MDA1MDMxM0YgLyogTWVk
aWFQbGF5YmFja1N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tTdGF0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUJDQTE5MDIzQTE3NTQ5MDAyOEE4MzYgLyog
X1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0OUJDQTE5NjIzQTE4RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RoaXJkUGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Ro
aXJkUGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYwMjgsNiArNjAzMSw3
IEBACiAJCQkJMUE5MkRDMTAxMkY4QkE0NjAwMTdBRjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCAq
LywKIAkJCQkyRDEwODc1RTFEMkM1NzNFMDBCODVGODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwICov
LAogCQkJCTJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4MiAvKiBMb2FkUGFyYW1ldGVycy5oICovLAor
CQkJCTQ5OTE3REIwMjUyRTMwNzUwMDUwMzEzRiAvKiBNZWRpYVBsYXliYWNrU3RhdGUuaCAqLywK
IAkJCQkyRDUwMzY2QTFCQ0RFMTc5MDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50Lmgg
Ki8sCiAJCQkJQzAyQkZGMTUxMjUxNEZEODAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQuaCAqLywKIAkJCQkzMUVBMjVEMzEzNEY3OEQ2MDA1QjE0NTIgLyogTmF0aXZlV2ViTW91c2VF
dmVudC5oICovLApAQCAtNzM2MSw2ICs3MzY1LDcgQEAKIAkJCQk1MUQxMjQ4NTFFNzM0QUUzMDAy
QjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0gKi8sCiAJCQkJNTFEMTI0ODYxRTczNEFFMzAw
MkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCAqLywKIAkJCQlERjQ2MkUwRTIz
RjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8sCisJCQkJNDk5
MTdEQTYyNTJENjQ5RTAwNTAzMTNGIC8qIFdLTWVkaWFQbGF5YmFja1N0YXRlLmggKi8sCiAJCQkJ
MUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLywK
IAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJp
dmF0ZS5oICovLAogCQkJCTFBNUIxQzRGMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24u
aCAqLywKQEAgLTExNjA5LDYgKzExNjE0LDcgQEAKIAkJCQk1MUE5RTEwQjEzMTVDRDE4MDA5RTcw
MzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDc5
MEE5RjFBRDcxNjQ5MDBBQjkwQjMgLyogV0tMYXlvdXRNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0U5MTIxNDIyOTNDMjgwMDA1QkVDNzggLyogV0tNYWluLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk0OTkxN0RBNzI1MkQ2NDlFMDA1MDMxM0YgLyogV0tNZWRpYVBsYXliYWNrU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQjQwRUU2MUJGNjc3RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRl
bnRpZmllcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FCREM4NjIyQzQwRkRFMDAx
RURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUUxNjk0
MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNwbGF5LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjYwYTBlMmFj
YjRiZTllYTdiM2QwZjNhYmNmZDA2MDJmNTE0NzJiNS4uY2ZiN2NhMDBjYWQyYmY5OGRlOTg4MTZi
OTk5YTQzNzRiYzcwOWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRl
ci5oIgogI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk1lZGlhUGxheWJhY2tTdGF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQ
cm92aWRlci5oIgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgpAQCAtODAyLDE5ICs4MDMsMzQgQEAg
V2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit2b2lkIFdlYlBhZ2U6OnJlcXVl
c3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlh
UGxheWJhY2tTdGF0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wYWdlLT5zdG9w
QWxsTWVkaWFQbGF5YmFjaygpOworICAgIGlmICghbV9wYWdlLT5tZWRpYVBsYXliYWNrRXhpc3Rz
KCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBsYXliYWNrU3RhdGU6
Ok5vTWVkaWFQbGF5YmFjayk7CisgICAgaWYgKG1fcGFnZS0+bWVkaWFQbGF5YmFja0lzUGF1c2Vk
KCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihNZWRpYVBsYXliYWNrU3RhdGU6
Ok1lZGlhUGxheWJhY2tQYXVzZWQpOworICAgIGlmIChtX3BhZ2UtPm1lZGlhUGxheWJhY2tJc1N1
c3BlbmRlZCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTWVkaWFQbGF5YmFj
a1N0YXRlOjpNZWRpYVBsYXliYWNrU3VzcGVuZGVkKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVy
KE1lZGlhUGxheWJhY2tTdGF0ZTo6TWVkaWFQbGF5YmFja1BsYXlpbmcpOwogfQogCi12b2lkIFdl
YlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKK3ZvaWQgV2ViUGFnZTo6cGF1c2VBbGxN
ZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgbV9wYWdlLT5wYXVzZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXli
YWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgbV9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCit2
b2lkIFdlYlBhZ2U6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh2b2lkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UtPnJlc3VtZUFsbE1l
ZGlhUGxheWJhY2soKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCiB2b2lkIFdlYlBh
Z2U6OnN1c3BlbmRBbGxNZWRpYUJ1ZmZlcmluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWZmMzVmYjA5MzZhNWM3NzE2YWE0YzAxMmQyNmUwNzNi
NDQ3OGU5NS4uNDcxNDFhNDRkNGFmOGViNmZlNzdjNzA0YTQ3NDIwZTA5N2I5ZDEzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTY0OSw5ICsxNjQ5
LDExIEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi0gICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFj
aygpOwotICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKLSAgICB2b2lkIHJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lkIHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSk+JiYpOwor
CisgICAgdm9pZCBwYXVzZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2
b2lkKT4mJik7CisgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRN
aXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNw
ZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAwYzlkOTY3YjZj
ZDY0NDU1MWVhZTczYTM4OWQ2MjZhYjY3MWNjYWFiLi4xNTVmMWY0YTRhOTYyODllMTA4NzFmMjJh
NTk1NTA3MGVkMGVlNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTM3OCw5ICszNzgsMTAgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKICAgICBDYXB0dXJlRGV2aWNlc0NoYW5nZWQoKQogI2VuZGlmCiAKLSAg
ICBTdG9wQWxsTWVkaWFQbGF5YmFjaygpOwotICAgIFN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7
Ci0gICAgUmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOworICAgIFJlcXVlc3RNZWRpYVBsYXliYWNr
U3RhdGUoKSAtPiAoZW51bTp1aW50OF90IFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRlIHN0YXRl
KSBBc3luYworICAgIFBhdXNlQWxsTWVkaWFQbGF5YmFjaygpIC0+ICgpIEFzeW5jCisgICAgU3Vz
cGVuZEFsbE1lZGlhUGxheWJhY2soKSAtPiAoKSBBc3luYworICAgIFJlc3VtZUFsbE1lZGlhUGxh
eWJhY2soKSAtPiAoKSBBc3luYwogCiAgICAgIyBOb3RpZmljYXRpb24KICAgICBEaWRSZWNlaXZl
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBi
b29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZmY0MWY2MTk5NWY1YTc5MGFmNGRiM2RmY2U0ZjBmNjdiZWNjOTRiNy4uOWE0ZGM1
MzAwODY1NWFkNDAwMjllMzBkMDQwMmYxYTljZmMwMDM3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEwLTA3
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFBy
b21vdGUgV0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIEFQSSB0ZXN0aW5nIGNvdmVyYWdlIGZvciBuZXcgQVBJLiBBbHNvIGNv
bnZlcnRlZCB0ZXN0aW5nIHRvCisgICAgICAgIHVzZSB0aGUgbmV3IEFQSSBpbnN0ZWFkIG9mIFNQ
SS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3Bl
bmRSZXN1bWVBbGxNZWRpYS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDIwLTEwLTA3ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAg
ICAgICBbR1RLXVtXUEVdIFJlbW92ZSBBcGFjaGUncyBtb2RfYncgZnJvbSBpbnN0YWxsLWRlcGVu
ZGVuY2llcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tCmluZGV4IDJkZDJhYzJm
ZjUxN2MxNmZlNTNiYjA0MGZiZDFjZWQ1ZjE0MGY0NmMuLmU3N2JlZDZiOGJiYmU0OTdlY2FiNTlh
YTM3NDU4M2RhN2U5NDM4M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0K
QEAgLTI5LDYgKzI5LDggQEAKIAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS01lZGlhUGxheWJhY2tTdGF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGlu
Zy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTEsNyArNTMsNyBAQCBURVNUKFdL
V2ViVmlldywgU3RvcEFsbE1lZGlhUGxheWJhY2spCiAKICAgICBfX2Jsb2NrIGJvb2wgZGlkUGF1
c2UgPSBmYWxzZTsKICAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAi
cGF1c2UiIGFjdGlvbjpeeyBkaWRQYXVzZSA9IHRydWU7IH1dOwotICAgIFt3ZWJWaWV3IF9zdG9w
QWxsTWVkaWFQbGF5YmFja107CisgICAgW3dlYlZpZXcgcGF1c2VBbGxNZWRpYVBsYXliYWNrOm5p
bF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRQYXVzZSk7CiB9CiAKQEAgLTcx
LDcgKzczLDcgQEAgVEVTVChXS1dlYlZpZXcsIFN1c3BlbmRSZXN1bWVBbGxNZWRpYVBsYXliYWNr
KQogCiAgICAgX19ibG9jayBib29sIGRpZFBhdXNlID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgcGVy
Zm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1c2UgPSB0
cnVlOyB9XTsKLSAgICBbd2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxheWJhY2tdOworICAgIFt3
ZWJWaWV3IHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkaWRQYXVzZSk7CiAKICAgICBfX2Jsb2NrIGJvb2wgZGlkUmVqZWN0ID0gZmFs
c2U7CkBAIC04MSw3ICs4Myw3IEBAIFRFU1QoV0tXZWJWaWV3LCBTdXNwZW5kUmVzdW1lQWxsTWVk
aWFQbGF5YmFjaykKIAogICAgIGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOwogICAgIFt3ZWJWaWV3
IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246XnsgZGlkQmVn
aW5QbGF5aW5nID0gdHJ1ZTsgfV07Ci0gICAgW3dlYlZpZXcgX3Jlc3VtZUFsbE1lZGlhUGxheWJh
Y2tdOworICAgIFt3ZWJWaWV3IHJlc3VtZUFsbE1lZGlhUGxheWJhY2s6bmlsXTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEJlZ2luUGxheWluZyk7CiB9CiAKQEAgLTEwMSw3ICsx
MDMsNyBAQCBURVNUKFdLV2ViVmlldywgU3VzcGVuZFJlc3VtZUFsbE1lZGlhUGxheWJhY2tNdWx0
aXBsZVRpbWVzKQogCiAgICAgX19ibG9jayBib29sIGRpZFBhdXNlID0gZmFsc2U7CiAgICAgW3dl
YlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlk
UGF1c2UgPSB0cnVlOyB9XTsKLSAgICBbd2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxheWJhY2td
OworICAgIFt3ZWJWaWV3IHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrOm5pbF07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkaWRQYXVzZSk7CiAKICAgICBfX2Jsb2NrIGJvb2wgZGlkUmVq
ZWN0ID0gZmFsc2U7CkBAIC0xMTAsMTkgKzExMiwxNyBAQCBURVNUKFdLV2ViVmlldywgU3VzcGVu
ZFJlc3VtZUFsbE1lZGlhUGxheWJhY2tNdWx0aXBsZVRpbWVzKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkUmVqZWN0KTsKIAogICAgIC8vIFN1c3BlbmQgYWdhaW4gdG8gaW5jcmVt
ZW50IHRoZSBjb3VudGVyLgotICAgIFt3ZWJWaWV3IF9zdXNwZW5kQWxsTWVkaWFQbGF5YmFja107
Ci0gICAgZG8gewotICAgICAgICBpZiAoW3dlYlZpZXcgX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291
bnRlcl0uaW50VmFsdWUgPj0gMikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKLSAgICB9IHdoaWxlICh0cnVlKTsKLQotICAg
IFt3ZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXliYWNrXTsKLSAgICBkbyB7Ci0gICAgICAgIGlm
IChbd2ViVmlldyBfc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyXS5pbnRWYWx1ZSA8PSAxKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5M
b29wKDEpOwotICAgIH0gd2hpbGUgKHRydWUpOworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazpeeworICAgICAgICBp
c0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHJlc3VtZUFsbE1lZGlh
UGxheWJhY2s6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIG1lZGlh
IGlzIHN0aWxsIHN1c3BlbmRlZC4KICAgICBkaWRSZWplY3QgPSBmYWxzZTsKQEAgLTEzMiwxMCAr
MTMyLDExNSBAQCBURVNUKFdLV2ViVmlldywgU3VzcGVuZFJlc3VtZUFsbE1lZGlhUGxheWJhY2tN
dWx0aXBsZVRpbWVzKQogCiAgICAgZGlkQmVnaW5QbGF5aW5nID0gZmFsc2U7CiAgICAgW3dlYlZp
ZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciIGFjdGlvbjpeeyBkaWRC
ZWdpblBsYXlpbmcgPSB0cnVlOyB9XTsKLSAgICBbd2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5
YmFja107CisgICAgW3dlYlZpZXcgcmVzdW1lQWxsTWVkaWFQbGF5YmFjazpuaWxdOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsKIH0KIAorVEVTVChXS1dl
YlZpZXcsIENoZWNrTWVkaWFQbGF5YmFja1N1c3BlbmRlZCkKK3sKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjx2aWRlbyBzcmM9XCJ2aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdl
YmtpdC1wbGF5c2lubGluZT48L3ZpZGVvPiJdOworCisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImZ1bmN0aW9uIGV2ZW50VG9NZXNzYWdlKGV2ZW50KXt3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC50eXBl
KTt9IHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7IHZpZGVvLmFk
ZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBldmVudFRvTWVzc2FnZSk7IHZpZGVvLmFkZEV2ZW50
TGlzdGVuZXIoJ3BhdXNlJywgZXZlbnRUb01lc3NhZ2UpOyJdOworCisgICAgX19ibG9jayBib29s
IGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vp
dmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsg
fV07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigndmlkZW8nKS5wbGF5KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOworCisgICAgX19ibG9jayBib29s
IGRpZFBhdXNlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVz
c2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1c2UgPSB0cnVlOyB9XTsKKyAgICBbd2ViVmll
dyBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZGlkUGF1c2UpOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJhY2tTdGF0
ZSBzdGF0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGUsIFdLTWVkaWFQbGF5YmFja1N0YXRl
U3VzcGVuZGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyIg
YWN0aW9uOl57IGRpZEJlZ2luUGxheWluZyA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3IHJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2s6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRp
ZEJlZ2luUGxheWluZyk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
cmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQbGF5YmFja1N0YXRlIHN0YXRlKSB7
CisgICAgICAgIEVYUEVDVF9FUShzdGF0ZSwgV0tNZWRpYVBsYXliYWNrU3RhdGVQbGF5aW5nKTsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBDaGVja01lZGlhUGxheWJhY2tF
eGlzdHMpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwg
MTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7
CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBuZXR3
b3JrIHByb2Nlc3MiXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlOl4oV0tNZWRpYVBsYXliYWNrU3RhdGUg
c3RhdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRlLCBXS01lZGlhUGxheWJhY2tTdGF0ZU5v
bmUpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmc6QCI8dmlkZW8gc3JjPVwidmlkZW8td2l0aC1hdWRpby5tcDRcIiB3ZWJraXQt
cGxheXNpbmxpbmU+PC92aWRlbz4iXTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJhY2tTdGF0ZSBzdGF0
ZSkgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGUsIFdLTWVkaWFQbGF5YmFja1N0YXRlUGxheWlu
Zyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIjxib2R5PjwvYm9keT4iXTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlOl4oV0tNZWRpYVBsYXliYWNrU3RhdGUg
c3RhdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRlLCBXS01lZGlhUGxheWJhY2tTdGF0ZU5v
bmUpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChXS1dlYlZpZXcsIENoZWNrTWVkaWFQbGF5
YmFja1BhdXNlZCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZ
RVNdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjx2aWRl
byBzcmM9XCJ2aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdlYmtpdC1wbGF5c2lubGluZT48L3ZpZGVv
PiJdOworCisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZ1bmN0
aW9uIGV2ZW50VG9NZXNzYWdlKGV2ZW50KXt3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC50eXBlKTt9IHZhciB2aWRlbyA9IGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7IHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcn
LCBldmVudFRvTWVzc2FnZSk7IHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgZXZlbnRU
b01lc3NhZ2UpOyJdOworCisgICAgX19ibG9jayBib29sIGRpZEJlZ2luUGxheWluZyA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBh
Y3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKS5wbGF5KCkiIGNv
bXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRC
ZWdpblBsYXlpbmcpOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJhY2tTdGF0ZSBz
dGF0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGUsIFdLTWVkaWFQbGF5YmFja1N0YXRlUGxh
eWluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCBkaWRQYXVzZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVz
ZSIgYWN0aW9uOl57IGRpZFBhdXNlID0gdHJ1ZTsgfV07CisgICAgW3dlYlZpZXcgcGF1c2VBbGxN
ZWRpYVBsYXliYWNrOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRQYXVz
ZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcmVxdWVzdE1lZGlh
UGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQbGF5YmFja1N0YXRlIHN0YXRlKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKFdLTWVkaWFQbGF5YmFja1N0YXRlUGF1c2VkKTsKKyAgICAgICAgaXNEb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410945</attachid>
            <date>2020-10-09 09:58:04 -0700</date>
            <delta_ts>2020-10-09 10:37:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-217335-20201009095803.patch</filename>
            <type>text/plain</type>
            <size>45713</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzYwMmQ0YTg1MDRmZjAy
MDVkMTMxYTRjYWQyNDg0OTM5NTgxNGRmMS4uYWI3ZTk4NDQ3ZGFjYjEyMGQzYThkODE0OGEwYTZk
M2MyNzM2NjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIwLTEwLTA5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUg
V0tXZWJWaWV3IG1lZGlhIHBsYXliYWNrIFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzMzNQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjM0MDYxMDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAg
IENoYW5nZSBzdG9wQWxsTWVkaWFQbGF5YmFjayB0byBiZSBtb3JlIGFwdGx5IG5hbWVkCisgICAg
ICAgIHBhdXNlQWxsTWVkaWFQbGF5YmFjayBiZWNhdXNlIGl0IGlzIHBvc3NpYmxlIHRvIHJlc3Vt
ZQorICAgICAgICBwbGF5aW5nIG1lZGlhIGFmdGVyIHRoaXMgaXMgY2FsbGVkLiAnU3RvcCcgaW1w
bGllcyBtb3JlIHBlcm1hbmVuY2UuCisgICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIHRoZSBEb2N1
bWVudCBhbmQgUGFnZSBvYmplY3RzIHRvIHNlZSBpZiBtZWRpYSBwbGF5YmFjaworICAgICAgICBl
eGlzdHMsIGlzIHBhdXNlZCwgb3IgaXMgc3VzcGVuZGVkIHRvIGRldGVybWluZSBtZWRpYSBwbGF5
YmFjayBzdGF0ZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpt
ZWRpYVBsYXliYWNrRXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjptZWRpYVBs
YXliYWNrSXNQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhdXNlQWxsTWVk
aWFQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3RvcEFsbE1lZGlhUGxh
eWJhY2spOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIHBh
Z2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptZWRpYVBsYXliYWNrRXhpc3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhUGxheWJhY2tJc1BhdXNlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpwYXVzZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6c3RvcEFsbE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2UvUGFnZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFn
ZXI6OnBhdXNlQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6bWVkaWFQbGF5YmFja0lzUGF1c2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c3RvcEFsbE1lZGlh
UGxheWJhY2tGb3JEb2N1bWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg6CisKIDIwMjAtMTAtMDkgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcHJvcGVyIGltcGxlbWVudGF0aW9u
IGZvciBXb3JrbGV0R2xvYmFsU2NvcGU6OmlzQ29udGV4dFRocmVhZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU4
MGY4MWUyMDk5MDVkOTNiNmRmZTYxN2UxNWRmNGI0ZjFlMjZmMzAuLmZlNDMzZTQ1N2IyMmJlMGRh
MmQzNzc3MTM0ZTY3OGRiMzc3OTg1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjAt
MTAtMDkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUHJvbW90ZSBXS1dlYlZpZXcgbWVkaWEgcGxheWJhY2sgU1BJIHRvIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzM1CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82MzQwNjEwMD4KKworICAgICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUu
CisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IHdheSB0byBpbnRlcmFjdCB3aXRoIHZpZGVv
IGluIFdLV2ViVmlldyBpcyBieSBpbmplY3RpbmcKKyAgICAgICAgSmF2YVNjcmlwdCBpbnRvIGEg
cGFnZS4gSXQgd291bGQgYmUgdXNlZnVsIHRvIHByb21vdGUgdmFyaW91cyBtZWRpYQorICAgICAg
ICBwbGF5YmFjayBTUEkgdG8gQVBJIHRvIG1ha2UgdGhpcyBlYXNpZXIgZm9yIGNsaWVudHMsIGlu
Y2x1ZGluZyBhZGRpbmcKKyAgICAgICAgY29tcGxldGlvbiBoYW5kbGVycyB0byB0aGUgbmV3IEFQ
SSBjYWxscy4gQWxvbmcgd2l0aCB0aGlzLAorICAgICAgICB3ZSBzaG91bGQgYWRkIG5ldyBBUEkg
dG8gY2hlY2sgZm9yIG1lZGlhIHBsYXliYWNrIHN0YXRlLgorICAgICAgICBUaGlzIHBhdGNoIGtl
ZXBzIHRoZSBTUEkgYXJvdW5kIGZvciBjb21wYXRpYmlsaXR5LgorCisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvTWVkaWFQbGF5YmFja1N0YXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tNZWRpYVBsYXliYWNr
U3RhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBwYXVzZUFsbE1lZGlhUGxheWJhY2s6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBz
dXNwZW5kQWxsTWVkaWFQbGF5YmFjazpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlc3VtZUFs
bE1lZGlhUGxheWJhY2s6XSk6CisgICAgICAgICh0b1dLTWVkaWFQbGF5YmFja1N0YXRlKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlvbnNdKToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9zdG9wQWxsTWVkaWFQbGF5YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdW1l
QWxsTWVkaWFQbGF5YmFja10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9X
S0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuVmll
d0NvbnRyb2xsZXIgX3Nob3dQaGlzaGluZ0FsZXJ0XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdE1l
ZGlhUGxheWJhY2tTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF1c2VB
bGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5k
QWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1l
QWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RvcEFs
bE1lZGlhUGxheWJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpwYXVzZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpz
dXNwZW5kQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdG9wQWxsTWVk
aWFQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAyMC0xMC0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgU3dpdGNoIEFsbG93L0Rvbid0IEFsbG93IGJ1dHRvbnMgaW4gZ2V0VXNlck1lZGlhIHByb21w
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNjVhOTM5NmZjZTkxNWRmNzdmOTY0Mzk4NjNl
NzZjZjAzNWVmZmE5Ny4uMDg1MzU4OWVhYmFjMzVlNzZhYmE2ZjI4MmFlNTc2YzU5MmUxZThlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03MDIsNyArNzAyLDcgQEAgRG9jdW1lbnQ6On5E
b2N1bWVudCgpCiAgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNldERvY3VtZW50KG51
bGxwdHIpOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHN0b3BBbGxNZWRpYVBsYXliYWNrKCk7
CisgICAgcGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7CiAjZW5kaWYKIAogICAgIC8vIFdlIG11c3Qg
Y2FsbCBjbGVhclJhcmVEYXRhKCkgaGVyZSBzaW5jZSBhIERvY3VtZW50IGNsYXNzIGluaGVyaXRz
IFRyZWVTY29wZQpAQCAtMTc5NiwxMCArMTc5NiwyNCBAQCB2b2lkIERvY3VtZW50Ojpmb3JFYWNo
TWVkaWFFbGVtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYgZnVu
YwogICAgICAgICBmdW5jdGlvbihlbGVtZW50KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c3RvcEFs
bE1lZGlhUGxheWJhY2soKQorYm9vbCBEb2N1bWVudDo6bWVkaWFQbGF5YmFja0V4aXN0cygpCiB7
CiAgICAgaWYgKGF1dG8qIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA9IFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcklmRXhpc3RzKCkpCi0gICAgICAgIHBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlci0+c3RvcEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChp
ZGVudGlmaWVyKCkpOworICAgICAgICByZXR1cm4gIXBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ci0+aGFzTm9TZXNzaW9uKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIERvY3VtZW50
OjptZWRpYVBsYXliYWNrSXNQYXVzZWQoKQoreworICAgIGlmIChhdXRvKiBwbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFn
ZXJJZkV4aXN0cygpKQorICAgICAgICByZXR1cm4gcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LT5tZWRpYVBsYXliYWNrSXNQYXVzZWQoaWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnBhdXNlQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgaWYg
KGF1dG8qIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA9IFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcklmRXhpc3RzKCkpCisgICAgICAgIHBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci0+cGF1c2VBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoaWRlbnRpZmll
cigpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBlZDI4OTU2MmVmN2Q5MzkyMjAxOTI3ZjRhYWY1MTgwNDI0ZGVi
NDJhLi5kZDg4M2IyYTA3YzU2MjM2ZWNjZmQ1MDQ1YWFlNjA2YjM5NmU4NzRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTExMyw3ICsxMTEzLDkgQEAgcHVibGljOgogICAgIHZvaWQgdW5yZWdp
c3RlckZvclZpc2liaWxpdHlTdGF0ZUNoYW5nZWRDYWxsYmFja3MoVmlzaWJpbGl0eUNoYW5nZUNs
aWVudCYpOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJh
Y2soKTsKKyAgICBib29sIG1lZGlhUGxheWJhY2tFeGlzdHMoKTsKKyAgICBib29sIG1lZGlhUGxh
eWJhY2tJc1BhdXNlZCgpOworICAgIHZvaWQgcGF1c2VBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAg
dm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOwogICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFQ
bGF5YmFjaygpOwogICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhQnVmZmVyaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCA2NzI1ODU2ZTE0NDI3ZjgxZjVhMGI5Y2NlNDhhZGJjODUyNDE1ZWE4Li41
YjA5MzJhY2JiYjEyMjcwYmRmYTI2ODlkN2MyMDc3OTQ4MTllNjc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTIwNjYsMTEgKzIwNjYsMzkgQEAgdm9pZCBQYWdlOjpzdG9wTWVkaWFDYXB0dXJlKCkK
ICNlbmRpZgogfQogCi12b2lkIFBhZ2U6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK2Jvb2wgUGFn
ZTo6bWVkaWFQbGF5YmFja0V4aXN0cygpCit7CisjaWYgRU5BQkxFKFZJREVPKQorICAgIGJvb2wg
bWVkaWFQbGF5YmFja0V4aXN0cyA9IGZhbHNlOworICAgIGZvckVhY2hEb2N1bWVudChbJm1lZGlh
UGxheWJhY2tFeGlzdHNdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgaWYgKGRvY3Vt
ZW50Lm1lZGlhUGxheWJhY2tFeGlzdHMoKSkKKyAgICAgICAgICAgIG1lZGlhUGxheWJhY2tFeGlz
dHMgPSB0cnVlOworICAgIH0pOworICAgIHJldHVybiBtZWRpYVBsYXliYWNrRXhpc3RzOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworYm9vbCBQYWdlOjptZWRpYVBsYXli
YWNrSXNQYXVzZWQoKQoreworI2lmIEVOQUJMRShWSURFTykKKyAgICBib29sIG1lZGlhUGxheWJh
Y2tJc1BhdXNlZCA9IGZhbHNlOworICAgIGZvckVhY2hEb2N1bWVudChbJm1lZGlhUGxheWJhY2tJ
c1BhdXNlZF0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICBpZiAoZG9jdW1lbnQubWVk
aWFQbGF5YmFja0lzUGF1c2VkKCkpCisgICAgICAgICAgICBtZWRpYVBsYXliYWNrSXNQYXVzZWQg
PSB0cnVlOworICAgIH0pOworICAgIHJldHVybiBtZWRpYVBsYXliYWNrSXNQYXVzZWQ7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFBhZ2U6OnBhdXNlQWxsTWVk
aWFQbGF5YmFjaygpCiB7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGZvckVhY2hEb2N1bWVudChb
XSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Ci0gICAgICAgIGRvY3VtZW50LnN0b3BBbGxNZWRpYVBs
YXliYWNrKCk7CisgICAgICAgIGRvY3VtZW50LnBhdXNlQWxsTWVkaWFQbGF5YmFjaygpOwogICAg
IH0pOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDk2MTA3YzdlM2QwZmMyNTQzM2EyNjk2
YWYzYzU3YjhjOTU4YWM4YzguLjVhYmIzNTBjNmJiOTFiNGU4ZjBiOTUyOTlkYWE0NGI4ODhiYjFh
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02OTQsNyArNjk0LDkgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TXV0ZWQoTWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BNZWRpYUNhcHR1cmUoKTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBib29sIG1lZGlhUGxheWJhY2tFeGlzdHMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG1l
ZGlhUGxheWJhY2tJc1BhdXNlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGF1c2VBbGxN
ZWRpYVBsYXliYWNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kQWxsTWVkaWFQ
bGF5YmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFj
aygpOwogICAgIGJvb2wgbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmlu
ZGV4IGQ4YTc1ZjI4ZGQzMTU4YmIwNGE3MzM5YmIwNjA0NjE4YTdkYzQ2NmYuLmVkNDg3MjU1MTlj
Mjc2OGVkMDYzYjdjYjE4YmYxNWNiOGFhOTJlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cApAQCAtNDU5LDEzICs0NTksMjQgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnByb2Nlc3NTeXN0ZW1EaWRXYWtlKCkKICAgICB9KTsKIH0KIAotdm9pZCBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnN0b3BBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoRG9jdW1lbnRJ
ZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcikKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpwYXVzZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChEb2N1bWVudElkZW50aWZp
ZXIgZG9jdW1lbnRJZGVudGlmaWVyKQogewogICAgIGZvckVhY2hEb2N1bWVudFNlc3Npb24oZG9j
dW1lbnRJZGVudGlmaWVyLCBbXShhdXRvJiBzZXNzaW9uKSB7CiAgICAgICAgIHNlc3Npb24ucGF1
c2VTZXNzaW9uKCk7CiAgICAgfSk7CiB9CiAKKworYm9vbCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6Om1lZGlhUGxheWJhY2tJc1BhdXNlZChEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJ
ZGVudGlmaWVyKQoreworICAgIGJvb2wgbWVkaWFQbGF5YmFja0lzUGF1c2VkID0gZmFsc2U7Cisg
ICAgZm9yRWFjaERvY3VtZW50U2Vzc2lvbihkb2N1bWVudElkZW50aWZpZXIsIFsmbWVkaWFQbGF5
YmFja0lzUGF1c2VkXShhdXRvJiBzZXNzaW9uKSB7CisgICAgICAgIGlmIChzZXNzaW9uLnN0YXRl
KCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OlBhdXNlZCkKKyAgICAgICAgICAgIG1lZGlhUGxh
eWJhY2tJc1BhdXNlZCA9IHRydWU7CisgICAgfSk7CisgICAgcmV0dXJuIG1lZGlhUGxheWJhY2tJ
c1BhdXNlZDsKK30KKwogdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN0b3BBbGxN
ZWRpYVBsYXliYWNrRm9yUHJvY2VzcygpCiB7CiAgICAgZm9yRWFjaFNlc3Npb24oW10gKGF1dG8m
IHNlc3Npb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggMzQyOTliMTEyYjVmMjlkYTI1
ZjBlMmNhODIxYzAzYjJkMjhhMTFiOS4uMWU2N2Y4ZTkwNjQwZjZmNmQ3M2NiNmE1MjJhZGQ5NWQw
MGE1OTBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTg4LDcgKzg4LDggQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvY2Vzc1dpbGxTdXNwZW5kKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwcm9jZXNzRGlkUmVzdW1lKCk7CiAKLSAgICB2b2lkIHN0b3BBbGxN
ZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoRG9jdW1lbnRJZGVudGlmaWVyKTsKKyAgICBib29sIG1l
ZGlhUGxheWJhY2tJc1BhdXNlZChEb2N1bWVudElkZW50aWZpZXIpOworICAgIHZvaWQgcGF1c2VB
bGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoRG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxNZWRpYVBsYXliYWNrRm9yUHJvY2VzcygpOwogCiAgICAg
dm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KERvY3VtZW50SWRlbnRpZmll
cik7CkBAIC0xNDMsNiArMTQ0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cHJvY2Vzc0RpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlLCBjb25zdCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29tbWFuZEFyZ3VtZW50Kik7CiAKICAgICBib29sIGlzSW50ZXJydXB0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2ludGVycnVwdGVkOyB9CisgICAgYm9vbCBoYXNOb1Nlc3Npb24oKSBjb25z
dDsKIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjsK
QEAgLTE2OCw3ICsxNzAsNiBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIGludCBjb3VudEFj
dGl2ZUF1ZGlvQ2FwdHVyZVNvdXJjZXMoKTsKLSAgICBib29sIGhhc05vU2Vzc2lvbigpIGNvbnN0
OwogCiAgICAgYm9vbCBjb21wdXRlU3VwcG9ydHNTZWVraW5nKCkgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaAppbmRleCBlMmMyODgyZDAxZTNmNzM1ZGU3ZGE1
NWZkM2IyYTBkMDE5YzY4NTNjLi4xZjdhM2RkM2M2OTczZTEwOTk0ZjVkYzEzN2ZhZjQwNmEyNWVh
MjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tGcmFtZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9XS0hUVFBDb29raWVTdG9yZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLTWVkaWFQbGF5YmFja1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tO
YXZpZ2F0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uQWN0aW9uLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL01lZGlhUGxheWJhY2tTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
TWVkaWFQbGF5YmFja1N0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjFjZmI1YmU3MWI5ZjEyNjQ4MDFiMmE1
NGJlYjUzZmE2MGU0NGExZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L01lZGlhUGxheWJhY2tTdGF0ZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTWVkaWFQbGF5YmFj
a1N0YXRlIDogdWludDhfdCB7CisgICAgTm9NZWRpYVBsYXliYWNrLAorICAgIE1lZGlhUGxheWJh
Y2tQYXVzZWQsCisgICAgTWVkaWFQbGF5YmFja1N1c3BlbmRlZCwKKyAgICBNZWRpYVBsYXliYWNr
UGxheWluZworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRl
PiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpNZWRp
YVBsYXliYWNrU3RhdGUsCisgICAgICAgIFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRlOjpOb01l
ZGlhUGxheWJhY2ssCisgICAgICAgIFdlYktpdDo6TWVkaWFQbGF5YmFja1N0YXRlOjpNZWRpYVBs
YXliYWNrUGF1c2VkLAorICAgICAgICBXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZTo6TWVkaWFQ
bGF5YmFja1N1c3BlbmRlZCwKKyAgICAgICAgV2ViS2l0OjpNZWRpYVBsYXliYWNrU3RhdGU6Ok1l
ZGlhUGxheWJhY2tQbGF5aW5nCisgICAgPjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTWVkaWFQbGF5YmFj
a1N0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tNZWRpYVBsYXli
YWNrU3RhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODY5NzMwNzgxYzI4MTYxMDU5ODBhZDc2NTY5MmQ5YTYx
YWEyOWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTWVkaWFQbGF5YmFja1N0YXRlLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCit0eXBlZGVmIE5TX0VOVU0o
TlNVSW50ZWdlciwgV0tNZWRpYVBsYXliYWNrU3RhdGUpIHsKKyAgICBXS01lZGlhUGxheWJhY2tT
dGF0ZU5vbmUsCisgICAgV0tNZWRpYVBsYXliYWNrU3RhdGVQYXVzZWQsCisgICAgV0tNZWRpYVBs
YXliYWNrU3RhdGVTdXNwZW5kZWQsCisgICAgV0tNZWRpYVBsYXliYWNrU3RhdGVQbGF5aW5nCit9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisK
K05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5oCmluZGV4IDQ2NTliZjMwMTI5MDUwMTQ2NDljNjUxZjRmMGNlMWZmZDYx
YjIwOTYuLjc2MWExZGEwZjY1YjM2OTk3YmFiNDllNjZjMmMyOGU5ZmYwYjBjOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTI1LDYgKzI1
LDggQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogCisjaW1wb3J0IDxXZWJL
aXQvV0tNZWRpYVBsYXliYWNrU3RhdGUuaD4KKwogI2lmIFRBUkdFVF9PU19JUEhPTkUKICNpbXBv
cnQgPFVJS2l0L1VJS2l0Lmg+CiAjZWxzZQpAQCAtMzIxLDYgKzMyMywzNSBAQCBXS19DTEFTU19B
VkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKICovCiAtICh2b2lkKWNhbGxBc3luY0ph
dmFTY3JpcHQ6KE5TU3RyaW5nICopZnVuY3Rpb25Cb2R5IGFyZ3VtZW50czoobnVsbGFibGUgTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBpbkZyYW1lOihudWxsYWJsZSBX
S0ZyYW1lSW5mbyAqKWZyYW1lIGluQ29udGVudFdvcmxkOihXS0NvbnRlbnRXb3JsZCAqKWNvbnRl
bnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiBfTnVsbGFibGUpKF9OdWxsYWJsZSBp
ZCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikpY29tcGxldGlvbkhhbmRsZXIgTlNfUkVGSU5F
RF9GT1JfU1dJRlQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAorLyohIEBhYnN0cmFjdCBDbG9zZXMgYWxsIG91dC1vZi13aW5kb3cgbWVkaWEg
cHJlc2VudGF0aW9ucyBpbiBhIFdLV2ViVmlldy4KKyBAZGlzY3Vzc2lvbiBJbmNsdWRlcyBwaWN0
dXJlLWluLXBpY3R1cmUgYW5kIGZ1bGxzY3JlZW4uCisgKi8KKy0gKHZvaWQpY2xvc2VBbGxNZWRp
YVByZXNlbnRhdGlvbnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKworLyohIEBhYnN0cmFjdCBQYXVzZXMgbWVkaWEgcGxheWJhY2sgaW4gV0tX
ZWJWaWV3LgorIEBkaXNjdXNzaW9uIFBhdXNlcyBtZWRpYSBwbGF5YmFjay4gTWVkaWEgaW4gdGhl
IHBhZ2UgY2FuIGJlIHJlc3RhcnRlZCBieSBjYWxsaW5nIHBsYXkoKSBvbiBhIG1lZGlhIGVsZW1l
bnQgb3IgcmVzdW1lKCkgb24gYW4gQXVkaW9Db250ZXh0LgorICovCistICh2b2lkKXBhdXNlQWxs
TWVkaWFQbGF5YmFjazoodm9pZCAoXl9OdWxsYWJsZSkodm9pZCkpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwor
LyohIEBhYnN0cmFjdCBTdXNwZW5kcyBtZWRpYSBwbGF5YmFjayBpbiBXS1dlYlZpZXcuCisgQGRp
c2N1c3Npb24gUGF1c2VzIG1lZGlhIHBsYXliYWNrIGFuZCBibG9ja3MgYWxsIGF0dGVtcHRzIGJ5
IHRoZSBwYWdlIHRvIHJlc3VtZSB1bnRpbCByZXN1bWVBbGxNZWRpYVBsYXliYWNrIGlzIGNhbGxl
ZC4gVGhpcyBzaG91bGQgYWx3YXlzIGJlIGNhbGxlZCBpbiBwYWlycyB3aXRoIHJlc3VtZUFsbE1l
ZGlhUGxheWJhY2suCisgKi8KKy0gKHZvaWQpc3VzcGVuZEFsbE1lZGlhUGxheWJhY2s6KHZvaWQg
KF5fTnVsbGFibGUpKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qISBAYWJzdHJhY3QgUmVzdW1l
cyBtZWRpYSBwbGF5YmFjayBpbiBXS1dlYlZpZXcuCisgQGRpc2N1c3Npb24gVGhpcyBzaG91bGQg
YWx3YXlzIGJlIGNhbGxlZCBpbiBwYWlycyB3aXRoIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrLgor
ICovCistICh2b2lkKXJlc3VtZUFsbE1lZGlhUGxheWJhY2s6KHZvaWQgKF4gX051bGxhYmxlKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiEgQGFic3RyYWN0IEdldCB0aGUgY3VycmVudCBtZWRp
YSBwbGF5YmFjayBzdGF0ZSBvZiBhIFdLV2ViVmlldy4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgQSBibG9jayB0byBpbnZva2Ugd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlv
biBjYWxsLgorIEBkaXNjdXNzaW9uIElmIG1lZGlhIHBsYXliYWNrIGV4aXN0cywgV0tNZWRpYVBs
YXliYWNrU3RhdGUgd2lsbCBiZSBvbmUgb2YgdGhyZWUKKyB2YWx1ZXM6IFdLTWVkaWFQbGF5YmFj
a1BhdXNlZCwgV0tNZWRpYVBsYXliYWNrU3VzcGVuZGVkLCBvciBXS01lZGlhUGxheWJhY2tQbGF5
aW5nLgorIElmIG5vIG1lZGlhIHBsYXliYWNrIGV4aXN0cyBpbiB0aGUgY3VycmVudCBXS1dlYlZp
ZXcsIFdLTWVkaWFQbGF5YmFja1N0YXRlIHdpbGwgZXF1YWwKKyBXS05vTWVkaWFQbGF5YmFjay4K
KyAqLworLSAodm9pZClyZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlOih2b2lkICheKShXS01lZGlh
UGxheWJhY2tTdGF0ZSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyohIEBhYnN0cmFjdCBHZXQgYSBzbmFw
c2hvdCBmb3IgdGhlIHZpc2libGUgdmlld3BvcnQgb2YgV0tXZWJWaWV3LgogIEBwYXJhbSBzbmFw
c2hvdENvbmZpZ3VyYXRpb24gQW4gb2JqZWN0IHRoYXQgc3BlY2lmaWVzIGhvdyB0aGUgc25hcHNo
b3QgaXMgY29uZmlndXJlZC4KICBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBp
bnZva2Ugd2hlbiB0aGUgc25hcHNob3QgaXMgcmVhZHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAyZjk4ZTRkYzc3OTQ5NzNiYzUyNTll
ZjU3OWE3Yzc4OWJhMzE1M2E3Li4wYTYzMjcwY2NhZWI3NmZjOWUwZWM5ZTIzNGMyOTcyYjA2ZTcx
MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTYzLDYgKzYzLDcgQEAKICNpbXBvcnQgIldLRmluZFJlc3VsdEludGVybmFsLmgiCiAj
aW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLTGF5b3V0TW9k
ZS5oIgorI2ltcG9ydCAiV0tNZWRpYVBsYXliYWNrU3RhdGUuaCIKICNpbXBvcnQgIldLTlNEYXRh
LmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25EZWxl
Z2F0ZS5oIgpAQCAtODY1LDYgKzg2Niw3NiBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUFyZ3VtZW50
KGlkIGFyZ3VtZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorLSAodm9pZCljbG9zZUFsbE1l
ZGlhUHJlc2VudGF0aW9ucworeworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBpZiAo
YXV0byB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyID0gX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIoKSkgeworICAgICAgICB2aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLT5mb3JFYWNoU2Vzc2lvbihb
XSAoYXV0byYgbW9kZWwsIGF1dG8mIGludGVyZmFjZSkgeworICAgICAgICAgICAgbW9kZWwucmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBpZiAoYXV0byBm
dWxsU2NyZWVuTWFuYWdlciA9IF9wYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpOyBmdWxsU2NyZWVu
TWFuYWdlciAmJiBmdWxsU2NyZWVuTWFuYWdlci0+aXNGdWxsU2NyZWVuKCkpCisgICAgICAgIGZ1
bGxTY3JlZW5NYW5hZ2VyLT5jbG9zZSgpOworI2VuZGlmCit9CisKKy0gKHZvaWQpcGF1c2VBbGxN
ZWRpYVBsYXliYWNrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlm
ICghY29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgX3BhZ2UtPnBhdXNlQWxsTWVkaWFQbGF5
YmFjayhbXSB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3BhZ2UtPnBhdXNl
QWxsTWVkaWFQbGF5YmFjayhtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwor
LSAodm9pZClzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazoodm9pZCAoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBpZiAoIWNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIF9wYWdl
LT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjayhbXSB7IH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIF9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjayhtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKworLSAodm9pZClyZXN1bWVBbGxNZWRpYVBsYXliYWNrOih2b2lk
ICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmICghY29tcGxldGlvbkhhbmRs
ZXIpIHsKKyAgICAgICAgX3BhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soW10geyB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBfcGFnZS0+cmVzdW1lQWxsTWVkaWFQbGF5YmFjayht
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworc3RhdGljIFdLTWVkaWFQbGF5
YmFja1N0YXRlIHRvV0tNZWRpYVBsYXliYWNrU3RhdGUoV2ViS2l0OjpNZWRpYVBsYXliYWNrU3Rh
dGUgbWVkaWFQbGF5YmFja1N0YXRlKQoreworICAgIHN3aXRjaCAobWVkaWFQbGF5YmFja1N0YXRl
KSB7CisgICAgY2FzZSBXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZTo6Tm9NZWRpYVBsYXliYWNr
OgorICAgICAgICByZXR1cm4gV0tNZWRpYVBsYXliYWNrU3RhdGVOb25lOworICAgIGNhc2UgV2Vi
S2l0OjpNZWRpYVBsYXliYWNrU3RhdGU6Ok1lZGlhUGxheWJhY2tQYXVzZWQ6CisgICAgICAgIHJl
dHVybiBXS01lZGlhUGxheWJhY2tTdGF0ZVBhdXNlZDsKKyAgICBjYXNlIFdlYktpdDo6TWVkaWFQ
bGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrU3VzcGVuZGVkOgorICAgICAgICByZXR1cm4gV0tN
ZWRpYVBsYXliYWNrU3RhdGVTdXNwZW5kZWQ7CisgICAgY2FzZSBXZWJLaXQ6Ok1lZGlhUGxheWJh
Y2tTdGF0ZTo6TWVkaWFQbGF5YmFja1BsYXlpbmc6CisgICAgICAgIHJldHVybiBXS01lZGlhUGxh
eWJhY2tTdGF0ZVBsYXlpbmc7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXS01lZGlhUGxheWJhY2tTdGF0
ZU5vbmU7Cit9CisKKy0gKHZvaWQpcmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZToodm9pZCAoXiko
V0tNZWRpYVBsYXliYWNrU3RhdGUpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCFjb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgcmV0dXJuIF9wYWdlLT5yZXF1
ZXN0TWVkaWFQbGF5YmFja1N0YXRlKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgbWVkaWFQbGF5YmFja1N0YXRlKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHRvV0tNZWRpYVBsYXliYWNrU3RhdGUobWVkaWFQbGF5YmFja1N0
YXRlKSk7CisgICAgfSk7Cit9CisKIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvckZy
b21FeGNlcHRpb25EZXRhaWxzKGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGRldGFp
bHMpCiB7CiAgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CkBAIC0xODUzLDE2ICsxOTI0LDcgQEAgLSAoX1dLTWVkaWFNdXRlZFN0
YXRlKV9tZWRpYU11dGVkU3RhdGUKIAogLSAodm9pZClfY2xvc2VBbGxNZWRpYVByZXNlbnRhdGlv
bnMKIHsKLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgaWYgKGF1dG8gdmlkZW9GdWxs
c2NyZWVuTWFuYWdlciA9IF9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkpIHsKLSAgICAg
ICAgdmlkZW9GdWxsc2NyZWVuTWFuYWdlci0+Zm9yRWFjaFNlc3Npb24oW10gKGF1dG8mIG1vZGVs
LCBhdXRvJiBpbnRlcmZhY2UpIHsKLSAgICAgICAgICAgIG1vZGVsLnJlcXVlc3RGdWxsc2NyZWVu
TW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVO
b25lKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgaWYgKGF1dG8gZnVsbFNjcmVlbk1hbmFn
ZXIgPSBfcGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKTsgZnVsbFNjcmVlbk1hbmFnZXIgJiYgZnVs
bFNjcmVlbk1hbmFnZXItPmlzRnVsbFNjcmVlbigpKQotICAgICAgICBmdWxsU2NyZWVuTWFuYWdl
ci0+Y2xvc2UoKTsKLSNlbmRpZgorICAgIFtzZWxmIGNsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25z
XTsKIH0KIAogLSAodm9pZClfc3RvcE1lZGlhQ2FwdHVyZQpAQCAtMTg3MiwxNyArMTkzNCwxNyBA
QCAtICh2b2lkKV9zdG9wTWVkaWFDYXB0dXJlCiAKIC0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXli
YWNrCiB7Ci0gICAgX3BhZ2UtPnN0b3BBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgW3NlbGYgcGF1
c2VBbGxNZWRpYVBsYXliYWNrOm5pbF07CiB9CiAKIC0gKHZvaWQpX3N1c3BlbmRBbGxNZWRpYVBs
YXliYWNrCiB7Ci0gICAgX3BhZ2UtPnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgW3Nl
bGYgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2s6bmlsXTsKIH0KIAogLSAodm9pZClfcmVzdW1lQWxs
TWVkaWFQbGF5YmFjawogewotICAgIF9wYWdlLT5yZXN1bWVBbGxNZWRpYVBsYXliYWNrKCk7Cisg
ICAgW3NlbGYgcmVzdW1lQWxsTWVkaWFQbGF5YmFjazpuaWxdOwogfQogCiAtIChOU1VSTCAqKV91
bnJlYWNoYWJsZVVSTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggZGY0ZmJmNjRiZTc2MzhkYWZkNDVjMmJlOTQ5MWVmZjdiM2MzNTJiYy4uYTFjMWUzNDhkZWUy
NDQxZTRhNWQ3NTk5ODY2N2VmNzRlMDc3YjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC02MDIwLDQwICs2MDIwLDYwIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzdG9wTWVkaWFDYXB0dXJlKCkKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c3Rv
cEFsbE1lZGlhUGxheWJhY2soKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RNZWRpYVBsYXli
YWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0
ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlKCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnBhdXNlQWxs
TWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U3RvcEFsbE1lZGlhUGxheWJhY2soKSk7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpQYXVzZUFsbE1lZGlhUGxheWJhY2soKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFs
bE1lZGlhUGxheWJhY2soKQordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXli
YWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIrKzsKLSAgICBpZiAobV9tZWRpYVBs
YXliYWNrSXNTdXNwZW5kZWQpCisgICAgaWYgKG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgPSB0cnVlOwogCi0gICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQorICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKSk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRp
YVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgaWYgKG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyID4gMCkKICAgICAg
ICAgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXItLTsKIAotICAgIGlmICghbV9tZWRpYVBs
YXliYWNrSXNTdXNwZW5kZWQgfHwgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0NvdW50ZXIpCisgICAg
aWYgKCFtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCB8fCBtX3N1c3BlbmRNZWRpYVBsYXliYWNr
Q291bnRlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47
CisgICAgfQogICAgIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkID0gZmFsc2U7CiAKLSAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCisgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkpOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVkaWFQ
bGF5YmFjaygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3RhcnRNZWRpYSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2NmNGQ2OGU1ZWNmYzQx
MTc4YmNlODJjMmExYzBhMDk4MGJkNzA0ZS4uYzc0ZmZlZWYwMjlmMmYzYmFhYzViMzU1MTZjYjRj
MzNjNWFiOGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmgiCiAjaW5jbHVkZSAiSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VzQ291
bnRlci5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKKyNpbmNsdWRlICJNZWRpYVBs
YXliYWNrU3RhdGUuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQREZQ
bHVnaW5JZGVudGlmaWVyLmgiCkBAIC0xMzM0LDkgKzEzMzUsMTAgQEAgcHVibGljOgogICAgIGJv
b2wgbWVkaWFDYXB0dXJlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDYXB0dXJlRW5h
YmxlZDsgfQogICAgIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCi0gICAgdm9pZCBzdG9wQWxs
TWVkaWFQbGF5YmFjaygpOwotICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKLSAg
ICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lkIHBhdXNlQWxsTWVkaWFQ
bGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lkIHN1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9pZCk+JiYpOworICAg
IHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQp
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSk+JiYpOwogCiAjaWYgRU5BQkxFKFBP
SU5URVJfTE9DSykKICAgICB2b2lkIGRpZEFsbG93UG9pbnRlckxvY2soKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tG
dWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KaW5kZXggYWE2YzQwMjFmYzMzY2FmNmM0OTQ3OThi
N2VkMmQxZjc3NDQyMDdiYS4uYTMxZGIzYmVhZTIwMDQ1NmMyZTJhNzExMmE0NDY2YWFhODMwMzI4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tG
dWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KQEAgLTQ5Myw3ICs0
OTMsNyBAQCAtICh2b2lkKV9zaG93UGhpc2hpbmdBbGVydAogICAgIFVJQWxlcnRDb250cm9sbGVy
KiBhbGVydCA9IFtVSUFsZXJ0Q29udHJvbGxlciBhbGVydENvbnRyb2xsZXJXaXRoVGl0bGU6YWxl
cnRUaXRsZSBtZXNzYWdlOmFsZXJ0TWVzc2FnZSBwcmVmZXJyZWRTdHlsZTpVSUFsZXJ0Q29udHJv
bGxlclN0eWxlQWxlcnRdOwogCiAgICAgaWYgKGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9w
YWdlXSkgewotICAgICAgICBwYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpOworICAgICAg
ICBwYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFjayhbXSB7IH0pOwogICAgICAgICBwYWdlLT5z
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKICAgICB9CiAKQEAgLTUwMSwx
NCArNTAxLDE0IEBAIC0gKHZvaWQpX3Nob3dQaGlzaGluZ0FsZXJ0CiAgICAgICAgIFtzZWxmIF9j
YW5jZWxBY3Rpb246YWN0aW9uXTsKICAgICAgICAgaWYgKGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJW
aWV3IF9wYWdlXSkgewogICAgICAgICAgICAgcGFnZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMoKTsKLSAgICAgICAgICAgIHBhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2so
KTsKKyAgICAgICAgICAgIHBhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soW10geyB9KTsKICAg
ICAgICAgfQogICAgIH1dOwogCiAgICAgVUlBbGVydEFjdGlvbiogc3RheUFjdGlvbiA9IFtVSUFs
ZXJ0QWN0aW9uIGFjdGlvbldpdGhUaXRsZTpXRUJfVUlfU1RSSU5HX0tFWSgiU3RheSBpbiBGdWxs
IFNjcmVlbiIsICJTdGF5IGluIEZ1bGwgU2NyZWVuIChFbGVtZW50IEZ1bGwgU2NyZWVuKSIsICJG
dWxsIFNjcmVlbiBEZWNlcHRpdmUgV2Vic2l0ZSBTdGF5IEFjdGlvbiIpIHN0eWxlOlVJQWxlcnRB
Y3Rpb25TdHlsZURlZmF1bHQgaGFuZGxlcjpeKFVJQWxlcnRBY3Rpb24gKiBhY3Rpb24pIHsKICAg
ICAgICAgaWYgKGF1dG8gcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXSkgewogICAgICAgICAg
ICAgcGFnZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKLSAgICAgICAg
ICAgIHBhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICAgICAgICAgIHBhZ2UtPnJl
c3VtZUFsbE1lZGlhUGxheWJhY2soW10geyB9KTsKICAgICAgICAgfQogICAgICAgICBfc2VjaGV1
cmlzdGljLnJlc2V0KCk7CiAgICAgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMGI2ZWZmMDkxY2Q4MDg2OTk3ZjkxNjVjYjY4NzVl
MGY3Mjk5MzM2Li5lYTczYTdiMDk1NThiNTE3ZmEyZDNhNjdhNGJlYmM5MTEyNjZkZTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1
OCw2ICs5NTgsNyBAQAogCQk0OTczREY0ODI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5NzNERjQ3MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbi5oICovOyB9OwogCQk0OTkwMDAyMTI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAw
MUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTkwMDAyNDI0RDI0QzI5MDAwNDlDQjQg
LyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ5OTAwMDIzMjREMjRDMUMwMDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ5OTE3REE3
MjUyRDY0OUUwMDUwMzEzRiAvKiBXS01lZGlhUGxheWJhY2tTdGF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MTdEQTYyNTJENjQ5RTAwNTAzMTNG
IC8qIFdLTWVkaWFQbGF5YmFja1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwogCQk0OUJDQTE5MjIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovOyB9OwogCQk0OUJDQTE5NTIzQTE4Q0ZEMDAy
OEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTAyM0Ex
NzU0OTAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJu
YWwuaCAqLzsgfTsKIAkJNDlCQ0ExOTcyM0ExOTMwRDAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0OUJDQTE5NjIzQTE4RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RoaXJkUGFydHkuaCAqLzsgfTsKQEAgLTM2MDAsNiArMzYwMSw4IEBACiAJCTQ5
OTAwMDFGMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLUmVuZGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAwMjIy
NEQyNEMxQzAwMDQ5Q0I0IC8qIFdLUmVuZGVyT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLUmVuZGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAw
MjMyNEQyNEMxQzAwMDQ5Q0I0IC8qIFdLUmVuZGVyT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
UmVuZGVyT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5OTE3REE2MjUy
RDY0OUUwMDUwMzEzRiAvKiBXS01lZGlhUGxheWJhY2tTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S01lZGlhUGxheWJhY2tTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTkx
N0RCMDI1MkUzMDc1MDA1MDMxM0YgLyogTWVkaWFQbGF5YmFja1N0YXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhUGxheWJhY2tTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
OUJDQTE5MDIzQTE3NTQ5MDAyOEE4MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0
UGFydHlJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rmlyc3RQYXJ0eUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QkNB
MTkxMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUJDQTE5NjIzQTE4RjYyMDAyOEE4MzYg
LyogQVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTYwNjksNiArNjA3Miw3IEBACiAJCQkJMUE5MkRDMTAxMkY4QkE0NjAwMTdB
RjY1IC8qIExheWVyVHJlZUNvbnRleHQuaCAqLywKIAkJCQkyRDEwODc1RTFEMkM1NzNFMDBCODVG
ODIgLyogTG9hZFBhcmFtZXRlcnMuY3BwICovLAogCQkJCTJEMTA4NzVGMUQyQzU3M0UwMEI4NUY4
MiAvKiBMb2FkUGFyYW1ldGVycy5oICovLAorCQkJCTQ5OTE3REIwMjUyRTMwNzUwMDUwMzEzRiAv
KiBNZWRpYVBsYXliYWNrU3RhdGUuaCAqLywKIAkJCQkyRDUwMzY2QTFCQ0RFMTc5MDBFMjBCQjMg
LyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50LmggKi8sCiAJCQkJQzAyQkZGMTUxMjUxNEZEODAwOUND
QkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCAqLywKIAkJCQkzMUVBMjVEMzEzNEY3OEQ2
MDA1QjE0NTIgLyogTmF0aXZlV2ViTW91c2VFdmVudC5oICovLApAQCAtNzQwMiw2ICs3NDA2LDcg
QEAKIAkJCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUubW0g
Ki8sCiAJCQkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlSW50
ZXJuYWwuaCAqLywKIAkJCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2ll
U3RvcmVQcml2YXRlLmggKi8sCisJCQkJNDk5MTdEQTYyNTJENjQ5RTAwNTAzMTNGIC8qIFdLTWVk
aWFQbGF5YmFja1N0YXRlLmggKi8sCiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdL
TWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUg
LyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovLAogCQkJCTFBNUIxQzRGMTg5ODYw
NkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCAqLywKQEAgLTExNjcyLDYgKzExNjc3LDcgQEAK
IAkJCQk1MUE5RTEwQjEzMTVDRDE4MDA5RTcwMzEgLyogV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDc5MEE5RjFBRDcxNjQ5MDBBQjkwQjMgLyogV0tMYXlv
dXRNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0U5MTIxNDIyOTNDMjgwMDA1QkVDNzggLyog
V0tNYWluLmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTkxN0RBNzI1MkQ2NDlFMDA1MDMxM0YgLyog
V0tNZWRpYVBsYXliYWNrU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQwRUU2MUJGNjc3
RTMwMEJBODFCRSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnNQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0FCREM4NjIyQzQwRkRFMDAxRURFOEUgLyogV0tNZXNzYWdlTGlzdGVuZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUMxMUUxNjk0MjEyQjg3QzUwMDk4NUZGNiAvKiBXS01vY2tEaXNw
bGF5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNGM2YTE3MjBkNzRiNGYyY2YzYzJmY2IzYTdjZTFmZTcwM2QwNjlm
My4uOGE4ZGI1NTE3Njc3NTBjZWEzNzJmZTk3ZmFiZWY0N2NhZDRmNDNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAK
ICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIkxvYWRQYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tTdGF0ZS5o
IgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIk5ldHNjYXBl
UGx1Z2luLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdl
cy5oIgpAQCAtODA2LDE5ICs4MDcsMzQgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIHVw
ZGF0ZVRocm90dGxlU3RhdGUoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzdG9wQWxsTWVkaWFQbGF5
YmFjaygpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgbV9wYWdlLT5zdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIGlmICgh
bV9wYWdlLT5tZWRpYVBsYXliYWNrRXhpc3RzKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihNZWRpYVBsYXliYWNrU3RhdGU6Ok5vTWVkaWFQbGF5YmFjayk7CisgICAgaWYgKG1f
cGFnZS0+bWVkaWFQbGF5YmFja0lzUGF1c2VkKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihNZWRpYVBsYXliYWNrU3RhdGU6Ok1lZGlhUGxheWJhY2tQYXVzZWQpOworICAgIGlm
IChtX3BhZ2UtPm1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoTWVkaWFQbGF5YmFja1N0YXRlOjpNZWRpYVBsYXliYWNrU3VzcGVuZGVk
KTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKE1lZGlhUGxheWJhY2tTdGF0ZTo6TWVkaWFQbGF5
YmFja1BsYXlpbmcpOwogfQogCi12b2lkIFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNr
KCkKK3ZvaWQgV2ViUGFnZTo6cGF1c2VBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodm9pZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9wYWdlLT5wYXVzZUFs
bE1lZGlhUGxheWJhY2soKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIFdl
YlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQodm9p
ZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQ
bGF5YmFjaygpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCit2b2lkIFdlYlBhZ2U6OnJlc3VtZUFsbE1lZGlhUGxh
eWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBtX3BhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYUJ1ZmZlcmluZygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOTExNzdj
OWE1OTA4YWJmZjQ4MmQ0Yjc2MjQzOWQ0YWNlMjVlYTRlMi4uMWFmY2YyNDRiZTdkMjM2MzFkN2M4
MThmZmMzZjZhMjYxYzU2NzRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTY1NSw5ICsxNjU1LDExIEBAIHByaXZhdGU6CiAKICNlbmRpZgogCi0g
ICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOwotICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlh
UGxheWJhY2soKTsKLSAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lk
IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6
Ok1lZGlhUGxheWJhY2tTdGF0ZSk+JiYpOworCisgICAgdm9pZCBwYXVzZUFsbE1lZGlhUGxheWJh
Y2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJik7CisgICAgdm9pZCBzdXNwZW5kQWxs
TWVkaWFQbGF5YmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHZvaWQpPiYmKTsKKyAgICB2b2lk
IHJlc3VtZUFsbE1lZGlhUGxheWJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh2b2lkKT4mJik7
CiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29y
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCAwYzlkOTY3YjZjZDY0NDU1MWVhZTczYTM4OWQ2MjZhYjY3MWNjYWFi
Li4xNTVmMWY0YTRhOTYyODllMTA4NzFmMjJhNTk1NTA3MGVkMGVlNThkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTM3OCw5ICszNzgsMTAgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBDYXB0dXJlRGV2
aWNlc0NoYW5nZWQoKQogI2VuZGlmCiAKLSAgICBTdG9wQWxsTWVkaWFQbGF5YmFjaygpOwotICAg
IFN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7Ci0gICAgUmVzdW1lQWxsTWVkaWFQbGF5YmFjaygp
OworICAgIFJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGUoKSAtPiAoZW51bTp1aW50OF90IFdlYktp
dDo6TWVkaWFQbGF5YmFja1N0YXRlIHN0YXRlKSBBc3luYworICAgIFBhdXNlQWxsTWVkaWFQbGF5
YmFjaygpIC0+ICgpIEFzeW5jCisgICAgU3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKSAtPiAoKSBB
c3luYworICAgIFJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSAtPiAoKSBBc3luYwogCiAgICAgIyBO
b3RpZmljYXRpb24KICAgICBEaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9u
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjUyYjRmZTZhYmU1ZWFlZTY2MTQz
MTJkZjI0OWE3MjIxZWRhNTU2Yi4uYTZiNTc3ODY2NWY1OThlNjcxMmUwMDE2NGJjYzgzZjIzYTU3
NGIyZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIwLTEwLTA5ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgorCisgICAgICAgIFByb21vdGUgV0tXZWJWaWV3IG1lZGlhIHBsYXliYWNr
IFNQSSB0byBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNzMzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjM0MDYxMDA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSmVyIE5vYmxlLgorCisgICAgICAgIEFkZCBBUEkgdGVzdGluZyBjb3ZlcmFn
ZSBmb3IgbmV3IEFQSS4gQWxzbyBjb252ZXJ0ZWQgdGVzdGluZyB0bworICAgICAgICB1c2UgdGhl
IG5ldyBBUEkgaW5zdGVhZCBvZiBTUEkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1N0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMC0xMC0wOSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gRml4IHRlc3RzIGNvbXBpbGF0aW9uIHdhcm5pbmdz
IHdpdGggZGVwcmVjYXRlZCBBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbQpp
bmRleCAyZGQyYWMyZmY1MTdjMTZmZTUzYmIwNDBmYmQxY2VkNWYxNDBmNDZjLi5lNzdiZWQ2Yjhi
YmJlNDk3ZWNhYjU5YWEzNzQ1ODNkYTdlOTQzODNmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJlc3Vt
ZUFsbE1lZGlhLm1tCkBAIC0yOSw2ICsyOSw4IEBACiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tNZWRp
YVBsYXliYWNrU3RhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTUxLDcgKzUz
LDcgQEAgVEVTVChXS1dlYlZpZXcsIFN0b3BBbGxNZWRpYVBsYXliYWNrKQogCiAgICAgX19ibG9j
ayBib29sIGRpZFBhdXNlID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2
aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1c2UgPSB0cnVlOyB9XTsKLSAgICBb
d2ViVmlldyBfc3RvcEFsbE1lZGlhUGxheWJhY2tdOworICAgIFt3ZWJWaWV3IHBhdXNlQWxsTWVk
aWFQbGF5YmFjazpuaWxdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkUGF1c2Up
OwogfQogCkBAIC03MSw3ICs3Myw3IEBAIFRFU1QoV0tXZWJWaWV3LCBTdXNwZW5kUmVzdW1lQWxs
TWVkaWFQbGF5YmFjaykKIAogICAgIF9fYmxvY2sgYm9vbCBkaWRQYXVzZSA9IGZhbHNlOwogICAg
IFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZSIgYWN0aW9uOl57
IGRpZFBhdXNlID0gdHJ1ZTsgfV07Ci0gICAgW3dlYlZpZXcgX3N1c3BlbmRBbGxNZWRpYVBsYXli
YWNrXTsKKyAgICBbd2ViVmlldyBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazpuaWxdOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkUGF1c2UpOwogCiAgICAgX19ibG9jayBib29sIGRp
ZFJlamVjdCA9IGZhbHNlOwpAQCAtODEsNyArODMsNyBAQCBURVNUKFdLV2ViVmlldywgU3VzcGVu
ZFJlc3VtZUFsbE1lZGlhUGxheWJhY2spCiAKICAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsK
ICAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyIgYWN0
aW9uOl57IGRpZEJlZ2luUGxheWluZyA9IHRydWU7IH1dOwotICAgIFt3ZWJWaWV3IF9yZXN1bWVB
bGxNZWRpYVBsYXliYWNrXTsKKyAgICBbd2ViVmlldyByZXN1bWVBbGxNZWRpYVBsYXliYWNrOm5p
bF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOwogfQog
CkBAIC0xMDEsNyArMTAzLDcgQEAgVEVTVChXS1dlYlZpZXcsIFN1c3BlbmRSZXN1bWVBbGxNZWRp
YVBsYXliYWNrTXVsdGlwbGVUaW1lcykKIAogICAgIF9fYmxvY2sgYm9vbCBkaWRQYXVzZSA9IGZh
bHNlOwogICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZSIg
YWN0aW9uOl57IGRpZFBhdXNlID0gdHJ1ZTsgfV07Ci0gICAgW3dlYlZpZXcgX3N1c3BlbmRBbGxN
ZWRpYVBsYXliYWNrXTsKKyAgICBbd2ViVmlldyBzdXNwZW5kQWxsTWVkaWFQbGF5YmFjazpuaWxd
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkUGF1c2UpOwogCiAgICAgX19ibG9j
ayBib29sIGRpZFJlamVjdCA9IGZhbHNlOwpAQCAtMTEwLDE5ICsxMTIsMTcgQEAgVEVTVChXS1dl
YlZpZXcsIFN1c3BlbmRSZXN1bWVBbGxNZWRpYVBsYXliYWNrTXVsdGlwbGVUaW1lcykKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZFJlamVjdCk7CiAKICAgICAvLyBTdXNwZW5kIGFn
YWluIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4KLSAgICBbd2ViVmlldyBfc3VzcGVuZEFsbE1l
ZGlhUGxheWJhY2tdOwotICAgIGRvIHsKLSAgICAgICAgaWYgKFt3ZWJWaWV3IF9zdXNwZW5kTWVk
aWFQbGF5YmFja0NvdW50ZXJdLmludFZhbHVlID49IDIpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMSk7Ci0gICAgfSB3aGlsZSAo
dHJ1ZSk7Ci0KLSAgICBbd2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja107Ci0gICAgZG8g
ewotICAgICAgICBpZiAoW3dlYlZpZXcgX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlcl0uaW50
VmFsdWUgPD0gMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzcGluUnVuTG9vcCgxKTsKLSAgICB9IHdoaWxlICh0cnVlKTsKKyAgICBfX2Jsb2NrIGJv
b2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2s6
XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBy
ZXN1bWVBbGxNZWRpYVBsYXliYWNrOl57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCiAgICAgLy8gTWFrZSBz
dXJlIHRoZSBtZWRpYSBpcyBzdGlsbCBzdXNwZW5kZWQuCiAgICAgZGlkUmVqZWN0ID0gZmFsc2U7
CkBAIC0xMzIsMTAgKzEzMiwxMTUgQEAgVEVTVChXS1dlYlZpZXcsIFN1c3BlbmRSZXN1bWVBbGxN
ZWRpYVBsYXliYWNrTXVsdGlwbGVUaW1lcykKIAogICAgIGRpZEJlZ2luUGxheWluZyA9IGZhbHNl
OwogICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBh
Y3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07Ci0gICAgW3dlYlZpZXcgX3Jlc3Vt
ZUFsbE1lZGlhUGxheWJhY2tdOworICAgIFt3ZWJWaWV3IHJlc3VtZUFsbE1lZGlhUGxheWJhY2s6
bmlsXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEJlZ2luUGxheWluZyk7CiB9
CiAKK1RFU1QoV0tXZWJWaWV3LCBDaGVja01lZGlhUGxheWJhY2tTdXNwZW5kZWQpCit7CisgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8dmlkZW8gc3JjPVwidmlkZW8td2l0aC1h
dWRpby5tcDRcIiB3ZWJraXQtcGxheXNpbmxpbmU+PC92aWRlbz4iXTsKKworICAgIFt3ZWJWaWV3
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmdW5jdGlvbiBldmVudFRvTWVzc2FnZShl
dmVudCl7d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3Nh
Z2UoZXZlbnQudHlwZSk7fSB2YXIgdmlkZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRl
bycpOyB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgZXZlbnRUb01lc3NhZ2UpOyB2
aWRlby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIGV2ZW50VG9NZXNzYWdlKTsiXTsKKworICAg
IF9fYmxvY2sgYm9vbCBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJm
b3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyIgYWN0aW9uOl57IGRpZEJlZ2luUGxh
eWluZyA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJykucGxheSgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxd
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsKKworICAg
IF9fYmxvY2sgYm9vbCBkaWRQYXVzZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRl
clJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZSIgYWN0aW9uOl57IGRpZFBhdXNlID0gdHJ1ZTsgfV07
CisgICAgW3dlYlZpZXcgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2s6bmlsXTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRpZFBhdXNlKTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlOl4oV0tNZWRp
YVBsYXliYWNrU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRlLCBXS01lZGlh
UGxheWJhY2tTdGF0ZVN1c3BlbmRlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgZGlkQmVnaW5Q
bGF5aW5nID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2Fn
ZTpAInBsYXlpbmciIGFjdGlvbjpeeyBkaWRCZWdpblBsYXlpbmcgPSB0cnVlOyB9XTsKKyAgICBb
d2ViVmlldyByZXN1bWVBbGxNZWRpYVBsYXliYWNrOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJhY2tT
dGF0ZSBzdGF0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoc3RhdGUsIFdLTWVkaWFQbGF5YmFja1N0
YXRlUGxheWluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKFdLV2ViVmlldywgQ2hlY2tN
ZWRpYVBsYXliYWNrRXhpc3RzKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRv
V2luZG93OllFU10pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAic3RhcnQgbmV0d29yayBwcm9jZXNzIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgcmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQ
bGF5YmFja1N0YXRlIHN0YXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShzdGF0ZSwgV0tNZWRpYVBs
YXliYWNrU3RhdGVOb25lKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPHZpZGVvIHNyYz1cInZpZGVvLXdpdGgtYXVkaW8u
bXA0XCIgd2Via2l0LXBsYXlzaW5saW5lPjwvdmlkZW8+Il07CisKKyAgICBpc0RvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlOl4oV0tNZWRpYVBsYXli
YWNrU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRlLCBXS01lZGlhUGxheWJh
Y2tTdGF0ZVBsYXlpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keT48L2JvZHk+Il07CisgICAgaXNEb25lID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgcmVxdWVzdE1lZGlhUGxheWJhY2tTdGF0ZTpeKFdLTWVkaWFQ
bGF5YmFja1N0YXRlIHN0YXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShzdGF0ZSwgV0tNZWRpYVBs
YXliYWNrU3RhdGVOb25lKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBD
aGVja01lZGlhUGxheWJhY2tQYXVzZWQpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkg
YWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCI8dmlkZW8gc3JjPVwidmlkZW8td2l0aC1hdWRpby5tcDRcIiB3ZWJraXQtcGxheXNp
bmxpbmU+PC92aWRlbz4iXTsKKworICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJmdW5jdGlvbiBldmVudFRvTWVzc2FnZShldmVudCl7d2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXZlbnQudHlwZSk7fSB2YXIgdmlk
ZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpOyB2aWRlby5hZGRFdmVudExpc3Rl
bmVyKCdwbGF5aW5nJywgZXZlbnRUb01lc3NhZ2UpOyB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdw
YXVzZScsIGV2ZW50VG9NZXNzYWdlKTsiXTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRCZWdpblBs
YXlpbmcgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdl
OkAicGxheWluZyIgYWN0aW9uOl57IGRpZEJlZ2luUGxheWluZyA9IHRydWU7IH1dOworICAgIFt3
ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVv
JykucGxheSgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyByZXF1ZXN0TWVkaWFQbGF5YmFja1N0YXRlOl4oV0tNZWRpYVBs
YXliYWNrU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRlLCBXS01lZGlhUGxh
eWJhY2tTdGF0ZVBsYXlpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICBfX2Jsb2NrIGJv
b2wgZGlkUGF1c2UgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAicGF1c2UiIGFjdGlvbjpeeyBkaWRQYXVzZSA9IHRydWU7IH1dOworICAgIFt3ZWJW
aWV3IHBhdXNlQWxsTWVkaWFQbGF5YmFjazpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZGlkUGF1c2UpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IHJlcXVlc3RNZWRpYVBsYXliYWNrU3RhdGU6XihXS01lZGlhUGxheWJhY2tTdGF0ZSBzdGF0ZSkg
eworICAgICAgICBFWFBFQ1RfVFJVRShXS01lZGlhUGxheWJhY2tTdGF0ZVBhdXNlZCk7CisgICAg
ICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>