<?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>60218</bug_id>
          
          <creation_ts>2011-05-04 15:29:58 -0700</creation_ts>
          <short_desc>[fileapi/Chromium] Clean up filesystem base path code</short_desc>
          <delta_ts>2011-06-14 13:01:38 -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 API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric U.">ericu</reporter>
          <assigned_to name="Eric U.">ericu</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>kinuko</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>398313</commentid>
    <comment_count>0</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-05-04 15:29:58 -0700</bug_when>
    <thetext>The current implementation of the FileSystem API forces ports to hold a real file path [or what claims to be a real file path] for the root of the filesystem.  It then assumes that all virtual paths can be made into real paths by tacking the virtual path onto that root path.

This is messy/wrong because their might not actually be a real local path [if the data&apos;s actually stored in a database] and the &quot;root path&quot; that gets returned is currently a URL in the only implementation [chromium].

I&apos;m coding up a cleanup that will switch from paths to URLs for portability--we&apos;re actually already doing that under the covers, but this will clean up the data types.  It will also push the holding of that root path [root URL, now] out of AsyncFileSystem and down into the implementation [currently only AsyncFileSystemChromium and WorkerAsyncFileSystemChromium], giving embedders more freedom of implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398868</commentid>
    <comment_count>1</comment_count>
      <attachid>92436</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-05-05 11:35:22 -0700</bug_when>
    <thetext>Created attachment 92436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398869</commentid>
    <comment_count>2</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-05-05 11:35:47 -0700</bug_when>
    <thetext>This patch depends on http://codereview.chromium.org/6904063/ going in first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398949</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-05 12:51:17 -0700</bug_when>
    <thetext>Attachment 92436 did not pass chromium-ews:
Output: http://queues.webkit.org/results/8557986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398975</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-05 13:28:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; This patch depends on http://codereview.chromium.org/6904063/ going in first.

There isn&apos;t a way to tell the bot about that.  Sorry for the spam.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399392</commentid>
    <comment_count>5</comment_count>
      <attachid>92436</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-05-06 00:41:17 -0700</bug_when>
    <thetext>Comment on attachment 92436
Patch

Thanks for cleaning up the code!

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

&gt; Source/WebCore/platform/AsyncFileSystem.cpp:58
&gt; +    callbacks-&gt;didOpenFileSystem(&quot;&quot;, 0);

Maybe we should just dispatch didFail with NOT_SUPPORTED_ERR here?

&gt; Source/WebCore/platform/AsyncFileSystem.h:70
&gt; +    static PassOwnPtr&lt;AsyncFileSystem&gt; create(Type);

I guess now we can make this class a pure abstract class and get rid of create() and the constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402397</commentid>
    <comment_count>6</comment_count>
      <attachid>93206</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-05-11 16:18:37 -0700</bug_when>
    <thetext>Created attachment 93206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402427</commentid>
    <comment_count>7</comment_count>
      <attachid>93206</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-11 16:54:46 -0700</bug_when>
    <thetext>Comment on attachment 93206
Patch

Attachment 93206 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8686541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404740</commentid>
    <comment_count>8</comment_count>
      <attachid>93206</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-16 15:03:08 -0700</bug_when>
    <thetext>Comment on attachment 93206
Patch

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

&gt; Source/WebCore/platform/AsyncFileSystem.cpp:58
&gt; +    callbacks-&gt;didFail(NOT_SUPPORTED_ERR);

isn&apos;t it risky to run this callback synchronously?  i&apos;d worry about re-entrancy bugs,
but maybe this is all dead code anyways?

&gt; Source/WebKit/chromium/src/WorkerAsyncFileSystemChromium.cpp:225
&gt; +KURL WorkerAsyncFileSystemChromium::virtualPathToFileSystemURL(const String&amp; virtualPath) const

this looks like duplicated code.  is the intent to eventually delete this function and its replica?

&gt; Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp:85
&gt; +      return WebKit::WebURL(url);

indentation nit.

also, please note that the copy-constructor performs a shallow copy of the underlying
string containing the URL text.  that shallow copy is implemented using a reference
counting that is not thread safe!  are you sure this is the proper way to copy the
WebURL?  it seems like you should use KURL::copy() here.

&gt; Source/WebKit/chromium/src/WorkerFileWriterCallbacksBridge.cpp:58
&gt; +      return WebKit::WebURL(url);

indentation nit.

duplication of code nit.

same question about thread unsafe reference counting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404885</commentid>
    <comment_count>9</comment_count>
      <attachid>93206</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-05-16 18:51:47 -0700</bug_when>
    <thetext>Comment on attachment 93206
Patch

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

&gt;&gt; Source/WebCore/platform/AsyncFileSystem.cpp:58
&gt;&gt; +    callbacks-&gt;didFail(NOT_SUPPORTED_ERR);
&gt; 
&gt; isn&apos;t it risky to run this callback synchronously?  i&apos;d worry about re-entrancy bugs,
&gt; but maybe this is all dead code anyways?

The caller of this method (i.e. LocalFileSystem) calls openFileSystem in an async indirect task to avoid re-entrance issue so I hope it&apos;ll be safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>405083</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-05-17 09:10:34 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 93206 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93206&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/AsyncFileSystem.cpp:58
&gt; &gt;&gt; +    callbacks-&gt;didFail(NOT_SUPPORTED_ERR);
&gt; &gt; 
&gt; &gt; isn&apos;t it risky to run this callback synchronously?  i&apos;d worry about re-entrancy bugs,
&gt; &gt; but maybe this is all dead code anyways?
&gt; 
&gt; The caller of this method (i.e. LocalFileSystem) calls openFileSystem in an async indirect task to avoid re-entrance issue so I hope it&apos;ll be safe.

I see, so it should be safe.  Again, if the intent is anyways for this code to be deleted, then I really don&apos;t care about the way it behaves.  It is just ordinarily bad form for a method which is supposed to complete asynchronously to sometimes complete synchronously via callback.  That can complicate consumer code and lead to bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414520</commentid>
    <comment_count>11</comment_count>
      <attachid>95829</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-06-02 16:08:32 -0700</bug_when>
    <thetext>Created attachment 95829
Patch rolling in code review feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414521</commentid>
    <comment_count>12</comment_count>
      <attachid>93206</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-06-02 16:09:25 -0700</bug_when>
    <thetext>Comment on attachment 93206
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/AsyncFileSystem.cpp:58
&gt;&gt;&gt;&gt; +    callbacks-&gt;didFail(NOT_SUPPORTED_ERR);
&gt;&gt;&gt; 
&gt;&gt;&gt; isn&apos;t it risky to run this callback synchronously?  i&apos;d worry about re-entrancy bugs,
&gt;&gt;&gt; but maybe this is all dead code anyways?
&gt;&gt; 
&gt;&gt; The caller of this method (i.e. LocalFileSystem) calls openFileSystem in an async indirect task to avoid re-entrance issue so I hope it&apos;ll be safe.
&gt; 
&gt; I see, so it should be safe.  Again, if the intent is anyways for this code to be deleted, then I really don&apos;t care about the way it behaves.  It is just ordinarily bad form for a method which is supposed to complete asynchronously to sometimes complete synchronously via callback.  That can complicate consumer code and lead to bugs.

Agreed in general, but in this case this is just placeholder code for a potential future WebCore implementation of FileSystem, and will get replaced before anyone ever compiles it in.

&gt;&gt; Source/WebKit/chromium/src/WorkerAsyncFileSystemChromium.cpp:225
&gt;&gt; +KURL WorkerAsyncFileSystemChromium::virtualPathToFileSystemURL(const String&amp; virtualPath) const
&gt; 
&gt; this looks like duplicated code.  is the intent to eventually delete this function and its replica?

If you&apos;re referring to just virtualPathToFileSystemURL, which now lives in two places: it&apos;s needed and will not be deleted.
We could get by with a single copy of it if we extracted a common base from WorkerAsyncFileSystemChromium and AsyncFileSystemChromium.  The method moved from a common base that no longer has the member [m_filesystemRootURL] on which it depends.  But it&apos;s a very small amount of code, and it would actually end up making the code bigger to pull that class out.  For now I think we should just accept the small duplication.

&gt;&gt; Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp:85
&gt;&gt; +      return WebKit::WebURL(url);
&gt; 
&gt; indentation nit.
&gt; 
&gt; also, please note that the copy-constructor performs a shallow copy of the underlying
&gt; string containing the URL text.  that shallow copy is implemented using a reference
&gt; counting that is not thread safe!  are you sure this is the proper way to copy the
&gt; WebURL?  it seems like you should use KURL::copy() here.

Done, thanks for catching that.

I see that we can only use that code if WEBKIT_IMPLEMENTATION.  Where is that valid?

&gt;&gt; Source/WebKit/chromium/src/WorkerFileWriterCallbacksBridge.cpp:58
&gt;&gt; +      return WebKit::WebURL(url);
&gt; 
&gt; indentation nit.
&gt; 
&gt; duplication of code nit.
&gt; 
&gt; same question about thread unsafe reference counting.

Is there a good place to put this code already, or should I just make a new file in WebKit/chromium/public?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419864</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-06-13 14:17:02 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 93206 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93206&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/platform/AsyncFileSystem.cpp:58
&gt; &gt;&gt;&gt;&gt; +    callbacks-&gt;didFail(NOT_SUPPORTED_ERR);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; isn&apos;t it risky to run this callback synchronously?  i&apos;d worry about re-entrancy bugs,
&gt; &gt;&gt;&gt; but maybe this is all dead code anyways?
&gt; &gt;&gt; 
&gt; &gt;&gt; The caller of this method (i.e. LocalFileSystem) calls openFileSystem in an async indirect task to avoid re-entrance issue so I hope it&apos;ll be safe.
&gt; &gt; 
&gt; &gt; I see, so it should be safe.  Again, if the intent is anyways for this code to be deleted, then I really don&apos;t care about the way it behaves.  It is just ordinarily bad form for a method which is supposed to complete asynchronously to sometimes complete synchronously via callback.  That can complicate consumer code and lead to bugs.
&gt; 
&gt; Agreed in general, but in this case this is just placeholder code for a potential future WebCore implementation of FileSystem, and will get replaced before anyone ever compiles it in.

OK


&gt; &gt;&gt; Source/WebKit/chromium/src/WorkerAsyncFileSystemChromium.cpp:225
&gt; &gt;&gt; +KURL WorkerAsyncFileSystemChromium::virtualPathToFileSystemURL(const String&amp; virtualPath) const
&gt; &gt; 
&gt; &gt; this looks like duplicated code.  is the intent to eventually delete this function and its replica?
&gt; 
&gt; If you&apos;re referring to just virtualPathToFileSystemURL, which now lives in two places: it&apos;s needed and will not be deleted.
&gt; We could get by with a single copy of it if we extracted a common base from WorkerAsyncFileSystemChromium and AsyncFileSystemChromium.  The method moved from a common base that no longer has the member [m_filesystemRootURL] on which it depends.  But it&apos;s a very small amount of code, and it would actually end up making the code bigger to pull that class out.  For now I think we should just accept the small duplication.

Yeah, I was referring to that function.  OK.  Duplicated code tends to really
annoy me, so I will complain each time I see it :)  I don&apos;t have enough context
to suggest a better solution.


&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp:85
&gt; &gt;&gt; +      return WebKit::WebURL(url);
&gt; &gt; 
&gt; &gt; indentation nit.
&gt; &gt; 
&gt; &gt; also, please note that the copy-constructor performs a shallow copy of the underlying
&gt; &gt; string containing the URL text.  that shallow copy is implemented using a reference
&gt; &gt; counting that is not thread safe!  are you sure this is the proper way to copy the
&gt; &gt; WebURL?  it seems like you should use KURL::copy() here.
&gt; 
&gt; Done, thanks for catching that.
&gt; 
&gt; I see that we can only use that code if WEBKIT_IMPLEMENTATION.  Where is that valid?

It is defined when compiling files under chromium/src/.


&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/src/WorkerFileWriterCallbacksBridge.cpp:58
&gt; &gt;&gt; +      return WebKit::WebURL(url);
&gt; &gt; 
&gt; &gt; indentation nit.
&gt; &gt; 
&gt; &gt; duplication of code nit.
&gt; &gt; 
&gt; &gt; same question about thread unsafe reference counting.
&gt; 
&gt; Is there a good place to put this code already, or should I just make a new file in WebKit/chromium/public?

Stepping back, I wonder why we need to define CrossThreadCopier for WebURL.  Why can&apos;t
we just leverage the one defined for KURL?  WebURL can be implicitly converted to KURL.
It is not clear what code causes you to need this CrossThreadCopier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419866</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-06-13 14:19:23 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; &gt;&gt; Source/WebKit/chromium/src/WorkerFileWriterCallbacksBridge.cpp:58
&gt; &gt; &gt;&gt; +      return WebKit::WebURL(url);
&gt; &gt; &gt; 
&gt; &gt; &gt; indentation nit.
&gt; &gt; &gt; 
&gt; &gt; &gt; duplication of code nit.
&gt; &gt; &gt; 
&gt; &gt; &gt; same question about thread unsafe reference counting.
&gt; &gt; 
&gt; &gt; Is there a good place to put this code already, or should I just make a new file in WebKit/chromium/public?
&gt; 
&gt; Stepping back, I wonder why we need to define CrossThreadCopier for WebURL.  Why can&apos;t
&gt; we just leverage the one defined for KURL?  WebURL can be implicitly converted to KURL.
&gt; It is not clear what code causes you to need this CrossThreadCopier.

Ah, initOnMainThread should just take a KURL parameter instead of a WebURL parameter.
In general, WebURL (and WebString) are just types used with API calls.  You should
always quickly convert over to WebCore / WTF types once you are inside the implementation
of WebKit.  That way you can benefit from the machinery that already exists for WebCore /
WTF types.  This is why WebURL (and WebString) auto-convert to KURL (and String).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420137</commentid>
    <comment_count>15</comment_count>
      <attachid>97051</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-06-13 18:16:03 -0700</bug_when>
    <thetext>Created attachment 97051
Removed CrossThreadCopier specializations

I&apos;ve removed the CrossThreadCopier specializations; thanks for the tip.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420138</commentid>
    <comment_count>16</comment_count>
      <attachid>93206</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-06-13 18:17:54 -0700</bug_when>
    <thetext>Comment on attachment 93206
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/chromium/src/WorkerFileWriterCallbacksBridge.cpp:58
&gt;&gt;&gt;&gt; +      return WebKit::WebURL(url);
&gt;&gt;&gt; 
&gt;&gt;&gt; indentation nit.
&gt;&gt;&gt; 
&gt;&gt;&gt; duplication of code nit.
&gt;&gt;&gt; 
&gt;&gt;&gt; same question about thread unsafe reference counting.
&gt;&gt; 
&gt;&gt; Is there a good place to put this code already, or should I just make a new file in WebKit/chromium/public?
&gt; 
&gt; Stepping back, I wonder why we need to define CrossThreadCopier for WebURL.  Why can&apos;t
&gt; we just leverage the one defined for KURL?  WebURL can be implicitly converted to KURL.
&gt; It is not clear what code causes you to need this CrossThreadCopier.

Changed a bunch of WebURLs to KURL, and removed the CrossThreadCopiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420174</commentid>
    <comment_count>17</comment_count>
      <attachid>93206</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2011-06-13 20:10:56 -0700</bug_when>
    <thetext>Comment on attachment 93206
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/chromium/src/WorkerAsyncFileSystemChromium.cpp:225
&gt;&gt;&gt;&gt; +KURL WorkerAsyncFileSystemChromium::virtualPathToFileSystemURL(const String&amp; virtualPath) const
&gt;&gt;&gt; 
&gt;&gt;&gt; this looks like duplicated code.  is the intent to eventually delete this function and its replica?
&gt;&gt; 
&gt;&gt; If you&apos;re referring to just virtualPathToFileSystemURL, which now lives in two places: it&apos;s needed and will not be deleted.
&gt;&gt; We could get by with a single copy of it if we extracted a common base from WorkerAsyncFileSystemChromium and AsyncFileSystemChromium.  The method moved from a common base that no longer has the member [m_filesystemRootURL] on which it depends.  But it&apos;s a very small amount of code, and it would actually end up making the code bigger to pull that class out.  For now I think we should just accept the small duplication.
&gt; 
&gt; Yeah, I was referring to that function.  OK.  Duplicated code tends to really
&gt; annoy me, so I will complain each time I see it :)  I don&apos;t have enough context
&gt; to suggest a better solution.

Maybe this could be defined as a static method or a regular function so that it can be used (with additional root url parameter) in both places?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420563</commentid>
    <comment_count>18</comment_count>
      <attachid>97051</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-06-14 10:49:40 -0700</bug_when>
    <thetext>Comment on attachment 97051
Removed CrossThreadCopier specializations

R=me, but please explore Kinuko&apos;s suggestion if that can help us avoid the code duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420655</commentid>
    <comment_count>19</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2011-06-14 12:19:53 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 97051 [details])
&gt; R=me, but please explore Kinuko&apos;s suggestion if that can help us avoid the code duplication.

It&apos;s a decent idea in the general case, but I think here it doesn&apos;t work.  It would remove one 3-line method, but add a parameter to 26 call sites, leading to bulkier and [I think] uglier code overall.  If this method should ever get more complicated, we should revisit the idea, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420672</commentid>
    <comment_count>20</comment_count>
      <attachid>97051</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-14 13:01:32 -0700</bug_when>
    <thetext>Comment on attachment 97051
Removed CrossThreadCopier specializations

Clearing flags on attachment: 97051

Committed r88844: &lt;http://trac.webkit.org/changeset/88844&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420673</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-14 13:01:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92436</attachid>
            <date>2011-05-05 11:35:22 -0700</date>
            <delta_ts>2011-05-11 16:18:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60218-20110505113521.patch</filename>
            <type>text/plain</type>
            <size>80334</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU4MTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3OTVhMmI3MzY4YzExYjdl
YTQ1MTg1ZGNiOGU2YzcwZjIwYjdiMTFmLi43NTFjMGRhNmFkOWM5YjQ1YjAwYTIyY2M5NzI2OTJl
ODYzODk4MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDUtMDUgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBmaWxlc3lzdGVtIGJhc2UgcGF0aCBjb2Rl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAyMTgK
KworICAgICAgICBDaGFuZ2UgYSBidW5jaCBvZiB1cmwtaGVsZC1pbi1hLXN0cmluZyBwYXJhbWV0
ZXJzIGludG8gcmVhbCBLVVJMUyBhbmQKKyAgICAgICAgV2ViVVJMcy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMtLW5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogZmlsZWFw
aS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNy
ZWF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxl
KToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01GaWxlU3lzdGVtQmFzZTo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtQmFzZTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6cmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmVSZWN1cnNp
dmVseSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRGaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXREaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3RvcnkpOgorICAgICAgICAqIGZpbGVh
cGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3Rl
bVN5bmM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbVN5bmM6
OmNyZWF0ZVdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNGaWxlU3lzdGVtOjpBc3luY0ZpbGVTeXN0ZW0pOgorCiAyMDExLTA1LTA0ICBKb3NlcGggUGVj
b3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCAwMWQ1
NmQ1OTY1ZGMyZjdkZWMxOWM4OTAwMDMxOGZiYjNmNDBiYjMyLi44YTJkNWU0ZjdhNGJlMDI5ZmNk
NmUxZjI0MDY1YmE4MjY1MzAyNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTEwNCw0MiArMTA0LDM2IEBAIHZvaWQgRE9NRmlsZVN5c3RlbTo6Y3JlYXRl
V3JpdGVyKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVXcml0CiB7
CiAgICAgQVNTRVJUKGZpbGVFbnRyeSk7CiAKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQYXRo
KCkpOwotCiAgICAgUmVmUHRyPEZpbGVXcml0ZXI+IGZpbGVXcml0ZXIgPSBGaWxlV3JpdGVyOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBSZWZQdHI8RmlsZVdyaXRlckJh
c2VDYWxsYmFjaz4gY29udmVyc2lvbkNhbGxiYWNrID0gQ29udmVydFRvRmlsZVdyaXRlckNhbGxi
YWNrOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrKTsKICAgICBPd25QdHI8RmlsZVdyaXRlckJhc2VD
YWxsYmFja3M+IGNhbGxiYWNrcyA9IEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzOjpjcmVhdGUoZmls
ZVdyaXRlciwgY29udmVyc2lvbkNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICBtX2FzeW5j
RmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIHBsYXRmb3JtUGF0aCwg
Y2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVdyaXRl
cihmaWxlV3JpdGVyLmdldCgpLCBmaWxlRW50cnktPmZ1bGxQYXRoKCksIGNhbGxiYWNrcy5yZWxl
YXNlKCkpOwogfQogCiBuYW1lc3BhY2UgewogCiBjbGFzcyBHZXRQYXRoQ2FsbGJhY2sgOiBwdWJs
aWMgRmlsZVN5c3RlbUNhbGxiYWNrc0Jhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPEdldFBhdGhDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmls
ZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisg
ICAgc3RhdGljIFBhc3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxE
T01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdldFBhdGhDYWxsYmFjayhmaWxlc3lzdGVt
LCBwYXRoLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBHZXRQYXRoQ2FsbGJhY2soZmlsZXN5c3RlbSwgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWRNZXRh
ZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQogICAgIHsKLSAgICAgICAgaWYgKCFt
ZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9wYXRoID0gbWV0
YWRhdGEucGxhdGZvcm1QYXRoOwotCi0gICAgICAgIG1fZmlsZXN5c3RlbS0+c2NoZWR1bGVDYWxs
YmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIEZpbGU6OmNyZWF0ZShtX3BhdGgpKTsK
KyAgICAgICAgQVNTRVJUKCFtZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKTsKKyAgICAg
ICAgbV9maWxlc3lzdGVtLT5zY2hlZHVsZUNhbGxiYWNrKG1fc3VjY2Vzc0NhbGxiYWNrLnJlbGVh
c2UoKSwgRmlsZTo6Y3JlYXRlKG1ldGFkYXRhLnBsYXRmb3JtUGF0aCkpOwogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBHZXRQYXRoQ2FsbGJhY2soUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxl
c3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAg
ICBHZXRQYXRoQ2FsbGJhY2soUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBQ
YXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgICAgIDogRmlsZVN5c3RlbUNhbGxiYWNrc0Jh
c2UoZXJyb3JDYWxsYmFjaykKICAgICAgICAgLCBtX2ZpbGVzeXN0ZW0oZmlsZXN5c3RlbSkKLSAg
ICAgICAgLCBtX3BhdGgocGF0aCkKICAgICAgICAgLCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNz
Q2FsbGJhY2spCiAgICAgewogICAgIH0KIAogICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBtX2Zp
bGVzeXN0ZW07Ci0gICAgU3RyaW5nIG1fcGF0aDsKICAgICBSZWZQdHI8RmlsZUNhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKIH07CiAKQEAgLTE0Nyw5ICsxNDEsNyBAQCBwcml2YXRlOgogCiB2
b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnks
IFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0g
bV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQ
YXRoKCkpOwotCi0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBh
dGgsIEdldFBhdGhDYWxsYmFjazo6Y3JlYXRlKHRoaXMsIHBsYXRmb3JtUGF0aCwgc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRh
ZGF0YShmaWxlRW50cnktPmZ1bGxQYXRoKCksIEdldFBhdGhDYWxsYmFjazo6Y3JlYXRlKHRoaXMs
IHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1C
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCmlu
ZGV4IGVhZmI4MTU2YTJhYjRlOWE1YmYzODFjYzlhN2VhY2U1MWQ4NGNhODMuLmNjOTYzODRjZTk2
MjNjNmFmODkwNjA1ZTFhMTQ0OTNjMjM5ODY5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCkBAIC0xMDUsOCArMTA1LDcgQEAgU2VjdXJpdHlPcmln
aW4qIERPTUZpbGVTeXN0ZW1CYXNlOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAKIGJvb2wgRE9N
RmlsZVN5c3RlbUJhc2U6OmdldE1ldGFkYXRhKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NS
ZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1f
YXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkp
OwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBNZXRh
ZGF0YUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwor
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoZW50cnktPmZ1bGxQYXRoKCksIE1l
dGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE1Niw5ICsxNTUsNyBAQCBib29sIERPTUZpbGVT
eXN0ZW1CYXNlOjptb3ZlKGNvbnN0IEVudHJ5QmFzZSogc291cmNlLCBFbnRyeUJhc2UqIHBhcmVu
dCwgY29uc3QgUwogICAgIGlmICghdmVyaWZ5QW5kR2V0RGVzdGluYXRpb25QYXRoRm9yQ29weU9y
TW92ZShzb3VyY2UsIHBhcmVudCwgbmV3TmFtZSwgZGVzdGluYXRpb25QYXRoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIHNvdXJjZVBsYXRmb3JtUGF0aCA9IG1fYXN5bmNG
aWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc291cmNlLT5mdWxsUGF0aCgpKTsKLSAg
ICBTdHJpbmcgZGVzdGluYXRpb25QbGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVzeXN0ZW0oKS0+
YXN5bmNGaWxlU3lzdGVtKCktPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0aW5hdGlvblBhdGgp
OwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNvdXJjZVBsYXRmb3JtUGF0aCwgZGVzdGlu
YXRpb25QbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+aXNEaXJlY3Rv
cnkoKSkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5tb3ZlKHNvdXJjZS0+ZnVsbFBhdGgoKSwg
ZGVzdGluYXRpb25QYXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgdGhpcywgZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5
KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTY4LDkgKzE2NSw3IEBAIGJvb2wgRE9N
RmlsZVN5c3RlbUJhc2U6OmNvcHkoY29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSog
cGFyZW50LCBjb25zdCBTCiAgICAgaWYgKCF2ZXJpZnlBbmRHZXREZXN0aW5hdGlvblBhdGhGb3JD
b3B5T3JNb3ZlKHNvdXJjZSwgcGFyZW50LCBuZXdOYW1lLCBkZXN0aW5hdGlvblBhdGgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgc291cmNlUGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChzb3VyY2UtPmZ1bGxQYXRoKCkp
OwotICAgIFN0cmluZyBkZXN0aW5hdGlvblBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3Rl
bSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RpbmF0aW9u
UGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNvcHkoc291cmNlUGxhdGZvcm1QYXRoLCBk
ZXN0aW5hdGlvblBsYXRmb3JtUGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGRlc3RpbmF0aW9uUGF0aCwgc291cmNlLT5pc0Rp
cmVjdG9yeSgpKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNvcHkoc291cmNlLT5mdWxsUGF0
aCgpLCBkZXN0aW5hdGlvblBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+aXNEaXJl
Y3RvcnkoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xODAsOCArMTc1LDcgQEAgYm9v
bCBET01GaWxlU3lzdGVtQmFzZTo6cmVtb3ZlKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NS
ZWZQdHI8Vm9pZENhbGxiYWNrPgogICAgIC8vIFdlIGRvbid0IGFsbG93IGNhbGxpbmcgcmVtb3Zl
KCkgb24gdGhlIHJvb3QgZGlyZWN0b3J5LgogICAgIGlmIChlbnRyeS0+ZnVsbFBhdGgoKSA9PSBT
dHJpbmcoRE9NRmlsZVBhdGg6OnJvb3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3Ry
aW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBh
dGgoZW50cnktPmZ1bGxQYXRoKCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxh
dGZvcm1QYXRoLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNh
bGxiYWNrKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlbW92ZShlbnRyeS0+ZnVsbFBhdGgo
KSwgVm9pZENhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xOTEsOCArMTg1LDcgQEAgYm9vbCBET01GaWxl
U3lzdGVtQmFzZTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFz
c1JlZlB0cjxWb2kKICAgICAvLyBXZSBkb24ndCBhbGxvdyBjYWxsaW5nIHJlbW92ZSgpIG9uIHRo
ZSByb290IGRpcmVjdG9yeS4KICAgICBpZiAoZW50cnktPmZ1bGxQYXRoKCkgPT0gU3RyaW5nKERP
TUZpbGVQYXRoOjpyb290KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZyBwbGF0
Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGVudHJ5
LT5mdWxsUGF0aCgpKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHko
cGxhdGZvcm1QYXRoLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2ZWx5KGVu
dHJ5LT5mdWxsUGF0aCgpLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIwMCw0NiArMTkzLDQz
IEBAIGJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldFBhcmVudChjb25zdCBFbnRyeUJhc2UqIGVu
dHJ5LCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhCiB7CiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBT
dHJpbmcgcGF0aCA9IERPTUZpbGVQYXRoOjpnZXREaXJlY3RvcnkoZW50cnktPmZ1bGxQYXRoKCkp
OwotICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRv
UGxhdGZvcm1QYXRoKHBhdGgpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlz
dHMocGxhdGZvcm1QYXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgdGhpcywgcGF0aCwgdHJ1ZSkpOworCisgICAgbV9hc3luY0ZpbGVTeXN0
ZW0tPmRpcmVjdG9yeUV4aXN0cyhwYXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgcGF0aCwgdHJ1ZSkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXRGaWxlKGNvbnN0IEVudHJ5QmFz
ZSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFn
cywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Omdl
dEZpbGUoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVm
UHRyPFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKICAg
ICBTdHJpbmcgYWJzb2x1dGVQYXRoOwotICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRoKGJhc2Us
IHBhdGgsIGFic29sdXRlUGF0aCkpCisgICAgaWYgKCFwYXRoVG9BYnNvbHV0ZVBhdGgoZW50cnks
IHBhdGgsIGFic29sdXRlUGF0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmlu
ZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRo
KGFic29sdXRlUGF0aCk7CiAgICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBF
bnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhp
cywgYWJzb2x1dGVQYXRoLCBmYWxzZSk7CiAgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0
ZSgpKQotICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShwbGF0Zm9ybVBhdGgs
IGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICAgICAgbV9h
c3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUoYWJzb2x1dGVQYXRoLCBmbGFncy0+aXNFeGNsdXNp
dmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+ZmlsZUV4aXN0cyhwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwor
ICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhhYnNvbHV0ZVBhdGgsIGNhbGxi
YWNrcy5yZWxlYXNlKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpnZXREaXJlY3RvcnkoY29uc3QgRW50cnlCYXNlKiBiYXNlLCBjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNh
bGxiYWNrKQorYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5
QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4g
ZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAgU3RyaW5nIGFic29sdXRl
UGF0aDsKLSAgICBpZiAoIXBhdGhUb0Fic29sdXRlUGF0aChiYXNlLCBwYXRoLCBhYnNvbHV0ZVBh
dGgpKQorICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRoKGVudHJ5LCBwYXRoLCBhYnNvbHV0ZVBh
dGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0g
bV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwog
ICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6OmNy
ZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwg
dHJ1ZSk7CiAgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2Fz
eW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlzRXhj
bHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgICAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+Y3JlYXRlRGlyZWN0b3J5KGFic29sdXRlUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0t
PmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAg
ICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKGFic29sdXRlUGF0aCwgY2Fs
bGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgRE9NRmlsZVN5
c3RlbUJhc2U6OnJlYWREaXJlY3RvcnkoUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiBy
ZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQog
ewogICAgIEFTU0VSVChET01GaWxlUGF0aDo6aXNBYnNvbHV0ZShwYXRoKSk7Ci0gICAgU3RyaW5n
IHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgo
cGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGxhdGZvcm1QYXRo
LCBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
LCByZWFkZXIsIHBhdGgpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShw
YXRoLCBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrLCByZWFkZXIsIHBhdGgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAppbmRleCAwZDI2YmI2MjI0NGFkZDhk
NzQ5NTQ1ZGFiMzUzZDYzNDBlMWZjNjE3Li41ZWM5NmY4NWQ1YzRkZTQyZjc4NmQyYWUwYmNiMzYy
MzZkYWI1ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW1TeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5j
LmNwcApAQCAtMTU2LDkgKzE1Niw4IEBAIHByaXZhdGU6CiBQYXNzUmVmUHRyPEZpbGU+IERPTUZp
bGVTeXN0ZW1TeW5jOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRyeSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwotICAgIFN0cmluZyBwbGF0Zm9ybVBh
dGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGZpbGVFbnRyeS0+
ZnVsbFBhdGgoKSk7CiAgICAgUmVmUHRyPEdldFBhdGhIZWxwZXI6OkdldFBhdGhSZXN1bHQ+IHJl
c3VsdChHZXRQYXRoSGVscGVyOjpHZXRQYXRoUmVzdWx0OjpjcmVhdGUoKSk7Ci0gICAgbV9hc3lu
Y0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIEdldFBhdGhIZWxwZXI6OmNy
ZWF0ZShyZXN1bHQpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGZpbGVF
bnRyeS0+ZnVsbFBhdGgoKSwgR2V0UGF0aEhlbHBlcjo6Y3JlYXRlKHJlc3VsdCkpOwogICAgIGlm
ICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKICAg
ICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpA
QCAtMTY3LDkgKzE2Niw4IEBAIFBhc3NSZWZQdHI8RmlsZT4gRE9NRmlsZVN5c3RlbVN5bmM6OmNy
ZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5LCBFCiAgICAgICAgIGVjID0g
cmVzdWx0LT5tX2NvZGU7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoIXJlc3Vs
dC0+bV9wYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcGxhdGZvcm1QYXRoID0gcmVzdWx0LT5tX3Bh
dGg7Ci0gICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShwbGF0Zm9ybVBhdGgpOworICAgIEFTU0VSVCgh
cmVzdWx0LT5tX3BhdGguaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gRmlsZTo6Y3JlYXRlKHJlc3Vs
dC0+bV9wYXRoKTsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTI0MywxNCArMjQxLDEzIEBAIFBhc3NS
ZWZQdHI8RmlsZVdyaXRlclN5bmM+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVXcml0ZXIoY29u
c3QgRmlsZUVudHJ5U3luYyoKICAgICBBU1NFUlQoZmlsZUVudHJ5KTsKICAgICBlYyA9IDA7CiAK
LSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1Bs
YXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQYXRoKCkpOwogCiAgICAgUmVmUHRyPEZpbGVXcml0
ZXJTeW5jPiBmaWxlV3JpdGVyID0gRmlsZVdyaXRlclN5bmM6OmNyZWF0ZSgpOwogICAgIFJlZlB0
cjxSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2sgPSBSZWNlaXZlRmls
ZVdyaXRlckNhbGxiYWNrOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TG9jYWxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrID0gTG9jYWxFcnJvckNhbGxiYWNrOjpjcmVhdGUoKTsKIAogICAgIE93
blB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRmlsZVdyaXRlckJhc2VD
YWxsYmFja3M6OmNyZWF0ZShmaWxlV3JpdGVyLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlci5nZXQo
KSwgcGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICBtX2FzeW5jRmlsZVN5
c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIGZpbGVFbnRyeS0+ZnVsbFBhdGgo
KSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgaWYgKCFtX2FzeW5jRmlsZVN5c3RlbS0+d2Fp
dEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgewogICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246
OkFCT1JUX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
QXN5bmNGaWxlU3lzdGVtLmNwcAppbmRleCBiMWEzZmUyMjkyODU4YzQ4YzFjZTViN2Q5ZWM0MmZi
YjkyZTkzNmNjLi4xODUxOGU4YjYxNDQ2MWViOTU3NTE5ODMyZGY3MzJmNDJiOGI4YTdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAKQEAgLTUyLDM0ICs1
MiwxMyBAQCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gQXN5bmNGaWxlU3lzdGVtOjpjcmVh
dGUoVHlwZSwgY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gMDsKIH0KIAotLy8gRGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4KIHZvaWQgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlmaWVyLCBUeXBl
IHR5cGUsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7Ci0gICAgU3RyaW5nIHR5cGVTdHJpbmcgPSAodHlwZSA9PSBQZXJzaXN0ZW50KSA/ICJQ
ZXJzaXN0ZW50IiA6ICJUZW1wb3JhcnkiOwotCi0gICAgU3RyaW5nIG5hbWUgPSBzdG9yYWdlSWRl
bnRpZmllcjsKLSAgICBuYW1lICs9ICI6IjsKLSAgICBuYW1lICs9IHR5cGVTdHJpbmc7Ci0KLSAg
ICBTdHJpbmcgcm9vdFBhdGggPSBiYXNlUGF0aDsKLSAgICByb290UGF0aC5hcHBlbmQoUGxhdGZv
cm1GaWxlUGF0aFNlcGFyYXRvcik7Ci0gICAgcm9vdFBhdGggKz0gc3RvcmFnZUlkZW50aWZpZXI7
Ci0gICAgcm9vdFBhdGguYXBwZW5kKFBsYXRmb3JtRmlsZVBhdGhTZXBhcmF0b3IpOwotICAgIHJv
b3RQYXRoICs9IHR5cGVTdHJpbmc7Ci0gICAgcm9vdFBhdGguYXBwZW5kKFBsYXRmb3JtRmlsZVBh
dGhTZXBhcmF0b3IpOwotCi0gICAgY2FsbGJhY2tzLT5kaWRPcGVuRmlsZVN5c3RlbShuYW1lLCBB
c3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSh0eXBlLCByb290UGF0aCkpOworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgY2FsbGJhY2tzLT5kaWRPcGVuRmlsZVN5c3RlbSgiIiwgMCk7CiB9CiAjZW5k
aWYKIAotLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KLVN0cmluZyBBc3luY0ZpbGVTeXN0ZW06
OnZpcnR1YWxUb1BsYXRmb3JtUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKCFtX3BsYXRmb3JtUm9vdFBhdGguaXNFbXB0eSgpKTsKLSAgICBTdHJpbmcgdmlydHVh
bFBhdGggPSBwYXRoOwotICAgIHJldHVybiBtX3BsYXRmb3JtUm9vdFBhdGggKyB2aXJ0dWFsUGF0
aC5yZXBsYWNlKCcvJywgUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRvcik7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCmluZGV4IDM1NzBkZTQ2MGEzOGRjN2FjZjU1NTAxOWYx
MTFhODVmMzY1NTFmMDguLmMyYzY4NDU0ZjRjY2IyMTk1NjY5OGU2OTM1M2Y0ZWU3MTBiM2IxZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgLy8gQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG5ldyBwbGF0Zm9ybS1zcGVjaWZpYyBBc3luY0Zp
bGVTeXN0ZW0gaW5zdGFuY2UgaWYgdGhlIHBsYXRmb3JtIGhhcyBpdHMgb3duIGltcGxlbWVudGF0
aW9uLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gY3JlYXRlKFR5cGUs
IGNvbnN0IFN0cmluZyYgcm9vdFBhdGgpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gY3JlYXRlKFR5cGUpOwogCiAgICAgLy8gT3BlbnMgYSBuZXcgZmlsZSBzeXN0ZW0u
IFRoZSBjcmVhdGUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0byBjcmVhdGUg
dGhlIHBhdGggaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdHMuCiAgICAgc3RhdGljIHZvaWQg
b3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9y
YWdlSWRlbnRpZmllciwgVHlwZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CkBAIC0xMjcsMjMgKzEyOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikgPSAwOwogCi0gICAgLy8gQ29udmVydHMgYSBnaXZlbiBhYnNvbHV0ZSB2aXJ0dWFsIHBhdGgg
dG8gYSBwbGF0Zm9ybSBwYXRoIHRoYXQgc3RhcnRzIHdpdGggdGhlIHBsYXRmb3JtIHJvb3QgcGF0
aCBvZiB0aGlzIGZpbGUgc3lzdGVtLgotICAgIHZpcnR1YWwgU3RyaW5nIHZpcnR1YWxUb1BsYXRm
b3JtUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0OwotCi0gICAgLy8gR2V0dGVyIGZvciB0
aGlzIGZpbGUgc3lzdGVtJ3Mgcm9vdCBwYXRoLgotICAgIFN0cmluZyByb290KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVJvb3RQYXRoOyB9Ci0KICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KIAogcHJvdGVjdGVkOgotICAgIEFzeW5jRmlsZVN5c3RlbShUeXBlIHR5
cGUsIGNvbnN0IFN0cmluZyYgcGxhdGZvcm1Sb290UGF0aCkKKyAgICBBc3luY0ZpbGVTeXN0ZW0o
VHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fcGxhdGZvcm1S
b290UGF0aChwbGF0Zm9ybVJvb3RQYXRoKQogICAgIHsKICAgICB9CiAKICAgICBUeXBlIG1fdHlw
ZTsKLSAgICBTdHJpbmcgbV9wbGF0Zm9ybVJvb3RQYXRoOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzY2EwODhkMDgxZDU0NDAyNTU3
YTMzZjEyNTU1YzRmYWUxMWQ2YTE0Li4wOGY2NjRhZjhjYmQ2NGNmYzM2NzgwYzk3MWFiMjYyZDk3
NWI3NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEx
LTA1LTA1ICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgZmlsZXN5c3RlbSBi
YXNlIHBhdGggY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYwMjE4CisKKyAgICAgICAgQ2hhbmdlIGEgYnVuY2ggb2YgdXJsLWhlbGQtaW4tYS1z
dHJpbmcgcGFyYW1ldGVycyBpbnRvIHJlYWwgS1VSTFMgYW5kCisgICAgICAgIFdlYlVSTHMuICBB
bHNvIGFkZCBhICNkZWZpbmUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3RhZ2UgdGhpcyBjaGFuZ2Us
IGFzCisgICAgICAgIGl0IGludm9sdmVzIGJvdGggQ2hyb21pdW0gYW5kIFdlYktpdCBjaGFuZ2Vz
IHRoYXQgd291bGQgaWRlYWxseSBiZSAKKyAgICAgICAgc2ltdWx0YW5lb3VzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy0tbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmg6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAgICogc3JjL0Fz
eW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0uaDoKKyAgICAgICAgKiBzcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3Bw
OgorICAgICAgICAqIHNyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAq
IHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmg6CisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKiBzcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KiBzcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgICogc3Jj
L1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaDoKKyAgICAgICAgKiBzcmMvV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgICogc3JjL1dvcmtlckZpbGVX
cml0ZXJDYWxsYmFja3NCcmlkZ2UuaDoKKwogMjAxMS0wNS0wNCAgTmF0ZSBDaGFwaW4gIDxqYXBo
ZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0u
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAppbmRleCA3
NzNhMWY1YmI2ZGVkNzM2Mjk0OTBkYjdhMzYwZGQ4ZTNmYzFhMzRmLi5jZjkzZWQzMGIxZDU1NTZh
Y2I3MjUyOTIyODVlMmJjYTRkYzJlN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRmlsZVN5c3RlbS5oCkBAIC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIFdlYkZpbGVT
eXN0ZW1faAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgi
CisjaW5jbHVkZSAiV2ViVVJMLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01NCwyOCAr
NTQsMjggQEAgcHVibGljOgogICAgIC8vIE1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNy
Y1BhdGh8IHRvIHxkZXN0UGF0aHwuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlk
U3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQg
c3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBt
dXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgV2Vi
U3RyaW5nJiBzcmNQYXRoLCBjb25zdCBXZWJTdHJpbmcmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgbW92ZShjb25zdCBXZWJVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdFBhdGgs
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogCiAgICAgLy8gQ29waWVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxk
ZXN0UGF0aHwuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11
c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxl
ZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNvcHkoY29uc3QgV2ViU3RyaW5nJiBzcmNQ
YXRoLCBjb25zdCBXZWJTdHJpbmcmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29weShj
b25zdCBXZWJVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdFBhdGgsIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8g
RGVsZXRlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gfHBhdGh8LgogICAgIC8vIEl0
IGlzIGFuIGVycm9yIHRvIHRyeSB0byByZW1vdmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgZW1w
dHkuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUg
Y2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAg
IC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhl
cndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIERl
bGV0ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSByZWN1cnNpdmVseSBhdCBhIGdpdmVuIHxwYXRofC4K
ICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxs
ZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8g
V2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lz
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgV2ViU3RyaW5nJiBw
YXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgV2ViVVJMJiBw
YXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KIAogICAgIC8vIFJldHJpZXZlcyB0aGUgbWV0YWRhdGEgaW5mb3JtYXRpb24gb2YgdGhl
IGZpbGUgb3IgZGlyZWN0b3J5IGF0IHRoZSBnaXZlbiB8cGF0aHwuCiAgICAgLy8gV2ViRmlsZVN5
c3RlbUNhbGxiYWNrczo6ZGlkUmVhZE1ldGFkYXRhKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHZh
bGlkIG1ldGFkYXRhIHdoZW4gdGhlIHJldHJpZXZhbCBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxl
ZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBXZWJTdHJp
bmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRhdGEoY29uc3QgV2ViVVJMJiBw
YXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KIAogICAgIC8vIENyZWF0ZXMgYSBmaWxlIGF0IGdpdmVuIHxwYXRofC4KICAgICAvLyBJ
ZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgYSBuZXcgZmlsZSBhdCB8cGF0
aHwuCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRp
b24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVGaWxlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogCiAgICAgLy8gQ3JlYXRlcyBhIGRpcmVjdG9yeSBhdCBhIGdpdmVuIHxwYXRofC4KICAg
ICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMgYSBuZXcgZGlyZWN0
b3J5IGF0IHxwYXRofC4KQEAgLTk1LDI2ICs5NSwyNiBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4KICAgICAv
LyB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gV2ViRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgYm9v
bCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgV2Vi
VVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBDaGVja3MgaWYgYSBmaWxlIGV4
aXN0cyBhdCBhIGdpdmVuIHxwYXRofC4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpk
aWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRl
ZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgp
IG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhj
b25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0
IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBDaGVja3MgaWYgYSBkaXJlY3RvcnkgZXhpc3RzIGF0
IGEgZ2l2ZW4gfHBhdGh8LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2Nl
ZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nl
c3NmdWxseS4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBi
ZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29u
c3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNv
bnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBSZWFkcyBkaXJlY3RvcnkgZW50cmllcyBvZiBh
IGdpdmVuIGRpcmVjdG9yeSBhdCB8cGF0aHwuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNr
czo6ZGlkUmVhZERpcmVjdG9yeSgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBp
cyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJl
YWREaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVh
ZERpcmVjdG9yeShjb25zdCBXZWJVUkwmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ3JlYXRlcyBhIFdlYkZp
bGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byB3cml0ZSB0byB0aGUgZ2l2ZW4gZmlsZS4KICAg
ICAvLyBUaGlzIGlzIGEgZmFzdCwgc3luY2hyb25vdXMgY2FsbCwgYW5kIHNob3VsZCBub3Qgc3Rh
dCB0aGUgZmlsZXN5c3RlbS4KLSAgICB2aXJ0dWFsIFdlYkZpbGVXcml0ZXIqIGNyZWF0ZUZpbGVX
cml0ZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlV3JpdGVyQ2xpZW50KikgeyBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJGaWxl
V3JpdGVyKiBjcmVhdGVGaWxlV3JpdGVyKGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVdyaXRl
ckNsaWVudCopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+V2ViRmlsZVN5c3RlbSgpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmlu
ZGV4IGZhN2ViYmU5MDc0OTJkOGU5ZTM5OWYzNWZkNTg3NWMyMzdiYTFhNGUuLjExNDUzNjE4YjMx
NTAwNmYyNDgyMTE1Mjg3OTAwNjk2NTc5MjdmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKQEAgLTM4LDggKzM4
LDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2Vi
VVJMOwogc3RydWN0IFdlYkZpbGVJbmZvOwogCisvLyBUZW1wb3JhcnkgaGFjayB0byBlYXNlIGEg
NC1waGFzZSBDaHJvbWl1bS9XZWJLaXQgY29tbWl0LgorI2RlZmluZSBXRUJGSUxFU1lTVEVNQ0FM
TEJBQ0tTX1VTRV9VUkxfTk9UX1NUUklORyAxCisKIGNsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MgewogcHVibGljOgogICAgIC8vIENhbGxiYWNrIGZvciBXZWJGaWxlU3lzdGVtJ3MgdmFyaW91
cyBvcGVyYXRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZQpAQCAtNTcsOCArNjEsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3RvcnkoY29uc3QgV2ViVmVjdG9yPFdlYkZp
bGVTeXN0ZW1FbnRyeT4mLCBib29sIGhhc01vcmUpID0gMDsKIAogICAgIC8vIENhbGxiYWNrIGZv
ciBXZWJGcmFtZUNsaWVudDo6b3BlbkZpbGVTeXN0ZW0uIENhbGxlZCB3aXRoIGEgbmFtZSBhbmQK
LSAgICAvLyByb290IHBhdGggZm9yIHRoZSBGaWxlU3lzdGVtIHdoZW4gdGhlIHJlcXVlc3QgaXMg
YWNjZXB0ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiByb290UGF0aCkgPSAwOworICAgIC8vIHJvb3Qg
VVJMIGZvciB0aGUgRmlsZVN5c3RlbSB3aGVuIHRoZSByZXF1ZXN0IGlzIGFjY2VwdGVkLgorICAg
IHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYlVSTCYgcm9vdFVSTCkgPSAwOwogCiAgICAgLy8gQ2FsbGVkIHdpdGggYW4gZXJyb3Ig
Y29kZSB3aGVuIGEgcmVxdWVzdGVkIG9wZXJhdGlvbiBoYXNuJ3QgYmVlbgogICAgIC8vIGNvbXBs
ZXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCmluZGV4IDQ2Mzc1
NzBjNWYwODE3ZGJhNDI4NWI1MDk3MWVmNmU1ZTRhNWE3ZmMuLmZkNGM3ZDk2MjAzZDIwYTY1NTdm
ZmI4Y2Y2ZTlmY2YxYjM2OTRmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWUuaApAQCAtMjY3LDExICsyNjcsMTEgQEAgcHVibGljOgogICAgIC8vIENyZWF0ZXMgYW4g
aW5zdGFuY2Ugb2YgZmlsZSBzeXN0ZW0gb2JqZWN0LgogICAgIHZpcnR1YWwgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNyZWF0ZUZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiByb290VVJMKSA9IDA7
CiAgICAgLy8gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBmaWxlIG9yIGRpcmVjdG9yeSBlbnRyeSBv
YmplY3QuCiAgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlRmlsZUVudHJ5
KFdlYkZpbGVTeXN0ZW06OlR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3RlbU5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgZmlsZVN5c3RlbVBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3RlbVJvb3RVUkwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgZmlsZVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgaXNEaXJlY3RvcnkpID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IGVm
MWY2MTY3MWM4N2Q5MDFkYTM0MDA5MjY1MDFiMzViZGJjOThmYTguLmQ4NjZhZWJmZDRkMzI3OWQ0
OTUzN2M0MDcxZjVhNjdjYjlkYmUxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTUwLDkgKzUwLDEwIEBA
IGJvb2wgQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLUFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3lu
Y0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCkKLSAgICA6IEFz
eW5jRmlsZVN5c3RlbSh0eXBlLCByb290UGF0aCkKK0FzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3Qg
S1VSTCYgcm9vdFVSTCkKKyAgICA6IEFzeW5jRmlsZVN5c3RlbSh0eXBlKQogICAgICwgbV93ZWJG
aWxlU3lzdGVtKFdlYktpdDo6d2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKSkKKyAgICAsIG1f
ZmlsZXN5c3RlbVJvb3RVUkwocm9vdFVSTCkKIHsKICAgICBBU1NFUlQobV93ZWJGaWxlU3lzdGVt
KTsKIH0KQEAgLTYzLDU3ICs2NCw1NyBAQCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6fkFzeW5j
RmlsZVN5c3RlbUNocm9taXVtKCkKIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6bW92
ZShjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAg
IG1fd2ViRmlsZVN5c3RlbS0+bW92ZShzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIG5ldyBX
ZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2Vi
RmlsZVN5c3RlbS0+bW92ZSh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChzb3VyY2VQYXRoKSwg
dmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoZGVzdGluYXRpb25QYXRoKSwgbmV3IFdlYktpdDo6
V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW06OmNvcHkoY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPmNvcHkoc291cmNlUGF0aCwg
ZGVzdGluYXRpb25QYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChj
YWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmNvcHkodmlydHVhbFBhdGhUb0ZpbGVT
eXN0ZW1VUkwoc291cmNlUGF0aCksIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGRlc3RpbmF0
aW9uUGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNr
cykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZW1vdmUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVtb3ZlKHBhdGgsIG5ldyBXZWJLaXQ6OldlYkZp
bGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+
cmVtb3ZlKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBuZXcgV2ViS2l0OjpXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2Vi
RmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkocGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5yZW1v
dmVSZWN1cnNpdmVseSh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbmV3IFdlYktp
dDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlYWRNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgbV93
ZWJGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5yZWFkTWV0
YWRhdGEodmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZp
bGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5
c3RlbUNocm9taXVtOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0g
ICAgbV93ZWJGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHBhdGgsIGV4Y2x1c2l2ZSwgbmV3IFdlYktp
dDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxl
U3lzdGVtLT5jcmVhdGVGaWxlKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBleGNs
dXNpdmUsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykp
OwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPmNyZWF0ZURp
cmVjdG9yeShwYXRoLCBleGNsdXNpdmUsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFj
a3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5
KHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBleGNsdXNpdmUsIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZp
bGVTeXN0ZW0tPmZpbGVFeGlzdHMocGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5maWxlRXhpc3RzKHZp
cnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3lu
Y0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0t
PmRpcmVjdG9yeUV4aXN0cyhwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyh2
aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW06OnJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5j
RmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+
cmVhZERpcmVjdG9yeShwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1w
bChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkodmlydHVh
bFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxs
YmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiBjbGFzcyBGaWxlV3JpdGVySGVscGVyQ2FsbGJh
Y2tzIDogcHVibGljIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0g
ICAgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIHdlYkZpbGVTeXN0
ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCisgICAgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhBc3luY0ZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3ZWJGaWxl
U3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAgICAgLCBtX3BhdGgocGF0
aCkKICAgICAgICAgLCBtX3dlYkZpbGVTeXN0ZW0od2ViRmlsZVN5c3RlbSkKQEAgLTE0NSw3ICsx
NDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBk
ZWxldGUgdGhpczsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgcm9v
dFBhdGgpCisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcm9vdFVSTCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBkZWxldGUgdGhpczsKQEAgLTE2
MCwxNCArMTYxLDI0IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBBc3luY0ZpbGVXcml0ZXJD
bGllbnQqIG1fY2xpZW50OwotICAgIFN0cmluZyBtX3BhdGg7CisgICAgS1VSTCBtX3BhdGg7CiAg
ICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07CiAgICAgT3duUHRyPFdl
YkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9OwogCiB2b2lk
IEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWRNZXRh
ZGF0YShwYXRoLCBuZXcgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhjbGllbnQsIHBhdGgsIG1f
d2ViRmlsZVN5c3RlbSwgY2FsbGJhY2tzKSk7CisgICAgS1VSTCBwYXRoQXNVUkwgPSB2aXJ0dWFs
UGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWRNZXRh
ZGF0YShwYXRoQXNVUkwsIG5ldyBGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKGNsaWVudCwgcGF0
aEFzVVJMLCBtX3dlYkZpbGVTeXN0ZW0sIGNhbGxiYWNrcykpOworfQorCitLVVJMIEFzeW5jRmls
ZVN5c3RlbUNocm9taXVtOjp2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcm
IHZpcnR1YWxQYXRoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9maWxlc3lzdGVtUm9vdFVSTC5p
c0VtcHR5KCkpOworICAgIEtVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVSTDsKKyAgICAvLyBS
ZW1vdmUgdGhlIGV4dHJhIGxlYWRpbmcgc2xhc2guCisgICAgdXJsLnNldFBhdGgodXJsLnBhdGgo
KSArIHZpcnR1YWxQYXRoLnN1YnN0cmluZygxKSk7CisgICAgcmV0dXJuIHVybDsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKaW5kZXggZGE5OGEzMzFiOTc3ZTBiNzhmNTUxYjNi
MDU4ZTJkMGRjZGQ0YTExYy4uMGM1NTBiNWUyNWViZmU3NGFmM2Y2MWI1ZjQ5NWZmNmQ1ODlmYTcz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5oCkBAIC00MywxMiArNDMsMTMgQEAgY2xhc3MgV2ViRmlsZVN5c3RlbTsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xh
c3MgS1VSTDsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0gOiBwdWJsaWMgQXN5bmNG
aWxlU3lzdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0
ZW0+IGNyZWF0ZShBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290
UGF0aCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShBc3lu
Y0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0odHlwZSwgcm9v
dFBhdGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bSh0eXBlLCByb290VVJMKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW0oKTsKQEAgLTY2LDggKzY3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByaXZh
dGU6Ci0gICAgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0oQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBj
b25zdCBTdHJpbmcmIHJvb3RQYXRoKTsKKyAgICBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3lu
Y0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwpOwogICAgIFdlYktpdDo6V2Vi
RmlsZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOworCisgICAgLy8gQ29udmVydHMgYSBnaXZlbiBh
YnNvbHV0ZSB2aXJ0dWFsIHBhdGggdG8gYSBmdWxsIG9yaWdpbi1xdWFsaWZpZWQgRmlsZVN5c3Rl
bSBVUkwuCisgICAgS1VSTCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcm
IHZpcnR1YWxQYXRoKSBjb25zdDsKKworICAgIEtVUkwgbV9maWxlc3lzdGVtUm9vdFVSTDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcAppbmRleCA1OGQ1NmU5
MGI5NzMwYzdhMjZlOWRlMWNlNDk5ZGU2MzM1NzNjMzVkLi5hNDhlMGNhNzBjMWYwMWQzNzkxZmM1
MTc5YzkwYWM3ZjUyN2MyZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCkBAIC04NSwxMiArODUsMTIg
QEAgdm9pZCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbDo6ZGlkUmVhZERpcmVjdG9yeShjb25z
dCBXZWJWZWN0b3I8V2ViRmlsZVN5c3RlbUUKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbDo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3Ry
aW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHBhdGgpCit2b2lkIFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3NJbXBsOjpkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlVSTCYgcm9vdFVSTCkKIHsKICAgICBpZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+aXNX
b3JrZXJDb250ZXh0KCkpCi0gICAgICAgIG1fY2FsbGJhY2tzLT5kaWRPcGVuRmlsZVN5c3RlbShu
YW1lLCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlKG1fY29udGV4dCwgbV90
eXBlLCBwYXRoLCBtX3N5bmNocm9ub3VzKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLT5kaWRPcGVu
RmlsZVN5c3RlbShuYW1lLCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlKG1f
Y29udGV4dCwgbV90eXBlLCByb290VVJMLCBtX3N5bmNocm9ub3VzKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2NhbGxiYWNrcy0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW06OmNyZWF0ZShtX3R5cGUsIHBhdGgpKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPmRp
ZE9wZW5GaWxlU3lzdGVtKG5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUobV90
eXBlLCByb290VVJMKSk7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oCmluZGV4
IDNlMjE5MmU5OGRhNDYzMWExYzM4Y2U2NTYwNzlkYWJhOWQxMjczMTIuLjEwZTBmODdhMGMxMzY1
MzRkYzU5MmQ5MGNlNGI4MDZkMjc0NTgxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaApAQCAtNDgsNiArNDgs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0cnVjdCBXZWJGaWxlSW5mbzsKIHN0cnVjdCBXZWJG
aWxlU3lzdGVtRW50cnk7CiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CiAKIGNsYXNz
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsIDogcHVibGljIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MgewogcHVibGljOgpAQCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IFdl
YkZpbGVJbmZvJiBpbmZvKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeShjb25z
dCBXZWJWZWN0b3I8V2ViRmlsZVN5c3RlbUVudHJ5PiYgZW50cmllcywgYm9vbCBoYXNNb3JlKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJTdHJpbmcmIHJvb3RQYXRoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZp
bGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJVUkwmIHJvb3RVUkwpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYkZpbGVFcnJvciBlcnJvcik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA3MWM1
YTUwNDEwZTU2NTg3NWJkYzI2ZjFhZGU1Y2NiOGRiYzBkN2JjLi5mNjZkNWYyNzY3NWM2ZmE1ZDRm
YjgyOTY3MjBjODFhMjJiMmJkMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAKQEAgLTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIkhpc3RvcnlJdGVt
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
InBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1aWxkZXIuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5j
ZS5oIgpAQCAtODYxLDcgKzg2Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJGcmFtZUlt
cGw6OmNyZWF0ZUZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJp
bmcmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gdG9WOChET01GaWxl
U3lzdGVtOjpjcmVhdGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSwgbmFtZSwgQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW06OmNyZWF0ZShzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUp
LCBwYXRoKSkpOworICAgIHJldHVybiB0b1Y4KERPTUZpbGVTeXN0ZW06OmNyZWF0ZShmcmFtZSgp
LT5kb2N1bWVudCgpLCBuYW1lLCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlKHN0YXRp
Y19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCBwYXRoLnV0ZjgoKS5kYXRhKCkpKSkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2Vi
RnJhbWVJbXBsOjpjcmVhdGVGaWxlRW50cnkoV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLApAQCAt
ODcwLDcgKzg3MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJGcmFtZUltcGw6OmNyZWF0
ZUZpbGVFbnRyeShXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBmaWxlUGF0
aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzRGlyZWN0b3J5KQogewotICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5
c3RlbSA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShmcmFtZSgpLT5kb2N1bWVudCgpLCBmaWxlU3lz
dGVtTmFtZSwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZShzdGF0aWNfY2FzdDxBc3lu
Y0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBmaWxlU3lzdGVtUGF0aCkpOworICAgIFJlZlB0cjxE
T01GaWxlU3lzdGVtQmFzZT4gZmlsZVN5c3RlbSA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShmcmFt
ZSgpLT5kb2N1bWVudCgpLCBmaWxlU3lzdGVtTmFtZSwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06
OmNyZWF0ZShzdGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBLVVJMKFBh
cnNlZFVSTFN0cmluZywgZmlsZVN5c3RlbVBhdGgudXRmOCgpLmRhdGEoKSkpKTsKICAgICBpZiAo
aXNEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiB0b1Y4KERpcmVjdG9yeUVudHJ5OjpjcmVhdGUo
ZmlsZVN5c3RlbSwgZmlsZVBhdGgpKTsKICAgICByZXR1cm4gdG9WOChGaWxlRW50cnk6OmNyZWF0
ZShmaWxlU3lzdGVtLCBmaWxlUGF0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCmluZGV4IGZh
ZWE0MGIwNTM3NDQzOGQ3NTQ4MjJjYWNiNTA3ZTIxMjNlZjE1MDguLjE3ODhhMGU2MjMwNzg2MDdm
ZDFmYzAzNGMzYTZmMmRiYTVkYmExMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTU2
LDEyICs1NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyIGZp
bGVTeXN0ZW1PcGVyYXRpb25zTW9kZVtdID0gImZpbGVTeXN0ZW1PcGVyYXRpb25zTW9kZSI7CiAK
LVdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCwgYm9vbCBzeW5jaHJvbm91cykKLSAgICA6
IEFzeW5jRmlsZVN5c3RlbSh0eXBlLCByb290UGF0aCkKK1dvcmtlckFzeW5jRmlsZVN5c3RlbUNo
cm9taXVtOjpXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgV2ViS2l0OjpX
ZWJVUkwmIHJvb3RVUkwsIGJvb2wgc3luY2hyb25vdXMpCisgICAgOiBBc3luY0ZpbGVTeXN0ZW0o
dHlwZSkKICAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQogICAgICwgbV93
ZWJGaWxlU3lzdGVtKFdlYktpdDo6d2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKSkKICAgICAs
IG1fd29ya2VyQ29udGV4dChzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCkpCiAg
ICAgLCBtX3N5bmNocm9ub3VzKHN5bmNocm9ub3VzKQorICAgICwgbV9maWxlc3lzdGVtUm9vdFVS
TChyb290VVJMKQogewogICAgIEFTU0VSVChtX3dlYkZpbGVTeXN0ZW0pOwogICAgIEFTU0VSVCht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKQEAgLTg5LDU3ICs5
MCw1NyBAQCBib29sIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjp3YWl0Rm9yT3BlcmF0
aW9uVG9Db21wbGV0ZSgpCiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06Om1v
dmUoY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0
aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAg
ICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RN
b3ZlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25Q
YXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RNb3ZlVG9NYWluVGhyZWFkKG1fd2Vi
RmlsZVN5c3RlbSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoc291cmNlUGF0aCksIHZpcnR1
YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGRlc3RpbmF0aW9uUGF0aCksIG1fbW9kZUZvckN1cnJlbnRP
cGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjb3B5
KGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgs
IFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAg
Y3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0Q29w
eVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0
aCwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0Q29weVRvTWFpblRocmVhZChtX3dlYkZp
bGVTeXN0ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHNvdXJjZVBhdGgpLCB2aXJ0dWFs
UGF0aFRvRmlsZVN5c3RlbVVSTChkZXN0aW5hdGlvblBhdGgpLCBtX21vZGVGb3JDdXJyZW50T3Bl
cmF0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVtb3Zl
KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+
IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
KGNhbGxiYWNrcyktPnBvc3RSZW1vdmVUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRo
LCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZW1vdmVUb01haW5UaHJlYWQobV93ZWJG
aWxlU3lzdGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbV9tb2RlRm9yQ3Vy
cmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06
OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZW1vdmVSZWN1cnNpdmVseVRvTWFp
blRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24p
OworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+
cG9zdFJlbW92ZVJlY3Vyc2l2ZWx5VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgdmlydHVh
bFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwog
fQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZWFkTWV0YWRhdGEoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2Fs
bGJhY2tzKS0+cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBh
dGgsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVh
ZChtX3dlYkZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBtX21v
ZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6Y3JlYXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNy
ZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENyZWF0
ZUZpbGVUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBleGNsdXNpdmUsIG1fbW9k
ZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENyZWF0ZUZpbGVUb01haW5UaHJlYWQobV93ZWJGaWxl
U3lzdGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgZXhjbHVzaXZlLCBtX21v
ZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6Y3JlYXRlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0g
ICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0
Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVz
aXZlLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RDcmVhdGVEaXJlY3RvcnlUb01haW5U
aHJlYWQobV93ZWJGaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwg
ZXhjbHVzaXZlLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3Jl
YXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0RmlsZUV4
aXN0c1RvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZUZvckN1cnJlbnRP
cGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2Fs
bGJhY2tzKS0+cG9zdEZpbGVFeGlzdHNUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCB2aXJ0
dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7
CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmRpcmVjdG9yeUV4aXN0
cyhjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZShjYWxsYmFja3MpLT5wb3N0RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5
c3RlbSwgcGF0aCwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0RGlyZWN0b3J5RXhpc3Rz
VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwo
cGF0aCksIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjpyZWFkRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVh
dGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZWFkRGly
ZWN0b3J5VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlRm9yQ3VycmVu
dE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShj
YWxsYmFja3MpLT5wb3N0UmVhZERpcmVjdG9yeVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0s
IHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0
aW9uKTsKIH0KIAogY2xhc3MgV29ya2VyRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyA6IHB1Ymxp
YyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3MgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdvcmtlckZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M+IGNyZWF0ZShBc3luY0ZpbGVXcml0
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OldlYkZpbGVTeXN0
ZW0qIHdlYkZpbGVTeXN0ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8V29ya2VyRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcz4gY3JlYXRlKEFz
eW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBXZWJVUkwmIHBhdGgsIFdlYktpdDo6
V2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3RlbSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcywgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyRmlsZVdyaXRlckhl
bHBlckNhbGxiYWNrcyhjbGllbnQsIHBhdGgsIHdlYkZpbGVTeXN0ZW0sIGNhbGxiYWNrcywgd29y
a2VyQ29udGV4dCkpOwogICAgIH0KQEAgLTE4OCw3ICsxODksNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIFdvcmtlckZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MoQXN5bmNGaWxl
V3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpXZWJGaWxl
U3lzdGVtKiB3ZWJGaWxlU3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3Rl
bUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQorICAg
IFdvcmtlckZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3ZWJGaWxl
U3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQogICAgICAgICA6IG1fY2xpZW50
KGNsaWVudCkKICAgICAgICAgLCBtX3BhdGgocGF0aCkKICAgICAgICAgLCBtX3dlYkZpbGVTeXN0
ZW0od2ViRmlsZVN5c3RlbSkKQEAgLTE5OCw3ICsxOTksNyBAQCBwcml2YXRlOgogICAgIH0KIAog
ICAgIEFzeW5jRmlsZVdyaXRlckNsaWVudCogbV9jbGllbnQ7Ci0gICAgU3RyaW5nIG1fcGF0aDsK
KyAgICBXZWJVUkwgbV9wYXRoOwogICAgIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogbV93ZWJGaWxl
U3lzdGVtOwogICAgIE93blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IG1f
Y2FsbGJhY2tzOwogICAgIFdvcmtlckNvbnRleHQqIG1fd29ya2VyQ29udGV4dDsKQEAgLTIwNiw3
ICsyMDcsOCBAQCBwcml2YXRlOgogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
OjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
IHsKLSAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFdvcmtlckZpbGVX
cml0ZXJIZWxwZXJDYWxsYmFja3M6OmNyZWF0ZShjbGllbnQsIHBhdGgsIG1fd2ViRmlsZVN5c3Rl
bSwgY2FsbGJhY2tzLCBtX3dvcmtlckNvbnRleHQpKS0+cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRo
cmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwor
ICAgIEtVUkwgcGF0aEFzVVJMID0gdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCk7Cisg
ICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXb3JrZXJGaWxlV3JpdGVy
SGVscGVyQ2FsbGJhY2tzOjpjcmVhdGUoY2xpZW50LCBwYXRoQXNVUkwsIG1fd2ViRmlsZVN5c3Rl
bSwgY2FsbGJhY2tzLCBtX3dvcmtlckNvbnRleHQpKS0+cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRo
cmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGhBc1VSTCwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlv
bik7CiB9CiAKIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UoUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
QEAgLTIyMCw2ICsyMjIsMTUgQEAgUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlPiBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXQKICAgICByZXR1cm4g
bV9icmlkZ2VGb3JDdXJyZW50T3BlcmF0aW9uOwogfQogCitLVVJMIFdvcmtlckFzeW5jRmlsZVN5
c3RlbUNocm9taXVtOjp2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIHZp
cnR1YWxQYXRoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9maWxlc3lzdGVtUm9vdFVSTC5pc0Vt
cHR5KCkpOworICAgIEtVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVSTDsKKyAgICAvLyBSZW1v
dmUgdGhlIGV4dHJhIGxlYWRpbmcgc2xhc2guCisgICAgdXJsLnNldFBhdGgodXJsLnBhdGgoKSAr
IHZpcnR1YWxQYXRoLnN1YnN0cmluZygxKSk7CisgICAgcmV0dXJuIHVybDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3Rl
bUNocm9taXVtLmgKaW5kZXggN2UzMzE2YjIyYzkzM2EwMDMxZGJiMGUxNTdjYjE4MDUzOGY3N2Q4
NS4uYjRkMWEwOTQxOTA5OWM3ZGU2ZmZlMGM2ZmEzMWRmZTM3NzAxNGU3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bS5oCkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3Mg
V2ViRmlsZVN5c3RlbTsKK2NsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYldvcmtlckJhc2U7CiBjbGFz
cyBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOwogfQpAQCAtNTIsOSArNTMsOSBAQCBj
bGFzcyBXb3JrZXJDb250ZXh0OwogCiBjbGFzcyBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bSA6IHB1YmxpYyBBc3luY0ZpbGVTeXN0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBi
b29sIHN5bmNocm9ub3VzKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6
VHlwZSB0eXBlLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcm9vdFVSTCwgYm9vbCBzeW5jaHJvbm91
cykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW0oY29udGV4dCwgdHlwZSwgcm9vdFBhdGgsIHN5bmNocm9ub3VzKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0oY29u
dGV4dCwgdHlwZSwgcm9vdFVSTCwgc3luY2hyb25vdXMpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSgpOwpAQCAtNzUsMTAgKzc2LDEzIEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVu
dCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVt
Q2FsbGJhY2tzPik7CiAKIHByaXZhdGU6Ci0gICAgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSwgY29uc3Qg
U3RyaW5nJiByb290UGF0aCwgYm9vbCBzeW5jaHJvbm91cyk7CisgICAgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFzeW5jRmlsZVN5c3RlbTo6
VHlwZSwgY29uc3QgV2ViS2l0OjpXZWJVUkwmIHJvb3RVUkwsIGJvb2wgc3luY2hyb25vdXMpOwog
CiAgICAgUGFzc1JlZlB0cjxXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+
IGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+KTsKIAorICAgIC8vIENvbnZlcnRzIGEgZ2l2ZW4gYWJzb2x1dGUg
dmlydHVhbCBwYXRoIHRvIGEgZnVsbCBvcmlnaW4tcXVhbGlmaWVkIEZpbGVTeXN0ZW0gVVJMLgor
ICAgIEtVUkwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiB2aXJ0dWFs
UGF0aCkgY29uc3Q7CisKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7CiAgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07
CiAgICAgV2ViS2l0OjpXZWJXb3JrZXJCYXNlKiBtX3dvcmtlcjsKQEAgLTg2LDYgKzkwLDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlPiBtX2JyaWRnZUZvckN1cnJlbnRPcGVyYXRpb247CiAgICAgU3RyaW5nIG1fbW9kZUZvckN1
cnJlbnRPcGVyYXRpb247CiAgICAgYm9vbCBtX3N5bmNocm9ub3VzOworICAgIEtVUkwgbV9maWxl
c3lzdGVtUm9vdFVSTDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNo
cm9taXVtLmNwcAppbmRleCAwZDBhYzhiYzEyNjU0M2Q0YmMxOTBlNWRhMDU5MzY3ZDQ4OGJmNjcy
Li5mMzRlYjNjZjFlZWIwZWFkZTFkNTgxNjY4ZWUyMGI3MzNjN2U2NDIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVy
Q2hyb21pdW0uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW06Oldv
cmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtKFdlYkZpbGVTeXN0ZW0qIHdlYkZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCwgQXN5bmNG
aWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIFdyaXRlclR5cGUgdHlwZSkKK1dvcmtlckFzeW5jRmls
ZVdyaXRlckNocm9taXVtOjpXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShXZWJGaWxlU3lz
dGVtKiB3ZWJGaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIFdvcmtlckNvbnRleHQqIHdv
cmtlckNvbnRleHQsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBXcml0ZXJUeXBlIHR5
cGUpCiAgICAgOiBtX3R5cGUodHlwZSkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFzeW5jaHJv
bm91cyk7IC8vIFN5bmNocm9ub3VzIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW0uaAppbmRleCAwMTA1OGMzODY4ZjhhYTAzMmZlYWQ2NGVlYTI5MDA5NWZhMWYzMzMzLi5m
ODcyOTgwOGZjMjRkZGQ0Mjc4YjYzYzgxNTMwMzM4NjVmY2NmMGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9t
aXVtLmgKQEAgLTM5LDYgKzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIGNsYXNzIFdl
YkZpbGVTeXN0ZW07CiAgICAgY2xhc3MgV2ViRmlsZVdyaXRlcjsKKyAgICBjbGFzcyBXZWJVUkw7
CiAgICAgY2xhc3MgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTsKIH0KIApAQCAtNjEs
NyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN5bmNocm9ub3VzLAogICAgIH07CiAKLSAgICBz
dGF0aWMgUGFzc093blB0cjxXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bT4gY3JlYXRlKFdl
YktpdDo6V2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0LCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVu
dCwgV3JpdGVyVHlwZSB0eXBlKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdvcmtlckFzeW5jRmls
ZVdyaXRlckNocm9taXVtPiBjcmVhdGUoV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3ZWJGaWxlU3lz
dGVtLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcGF0aCwgV29ya2VyQ29udGV4dCogd29ya2VyQ29u
dGV4dCwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIFdyaXRlclR5cGUgdHlwZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hy
b21pdW0od2ViRmlsZVN5c3RlbSwgcGF0aCwgd29ya2VyQ29udGV4dCwgY2xpZW50LCB0eXBlKSk7
CiAgICAgfQpAQCAtNzYsNyArNzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAKLSAgICBXb3Jr
ZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFdvcmtlckNvbnRleHQqLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBXcml0
ZXJUeXBlKTsKKyAgICBXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bShXZWJLaXQ6OldlYkZp
bGVTeXN0ZW0qLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcGF0aCwgV29ya2VyQ29udGV4dCosIEFz
eW5jRmlsZVdyaXRlckNsaWVudCosIFdyaXRlclR5cGUpOwogICAgIFJlZlB0cjxXZWJLaXQ6Oldv
cmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+IG1fYnJpZGdlOwogICAgIFdyaXRlclR5cGUg
bV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKaW5kZXggZmI1ZGQ2ODFiNWU2
NGEzZTFmZWJiZDU4NjQ0YTM5YzBjNTJjMWMxYS4uOThhZmQ0ZDNmYTE4NGNhN2QxYTg1ZGY0MjI3
NGRhMTE3MzU3MmJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKQEAgLTM5LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiV2Vi
RmlsZVN5c3RlbUVudHJ5LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2Vi
VVJMLmgiCiAjaW5jbHVkZSAiV2ViV29ya2VyQmFzZS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRl
eHQuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC03Nyw2ICs3OCwx
NCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OgogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdlYktpdDo6V2ViVVJMPiB7
CisgICAgdHlwZWRlZiBXZWJLaXQ6OldlYlVSTCBUeXBlOworICAgIHN0YXRpYyBUeXBlIGNvcHko
Y29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCkKKyAgICB7CisgICAgICByZXR1cm4gV2ViS2l0OjpX
ZWJVUkwodXJsKTsKKyAgICB9Cit9OworCiB9CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpA
QCAtOTcsOSArMTA2LDkgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJp
bmcmIHBhdGgpCisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViVVJMJiByb290VVJMKQogICAgIHsKLSAgICAgICAgbV9icmlk
Z2UtPmRpZE9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKG5hbWUsIHBhdGgsIG1fbW9kZSk7Cisg
ICAgICAgIG1fYnJpZGdlLT5kaWRPcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChuYW1lLCByb290
VVJMLCBtX21vZGUpOwogICAgICAgICBkZWxldGUgdGhpczsKICAgICB9CiAKQEAgLTE2MSw3ICsx
NzAsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVuRmls
ZVN5c3RlbVRvTWFpblRocmVhZChXZWJDb21tb25XbwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RNb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVT
eXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvblBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBXZWJVUkwmIGRlc3Rp
bmF0aW9uUGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFp
blRocmVhZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZtb3ZlT25NYWluVGhyZWFkLApA
QCAtMTY5LDcgKzE3OCw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
cG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAK
LXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENvcHlUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q29weVRvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFdl
YlVSTCYgZGVzdGluYXRpb25QYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNvcHlPbk1h
aW5UaHJlYWQsCkBAIC0xNzcsNyArMTg2LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpwb3N0Q29weVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3kKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1v
ZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVt
b3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0s
IGNvbnN0IFdlYlVSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChm
aWxlU3lzdGVtKTsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0xODYsNyArMTk1
LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlVG9N
YWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJzaXZlbHlUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RS
ZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBj
b25zdCBXZWJVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmls
ZVN5c3RlbSk7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKApAQCAtMTk1LDcgKzIwNCw3
IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVJlY3Vy
c2l2ZWx5VG9NYWluVGhyZWFkKFdlYkZpbGVTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRNZXRh
ZGF0YVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7CiAg
ICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKApAQCAtMjA0LDcgKzIxMyw3IEBAIHZvaWQgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVh
ZChXZWJGaWxlU3lzdGVtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6cG9zdENyZWF0ZUZpbGVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5n
JiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRl
RmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNyZWF0ZUZp
bGVPbk1haW5UaHJlYWQsCkBAIC0yMTIsNyArMjIxLDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVt
KgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBv
c3RDcmVhdGVEaXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQor
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5
VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmls
ZVN5c3RlbSk7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKApAQCAtMjIxLDcgKzIzMCw3
IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVj
dG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdEZpbGVFeGlzdHNUb01haW5UaHJlYWQoV2ViRmls
ZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1v
ZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RGaWxlRXhpc3Rz
VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0
aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKICAgICBk
aXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0yMzAsNyArMjM5LDcgQEAgdm9pZCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OnBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5U
aHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwogICAgIGRpc3BhdGNo
VGFza1RvTWFpblRocmVhZCgKQEAgLTIzOSw3ICsyNDgsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5UaHJlYWQoV2ViRmls
ZVN5cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0
aGlzKSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZERpcmVjdG9yeVRvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKApAQCAtMjU3LDUyICsyNjYsNTIgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb24KICAg
ICB9CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6bW92ZU9uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25z
dCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om1v
dmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgc291cmNlUGF0aCwgY29uc3QgV2ViVVJM
JiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRn
ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZpbGVTeXN0ZW0tPm1vdmUoc291cmNlUGF0
aCwgZGVzdGluYXRpb25QYXRoLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRl
TGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OmNvcHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc291cmNlUGF0
aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpjb3B5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHNv
dXJjZVBhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxl
U3lzdGVtLT5jb3B5KHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwgTWFpblRocmVhZEZpbGVT
eXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1vdmVPbk1haW5UaHJlYWQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJp
ZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OnJlbW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsK
ICAgICBmaWxlU3lzdGVtLT5yZW1vdmUocGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVhZChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlk
Z2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0
aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcm
IG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkocGF0aCwgTWFpblRo
cmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsK
IH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZWFkTWV0YWRhdGFP
bk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3Qg
V2ViVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aCwg
TWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1v
ZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVG
aWxlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlRmlsZU9uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAg
ICAgZmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShwYXRoLCBleGNsdXNpdmUsIE1haW5UaHJlYWRGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlRGlyZWN0b3J5T25NYWlu
VGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBm
aWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlRGlyZWN0b3J5T25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBm
aWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkocGF0aCwgZXhjbHVzaXZlLCBNYWluVGhyZWFkRmls
ZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmZpbGVFeGlzdHNPbk1haW5UaHJl
YWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OmZpbGVFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0
aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcm
IG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhwYXRoLCBNYWluVGhyZWFkRmls
ZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpcmVjdG9yeUV4aXN0c09uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBX
ZWJVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29u
c3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwYXRo
LCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwg
bW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWRE
aXJlY3RvcnlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0sIGNvbnN0IFdlYlVSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSog
YnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+cmVhZERpcmVj
dG9yeShwYXRoLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRy
KGJyaWRnZSwgbW9kZSkpOwogfQpAQCAtMzEyLDEwICszMjEsMTAgQEAgdm9pZCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRGYWlsT25NYWluVGhyZWFkKFdlYkZpbGVFcnJvciBl
cnJvciwgY28KICAgICBtYXlQb3N0VGFza1RvV29ya2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlk
RmFpbE9uV29ya2VyVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBlcnJvciks
IG1vZGUpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZE9w
ZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpkaWRPcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYlVSTCYgcm9vdFVSTCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAg
IG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuRmlsZVN5c3Rl
bU9uV29ya2VyVGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG5hbWUsIHJvb3RQYXRoKSwgbW9kZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1Ro
cmVhZEFjY2Vzcyh0aGlzKSwgbmFtZSwgcm9vdFVSTCksIG1vZGUpOwogfQogCiB2b2lkIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFN1Y2NlZWRPbk1haW5UaHJlYWQoY29uc3Qg
U3RyaW5nJiBtb2RlKQpAQCAtMzU0LDkgKzM2Myw5IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZTo6ZGlkRmFpbE9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
CiAgICAgYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRGYWlsKGVycm9yKTsK
IH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRPcGVuRmlsZVN5
c3RlbU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiByb290UGF0aCkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlk
T3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFdlYlVSTCYgcm9vdFVSTCkKIHsKLSAgICBicmlkZ2UtPm1fY2FsbGJhY2tzT25Xb3Jr
ZXJUaHJlYWQtPmRpZE9wZW5GaWxlU3lzdGVtKG5hbWUsIHJvb3RQYXRoKTsKKyAgICBicmlkZ2Ut
Pm1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQtPmRpZE9wZW5GaWxlU3lzdGVtKG5hbWUsIHJvb3RV
UkwpOwogfQogCiB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFN1Y2Nl
ZWRPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCmluZGV4IDVh
Zjg1MjlmN2RiMWNlMjk3MGJhYzkxNTc0ZmFjMWZjMTQ4NDg1ZTcuLjVkNDI2YTBjYTExMjczZGJk
ZDdkMTk2M2ZhNGQ2ZTM5YzYyYTAwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKQEAgLTUw
LDYgKzUwLDcgQEAgY2xhc3MgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M7CiBjbGFzcyBU
aHJlYWRhYmxlQ2FsbGJhY2tzQnJpZGdlV3JhcHBlcjsKIGNsYXNzIFdlYkNvbW1vbldvcmtlckNs
aWVudDsKIGNsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M7CitjbGFzcyBXZWJVUkw7CiBjbGFz
cyBXZWJXb3JrZXJCYXNlOwogc3RydWN0IFdlYkZpbGVJbmZvOwogc3RydWN0IFdlYkZpbGVTeXN0
ZW1FbnRyeTsKQEAgLTg1LDIwICs4NiwyMCBAQCBwdWJsaWM6CiAKICAgICAvLyBNZXRob2RzIHRo
YXQgY3JlYXRlIGFuIGluc3RhbmNlIGFuZCBwb3N0IGFuIGluaXRpYWwgcmVxdWVzdCB0YXNrIHRv
IHRoZSBtYWluIHRocmVhZC4gVGhleSBtdXN0IGJlIGNhbGxlZCBvbiB0aGUgd29ya2VyIHRocmVh
ZC4KICAgICB2b2lkIHBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZChXZWJDb21tb25Xb3Jr
ZXJDbGllbnQqLCBXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVh
dGUsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0TW92ZVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RQ
YXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHZvaWQgcG9zdENvcHlUb01haW5UaHJlYWQo
V2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgc3JjUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0
UGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICB2b2lkIHBvc3RSZW1vdmVUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2Rl
KTsKLSAgICB2b2lkIHBvc3RSZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVhZChXZWJGaWxlU3lz
dGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHZvaWQg
cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHZvaWQgcG9zdENyZWF0ZUZpbGVUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNp
dmUsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0Q3JlYXRlRGlyZWN0b3J5VG9N
YWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHZvaWQgcG9zdEZpbGVFeGlzdHNUb01haW5U
aHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBt
b2RlKTsKLSAgICB2b2lkIHBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5UaHJlYWQoV2ViRmlsZVN5
c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICB2b2lk
IHBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0TW92ZVRvTWFpblRo
cmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBzcmNQYXRoLCBjb25zdCBXZWJVUkwm
IGRlc3RQYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZvaWQgcG9zdENvcHlUb01haW5U
aHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgc3JjUGF0aCwgY29uc3QgV2ViVVJM
JiBkZXN0UGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3RSZW1vdmVUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgY29uc3QgU3RyaW5n
JiBtb2RlKTsKKyAgICB2b2lkIHBvc3RSZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAg
IHZvaWQgcG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
V2ViVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZvaWQgcG9zdENyZWF0ZUZp
bGVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBl
eGNsdXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0Q3JlYXRlRGlyZWN0
b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHBhdGgsIGJvb2wg
ZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZvaWQgcG9zdEZpbGVFeGlzdHNU
b01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5UaHJlYWQoV2Vi
RmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAg
ICB2b2lkIHBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25z
dCBXZWJVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKICAgICAvLyBDYWxsYmFjayBt
ZXRob2RzIHRoYXQgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm9pZCBkaWRG
YWlsT25NYWluVGhyZWFkKFdlYkZpbGVFcnJvciwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICB2
b2lkIGRpZE9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiByb290UGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIGRpZE9w
ZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViVVJM
JiByb290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgIHZvaWQgZGlkU3VjY2VlZE9uTWFp
blRocmVhZChjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgIHZvaWQgZGlkUmVhZE1ldGFkYXRhT25N
YWluVGhyZWFkKGNvbnN0IFdlYkZpbGVJbmZvJiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICB2
b2lkIGRpZFJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVT
eXN0ZW1FbnRyeT4mLCBib29sIGhhc01vcmUsIGNvbnN0IFN0cmluZyYgbW9kZSk7CkBAIC0xMDgs
MjIgKzEwOSwyMiBAQCBwcml2YXRlOgogCiAgICAgLy8gTWV0aG9kcyB0aGF0IGFyZSB0byBiZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVt
T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb21tb25X
b3JrZXJDbGllbnQqLCBXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBj
cmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOwotICAgIHN0YXRpYyB2b2lkIG1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHNyY1BhdGgsIGNv
bnN0IFN0cmluZyYgZGVzdFBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBj
b25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJp
bmcmIHNyY1BhdGgsIGNvbnN0IFN0cmluZyYgZGVzdFBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lkIHJlbW92
ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5
c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVjdXJzaXZl
bHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVT
eXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRhZGF0YU9u
TWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSosIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSos
IGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZU9uTWFpblRo
cmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNv
bnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lkIGNyZWF0ZURp
cmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
RmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRp
YyB2b2lkIGZpbGVFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lk
IGRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQg
cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgbW92
ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5
c3RlbSosIGNvbnN0IFdlYlVSTCYgc3JjUGF0aCwgY29uc3QgV2ViVVJMJiBkZXN0UGF0aCwgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAg
c3RhdGljIHZvaWQgY29weU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgc3JjUGF0aCwgY29uc3QgV2ViVVJM
JiBkZXN0UGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmlu
ZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRo
LCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsK
KyAgICBzdGF0aWMgdm9pZCByZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVhZChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0
aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7
CisgICAgc3RhdGljIHZvaWQgcmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAg
ICBzdGF0aWMgdm9pZCBjcmVhdGVGaWxlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBib29sIGV4
Y2x1c2l2ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYg
bW9kZSk7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJM
JiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSos
IGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgZmlsZUV4aXN0c09uTWFpblRo
cmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNv
bnN0IFdlYlVSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0
IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgZGlyZWN0b3J5RXhpc3RzT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29u
c3QgV2ViVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3Qg
U3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCByZWFkRGlyZWN0b3J5T25NYWluVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
V2ViVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3Ry
aW5nJiBtb2RlKTsKIAogICAgIGZyaWVuZCBjbGFzcyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxi
YWNrczsKIAogICAgIC8vIE1ldGhvZHMgdGhhdCBkaXNwYXRjaCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzIG9uIHRoZSB3b3JrZXIgdGhyZWFkcy4KICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsT25Xb3Jr
ZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqLCBXZWJGaWxlRXJyb3IpOwotICAgIHN0YXRpYyB2b2lkIGRpZE9w
ZW5GaWxlU3lzdGVtT25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgcm9vdFBhdGgpOworICAgIHN0YXRpYyB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtT25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlVSTCYgcm9vdFBhdGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZFN1Y2NlZWRPbldvcmtlclRocmVh
ZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKiwgY29uc3QgV2ViRmlsZUluZm8mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRS
ZWFkRGlyZWN0b3J5T25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBXZWJWZWN0b3I8V2Vi
RmlsZVN5c3RlbUVudHJ5PiYsIGJvb2wgaGFzTW9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2Uu
Y3BwCmluZGV4IGI3MThiY2RmM2FlODM3MTg2ZTc3ZjNmZjE2ZTY5MjMzNjdhZWQxNDMuLjA4N2Q1
OWIxNmJkMmRiNjQxODViYWY3NjliZDNhNjM0NzI2ZWI1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NC
cmlkZ2UuY3BwCkBAIC00OSw2ICs0OSwxOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENv
cGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXZWJLaXQ6OldlYlVSTD4geworICAgIHR5cGVkZWYgV2Vi
S2l0OjpXZWJVUkwgVHlwZTsKKyAgICBzdGF0aWMgVHlwZSBjb3B5KGNvbnN0IFdlYktpdDo6V2Vi
VVJMJiB1cmwpCisgICAgeworICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVVJMKHVybCk7CisgICAg
fQorfTsKKworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBXb3JrZXJGaWxlV3JpdGVy
Q2FsbGJhY2tzQnJpZGdlOjpub3RpZnlTdG9wKCkKQEAgLTEwMSw3ICsxMTMsNyBAQCB2b2lkIFdv
cmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmFib3J0T25NYWluVGhyZWFkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLAogICAgIGJyaWRnZS0+bV93cml0ZXItPmNhbmNlbCgpOwogfQogCi12
b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmluaXRPbk1haW5UaHJlYWQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZT4gYnJpZGdlLCBjb25zdCBTdHJpbmcmIHBhdGgpCit2b2lkIFdvcmtlckZpbGVXcml0
ZXJDYWxsYmFja3NCcmlkZ2U6OmluaXRPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlLCBj
b25zdCBXZWJVUkwmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFicmlkZ2UtPm1fd3JpdGVyKTsKICAg
ICBicmlkZ2UtPm1fd3JpdGVyID0gd2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKS0+Y3JlYXRl
RmlsZVdyaXRlcihwYXRoLCBicmlkZ2UuZ2V0KCkpOwpAQCAtMTMzLDcgKzE0NSw3IEBAIHZvaWQg
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkVHJ1bmNhdGUoKQogCiBzdGF0aWMg
Y29uc3QgY2hhciBmaWxlV3JpdGVyT3BlcmF0aW9uc01vZGVbXSA9ICJmaWxlV3JpdGVyT3BlcmF0
aW9uc01vZGUiOwogCi1Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpXb3JrZXJGaWxl
V3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyTG9hZGVyUHJv
eHkqIHByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKK1dvcmtlckZpbGVXcml0ZXJDYWxsYmFj
a3NCcmlkZ2U6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UoY29uc3QgV2ViVVJMJiBw
YXRoLCBXb3JrZXJMb2FkZXJQcm94eSogcHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50KQogICAg
IDogV29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpKQogICAgICwgbV9wcm94eShwcm94eSkKICAgICAsIG1fd29y
a2VyQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KQpAQCAtMTQ3LDcgKzE1OSw3IEBAIFdv
cmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NC
cmlkZ2UoY29uc3QgU3RyaW5nJiBwCiAgICAgcG9zdEluaXRUb01haW5UaHJlYWQocGF0aCk7CiB9
CiAKLXZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdEluaXRUb01haW5U
aHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoKQordm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0SW5pdFRvTWFpblRocmVhZChjb25zdCBXZWJVUkwmIHBhdGgpCiB7CiAgICAg
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmlu
aXRPbk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHBhdGgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0
ZXJDYWxsYmFja3NCcmlkZ2UuaAppbmRleCA3ZTk3OTVlOGI0NDViNTkzOTA4YTkxZWFkZjA0NTkw
NGIyZjFkNmY2Li5hNzFjZGYxY2U4YmU0MWE5MjcxODEzNWJiOTQ0ZjM2N2E2NzNkYWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJh
Y2tzQnJpZGdlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdy
aXRlckNhbGxiYWNrc0JyaWRnZS5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdlYkZpbGVXcml0ZXI7CiBjbGFzcyBXZWJG
aWxlV3JpdGVyQ2xpZW50OworY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViV29ya2VyQmFzZTsKIAog
Ly8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgbWVjaGFuaXNtIHRvIGJyaWRnZSBjYWxscyBiZXR3
ZWVuIHRocmVhZHMuCkBAIC04Niw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBXb3JrZXJDb250
ZXh0OjpPYnNlcnZlciBtZXRob2QuCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN0b3AoKTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5KiBwcm94
eSwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogd29ya2VyQ29udGV4dCwgV2ViQ29y
ZTo6QXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZT4gY3JlYXRlKGNvbnN0IFdlYlVSTCYgcGF0
aCwgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHByb3h5LCBXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiB3b3JrZXJDb250ZXh0LCBXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXJDbGll
bnQqIGNsaWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29ya2VyRmls
ZVdyaXRlckNhbGxiYWNrc0JyaWRnZShwYXRoLCBwcm94eSwgd29ya2VyQ29udGV4dCwgY2xpZW50
KSk7CiAgICAgfQpAQCAtMTEwLDE1ICsxMTEsMTUgQEAgcHVibGljOgogICAgIGJvb2wgd2FpdEZv
ck9wZXJhdGlvblRvQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKLSAgICBXb3JrZXJGaWxlV3JpdGVy
Q2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6V29ya2VyTG9hZGVy
UHJveHkqLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6QXN5bmNG
aWxlV3JpdGVyQ2xpZW50Kik7CisgICAgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZShj
b25zdCBXZWJVUkwmIHBhdGgsIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5KiwgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlckNsaWVudCop
OwogCi0gICAgdm9pZCBwb3N0SW5pdFRvTWFpblRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgpOwor
ICAgIHZvaWQgcG9zdEluaXRUb01haW5UaHJlYWQoY29uc3QgV2ViVVJMJiBwYXRoKTsKIAogICAg
IC8vIE1ldGhvZHMgdGhhdCBhcmUgdG8gYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAg
ICBzdGF0aWMgdm9pZCB3cml0ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiwgbG9u
ZyBsb25nIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBkYXRhKTsKICAgICBzdGF0aWMg
dm9pZCB0cnVuY2F0ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiwgbG9uZyBsb25n
IGxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgYWJvcnRPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZT4pOwotICAgIHN0YXRpYyB2b2lkIGluaXRPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZT4sIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgc3RhdGljIHZvaWQgaW5pdE9uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxXb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgV2ViVVJMJiBwYXRoKTsKICAgICBz
dGF0aWMgdm9pZCBzaHV0ZG93bk9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPik7CiAK
ICAgICAvLyBNZXRob2RzIHRoYXQgZGlzcGF0Y2ggdG8gQXN5bmNGaWxlV3JpdGVyQ2xpZW50IG9u
IHRoZSB3b3JrZXIgdGhyZWFkcy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93206</attachid>
            <date>2011-05-11 16:18:37 -0700</date>
            <delta_ts>2011-06-13 20:10:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60218-20110511161836.patch</filename>
            <type>text/plain</type>
            <size>80340</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODYyODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZGRjZDhkNGNlMzEwNTg4
MWMyY2E1Zjc1NDc3MWY1NmUwNzFkNTFiLi45YTJiZGViZmI2ZjEyMWRlYTNjYjI4ZTJhNTUxZGQ0
ZmFlNDEyNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDUtMDUgIEVyaWMg
VWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBmaWxlc3lzdGVtIGJhc2UgcGF0aCBjb2Rl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAyMTgK
KworICAgICAgICBDaGFuZ2UgYSBidW5jaCBvZiB1cmwtaGVsZC1pbi1hLXN0cmluZyBwYXJhbWV0
ZXJzIGludG8gcmVhbCBLVVJMUyBhbmQKKyAgICAgICAgV2ViVVJMcy4KKworICAgICAgICBObyBu
ZXcgdGVzdHMtLW5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogZmlsZWFw
aS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNy
ZWF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxl
KToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01GaWxlU3lzdGVtQmFzZTo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtQmFzZTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6cmVt
b3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmVSZWN1cnNp
dmVseSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRGaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXREaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3RvcnkpOgorICAgICAgICAqIGZpbGVh
cGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3Rl
bVN5bmM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbVN5bmM6
OmNyZWF0ZVdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNGaWxlU3lzdGVtOjpBc3luY0ZpbGVTeXN0ZW0pOgorCiAyMDExLTA1LTExICBUYW8gQmFpICA8
bWljaGFlbGJhaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2ls
emVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggMDFkNTZk
NTk2NWRjMmY3ZGVjMTljODkwMDAzMThmYmIzZjQwYmIzMi4uOGEyZDVlNGY3YTRiZTAyOWZjZDZl
MWYyNDA2NWJhODI2NTMwMjVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9E
T01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0
ZW0uY3BwCkBAIC0xMDQsNDIgKzEwNCwzNiBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZVdy
aXRlcihjb25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlV3JpdAogewog
ICAgIEFTU0VSVChmaWxlRW50cnkpOwogCi0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5
bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0aCgp
KTsKLQogICAgIFJlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyID0gRmlsZVdyaXRlcjo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgUmVmUHRyPEZpbGVXcml0ZXJCYXNl
Q2FsbGJhY2s+IGNvbnZlcnNpb25DYWxsYmFjayA9IENvbnZlcnRUb0ZpbGVXcml0ZXJDYWxsYmFj
azo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjayk7CiAgICAgT3duUHRyPEZpbGVXcml0ZXJCYXNlQ2Fs
bGJhY2tzPiBjYWxsYmFja3MgPSBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6Y3JlYXRlKGZpbGVX
cml0ZXIsIGNvbnZlcnNpb25DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNh
bGxiYWNrcy5yZWxlYXNlKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0ZXIo
ZmlsZVdyaXRlci5nZXQoKSwgZmlsZUVudHJ5LT5mdWxsUGF0aCgpLCBjYWxsYmFja3MucmVsZWFz
ZSgpKTsKIH0KIAogbmFtZXNwYWNlIHsKIAogY2xhc3MgR2V0UGF0aENhbGxiYWNrIDogcHVibGlj
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxHZXRQYXRoQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVz
eXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAg
IHN0YXRpYyBQYXNzT3duUHRyPEdldFBhdGhDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3ND
YWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBHZXRQYXRoQ2FsbGJhY2soZmlsZXN5c3RlbSwg
cGF0aCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgR2V0UGF0aENhbGxiYWNrKGZpbGVzeXN0ZW0sIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRh
dGEoY29uc3QgRmlsZU1ldGFkYXRhJiBtZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIGlmICghbWV0
YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fcGF0aCA9IG1ldGFk
YXRhLnBsYXRmb3JtUGF0aDsKLQotICAgICAgICBtX2ZpbGVzeXN0ZW0tPnNjaGVkdWxlQ2FsbGJh
Y2sobV9zdWNjZXNzQ2FsbGJhY2sucmVsZWFzZSgpLCBGaWxlOjpjcmVhdGUobV9wYXRoKSk7Cisg
ICAgICAgIEFTU0VSVCghbWV0YWRhdGEucGxhdGZvcm1QYXRoLmlzRW1wdHkoKSk7CisgICAgICAg
IG1fZmlsZXN5c3RlbS0+c2NoZWR1bGVDYWxsYmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNl
KCksIEZpbGU6OmNyZWF0ZShtZXRhZGF0YS5wbGF0Zm9ybVBhdGgpKTsKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgR2V0UGF0aENhbGxiYWNrKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5
c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisgICAg
R2V0UGF0aENhbGxiYWNrKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgUGFz
c1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNl
KGVycm9yQ2FsbGJhY2spCiAgICAgICAgICwgbV9maWxlc3lzdGVtKGZpbGVzeXN0ZW0pCi0gICAg
ICAgICwgbV9wYXRoKHBhdGgpCiAgICAgICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0Nh
bGxiYWNrKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxl
c3lzdGVtOwotICAgIFN0cmluZyBtX3BhdGg7CiAgICAgUmVmUHRyPEZpbGVDYWxsYmFjaz4gbV9z
dWNjZXNzQ2FsbGJhY2s7CiB9OwogCkBAIC0xNDcsOSArMTQxLDcgQEAgcHJpdmF0ZToKIAogdm9p
ZCBET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmlsZUVudHJ5LCBQ
YXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1f
YXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0
aCgpKTsKLQotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRo
LCBHZXRQYXRoQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBwbGF0Zm9ybVBhdGgsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRh
dGEoZmlsZUVudHJ5LT5mdWxsUGF0aCgpLCBHZXRQYXRoQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAppbmRl
eCBlYWZiODE1NmEyYWI0ZTlhNWJmMzgxY2M5YTdlYWNlNTFkODRjYTgzLi5jYzk2Mzg0Y2U5NjIz
YzZhZjg5MDYwNWUxYTE0NDkzYzIzOTg2OTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW1CYXNlLmNwcApAQCAtMTA1LDggKzEwNSw3IEBAIFNlY3VyaXR5T3JpZ2lu
KiBET01GaWxlU3lzdGVtQmFzZTo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAogCiBib29sIERPTUZp
bGVTeXN0ZW1CYXNlOjpnZXRNZXRhZGF0YShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVm
UHRyPE1ldGFkYXRhQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2Fz
eW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGVudHJ5LT5mdWxsUGF0aCgpKTsK
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBsYXRmb3JtUGF0aCwgTWV0YWRh
dGFDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGVudHJ5LT5mdWxsUGF0aCgpLCBNZXRh
ZGF0YUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNTYsOSArMTU1LDcgQEAgYm9vbCBET01GaWxlU3lz
dGVtQmFzZTo6bW92ZShjb25zdCBFbnRyeUJhc2UqIHNvdXJjZSwgRW50cnlCYXNlKiBwYXJlbnQs
IGNvbnN0IFMKICAgICBpZiAoIXZlcmlmeUFuZEdldERlc3RpbmF0aW9uUGF0aEZvckNvcHlPck1v
dmUoc291cmNlLCBwYXJlbnQsIG5ld05hbWUsIGRlc3RpbmF0aW9uUGF0aCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBzb3VyY2VQbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmls
ZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHNvdXJjZS0+ZnVsbFBhdGgoKSk7Ci0gICAg
U3RyaW5nIGRlc3RpbmF0aW9uUGxhdGZvcm1QYXRoID0gcGFyZW50LT5maWxlc3lzdGVtKCktPmFz
eW5jRmlsZVN5c3RlbSgpLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZGVzdGluYXRpb25QYXRoKTsK
LSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+bW92ZShzb3VyY2VQbGF0Zm9ybVBhdGgsIGRlc3RpbmF0
aW9uUGxhdGZvcm1QYXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgdGhpcywgZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5
KCkpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+bW92ZShzb3VyY2UtPmZ1bGxQYXRoKCksIGRl
c3RpbmF0aW9uUGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2ssIHRoaXMsIGRlc3RpbmF0aW9uUGF0aCwgc291cmNlLT5pc0RpcmVjdG9yeSgp
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2OCw5ICsxNjUsNyBAQCBib29sIERPTUZp
bGVTeXN0ZW1CYXNlOjpjb3B5KGNvbnN0IEVudHJ5QmFzZSogc291cmNlLCBFbnRyeUJhc2UqIHBh
cmVudCwgY29uc3QgUwogICAgIGlmICghdmVyaWZ5QW5kR2V0RGVzdGluYXRpb25QYXRoRm9yQ29w
eU9yTW92ZShzb3VyY2UsIHBhcmVudCwgbmV3TmFtZSwgZGVzdGluYXRpb25QYXRoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIHNvdXJjZVBsYXRmb3JtUGF0aCA9IG1fYXN5
bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoc291cmNlLT5mdWxsUGF0aCgpKTsK
LSAgICBTdHJpbmcgZGVzdGluYXRpb25QbGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVzeXN0ZW0o
KS0+YXN5bmNGaWxlU3lzdGVtKCktPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0aW5hdGlvblBh
dGgpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jb3B5KHNvdXJjZVBsYXRmb3JtUGF0aCwgZGVz
dGluYXRpb25QbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxi
YWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+aXNEaXJl
Y3RvcnkoKSkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jb3B5KHNvdXJjZS0+ZnVsbFBhdGgo
KSwgZGVzdGluYXRpb25QYXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaywgdGhpcywgZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0
b3J5KCkpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTgwLDggKzE3NSw3IEBAIGJvb2wg
RE9NRmlsZVN5c3RlbUJhc2U6OnJlbW92ZShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVm
UHRyPFZvaWRDYWxsYmFjaz4KICAgICAvLyBXZSBkb24ndCBhbGxvdyBjYWxsaW5nIHJlbW92ZSgp
IG9uIHRoZSByb290IGRpcmVjdG9yeS4KICAgICBpZiAoZW50cnktPmZ1bGxQYXRoKCkgPT0gU3Ry
aW5nKERPTUZpbGVQYXRoOjpyb290KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmlu
ZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRo
KGVudHJ5LT5mdWxsUGF0aCgpKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVtb3ZlKHBsYXRm
b3JtUGF0aCwgVm9pZENhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUoZW50cnktPmZ1bGxQYXRoKCks
IFZvaWRDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTkxLDggKzE4NSw3IEBAIGJvb2wgRE9NRmlsZVN5
c3RlbUJhc2U6OnJlbW92ZVJlY3Vyc2l2ZWx5KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NS
ZWZQdHI8Vm9pCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgY2FsbGluZyByZW1vdmUoKSBvbiB0aGUg
cm9vdCBkaXJlY3RvcnkuCiAgICAgaWYgKGVudHJ5LT5mdWxsUGF0aCgpID09IFN0cmluZyhET01G
aWxlUGF0aDo6cm9vdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgcGxhdGZv
cm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChlbnRyeS0+
ZnVsbFBhdGgoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2ZWx5KHBs
YXRmb3JtUGF0aCwgVm9pZENhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShlbnRy
eS0+ZnVsbFBhdGgoKSwgVm9pZENhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMDAsNDYgKzE5Myw0MyBA
QCBib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXRQYXJlbnQoY29uc3QgRW50cnlCYXNlKiBlbnRy
eSwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYQogewogICAgIEFTU0VSVChlbnRyeSk7CiAgICAgU3Ry
aW5nIHBhdGggPSBET01GaWxlUGF0aDo6Z2V0RGlyZWN0b3J5KGVudHJ5LT5mdWxsUGF0aCgpKTsK
LSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1Bs
YXRmb3JtUGF0aChwYXRoKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3Rz
KHBsYXRmb3JtUGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2ssIHRoaXMsIHBhdGgsIHRydWUpKTsKKworICAgIG1fYXN5bmNGaWxlU3lzdGVt
LT5kaXJlY3RvcnlFeGlzdHMocGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIHBhdGgsIHRydWUpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBFbnRyeUJhc2Uq
IGJhc2UsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3Ms
IFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXRG
aWxlKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxXZWJLaXRGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7CiAgICAg
U3RyaW5nIGFic29sdXRlUGF0aDsKLSAgICBpZiAoIXBhdGhUb0Fic29sdXRlUGF0aChiYXNlLCBw
YXRoLCBhYnNvbHV0ZVBhdGgpKQorICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRoKGVudHJ5LCBw
YXRoLCBhYnNvbHV0ZVBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChh
YnNvbHV0ZVBhdGgpOwogICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50
cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMs
IGFic29sdXRlUGF0aCwgZmFsc2UpOwogICAgIGlmIChmbGFncyAmJiBmbGFncy0+aXNDcmVhdGUo
KSkKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGxhdGZvcm1QYXRoLCBm
bGFncy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgICAgIG1fYXN5
bmNGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKGFic29sdXRlUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZl
KCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9hc3luY0ZpbGVT
eXN0ZW0tPmZpbGVFeGlzdHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAg
ICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmZpbGVFeGlzdHMoYWJzb2x1dGVQYXRoLCBjYWxsYmFj
a3MucmVsZWFzZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBET01GaWxlU3lzdGVt
QmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxi
YWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxs
YmFjaykKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldERpcmVjdG9yeShjb25zdCBFbnRyeUJh
c2UqIGVudHJ5LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZs
YWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewogICAgIFN0cmluZyBhYnNvbHV0ZVBh
dGg7Ci0gICAgaWYgKCFwYXRoVG9BYnNvbHV0ZVBhdGgoYmFzZSwgcGF0aCwgYWJzb2x1dGVQYXRo
KSkKKyAgICBpZiAoIXBhdGhUb0Fic29sdXRlUGF0aChlbnRyeSwgcGF0aCwgYWJzb2x1dGVQYXRo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1f
YXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoYWJzb2x1dGVQYXRoKTsKICAg
ICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVh
dGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIHRy
dWUpOwogICAgIGlmIChmbGFncyAmJiBmbGFncy0+aXNDcmVhdGUoKSkKLSAgICAgICAgbV9hc3lu
Y0ZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4Y2x1
c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0t
PmNyZWF0ZURpcmVjdG9yeShhYnNvbHV0ZVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxs
YmFja3MucmVsZWFzZSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5k
aXJlY3RvcnlFeGlzdHMocGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICAg
ICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhhYnNvbHV0ZVBhdGgsIGNhbGxi
YWNrcy5yZWxlYXNlKCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIERPTUZpbGVTeXN0
ZW1CYXNlOjpyZWFkRGlyZWN0b3J5KFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyQmFzZT4gcmVh
ZGVyLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RW50cmllc0NhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsK
ICAgICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOwotICAgIFN0cmluZyBw
bGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHBh
dGgpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5KHBsYXRmb3JtUGF0aCwg
RW50cmllc0NhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
cmVhZGVyLCBwYXRoKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGF0
aCwgRW50cmllc0NhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgcmVhZGVyLCBwYXRoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5jcHAKaW5kZXggMGQyNmJiNjIyNDRhZGQ4ZDc0
OTU0NWRhYjM1M2Q2MzQwZTFmYzYxNy4uNWVjOTZmODVkNWM0ZGU0MmY3ODZkMmFlMGJjYjM2MjM2
ZGFiNTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVt
U3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtU3luYy5j
cHAKQEAgLTE1Niw5ICsxNTYsOCBAQCBwcml2YXRlOgogUGFzc1JlZlB0cjxGaWxlPiBET01GaWxl
U3lzdGVtU3luYzo6Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnlTeW5jKiBmaWxlRW50cnksIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGVjID0gMDsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRo
ID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChmaWxlRW50cnktPmZ1
bGxQYXRoKCkpOwogICAgIFJlZlB0cjxHZXRQYXRoSGVscGVyOjpHZXRQYXRoUmVzdWx0PiByZXN1
bHQoR2V0UGF0aEhlbHBlcjo6R2V0UGF0aFJlc3VsdDo6Y3JlYXRlKCkpOwotICAgIG1fYXN5bmNG
aWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBHZXRQYXRoSGVscGVyOjpjcmVh
dGUocmVzdWx0KSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShmaWxlRW50
cnktPmZ1bGxQYXRoKCksIEdldFBhdGhIZWxwZXI6OmNyZWF0ZShyZXN1bHQpKTsKICAgICBpZiAo
IW1fYXN5bmNGaWxlU3lzdGVtLT53YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7CiAgICAg
ICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6QUJPUlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKQEAg
LTE2Nyw5ICsxNjYsOCBAQCBQYXNzUmVmUHRyPEZpbGU+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVh
dGVGaWxlKGNvbnN0IEZpbGVFbnRyeVN5bmMqIGZpbGVFbnRyeSwgRQogICAgICAgICBlYyA9IHJl
c3VsdC0+bV9jb2RlOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKCFyZXN1bHQt
Pm1fcGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHBsYXRmb3JtUGF0aCA9IHJlc3VsdC0+bV9wYXRo
OwotICAgIHJldHVybiBGaWxlOjpjcmVhdGUocGxhdGZvcm1QYXRoKTsKKyAgICBBU1NFUlQoIXJl
c3VsdC0+bV9wYXRoLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIEZpbGU6OmNyZWF0ZShyZXN1bHQt
Pm1fcGF0aCk7CiB9CiAKIG5hbWVzcGFjZSB7CkBAIC0yNDMsMTQgKzI0MSwxMyBAQCBQYXNzUmVm
UHRyPEZpbGVXcml0ZXJTeW5jPiBET01GaWxlU3lzdGVtU3luYzo6Y3JlYXRlV3JpdGVyKGNvbnN0
IEZpbGVFbnRyeVN5bmMqCiAgICAgQVNTRVJUKGZpbGVFbnRyeSk7CiAgICAgZWMgPSAwOwogCi0g
ICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0
Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0aCgpKTsKIAogICAgIFJlZlB0cjxGaWxlV3JpdGVy
U3luYz4gZmlsZVdyaXRlciA9IEZpbGVXcml0ZXJTeW5jOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8
UmVjZWl2ZUZpbGVXcml0ZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrID0gUmVjZWl2ZUZpbGVX
cml0ZXJDYWxsYmFjazo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExvY2FsRXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjayA9IExvY2FsRXJyb3JDYWxsYmFjazo6Y3JlYXRlKCk7CiAKICAgICBPd25Q
dHI8RmlsZVdyaXRlckJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEZpbGVXcml0ZXJCYXNlQ2Fs
bGJhY2tzOjpjcmVhdGUoZmlsZVdyaXRlciwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCks
IHBsYXRmb3JtUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0
ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBmaWxlRW50cnktPmZ1bGxQYXRoKCks
IGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRG
b3JPcGVyYXRpb25Ub0NvbXBsZXRlKCkpIHsKICAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpB
Qk9SVF9FUlI7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Fz
eW5jRmlsZVN5c3RlbS5jcHAKaW5kZXggYjFhM2ZlMjI5Mjg1OGM0OGMxY2U1YjdkOWVjNDJmYmI5
MmU5MzZjYy4uNDA0YWFiNjczNzZkZTNiNWViOWQzNjcyZmQwNTJjMGU2ODA4NTljOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uY3BwCkBAIC01MiwzNCArNTIs
MTMgQEAgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IEFzeW5jRmlsZVN5c3RlbTo6Y3JlYXRl
KFR5cGUsIGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8vIERlZmF1bHQgaW1w
bGVtZW50YXRpb24uCiB2b2lkIEFzeW5jRmlsZVN5c3RlbTo6b3BlbkZpbGVTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlSWRlbnRpZmllciwgVHlwZSB0
eXBlLCBib29sLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewotICAgIFN0cmluZyB0eXBlU3RyaW5nID0gKHR5cGUgPT0gUGVyc2lzdGVudCkgPyAiUGVy
c2lzdGVudCIgOiAiVGVtcG9yYXJ5IjsKLQotICAgIFN0cmluZyBuYW1lID0gc3RvcmFnZUlkZW50
aWZpZXI7Ci0gICAgbmFtZSArPSAiOiI7Ci0gICAgbmFtZSArPSB0eXBlU3RyaW5nOwotCi0gICAg
U3RyaW5nIHJvb3RQYXRoID0gYmFzZVBhdGg7Ci0gICAgcm9vdFBhdGguYXBwZW5kKFBsYXRmb3Jt
RmlsZVBhdGhTZXBhcmF0b3IpOwotICAgIHJvb3RQYXRoICs9IHN0b3JhZ2VJZGVudGlmaWVyOwot
ICAgIHJvb3RQYXRoLmFwcGVuZChQbGF0Zm9ybUZpbGVQYXRoU2VwYXJhdG9yKTsKLSAgICByb290
UGF0aCArPSB0eXBlU3RyaW5nOwotICAgIHJvb3RQYXRoLmFwcGVuZChQbGF0Zm9ybUZpbGVQYXRo
U2VwYXJhdG9yKTsKLQotICAgIGNhbGxiYWNrcy0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgQXN5
bmNGaWxlU3lzdGVtOjpjcmVhdGUodHlwZSwgcm9vdFBhdGgpKTsKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIGNhbGxiYWNrcy0+ZGlkRmFpbChOT1RfU1VQUE9SVEVEX0VSUik7CiB9CiAjZW5k
aWYKIAotLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KLVN0cmluZyBBc3luY0ZpbGVTeXN0ZW06
OnZpcnR1YWxUb1BsYXRmb3JtUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKCFtX3BsYXRmb3JtUm9vdFBhdGguaXNFbXB0eSgpKTsKLSAgICBTdHJpbmcgdmlydHVh
bFBhdGggPSBwYXRoOwotICAgIHJldHVybiBtX3BsYXRmb3JtUm9vdFBhdGggKyB2aXJ0dWFsUGF0
aC5yZXBsYWNlKCcvJywgUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRvcik7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCmluZGV4IDM1NzBkZTQ2MGEzOGRjN2FjZjU1NTAxOWYx
MTFhODVmMzY1NTFmMDguLmMyYzY4NDU0ZjRjY2IyMTk1NjY5OGU2OTM1M2Y0ZWU3MTBiM2IxZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKKyNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CkBAIC02Niw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgLy8gQ3JlYXRlcyBhbmQgcmV0dXJucyBhIG5ldyBwbGF0Zm9ybS1zcGVjaWZpYyBBc3luY0Zp
bGVTeXN0ZW0gaW5zdGFuY2UgaWYgdGhlIHBsYXRmb3JtIGhhcyBpdHMgb3duIGltcGxlbWVudGF0
aW9uLgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gY3JlYXRlKFR5cGUs
IGNvbnN0IFN0cmluZyYgcm9vdFBhdGgpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbT4gY3JlYXRlKFR5cGUpOwogCiAgICAgLy8gT3BlbnMgYSBuZXcgZmlsZSBzeXN0ZW0u
IFRoZSBjcmVhdGUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0byBjcmVhdGUg
dGhlIHBhdGggaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdHMuCiAgICAgc3RhdGljIHZvaWQg
b3BlbkZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBiYXNlUGF0aCwgY29uc3QgU3RyaW5nJiBzdG9y
YWdlSWRlbnRpZmllciwgVHlwZSwgYm9vbCBjcmVhdGUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPik7CkBAIC0xMjcsMjMgKzEyOCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgaXMgY2FsbGVkIG90aGVyd2lzZS4KICAg
ICB2aXJ0dWFsIHZvaWQgY3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PikgPSAwOwogCi0gICAgLy8gQ29udmVydHMgYSBnaXZlbiBhYnNvbHV0ZSB2aXJ0dWFsIHBhdGgg
dG8gYSBwbGF0Zm9ybSBwYXRoIHRoYXQgc3RhcnRzIHdpdGggdGhlIHBsYXRmb3JtIHJvb3QgcGF0
aCBvZiB0aGlzIGZpbGUgc3lzdGVtLgotICAgIHZpcnR1YWwgU3RyaW5nIHZpcnR1YWxUb1BsYXRm
b3JtUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0OwotCi0gICAgLy8gR2V0dGVyIGZvciB0
aGlzIGZpbGUgc3lzdGVtJ3Mgcm9vdCBwYXRoLgotICAgIFN0cmluZyByb290KCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybVJvb3RQYXRoOyB9Ci0KICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KIAogcHJvdGVjdGVkOgotICAgIEFzeW5jRmlsZVN5c3RlbShUeXBlIHR5
cGUsIGNvbnN0IFN0cmluZyYgcGxhdGZvcm1Sb290UGF0aCkKKyAgICBBc3luY0ZpbGVTeXN0ZW0o
VHlwZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQotICAgICAgICAsIG1fcGxhdGZvcm1S
b290UGF0aChwbGF0Zm9ybVJvb3RQYXRoKQogICAgIHsKICAgICB9CiAKICAgICBUeXBlIG1fdHlw
ZTsKLSAgICBTdHJpbmcgbV9wbGF0Zm9ybVJvb3RQYXRoOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA4OWYzYzBlNDQ4NjhiOWQ1ZTI1
OWM3NTIyYTk3M2JkMWQxM2ViNzYwLi45NjIxZjUzYzUzMjZkNTRkNmVhZjNiMDc4MzY2MjMwYTMz
NDQyNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEx
LTA1LTA1ICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgZmlsZXN5c3RlbSBi
YXNlIHBhdGggY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYwMjE4CisKKyAgICAgICAgQ2hhbmdlIGEgYnVuY2ggb2YgdXJsLWhlbGQtaW4tYS1z
dHJpbmcgcGFyYW1ldGVycyBpbnRvIHJlYWwgS1VSTFMgYW5kCisgICAgICAgIFdlYlVSTHMuICBB
bHNvIGFkZCBhICNkZWZpbmUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc3RhZ2UgdGhpcyBjaGFuZ2Us
IGFzCisgICAgICAgIGl0IGludm9sdmVzIGJvdGggQ2hyb21pdW0gYW5kIFdlYktpdCBjaGFuZ2Vz
IHRoYXQgd291bGQgaWRlYWxseSBiZSAKKyAgICAgICAgc2ltdWx0YW5lb3VzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy0tbm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBw
dWJsaWMvV2ViRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzLmg6CisgICAgICAgICogcHVibGljL1dlYkZyYW1lLmg6CisgICAgICAgICogc3JjL0Fz
eW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcDoKKyAgICAgICAgKiBzcmMvQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0uaDoKKyAgICAgICAgKiBzcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3Bw
OgorICAgICAgICAqIHNyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oOgorICAgICAgICAq
IHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bS5jcHA6CisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmg6CisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKiBzcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaDoKKyAgICAgICAg
KiBzcmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgICogc3Jj
L1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaDoKKyAgICAgICAgKiBzcmMvV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgICogc3JjL1dvcmtlckZpbGVX
cml0ZXJDYWxsYmFja3NCcmlkZ2UuaDoKKwogMjAxMS0wNS0xMSAgTmF0IER1Y2EgIDxuZHVjYUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCmluZGV4IDc3M2Ex
ZjViYjZkZWQ3MzYyOTQ5MGRiN2EzNjBkZDhlM2ZjMWEzNGYuLmNmOTNlZDMwYjFkNTU1NmFjYjcy
NTI5MjI4NWUyYmNhNGRjMmU3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWxlU3lzdGVtLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgV2ViRmlsZVN5c3Rl
bV9oCiAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNp
bmNsdWRlICJXZWJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU0LDI4ICs1NCwy
OCBAQCBwdWJsaWM6CiAgICAgLy8gTW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB8c3JjUGF0
aHwgdG8gfGRlc3RQYXRofC4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNj
ZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3Qg
YmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBXZWJTdHJp
bmcmIHNyY1BhdGgsIGNvbnN0IFdlYlN0cmluZyYgZGVzdFBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBtb3ZlKGNvbnN0IFdlYlVSTCYgc3JjUGF0aCwgY29uc3QgV2ViVVJMJiBkZXN0UGF0aCwgV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAK
ICAgICAvLyBDb3BpZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB8c3JjUGF0aHwgdG8gfGRlc3RQ
YXRofC4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBi
ZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAg
ICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90
aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBXZWJTdHJpbmcmIHNyY1BhdGgs
IGNvbnN0IFdlYlN0cmluZyYgZGVzdFBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3B5KGNvbnN0
IFdlYlVSTCYgc3JjUGF0aCwgY29uc3QgV2ViVVJMJiBkZXN0UGF0aCwgV2ViRmlsZVN5c3RlbUNh
bGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBEZWxl
dGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZlbiB8cGF0aHwuCiAgICAgLy8gSXQgaXMg
YW4gZXJyb3IgdG8gdHJ5IHRvIHJlbW92ZSBhIGRpcmVjdG9yeSB0aGF0IGlzIG5vdCBlbXB0eS4K
ICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxs
ZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8g
V2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lz
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgV2ViRmls
ZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZShjb25zdCBXZWJVUkwmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gRGVsZXRl
cyBhIGZpbGUgb3IgZGlyZWN0b3J5IHJlY3Vyc2l2ZWx5IGF0IGEgZ2l2ZW4gfHBhdGh8LgogICAg
IC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3
aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShjb25zdCBXZWJTdHJpbmcmIHBhdGgs
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZWN1cnNpdmVseShjb25zdCBXZWJVUkwmIHBhdGgs
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogCiAgICAgLy8gUmV0cmlldmVzIHRoZSBtZXRhZGF0YSBpbmZvcm1hdGlvbiBvZiB0aGUgZmls
ZSBvciBkaXJlY3RvcnkgYXQgdGhlIGdpdmVuIHxwYXRofC4KICAgICAvLyBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzOjpkaWRSZWFkTWV0YWRhdGEoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgdmFsaWQg
bWV0YWRhdGEgd2hlbiB0aGUgcmV0cmlldmFsIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAg
ICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90
aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZE1ldGFkYXRhKGNvbnN0IFdlYlN0cmluZyYg
cGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBXZWJVUkwmIHBhdGgs
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQogCiAgICAgLy8gQ3JlYXRlcyBhIGZpbGUgYXQgZ2l2ZW4gfHBhdGh8LgogICAgIC8vIElmIHRo
ZSB8cGF0aHwgZG9lc24ndCBleGlzdCwgaXQgY3JlYXRlcyBhIG5ldyBmaWxlIGF0IHxwYXRofC4K
QEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgIC8vCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBp
cyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZUZpbGUoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV2ViRmlsZVN5
c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZUZpbGUoY29uc3QgV2ViVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CiAKICAgICAvLyBDcmVhdGVzIGEgZGlyZWN0b3J5IGF0IGEgZ2l2ZW4gfHBhdGh8LgogICAgIC8v
IElmIHRoZSB8cGF0aHwgZG9lc24ndCBleGlzdCwgaXQgY3JlYXRlcyBhIG5ldyBkaXJlY3Rvcnkg
YXQgfHBhdGh8LgpAQCAtOTUsMjYgKzk1LDI2IEBAIHB1YmxpYzoKICAgICAvLyBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbgogICAgIC8vIHRo
ZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBib29sIGV4
Y2x1c2l2ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZURpcmVjdG9yeShjb25zdCBXZWJVUkwm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENoZWNrcyBpZiBhIGZpbGUgZXhpc3Rz
IGF0IGEgZ2l2ZW4gfHBhdGh8LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1
Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1
Y2Nlc3NmdWxseS4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVz
dCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0
IFdlYlN0cmluZyYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGZpbGVFeGlzdHMoY29uc3QgV2Vi
VVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KIAogICAgIC8vIENoZWNrcyBpZiBhIGRpcmVjdG9yeSBleGlzdHMgYXQgYSBn
aXZlbiB8cGF0aHwuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgp
IG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1
bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNh
bGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGRpcmVjdG9yeUV4aXN0cyhjb25zdCBX
ZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3Qg
V2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIFJlYWRzIGRpcmVjdG9yeSBlbnRyaWVzIG9mIGEgZ2l2
ZW4gZGlyZWN0b3J5IGF0IHxwYXRofC4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpk
aWRSZWFkRGlyZWN0b3J5KCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNv
bXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlk
RmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVhZERp
cmVjdG9yeShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWFkRGly
ZWN0b3J5KGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAvLyBDcmVhdGVzIGEgV2ViRmlsZVdy
aXRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHdyaXRlIHRvIHRoZSBnaXZlbiBmaWxlLgogICAgIC8v
IFRoaXMgaXMgYSBmYXN0LCBzeW5jaHJvbm91cyBjYWxsLCBhbmQgc2hvdWxkIG5vdCBzdGF0IHRo
ZSBmaWxlc3lzdGVtLgotICAgIHZpcnR1YWwgV2ViRmlsZVdyaXRlciogY3JlYXRlRmlsZVdyaXRl
cihjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVXcml0ZXJDbGllbnQqKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYkZpbGVXcml0
ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlV3JpdGVyQ2xp
ZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIH5XZWJGaWxlU3lzdGVtKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzLmgKaW5kZXgg
ZmE3ZWJiZTkwNzQ5MmQ4ZTllMzk5ZjM1ZmQ1ODc1YzIzN2JhMWE0ZS4uMTE0NTM2MThiMzE1MDA2
ZjI0ODIxMTUyODc5MDA2OTY1NzkyN2YxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3MuaApAQCAtMzgsOCArMzgsMTIg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7
CiBzdHJ1Y3QgV2ViRmlsZUluZm87CiAKKy8vIFRlbXBvcmFyeSBoYWNrIHRvIGVhc2UgYSA0LXBo
YXNlIENocm9taXVtL1dlYktpdCBjb21taXQuCisjZGVmaW5lIFdFQkZJTEVTWVNURU1DQUxMQkFD
S1NfVVNFX1VSTF9OT1RfU1RSSU5HIDEKKwogY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7
CiBwdWJsaWM6CiAgICAgLy8gQ2FsbGJhY2sgZm9yIFdlYkZpbGVTeXN0ZW0ncyB2YXJpb3VzIG9w
ZXJhdGlvbnMgdGhhdCBkb24ndCByZXF1aXJlCkBAIC01Nyw4ICs2MSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVhZERpcmVjdG9yeShjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5
c3RlbUVudHJ5PiYsIGJvb2wgaGFzTW9yZSkgPSAwOwogCiAgICAgLy8gQ2FsbGJhY2sgZm9yIFdl
YkZyYW1lQ2xpZW50OjpvcGVuRmlsZVN5c3RlbS4gQ2FsbGVkIHdpdGggYSBuYW1lIGFuZAotICAg
IC8vIHJvb3QgcGF0aCBmb3IgdGhlIEZpbGVTeXN0ZW0gd2hlbiB0aGUgcmVxdWVzdCBpcyBhY2Nl
cHRlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHJvb3RQYXRoKSA9IDA7CisgICAgLy8gcm9vdCBVUkwg
Zm9yIHRoZSBGaWxlU3lzdGVtIHdoZW4gdGhlIHJlcXVlc3QgaXMgYWNjZXB0ZWQuCisgICAgdmly
dHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViVVJMJiByb290VVJMKSA9IDA7CiAKICAgICAvLyBDYWxsZWQgd2l0aCBhbiBlcnJvciBjb2Rl
IHdoZW4gYSByZXF1ZXN0ZWQgb3BlcmF0aW9uIGhhc24ndCBiZWVuCiAgICAgLy8gY29tcGxldGVk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKaW5kZXggNDYzNzU3MGM1
ZjA4MTdkYmE0Mjg1YjUwOTcxZWY2ZTVlNGE1YTdmYy4uZmQ0YzdkOTYyMDNkMjBhNjU1N2ZmYjhj
ZjZlOWZjZjFiMzY5NGY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZS5oCkBAIC0yNjcsMTEgKzI2NywxMSBAQCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlcyBhbiBpbnN0
YW5jZSBvZiBmaWxlIHN5c3RlbSBvYmplY3QuCiAgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY3JlYXRlRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViU3RyaW5nJiBwYXRoKSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHJvb3RVUkwpID0gMDsKICAg
ICAvLyBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIGZpbGUgb3IgZGlyZWN0b3J5IGVudHJ5IG9iamVj
dC4KICAgICB2aXJ0dWFsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVGaWxlRW50cnkoV2Vi
RmlsZVN5c3RlbTo6VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBmaWxlU3lzdGVtTmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBm
aWxlU3lzdGVtUGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBmaWxlU3lzdGVtUm9vdFVSTCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBm
aWxlUGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0RpcmVjdG9yeSkgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggZWYxZjYx
NjcxYzg3ZDkwMWRhMzQwMDkyNjUwMWIzNWJkYmM5OGZhOC4uZDg2NmFlYmZkNGQzMjc5ZDQ5NTM3
YzQwNzFmNWE2N2NiOWRiZTEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcApAQCAtNTAsOSArNTAsMTAgQEAgYm9v
bCBBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxlKCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OkFzeW5jRmlsZVN5c3RlbUNocm9taXVtKEFzeW5jRmls
ZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHJvb3RQYXRoKQotICAgIDogQXN5bmNG
aWxlU3lzdGVtKHR5cGUsIHJvb3RQYXRoKQorQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OkFzeW5j
RmlsZVN5c3RlbUNocm9taXVtKEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25zdCBLVVJM
JiByb290VVJMKQorICAgIDogQXN5bmNGaWxlU3lzdGVtKHR5cGUpCiAgICAgLCBtX3dlYkZpbGVT
eXN0ZW0oV2ViS2l0Ojp3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKQorICAgICwgbV9maWxl
c3lzdGVtUm9vdFVSTChyb290VVJMKQogewogICAgIEFTU0VSVChtX3dlYkZpbGVTeXN0ZW0pOwog
fQpAQCAtNjMsNTcgKzY0LDU3IEBAIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjp+QXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW0oKQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjptb3ZlKGNv
bnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgbV93
ZWJGaWxlU3lzdGVtLT5tb3ZlKHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwgbmV3IFdlYktp
dDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxl
U3lzdGVtLT5tb3ZlKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHNvdXJjZVBhdGgpLCB2aXJ0
dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChkZXN0aW5hdGlvblBhdGgpLCBuZXcgV2ViS2l0OjpXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6Y29weShjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4g
Y2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+Y29weShzb3VyY2VQYXRoLCBkZXN0
aW5hdGlvblBhdGgsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxi
YWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+Y29weSh2aXJ0dWFsUGF0aFRvRmlsZVN5c3Rl
bVVSTChzb3VyY2VQYXRoKSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoZGVzdGluYXRpb25Q
YXRoKSwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7
CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlbW92ZShjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7
Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5yZW1vdmUocGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5yZW1v
dmUodmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3Rl
bUNocm9taXVtOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgbV93ZWJGaWxl
U3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlbW92ZVJl
Y3Vyc2l2ZWx5KHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBuZXcgV2ViS2l0OjpX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bTo6cmVhZE1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZp
bGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0
YSh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbmV3IFdlYktpdDo6V2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW06OmNyZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBt
X3dlYkZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGF0aCwgZXhjbHVzaXZlLCBuZXcgV2ViS2l0OjpX
ZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0
ZW0tPmNyZWF0ZUZpbGUodmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIGV4Y2x1c2l2
ZSwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9
CiAKIHZvaWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0
b3J5KHBhdGgsIGV4Y2x1c2l2ZSwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0lt
cGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3Rvcnkodmly
dHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIGV4Y2x1c2l2ZSwgbmV3IFdlYktpdDo6V2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW06OmZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5
c3RlbS0+ZmlsZUV4aXN0cyhwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmZpbGVFeGlzdHModmlydHVh
bFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxs
YmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVt
OjpkaXJlY3RvcnlFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmls
ZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+ZGly
ZWN0b3J5RXhpc3RzKHBhdGgsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBs
KGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHZpcnR1
YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6cmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxl
U3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5yZWFk
RGlyZWN0b3J5KHBhdGgsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNh
bGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeSh2aXJ0dWFsUGF0
aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNr
c0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIGNsYXNzIEZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3Mg
OiBwdWJsaWMgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBG
aWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBj
b25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3RlbSwg
UGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykK
KyAgICBGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xp
ZW50LCBjb25zdCBLVVJMJiBwYXRoLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIHdlYkZpbGVTeXN0
ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiAgICAgICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICAgICAsIG1fcGF0aChwYXRoKQog
ICAgICAgICAsIG1fd2ViRmlsZVN5c3RlbSh3ZWJGaWxlU3lzdGVtKQpAQCAtMTQ1LDcgKzE0Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGRlbGV0
ZSB0aGlzOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiByb290UGF0
aCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViS2l0OjpXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYktpdDo6V2ViVVJMJiByb290VVJMKQogICAgIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwpAQCAtMTYwLDE0
ICsxNjEsMjQgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEFzeW5jRmlsZVdyaXRlckNsaWVu
dCogbV9jbGllbnQ7Ci0gICAgU3RyaW5nIG1fcGF0aDsKKyAgICBLVVJMIG1fcGF0aDsKICAgICBX
ZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3RlbTsKICAgICBPd25QdHI8V2ViQ29y
ZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAKIHZvaWQgQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNh
bGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRh
KHBhdGgsIG5ldyBGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKGNsaWVudCwgcGF0aCwgbV93ZWJG
aWxlU3lzdGVtLCBjYWxsYmFja3MpKTsKKyAgICBLVVJMIHBhdGhBc1VSTCA9IHZpcnR1YWxQYXRo
VG9GaWxlU3lzdGVtVVJMKHBhdGgpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRh
KHBhdGhBc1VSTCwgbmV3IEZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MoY2xpZW50LCBwYXRoQXNV
UkwsIG1fd2ViRmlsZVN5c3RlbSwgY2FsbGJhY2tzKSk7Cit9CisKK0tVUkwgQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW06OnZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmly
dHVhbFBhdGgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2ZpbGVzeXN0ZW1Sb290VVJMLmlzRW1w
dHkoKSk7CisgICAgS1VSTCB1cmwgPSBtX2ZpbGVzeXN0ZW1Sb290VVJMOworICAgIC8vIFJlbW92
ZSB0aGUgZXh0cmEgbGVhZGluZyBzbGFzaC4KKyAgICB1cmwuc2V0UGF0aCh1cmwucGF0aCgpICsg
dmlydHVhbFBhdGguc3Vic3RyaW5nKDEpKTsKKyAgICByZXR1cm4gdXJsOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5
bmNGaWxlU3lzdGVtQ2hyb21pdW0uaAppbmRleCBkYTk4YTMzMWI5NzdlMGI3OGY1NTFiM2IwNThl
MmQwZGNkZDRhMTFjLi4wYzU1MGI1ZTI1ZWJmZTc0YWYzZjYxYjVmNDk1ZmY2ZDU4OWZhNzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNo
cm9taXVtLmgKQEAgLTQzLDEyICs0MywxMyBAQCBjbGFzcyBXZWJGaWxlU3lzdGVtOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M7CitjbGFzcyBL
VVJMOwogCiBjbGFzcyBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSA6IHB1YmxpYyBBc3luY0ZpbGVT
eXN0ZW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4g
Y3JlYXRlKEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHJvb3RQYXRo
KQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gY3JlYXRlKEFzeW5jRmls
ZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiByb290VVJMKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bSh0eXBlLCByb290UGF0
aCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEFzeW5jRmlsZVN5c3RlbUNocm9taXVt
KHR5cGUsIHJvb3RVUkwpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5Bc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bSgpOwpAQCAtNjYsOCArNjcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
cGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+KTsKIAogcHJpdmF0ZToK
LSAgICBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0
IFN0cmluZyYgcm9vdFBhdGgpOworICAgIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtKEFzeW5jRmls
ZVN5c3RlbTo6VHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCk7CiAgICAgV2ViS2l0OjpXZWJGaWxl
U3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07CisKKyAgICAvLyBDb252ZXJ0cyBhIGdpdmVuIGFic29s
dXRlIHZpcnR1YWwgcGF0aCB0byBhIGZ1bGwgb3JpZ2luLXF1YWxpZmllZCBGaWxlU3lzdGVtIFVS
TC4KKyAgICBLVVJMIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmly
dHVhbFBhdGgpIGNvbnN0OworCisgICAgS1VSTCBtX2ZpbGVzeXN0ZW1Sb290VVJMOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDU4ZDU2ZTkwYjk3
MzBjN2EyNmU5ZGUxY2U0OTlkZTYzMzU3M2MzNWQuLmE0OGUwY2E3MGMxZjAxZDM3OTFmYzUxNzlj
OTBhYzdmNTI3YzJkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTg1LDEyICs4NSwxMiBAQCB2
b2lkIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsOjpkaWRSZWFkRGlyZWN0b3J5KGNvbnN0IFdl
YlZlY3RvcjxXZWJGaWxlU3lzdGVtRQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3NJbXBsOjpkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgcGF0aCkKK3ZvaWQgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
c0ltcGw6OmRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
VVJMJiByb290VVJMKQogewogICAgIGlmIChtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5pc1dvcmtl
ckNvbnRleHQoKSkKLSAgICAgICAgbV9jYWxsYmFja3MtPmRpZE9wZW5GaWxlU3lzdGVtKG5hbWUs
IFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUobV9jb250ZXh0LCBtX3R5cGUs
IHBhdGgsIG1fc3luY2hyb25vdXMpKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPmRpZE9wZW5GaWxl
U3lzdGVtKG5hbWUsIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUobV9jb250
ZXh0LCBtX3R5cGUsIHJvb3RVUkwsIG1fc3luY2hyb25vdXMpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fY2FsbGJhY2tzLT5kaWRPcGVuRmlsZVN5c3RlbShuYW1lLCBBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bTo6Y3JlYXRlKG1fdHlwZSwgcGF0aCkpOworICAgICAgICBtX2NhbGxiYWNrcy0+ZGlkT3Bl
bkZpbGVTeXN0ZW0obmFtZSwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZShtX3R5cGUs
IHJvb3RVUkwpKTsKICAgICBkZWxldGUgdGhpczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmgKaW5kZXggM2Uy
MTkyZTk4ZGE0NjMxYTFjMzhjZTY1NjA3OWRhYmE5ZDEyNzMxMi4uMTBlMGY4N2EwYzEzNjUzNGRj
NTkyZDkwY2U0YjgwNmQyNzQ1ODFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5oCkBAIC00OCw2ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFdlYkZpbGVJbmZvOwogc3RydWN0IFdlYkZpbGVT
eXN0ZW1FbnRyeTsKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYlVSTDsKIAogY2xhc3MgV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7
CiBwdWJsaWM6CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
U3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkTWV0YWRhdGEoY29uc3QgV2ViRmls
ZUluZm8mIGluZm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFkRGlyZWN0b3J5KGNvbnN0IFdl
YlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVzLCBib29sIGhhc01vcmUpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYlN0cmluZyYgcm9vdFBhdGgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5
c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlVSTCYgcm9vdFVSTCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yIGVycm9yKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDJiN2YxZjll
N2YwNGZlYzhiZjUzODRmNTcwZjFiYTgxZjgzOTA3NDYuLmRlNDE5MDE5NTdhMmVlYTAzZTQ1N2Yy
MWY2OTYzYjBjNWFiZjI5YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcApAQCAtMTAyLDYgKzEwMiw3IEBACiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAicGFp
bnRpbmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlLmgi
CkBAIC04NTQsNyArODU1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6
Y3JlYXRlRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiB0b1Y4KERPTUZpbGVTeXN0
ZW06OmNyZWF0ZShmcmFtZSgpLT5kb2N1bWVudCgpLCBuYW1lLCBBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bTo6Y3JlYXRlKHN0YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIHBh
dGgpKSk7CisgICAgcmV0dXJuIHRvVjgoRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGZyYW1lKCktPmRv
Y3VtZW50KCksIG5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHBh
dGgudXRmOCgpLmRhdGEoKSkpKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJGcmFt
ZUltcGw6OmNyZWF0ZUZpbGVFbnRyeShXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsCkBAIC04NjMs
NyArODY0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6Y3JlYXRlRmls
ZUVudHJ5KFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZpbGVQYXRoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNEaXJlY3RvcnkpCiB7Ci0gICAgUmVmUHRyPERPTUZpbGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVt
ID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGZyYW1lKCktPmRvY3VtZW50KCksIGZpbGVTeXN0ZW1O
YW1lLCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlKHN0YXRpY19jYXN0PEFzeW5jRmls
ZVN5c3RlbTo6VHlwZT4odHlwZSksIGZpbGVTeXN0ZW1QYXRoKSk7CisgICAgUmVmUHRyPERPTUZp
bGVTeXN0ZW1CYXNlPiBmaWxlU3lzdGVtID0gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGZyYW1lKCkt
PmRvY3VtZW50KCksIGZpbGVTeXN0ZW1OYW1lLCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3Jl
YXRlKHN0YXRpY19jYXN0PEFzeW5jRmlsZVN5c3RlbTo6VHlwZT4odHlwZSksIEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBmaWxlU3lzdGVtUGF0aC51dGY4KCkuZGF0YSgpKSkpOwogICAgIGlmIChpc0Rp
cmVjdG9yeSkKICAgICAgICAgcmV0dXJuIHRvVjgoRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShmaWxl
U3lzdGVtLCBmaWxlUGF0aCkpOwogICAgIHJldHVybiB0b1Y4KEZpbGVFbnRyeTo6Y3JlYXRlKGZp
bGVTeXN0ZW0sIGZpbGVQYXRoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggZmFlYTQw
YjA1Mzc0NDM4ZDc1NDgyMmNhY2I1MDdlMjEyM2VmMTUwOC4uMTc4OGEwZTYyMzA3ODYwN2ZkMWZj
MDM0YzNhNmYyZGJhNWRiYTEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcApAQCAtNTYsMTIg
KzU2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIgZmlsZVN5
c3RlbU9wZXJhdGlvbnNNb2RlW10gPSAiZmlsZVN5c3RlbU9wZXJhdGlvbnNNb2RlIjsKIAotV29y
a2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIHJvb3RQYXRoLCBib29sIHN5bmNocm9ub3VzKQotICAgIDogQXN5
bmNGaWxlU3lzdGVtKHR5cGUsIHJvb3RQYXRoKQorV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OldvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBjb25zdCBXZWJLaXQ6OldlYlVS
TCYgcm9vdFVSTCwgYm9vbCBzeW5jaHJvbm91cykKKyAgICA6IEFzeW5jRmlsZVN5c3RlbSh0eXBl
KQogICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3dlYkZp
bGVTeXN0ZW0oV2ViS2l0Ojp3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpKQogICAgICwgbV93
b3JrZXJDb250ZXh0KHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KSkKICAgICAs
IG1fc3luY2hyb25vdXMoc3luY2hyb25vdXMpCisgICAgLCBtX2ZpbGVzeXN0ZW1Sb290VVJMKHJv
b3RVUkwpCiB7CiAgICAgQVNTRVJUKG1fd2ViRmlsZVN5c3RlbSk7CiAgICAgQVNTRVJUKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpOwpAQCAtODksNTcgKzkwLDU3
IEBAIGJvb2wgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OndhaXRGb3JPcGVyYXRpb25U
b0NvbXBsZXRlKCkKIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6bW92ZShj
b25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNy
ZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdE1vdmVU
b01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgs
IG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdE1vdmVUb01haW5UaHJlYWQobV93ZWJGaWxl
U3lzdGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChzb3VyY2VQYXRoKSwgdmlydHVhbFBh
dGhUb0ZpbGVTeXN0ZW1VUkwoZGVzdGluYXRpb25QYXRoKSwgbV9tb2RlRm9yQ3VycmVudE9wZXJh
dGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNvcHkoY29u
c3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFz
c093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVh
dGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RDb3B5VG9N
YWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCBt
X21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RDb3B5VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5
c3RlbSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoc291cmNlUGF0aCksIHZpcnR1YWxQYXRo
VG9GaWxlU3lzdGVtVVJMKGRlc3RpbmF0aW9uUGF0aCksIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRp
b24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZW1vdmUoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2Fs
bGJhY2tzKS0+cG9zdFJlbW92ZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1f
bW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdFJlbW92ZVRvTWFpblRocmVhZChtX3dlYkZpbGVT
eXN0ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBtX21vZGVGb3JDdXJyZW50
T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVt
b3ZlUmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdFJlbW92ZVJlY3Vyc2l2ZWx5VG9NYWluVGhy
ZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7Cisg
ICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0
UmVtb3ZlUmVjdXJzaXZlbHlUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCB2aXJ0dWFsUGF0
aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CiB9CiAK
IHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlYWRNZXRhZGF0YShjb25zdCBT
dHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFj
a3MpLT5wb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwg
bV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKG1f
d2ViRmlsZVN5c3RlbSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG1fbW9kZUZv
ckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFBhc3NP
d25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRl
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0Q3JlYXRlRmls
ZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIGV4Y2x1c2l2ZSwgbV9tb2RlRm9y
Q3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZShjYWxsYmFja3MpLT5wb3N0Q3JlYXRlRmlsZVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0
ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBleGNsdXNpdmUsIG1fbW9kZUZv
ckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpjcmVhdGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBj
cmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RDcmVh
dGVEaXJlY3RvcnlUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBleGNsdXNpdmUs
IG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVh
ZChtX3dlYkZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBleGNs
dXNpdmUsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RGaWxlRXhpc3Rz
VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlRm9yQ3VycmVudE9wZXJh
dGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFj
a3MpLT5wb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHZpcnR1YWxQ
YXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0K
IAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6ZGlyZWN0b3J5RXhpc3RzKGNv
bnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNh
bGxiYWNrcykKIHsKLSAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNh
bGxiYWNrcyktPnBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVt
LCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3REaXJlY3RvcnlFeGlzdHNUb01h
aW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRo
KSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW06OnJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0ZVdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdFJlYWREaXJlY3Rv
cnlUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3Bl
cmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxi
YWNrcyktPnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgdmly
dHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24p
OwogfQogCiBjbGFzcyBXb3JrZXJGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzIDogcHVibGljIEFz
eW5jRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
V29ya2VyRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcz4gY3JlYXRlKEFzeW5jRmlsZVdyaXRlckNs
aWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3RlbSog
d2ViRmlsZVN5c3RlbSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+IGNhbGxiYWNrcywgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxXb3JrZXJGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzPiBjcmVhdGUoQXN5bmNG
aWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViS2l0OjpXZWJG
aWxlU3lzdGVtKiB3ZWJGaWxlU3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzKGNsaWVudCwgcGF0aCwgd2ViRmlsZVN5c3RlbSwgY2FsbGJhY2tzLCB3b3JrZXJD
b250ZXh0KSk7CiAgICAgfQpAQCAtMTg4LDcgKzE4OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgV29ya2VyRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhBc3luY0ZpbGVXcml0
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OldlYkZpbGVTeXN0
ZW0qIHdlYkZpbGVTeXN0ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2Fs
bGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCisgICAgV29y
a2VyRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIHdlYkZpbGVTeXN0
ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAgICAgICAgIDogbV9jbGllbnQoY2xp
ZW50KQogICAgICAgICAsIG1fcGF0aChwYXRoKQogICAgICAgICAsIG1fd2ViRmlsZVN5c3RlbSh3
ZWJGaWxlU3lzdGVtKQpAQCAtMTk4LDcgKzE5OSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAg
QXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBtX2NsaWVudDsKLSAgICBTdHJpbmcgbV9wYXRoOworICAg
IFdlYlVSTCBtX3BhdGg7CiAgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0
ZW07CiAgICAgT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gbV9jYWxs
YmFja3M7CiAgICAgV29ya2VyQ29udGV4dCogbV93b3JrZXJDb250ZXh0OwpAQCAtMjA2LDcgKzIw
Nyw4IEBAIHByaXZhdGU6CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNy
ZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewot
ICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoV29ya2VyRmlsZVdyaXRl
ckhlbHBlckNhbGxiYWNrczo6Y3JlYXRlKGNsaWVudCwgcGF0aCwgbV93ZWJGaWxlU3lzdGVtLCBj
YWxsYmFja3MsIG1fd29ya2VyQ29udGV4dCkpLT5wb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFk
KG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAg
S1VSTCBwYXRoQXNVUkwgPSB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKTsKKyAgICBj
cmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFdvcmtlckZpbGVXcml0ZXJIZWxw
ZXJDYWxsYmFja3M6OmNyZWF0ZShjbGllbnQsIHBhdGhBc1VSTCwgbV93ZWJGaWxlU3lzdGVtLCBj
YWxsYmFja3MsIG1fd29ya2VyQ29udGV4dCkpLT5wb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFk
KG1fd2ViRmlsZVN5c3RlbSwgcGF0aEFzVVJMLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsK
IH0KIAogUGFzc1JlZlB0cjxXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBXb3JrZXJB
c3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZShQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQpAQCAt
MjIwLDYgKzIyMiwxNSBAQCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U+IFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdAogICAgIHJldHVybiBtX2Jy
aWRnZUZvckN1cnJlbnRPcGVyYXRpb247CiB9CiAKK0tVUkwgV29ya2VyQXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW06OnZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmlydHVh
bFBhdGgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2ZpbGVzeXN0ZW1Sb290VVJMLmlzRW1wdHko
KSk7CisgICAgS1VSTCB1cmwgPSBtX2ZpbGVzeXN0ZW1Sb290VVJMOworICAgIC8vIFJlbW92ZSB0
aGUgZXh0cmEgbGVhZGluZyBzbGFzaC4KKyAgICB1cmwuc2V0UGF0aCh1cmwucGF0aCgpICsgdmly
dHVhbFBhdGguc3Vic3RyaW5nKDEpKTsKKyAgICByZXR1cm4gdXJsOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMRV9TWVNURU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0uaAppbmRleCA3ZTMzMTZiMjJjOTMzYTAwMzFkYmIwZTE1N2NiMTgwNTM4Zjc3ZDg1Li5i
NGQxYTA5NDE5MDk5YzdkZTZmZmUwYzZmYTMxZGZlMzc3MDE0ZTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmgKQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJG
aWxlU3lzdGVtOworY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViV29ya2VyQmFzZTsKIGNsYXNzIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U7CiB9CkBAIC01Miw5ICs1Myw5IEBAIGNsYXNz
IFdvcmtlckNvbnRleHQ7CiAKIGNsYXNzIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtIDog
cHVibGljIEFzeW5jRmlsZVN5c3RlbSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
QXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGJvb2wg
c3luY2hyb25vdXMpCisgICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBl
IHR5cGUsIGNvbnN0IFdlYktpdDo6V2ViVVJMJiByb290VVJMLCBib29sIHN5bmNocm9ub3VzKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bShjb250ZXh0LCB0eXBlLCByb290UGF0aCwgc3luY2hyb25vdXMpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShjb250ZXh0
LCB0eXBlLCByb290VVJMLCBzeW5jaHJvbm91cykpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfldv
cmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKCk7CkBAIC03NSwxMCArNzYsMTMgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+KTsKIAogcHJpdmF0ZToKLSAgICBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBjb25zdCBTdHJp
bmcmIHJvb3RQYXRoLCBib29sIHN5bmNocm9ub3VzKTsKKyAgICBXb3JrZXJBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXN5bmNGaWxlU3lzdGVtOjpUeXBl
LCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcm9vdFVSTCwgYm9vbCBzeW5jaHJvbm91cyk7CiAKICAg
ICBQYXNzUmVmUHRyPFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gY3Jl
YXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbUNhbGxiYWNrcz4pOwogCisgICAgLy8gQ29udmVydHMgYSBnaXZlbiBhYnNvbHV0ZSB2aXJ0
dWFsIHBhdGggdG8gYSBmdWxsIG9yaWdpbi1xdWFsaWZpZWQgRmlsZVN5c3RlbSBVUkwuCisgICAg
S1VSTCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIHZpcnR1YWxQYXRo
KSBjb25zdDsKKwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKICAgICBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3RlbTsKICAg
ICBXZWJLaXQ6OldlYldvcmtlckJhc2UqIG1fd29ya2VyOwpAQCAtODYsNiArOTAsNyBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+
IG1fYnJpZGdlRm9yQ3VycmVudE9wZXJhdGlvbjsKICAgICBTdHJpbmcgbV9tb2RlRm9yQ3VycmVu
dE9wZXJhdGlvbjsKICAgICBib29sIG1fc3luY2hyb25vdXM7CisgICAgS1VSTCBtX2ZpbGVzeXN0
ZW1Sb290VVJMOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21p
dW0uY3BwCmluZGV4IDBkMGFjOGJjMTI2NTQzZDRiYzE5MGU1ZGEwNTkzNjdkNDg4YmY2NzIuLmYz
NGViM2NmMWVlYjBlYWRlMWQ1ODE2NjhlZTIwYjczM2M3ZTY0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6V29ya2Vy
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0LCBBc3luY0ZpbGVX
cml0ZXJDbGllbnQqIGNsaWVudCwgV3JpdGVyVHlwZSB0eXBlKQorV29ya2VyQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW06OldvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtKFdlYkZpbGVTeXN0ZW0q
IHdlYkZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0aCwgV29ya2VyQ29udGV4dCogd29ya2Vy
Q29udGV4dCwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIFdyaXRlclR5cGUgdHlwZSkK
ICAgICA6IG1fdHlwZSh0eXBlKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gQXN5bmNocm9ub3Vz
KTsgLy8gU3luY2hyb25vdXMgaXMgbm90IGltcGxlbWVudGVkIHlldC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1
bS5oCmluZGV4IDAxMDU4YzM4NjhmOGFhMDMyZmVhZDY0ZWVhMjkwMDk1ZmExZjMzMzMuLmY4NzI5
ODA4ZmMyNGRkZDQyNzhiNjNjODE1MzAzMzg2NWZjY2YwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0u
aApAQCAtMzksNiArMzksNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgY2xhc3MgV2ViRmls
ZVN5c3RlbTsKICAgICBjbGFzcyBXZWJGaWxlV3JpdGVyOworICAgIGNsYXNzIFdlYlVSTDsKICAg
ICBjbGFzcyBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOwogfQogCkBAIC02MSw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgU3luY2hyb25vdXMsCiAgICAgfTsKIAotICAgIHN0YXRp
YyBQYXNzT3duUHRyPFdvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtPiBjcmVhdGUoV2ViS2l0
OjpXZWJGaWxlU3lzdGVtKiB3ZWJGaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdvcmtl
ckNvbnRleHQqIHdvcmtlckNvbnRleHQsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBX
cml0ZXJUeXBlIHR5cGUpCisgICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0+IGNyZWF0ZShXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIHdlYkZpbGVTeXN0ZW0s
IGNvbnN0IFdlYktpdDo6V2ViVVJMJiBwYXRoLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0
LCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgV3JpdGVyVHlwZSB0eXBlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1
bSh3ZWJGaWxlU3lzdGVtLCBwYXRoLCB3b3JrZXJDb250ZXh0LCBjbGllbnQsIHR5cGUpKTsKICAg
ICB9CkBAIC03Niw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKIAotICAgIFdvcmtlckFz
eW5jRmlsZVdyaXRlckNocm9taXVtKFdlYktpdDo6V2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgV29ya2VyQ29udGV4dCosIEFzeW5jRmlsZVdyaXRlckNsaWVudCosIFdyaXRlclR5
cGUpOworICAgIFdvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtKFdlYktpdDo6V2ViRmlsZVN5
c3RlbSosIGNvbnN0IFdlYktpdDo6V2ViVVJMJiBwYXRoLCBXb3JrZXJDb250ZXh0KiwgQXN5bmNG
aWxlV3JpdGVyQ2xpZW50KiwgV3JpdGVyVHlwZSk7CiAgICAgUmVmUHRyPFdlYktpdDo6V29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZT4gbV9icmlkZ2U7CiAgICAgV3JpdGVyVHlwZSBtX3R5
cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRleCBmYjVkZDY4MWI1ZTY0YTNl
MWZlYmJkNTg2NDRhMzljMGM1MmMxYzFhLi45OGFmZDRkM2ZhMTg0Y2E3ZDFhODVkZjQyMjc0ZGEx
MTczNTcyYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcApAQCAtMzksNiArMzksNyBA
QAogI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1DYWxsYmFja3MuaCIKICNpbmNsdWRlICJXZWJGaWxl
U3lzdGVtRW50cnkuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwu
aCIKICNpbmNsdWRlICJXZWJXb3JrZXJCYXNlLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5o
IgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKQEAgLTc3LDYgKzc4LDE0IEBA
IHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdl
YktpdDo6V2ViVmVjdG9yPFdlYktpdDo6CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2ViS2l0OjpXZWJVUkw+IHsKKyAg
ICB0eXBlZGVmIFdlYktpdDo6V2ViVVJMIFR5cGU7CisgICAgc3RhdGljIFR5cGUgY29weShjb25z
dCBXZWJLaXQ6OldlYlVSTCYgdXJsKQorICAgIHsKKyAgICAgIHJldHVybiBXZWJLaXQ6OldlYlVS
TCh1cmwpOworICAgIH0KK307CisKIH0KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC05
Nyw5ICsxMDYsOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
cGF0aCkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5n
JiBuYW1lLCBjb25zdCBXZWJVUkwmIHJvb3RVUkwpCiAgICAgewotICAgICAgICBtX2JyaWRnZS0+
ZGlkT3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQobmFtZSwgcGF0aCwgbV9tb2RlKTsKKyAgICAg
ICAgbV9icmlkZ2UtPmRpZE9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKG5hbWUsIHJvb3RVUkws
IG1fbW9kZSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KIApAQCAtMTYxLDcgKzE3MCw3
IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE9wZW5GaWxlU3lz
dGVtVG9NYWluVGhyZWFkKFdlYkNvbW1vbldvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3Rl
bSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlOjpwb3N0TW92ZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBXZWJVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdGluYXRp
b25QYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJm1vdmVPbk1haW5UaHJlYWQsCkBAIC0x
NjksNyArMTc4LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
TW92ZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3kKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q29weVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVT
eXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgc291cmNlUGF0aCwgY29uc3QgV2ViVVJM
JiBkZXN0aW5hdGlvblBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY29weU9uTWFpblRo
cmVhZCwKQEAgLTE3Nyw3ICsxODYsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OnBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkp
OwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVU
b01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OnBvc3RSZW1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29u
c3QgV2ViVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVT
eXN0ZW0pOwogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKQEAgLTE4Niw3ICsxOTUsNyBA
QCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVUb01haW5U
aHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92
ZVJlY3Vyc2l2ZWx5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IFdlYlVSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lz
dGVtKTsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0xOTUsNyArMjA0LDcgQEAg
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJzaXZl
bHlUb01haW5UaHJlYWQoV2ViRmlsZVMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKFdlYkZpbGVT
eXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2Rl
KQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZE1ldGFkYXRh
VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0
aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKICAgICBk
aXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0yMDQsNyArMjEzLDcgQEAgdm9pZCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKFdl
YkZpbGVTeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlOjpwb3N0Q3JlYXRlRmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1v
ZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVGaWxl
VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmY3JlYXRlRmlsZU9u
TWFpblRocmVhZCwKQEAgLTIxMiw3ICsyMjEsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBt
b2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENy
ZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lk
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVEaXJlY3RvcnlUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBi
b29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lz
dGVtKTsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0yMjEsNyArMjMwLDcgQEAg
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5
VG9NYWluVGhyZWFkKFdlYkZpbGVTeXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lz
dGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkK
K3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdEZpbGVFeGlzdHNUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwogICAgIGRpc3Bh
dGNoVGFza1RvTWFpblRocmVhZCgKQEAgLTIzMCw3ICsyMzksNyBAQCB2b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVT
eXN0ZW0qCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lz
dGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVh
ZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7CiAgICAgZGlzcGF0Y2hUYXNr
VG9NYWluVGhyZWFkKApAQCAtMjM5LDcgKzI0OCw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZTo6cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lz
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMp
LCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9z
dFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVT
eXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2Rl
KQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJl
YWQoCkBAIC0yNTcsNTIgKzI2Niw1MiBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbgogICAgIH0K
IH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjptb3ZlT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25QYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0
cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6bW92ZU9u
TWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBXZWJVUkwmIGRl
c3RpbmF0aW9uUGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBj
b25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+bW92ZShzb3VyY2VQYXRoLCBk
ZXN0aW5hdGlvblBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFr
ZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6Y29weU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OmNvcHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgc291cmNl
UGF0aCwgY29uc3QgV2ViVVJMJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZpbGVTeXN0
ZW0tPmNvcHkoc291cmNlUGF0aCwgZGVzdGluYXRpb25QYXRoLCBNYWluVGhyZWFkRmlsZVN5c3Rl
bUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlbW92ZU9uTWFpblRocmVhZChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2Us
IGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6cmVtb3ZlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAg
IGZpbGVTeXN0ZW0tPnJlbW92ZShwYXRoLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6
Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwg
Y29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpyZW1vdmVSZWN1cnNpdmVseU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShwYXRoLCBNYWluVGhyZWFk
RmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQog
Ci12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlYWRNZXRhZGF0YU9uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJV
UkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3Qg
U3RyaW5nJiBtb2RlKQogewogICAgIGZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwYXRoLCBNYWlu
VGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkp
OwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZUZpbGVP
bk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQor
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVGaWxlT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBm
aWxlU3lzdGVtLT5jcmVhdGVGaWxlKHBhdGgsIGV4Y2x1c2l2ZSwgTWFpblRocmVhZEZpbGVTeXN0
ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJl
YWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJlYWQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0sIGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZpbGVT
eXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwYXRoLCBleGNsdXNpdmUsIE1haW5UaHJlYWRGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZvaWQg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZmlsZUV4aXN0c09uTWFpblRocmVhZChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBi
cmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6ZmlsZUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKIHsKICAgICBmaWxlU3lzdGVtLT5maWxlRXhpc3RzKHBhdGgsIE1haW5UaHJlYWRGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZvaWQg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVS
TCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBT
dHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBhdGgsIE1h
aW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2Rl
KSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZERpcmVj
dG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwg
Y29uc3QgV2ViVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlk
Z2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZWFkRGlyZWN0b3J5
KHBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJp
ZGdlLCBtb2RlKSk7CiB9CkBAIC0zMTIsMTAgKzMyMSwxMCBAQCB2b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWxPbk1haW5UaHJlYWQoV2ViRmlsZUVycm9yIGVycm9y
LCBjbwogICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRGYWls
T25Xb3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGVycm9yKSwgbW9k
ZSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkT3BlbkZp
bGVTeXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJv
b3RQYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2U6OmRpZE9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViVVJMJiByb290VVJMLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgbWF5
UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZE9wZW5GaWxlU3lzdGVtT25X
b3JrZXJUaHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbmFtZSwgcm9vdFBhdGgpLCBtb2RlKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpLCBuYW1lLCByb290VVJMKSwgbW9kZSk7CiB9CiAKIHZvaWQgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkU3VjY2VlZE9uTWFpblRocmVhZChjb25zdCBTdHJp
bmcmIG1vZGUpCkBAIC0zNTQsOSArMzYzLDkgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpkaWRGYWlsT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGUKICAg
ICBicmlkZ2UtPm1fY2FsbGJhY2tzT25Xb3JrZXJUaHJlYWQtPmRpZEZhaWwoZXJyb3IpOwogfQog
Ci12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZE9wZW5GaWxlU3lzdGVt
T25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHJvb3RQYXRoKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRPcGVu
RmlsZVN5c3RlbU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgV2ViVVJMJiByb290VVJMKQogewotICAgIGJyaWRnZS0+bV9jYWxsYmFja3NPbldvcmtlclRo
cmVhZC0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgcm9vdFBhdGgpOworICAgIGJyaWRnZS0+bV9j
YWxsYmFja3NPbldvcmtlclRocmVhZC0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgcm9vdFVSTCk7
CiB9CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkU3VjY2VlZE9u
V29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKiBicmlkZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKaW5kZXggNWFmODUy
OWY3ZGIxY2UyOTcwYmFjOTE1NzRmYWMxZmMxNDg0ODVlNy4uNWQ0MjZhMGNhMTEyNzNkYmRkN2Qx
OTYzZmE0ZDZlMzljNjJhMDBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaApAQCAtNTAsNiAr
NTAsNyBAQCBjbGFzcyBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczsKIGNsYXNzIFRocmVh
ZGFibGVDYWxsYmFja3NCcmlkZ2VXcmFwcGVyOwogY2xhc3MgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OwogY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrczsKK2NsYXNzIFdlYlVSTDsKIGNsYXNzIFdl
YldvcmtlckJhc2U7CiBzdHJ1Y3QgV2ViRmlsZUluZm87CiBzdHJ1Y3QgV2ViRmlsZVN5c3RlbUVu
dHJ5OwpAQCAtODUsMjAgKzg2LDIwIEBAIHB1YmxpYzoKIAogICAgIC8vIE1ldGhvZHMgdGhhdCBj
cmVhdGUgYW4gaW5zdGFuY2UgYW5kIHBvc3QgYW4gaW5pdGlhbCByZXF1ZXN0IHRhc2sgdG8gdGhl
IG1haW4gdGhyZWFkLiBUaGV5IG11c3QgYmUgY2FsbGVkIG9uIHRoZSB3b3JrZXIgdGhyZWFkLgog
ICAgIHZvaWQgcG9zdE9wZW5GaWxlU3lzdGVtVG9NYWluVGhyZWFkKFdlYkNvbW1vbldvcmtlckNs
aWVudCosIFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwg
Y29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICB2b2lkIHBvc3RNb3ZlVG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHNyY1BhdGgsIGNvbnN0IFN0cmluZyYgZGVzdFBhdGgs
IGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0Q29weVRvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RQYXRo
LCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHZvaWQgcG9zdFJlbW92ZVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwot
ICAgIHZvaWQgcG9zdFJlbW92ZVJlY3Vyc2l2ZWx5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0q
LCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0
UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0Q3JlYXRlRmlsZVRvTWFpblRo
cmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwg
Y29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICB2b2lkIHBvc3RDcmVhdGVEaXJlY3RvcnlUb01haW5U
aHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUs
IGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVh
ZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUp
OwotICAgIHZvaWQgcG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVt
KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHZvaWQgcG9z
dFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3RNb3ZlVG9NYWluVGhyZWFk
KFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYlVSTCYgZGVz
dFBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0Q29weVRvTWFpblRocmVh
ZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBzcmNQYXRoLCBjb25zdCBXZWJVUkwmIGRl
c3RQYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZvaWQgcG9zdFJlbW92ZVRvTWFpblRo
cmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOworICAgIHZvaWQgcG9zdFJlbW92ZVJlY3Vyc2l2ZWx5VG9NYWluVGhyZWFkKFdlYkZpbGVT
eXN0ZW0qLCBjb25zdCBXZWJVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9p
ZCBwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJV
UkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0Q3JlYXRlRmlsZVRv
TWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBib29sIGV4Y2x1
c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3RDcmVhdGVEaXJlY3RvcnlU
b01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNs
dXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0RmlsZUV4aXN0c1RvTWFp
blRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcm
IG1vZGUpOworICAgIHZvaWQgcG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxl
U3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZv
aWQgcG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdl
YlVSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKIAogICAgIC8vIENhbGxiYWNrIG1ldGhv
ZHMgdGhhdCBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGRpZEZhaWxP
bk1haW5UaHJlYWQoV2ViRmlsZUVycm9yLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgIHZvaWQg
ZGlkT3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHJvb3RQYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZvaWQgZGlkT3BlbkZp
bGVTeXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJVUkwmIHJv
b3RVUkwsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBkaWRTdWNjZWVkT25NYWluVGhy
ZWFkKGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBkaWRSZWFkTWV0YWRhdGFPbk1haW5U
aHJlYWQoY29uc3QgV2ViRmlsZUluZm8mLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgIHZvaWQg
ZGlkUmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5c3Rl
bUVudHJ5PiYsIGJvb2wgaGFzTW9yZSwgY29uc3QgU3RyaW5nJiBtb2RlKTsKQEAgLTEwOCwyMiAr
MTA5LDIyIEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXRob2RzIHRoYXQgYXJlIHRvIGJlIGNhbGxl
ZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgc3RhdGljIHZvaWQgb3BlbkZpbGVTeXN0ZW1Pbk1h
aW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvbW1vbldvcmtl
ckNsaWVudCosIFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7
Ci0gICAgc3RhdGljIHZvaWQgbW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgc3JjUGF0aCwgY29uc3Qg
U3RyaW5nJiBkZXN0UGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0
IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgY29weU9uTWFpblRocmVhZChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYg
c3JjUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0UGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlT25N
YWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVt
KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwg
Y29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVSZWN1cnNpdmVseU9u
TWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSosIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSos
IGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVhZE1ldGFkYXRhT25NYWlu
VGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29u
c3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVGaWxlT25NYWluVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgY3JlYXRlRGlyZWN0
b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZv
aWQgZmlsZUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgZGly
ZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCByZWFk
RGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBtb3ZlT25N
YWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVt
KiwgY29uc3QgV2ViVVJMJiBzcmNQYXRoLCBjb25zdCBXZWJVUkwmIGRlc3RQYXRoLCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0
aWMgdm9pZCBjb3B5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBzcmNQYXRoLCBjb25zdCBXZWJVUkwmIGRl
c3RQYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBt
b2RlKTsKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHBhdGgsIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAg
IHN0YXRpYyB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAg
ICBzdGF0aWMgdm9pZCByZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHBhdGgsIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0
YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHBhdGgsIGJvb2wgZXhjbHVz
aXZlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2Rl
KTsKKyAgICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJlYWQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHBh
dGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29u
c3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3RzT25NYWluVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
V2ViVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3Ry
aW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBX
ZWJVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJp
bmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIHJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJV
UkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcm
IG1vZGUpOwogCiAgICAgZnJpZW5kIGNsYXNzIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tz
OwogCiAgICAgLy8gTWV0aG9kcyB0aGF0IGRpc3BhdGNoIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3Mg
b24gdGhlIHdvcmtlciB0aHJlYWRzLgogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxPbldvcmtlclRo
cmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSosIFdlYkZpbGVFcnJvcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkT3BlbkZp
bGVTeXN0ZW1PbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiByb290UGF0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW1P
bldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViVVJM
JiByb290UGF0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkU3VjY2VlZE9uV29ya2VyVGhyZWFkKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVhZE1ldGFkYXRhT25Xb3JrZXJUaHJlYWQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UqLCBjb25zdCBXZWJGaWxlSW5mbyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlYWRE
aXJlY3RvcnlPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxl
U3lzdGVtRW50cnk+JiwgYm9vbCBoYXNNb3JlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHAK
aW5kZXggMTI3ODNjNWZhZjViOGRmZjNhZGRlNGE5OWM0YzNhMzYwZmIxNTdiMS4uNGQ0NGJlYWI4
M2U1ODljZDI1MmM5YjYxNDU5YTY0MTgwZTVjYzc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRn
ZS5jcHAKQEAgLTQ5LDYgKzQ5LDE4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIFdlYktpdDo6V2ViVVJMPiB7CisgICAgdHlwZWRlZiBXZWJLaXQ6
OldlYlVSTCBUeXBlOworICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgV2ViS2l0OjpXZWJVUkwm
IHVybCkKKyAgICB7CisgICAgICByZXR1cm4gV2ViS2l0OjpXZWJVUkwodXJsKTsKKyAgICB9Cit9
OworCit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2U6Om5vdGlmeVN0b3AoKQpAQCAtMTAxLDcgKzExMyw3IEBAIHZvaWQgV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6YWJvcnRPbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosCiAgICAgYnJpZGdlLT5tX3dyaXRlci0+Y2FuY2VsKCk7CiB9CiAKLXZvaWQg
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6aW5pdE9uTWFpblRocmVhZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJp
ZGdlPiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgcGF0aCkKK3ZvaWQgV29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZTo6aW5pdE9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIGNvbnN0
IFdlYlVSTCYgcGF0aCkKIHsKICAgICBBU1NFUlQoIWJyaWRnZS0+bV93cml0ZXIpOwogICAgIGJy
aWRnZS0+bV93cml0ZXIgPSBhZG9wdFB0cih3ZWJLaXRDbGllbnQoKS0+ZmlsZVN5c3RlbSgpLT5j
cmVhdGVGaWxlV3JpdGVyKHBhdGgsIGJyaWRnZS5nZXQoKSkpOwpAQCAtMTMwLDcgKzE0Miw3IEBA
IHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkVHJ1bmNhdGUoKQogCiBz
dGF0aWMgY29uc3QgY2hhciBmaWxlV3JpdGVyT3BlcmF0aW9uc01vZGVbXSA9ICJmaWxlV3JpdGVy
T3BlcmF0aW9uc01vZGUiOwogCi1Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpXb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyTG9h
ZGVyUHJveHkqIHByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKK1dvcmtlckZpbGVXcml0ZXJD
YWxsYmFja3NCcmlkZ2U6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UoY29uc3QgV2Vi
VVJMJiBwYXRoLCBXb3JrZXJMb2FkZXJQcm94eSogcHJveHksIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50
KQogICAgIDogV29ya2VyQ29udGV4dDo6T2JzZXJ2ZXIoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4
dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKQogICAgICwgbV9wcm94eShwcm94eSkKICAgICAs
IG1fd29ya2VyQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KQpAQCAtMTQ0LDcgKzE1Niw3
IEBAIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OldvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2UoY29uc3QgU3RyaW5nJiBwCiAgICAgcG9zdEluaXRUb01haW5UaHJlYWQocGF0
aCk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdEluaXRU
b01haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBwYXRoKQordm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0SW5pdFRvTWFpblRocmVhZChjb25zdCBXZWJVUkwmIHBhdGgpCiB7
CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rh
c2soJmluaXRPbk1haW5UaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIHBhdGgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0
ZXJDYWxsYmFja3NCcmlkZ2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZp
bGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuaAppbmRleCA3ZTk3OTVlOGI0NDViNTkzOTA4YTkxZWFk
ZjA0NTkwNGIyZjFkNmY2Li5hNzFjZGYxY2U4YmU0MWE5MjcxODEzNWJiOTQ0ZjM2N2E2NzNkYWNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVy
Q2FsbGJhY2tzQnJpZGdlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdlYkZpbGVXcml0ZXI7CiBjbGFz
cyBXZWJGaWxlV3JpdGVyQ2xpZW50OworY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViV29ya2VyQmFz
ZTsKIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgbWVjaGFuaXNtIHRvIGJyaWRnZSBjYWxs
cyBiZXR3ZWVuIHRocmVhZHMuCkBAIC04Niw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBXb3Jr
ZXJDb250ZXh0OjpPYnNlcnZlciBtZXRob2QuCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN0b3Ao
KTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlk
Z2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5
KiBwcm94eSwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogd29ya2VyQ29udGV4dCwg
V2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZT4gY3JlYXRlKGNvbnN0IFdlYlVS
TCYgcGF0aCwgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHByb3h5LCBXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiB3b3JrZXJDb250ZXh0LCBXZWJDb3JlOjpBc3luY0ZpbGVXcml0
ZXJDbGllbnQqIGNsaWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV29y
a2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZShwYXRoLCBwcm94eSwgd29ya2VyQ29udGV4dCwg
Y2xpZW50KSk7CiAgICAgfQpAQCAtMTEwLDE1ICsxMTEsMTUgQEAgcHVibGljOgogICAgIGJvb2wg
d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKLSAgICBXb3JrZXJGaWxl
V3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6V29ya2Vy
TG9hZGVyUHJveHkqLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6
QXN5bmNGaWxlV3JpdGVyQ2xpZW50Kik7CisgICAgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0Jy
aWRnZShjb25zdCBXZWJVUkwmIHBhdGgsIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5KiwgV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlckNs
aWVudCopOwogCi0gICAgdm9pZCBwb3N0SW5pdFRvTWFpblRocmVhZChjb25zdCBTdHJpbmcmIHBh
dGgpOworICAgIHZvaWQgcG9zdEluaXRUb01haW5UaHJlYWQoY29uc3QgV2ViVVJMJiBwYXRoKTsK
IAogICAgIC8vIE1ldGhvZHMgdGhhdCBhcmUgdG8gYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVh
ZC4KICAgICBzdGF0aWMgdm9pZCB3cml0ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdl
PiwgbG9uZyBsb25nIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBkYXRhKTsKICAgICBz
dGF0aWMgdm9pZCB0cnVuY2F0ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiwgbG9u
ZyBsb25nIGxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgYWJvcnRPbk1haW5UaHJlYWQoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZT4pOwotICAgIHN0YXRpYyB2b2lkIGluaXRPbk1haW5UaHJlYWQoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZT4sIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgc3RhdGljIHZvaWQgaW5p
dE9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0
cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgV2ViVVJMJiBwYXRoKTsK
ICAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bk9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdl
Pik7CiAKICAgICAvLyBNZXRob2RzIHRoYXQgZGlzcGF0Y2ggdG8gQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50IG9uIHRoZSB3b3JrZXIgdGhyZWFkcy4K
</data>
<flag name="review"
          id="86334"
          type_id="1"
          status="-"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="86342"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95829</attachid>
            <date>2011-06-02 16:08:32 -0700</date>
            <delta_ts>2011-06-13 18:16:03 -0700</delta_ts>
            <desc>Patch rolling in code review feedback.</desc>
            <filename>new_patch.diff</filename>
            <type>text/plain</type>
            <size>80315</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxYmQxODY4Li4zYTBmYTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDYtMDIgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBmaWxl
c3lzdGVtIGJhc2UgcGF0aCBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjAyMTgKKworICAgICAgICBDaGFuZ2UgYSBidW5jaCBvZiB1cmwtaGVs
ZC1pbi1hLXN0cmluZyBwYXJhbWV0ZXJzIGludG8gcmVhbCBLVVJMUyBhbmQKKyAgICAgICAgV2Vi
VVJMcy4KKworICAgICAgICBObyBuZXcgdGVzdHMtLW5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5
LgorCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpET01G
aWxlU3lzdGVtOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1C
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRNZXRhZGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6bW92ZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01GaWxlU3lzdGVtQmFzZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW1CYXNlOjpyZW1vdmVSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtQmFzZTo6Z2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNl
OjpnZXRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXREaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3Rv
cnkpOgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZVdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0v
QXN5bmNGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTo6
b3BlbkZpbGVTeXN0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtOjpBc3luY0ZpbGVTeXN0ZW0pOgorCiAy
MDExLTA2LTAxICBDYXJ5IENsYXJrICA8Y2FyeWNsYXJrQGdvb2dsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkBAIC00ODksMjAgKzUyMiw2IEBACiAgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubk1hdGhVdGlscy5jcHA6CiAgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwOgogCi08PDw8PDw8IC5taW5lCi0y
MDExLTA1LTMxICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KLQotICAgICAg
ICBSZXZpZXdlZCBieSBTdGVwaGVuIFdoaXRlLgotCi0gICAgICAgIFtDaHJvbWl1bV0gQnVpbGQg
ZmFpbHMgd2hlbiBBQ0NFTEVSQVRFRF8yRF9DQU5WQVMgaXMgZGlzYWJsZWQKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNzkwCi0gICAgICAgIENoYW5n
aW5nIHRoZSBidWlsZCBndWFyZHMgaW4gdGhlc2UgdHdvIGZpbGVzIHRoYXQgYXJlIHJlcXVpcmVk
Ci0gICAgICAgIGJ5IHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBmZWF0dXJlLgotCi0gICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubk1hdGhVdGlscy5jcHA6Ci0gICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RpbGluZ0RhdGEuY3BwOgotCi09PT09PT09CiAy
MDExLTA1LTMxICBSb2IgQnVpcyAgPHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGlyayBTY2h1bHplLgpAQCAtODc3LDcgKzg5Niw2IEBACiAgICAgICAgIChXZWJDb3JlOjpp
c1NjaGVtZUNoYXIpOgogICAgICAgICBJbmNsdWRlICcrJyBpbiB0aGUgbGlzdCBvZiB2YWxpZCBj
aGFyYWN0ZXJzLgogCi0+Pj4+Pj4+IC5yODc3NzgKIDIwMTEtMDUtMzAgIEFuZHJleSBQZXRyb3Yg
IDxhbmRyZXkucGV0cm92QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUg
TW9yaXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggNzM0
MmFjZC4uNTEyNjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
CkBAIC0xMDUsNDMgKzEwNSwzNyBAQCB2b2lkIERPTUZpbGVTeXN0ZW06OmNyZWF0ZVdyaXRlcihj
b25zdCBGaWxlRW50cnkqIGZpbGVFbnRyeSwgUGFzc1JlZlB0cjxGaWxlV3JpdAogewogICAgIEFT
U0VSVChmaWxlRW50cnkpOwogCi0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxl
U3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5LT5mdWxsUGF0aCgpKTsKLQog
ICAgIFJlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyID0gRmlsZVdyaXRlcjo6Y3JlYXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgUmVmUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJh
Y2s+IGNvbnZlcnNpb25DYWxsYmFjayA9IENvbnZlcnRUb0ZpbGVXcml0ZXJDYWxsYmFjazo6Y3Jl
YXRlKHN1Y2Nlc3NDYWxsYmFjayk7CiAgICAgT3duUHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tz
PiBjYWxsYmFja3MgPSBGaWxlV3JpdGVyQmFzZUNhbGxiYWNrczo6Y3JlYXRlKGZpbGVXcml0ZXIs
IGNvbnZlcnNpb25DYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0
ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgpLCBwbGF0Zm9ybVBhdGgsIGNhbGxiYWNr
cy5yZWxlYXNlKCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0ZXIoZmlsZVdy
aXRlci5nZXQoKSwgZmlsZUVudHJ5LT5mdWxsUGF0aCgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsK
IH0KIAogbmFtZXNwYWNlIHsKIAogY2xhc3MgR2V0UGF0aENhbGxiYWNrIDogcHVibGljIEZpbGVT
eXN0ZW1DYWxsYmFja3NCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxHZXRQ
YXRoQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0s
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEZpbGVD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCisgICAgc3RhdGljIFBhc3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBjcmVhdGUo
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgR2V0UGF0aENhbGxiYWNrKGZpbGVzeXN0ZW0sIHBhdGgsIG5hbWUsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdldFBh
dGhDYWxsYmFjayhmaWxlc3lzdGVtLCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJh
Y2spKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZE1ldGFkYXRhKGNvbnN0IEZp
bGVNZXRhZGF0YSYgbWV0YWRhdGEpCiAgICAgewotICAgICAgICBpZiAoIW1ldGFkYXRhLnBsYXRm
b3JtUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3BhdGggPSBtZXRhZGF0YS5wbGF0Zm9y
bVBhdGg7Ci0KLSAgICAgICAgbV9maWxlc3lzdGVtLT5zY2hlZHVsZUNhbGxiYWNrKG1fc3VjY2Vz
c0NhbGxiYWNrLnJlbGVhc2UoKSwgRmlsZTo6Y3JlYXRlV2l0aE5hbWUobV9wYXRoLCBtX25hbWUp
KTsKKyAgICAgICAgQVNTRVJUKCFtZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKTsKKyAg
ICAgICAgbV9maWxlc3lzdGVtLT5zY2hlZHVsZUNhbGxiYWNrKG1fc3VjY2Vzc0NhbGxiYWNrLnJl
bGVhc2UoKSwgRmlsZTo6Y3JlYXRlV2l0aE5hbWUobWV0YWRhdGEucGxhdGZvcm1QYXRoLCBtX25h
bWUpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgR2V0UGF0aENhbGxiYWNrKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKKyAgICBHZXRQYXRoQ2FsbGJhY2so
UGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIG5hbWUs
ICBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVy
cm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgICAgIDogRmlsZVN5c3RlbUNhbGxiYWNr
c0Jhc2UoZXJyb3JDYWxsYmFjaykKICAgICAgICAgLCBtX2ZpbGVzeXN0ZW0oZmlsZXN5c3RlbSkK
LSAgICAgICAgLCBtX3BhdGgocGF0aCkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAg
LCBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCiAgICAgewogICAgIH0KIAogICAg
IFJlZlB0cjxET01GaWxlU3lzdGVtPiBtX2ZpbGVzeXN0ZW07Ci0gICAgU3RyaW5nIG1fcGF0aDsK
ICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZlB0cjxGaWxlQ2FsbGJhY2s+IG1fc3VjY2Vzc0Nh
bGxiYWNrOwogfTsKQEAgLTE1MCw5ICsxNDQsNyBAQCBwcml2YXRlOgogCiB2b2lkIERPTUZpbGVT
eXN0ZW06OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnksIFBhc3NSZWZQdHI8
RmlsZUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4g
ZXJyb3JDYWxsYmFjaykKIHsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVT
eXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQYXRoKCkpOwotCi0g
ICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBhdGgsIEdldFBhdGhD
YWxsYmFjazo6Y3JlYXRlKHRoaXMsIHBsYXRmb3JtUGF0aCwgZmlsZUVudHJ5LT5uYW1lKCksIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5y
ZWFkTWV0YWRhdGEoZmlsZUVudHJ5LT5mdWxsUGF0aCgpLCBHZXRQYXRoQ2FsbGJhY2s6OmNyZWF0
ZSh0aGlzLCBmaWxlRW50cnktPm5hbWUoKSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKaW5kZXggYzQ0ZDEzNi4uNjhhMDBhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKQEAgLTEwNSw4ICsxMDUs
NyBAQCBTZWN1cml0eU9yaWdpbiogRE9NRmlsZVN5c3RlbUJhc2U6OnNlY3VyaXR5T3JpZ2luKCkg
Y29uc3QKIAogYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0TWV0YWRhdGEoY29uc3QgRW50cnlC
YXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBTdHJpbmcg
cGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChl
bnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShw
bGF0Zm9ybVBhdGgsIE1ldGFkYXRhQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShlbnRy
eS0+ZnVsbFBhdGgoKSwgTWV0YWRhdGFDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTU2LDkgKzE1NSw3
IEBAIGJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6Om1vdmUoY29uc3QgRW50cnlCYXNlKiBzb3VyY2Us
IEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTCiAgICAgaWYgKCF2ZXJpZnlBbmRHZXREZXN0aW5h
dGlvblBhdGhGb3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFyZW50LCBuZXdOYW1lLCBkZXN0aW5hdGlv
blBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgc291cmNlUGxhdGZv
cm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChzb3VyY2Ut
PmZ1bGxQYXRoKCkpOwotICAgIFN0cmluZyBkZXN0aW5hdGlvblBsYXRmb3JtUGF0aCA9IHBhcmVu
dC0+ZmlsZXN5c3RlbSgpLT5hc3luY0ZpbGVTeXN0ZW0oKS0+dmlydHVhbFRvUGxhdGZvcm1QYXRo
KGRlc3RpbmF0aW9uUGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPm1vdmUoc291cmNlUGxh
dGZvcm1QYXRoLCBkZXN0aW5hdGlvblBsYXRmb3JtUGF0aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0
ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGRlc3RpbmF0aW9uUGF0aCwg
c291cmNlLT5pc0RpcmVjdG9yeSgpKSk7CisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPm1vdmUoc291
cmNlLT5mdWxsUGF0aCgpLCBkZXN0aW5hdGlvblBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBkZXN0aW5hdGlvblBhdGgsIHNv
dXJjZS0+aXNEaXJlY3RvcnkoKSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNjgsOSAr
MTY1LDcgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Y29weShjb25zdCBFbnRyeUJhc2UqIHNv
dXJjZSwgRW50cnlCYXNlKiBwYXJlbnQsIGNvbnN0IFMKICAgICBpZiAoIXZlcmlmeUFuZEdldERl
c3RpbmF0aW9uUGF0aEZvckNvcHlPck1vdmUoc291cmNlLCBwYXJlbnQsIG5ld05hbWUsIGRlc3Rp
bmF0aW9uUGF0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBzb3VyY2VQ
bGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHNv
dXJjZS0+ZnVsbFBhdGgoKSk7Ci0gICAgU3RyaW5nIGRlc3RpbmF0aW9uUGxhdGZvcm1QYXRoID0g
cGFyZW50LT5maWxlc3lzdGVtKCktPmFzeW5jRmlsZVN5c3RlbSgpLT52aXJ0dWFsVG9QbGF0Zm9y
bVBhdGgoZGVzdGluYXRpb25QYXRoKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y29weShzb3Vy
Y2VQbGF0Zm9ybVBhdGgsIGRlc3RpbmF0aW9uUGxhdGZvcm1QYXRoLCBFbnRyeUNhbGxiYWNrczo6
Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgZGVzdGluYXRpb25Q
YXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5KCkpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y29w
eShzb3VyY2UtPmZ1bGxQYXRoKCksIGRlc3RpbmF0aW9uUGF0aCwgRW50cnlDYWxsYmFja3M6OmNy
ZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGRlc3RpbmF0aW9uUGF0
aCwgc291cmNlLT5pc0RpcmVjdG9yeSgpKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE4
MCw4ICsxNzUsNyBAQCBib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmUoY29uc3QgRW50cnlC
YXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+CiAgICAgLy8gV2UgZG9uJ3QgYWxs
b3cgY2FsbGluZyByZW1vdmUoKSBvbiB0aGUgcm9vdCBkaXJlY3RvcnkuCiAgICAgaWYgKGVudHJ5
LT5mdWxsUGF0aCgpID09IFN0cmluZyhET01GaWxlUGF0aDo6cm9vdCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZp
cnR1YWxUb1BsYXRmb3JtUGF0aChlbnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgbV9hc3luY0ZpbGVT
eXN0ZW0tPnJlbW92ZShwbGF0Zm9ybVBhdGgsIFZvaWRDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVtb3Zl
KGVudHJ5LT5mdWxsUGF0aCgpLCBWb2lkQ2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE5MSw4ICsxODUs
NyBAQCBib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpyZW1vdmVSZWN1cnNpdmVseShjb25zdCBFbnRy
eUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPFZvaQogICAgIC8vIFdlIGRvbid0IGFsbG93IGNhbGxp
bmcgcmVtb3ZlKCkgb24gdGhlIHJvb3QgZGlyZWN0b3J5LgogICAgIGlmIChlbnRyeS0+ZnVsbFBh
dGgoKSA9PSBTdHJpbmcoRE9NRmlsZVBhdGg6OnJvb3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9Q
bGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5y
ZW1vdmVSZWN1cnNpdmVseShwbGF0Zm9ybVBhdGgsIFZvaWRDYWxsYmFja3M6OmNyZWF0ZShzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVt
b3ZlUmVjdXJzaXZlbHkoZW50cnktPmZ1bGxQYXRoKCksIFZvaWRDYWxsYmFja3M6OmNyZWF0ZShz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMjAwLDQ2ICsxOTMsNDMgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0UGFyZW50KGNv
bnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8RW50cnlDYWxsYmEKIHsKICAgICBBU1NF
UlQoZW50cnkpOwogICAgIFN0cmluZyBwYXRoID0gRE9NRmlsZVBhdGg6OmdldERpcmVjdG9yeShl
bnRyeS0+ZnVsbFBhdGgoKSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxl
U3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0
ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBhdGgsIEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRoLCB0cnVlKSk7CisKKyAg
ICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBhdGgsIEVudHJ5Q2FsbGJhY2tz
OjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBwYXRoLCB0cnVl
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldEZp
bGUoY29uc3QgRW50cnlCYXNlKiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8
V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorYm9vbCBET01G
aWxlU3lzdGVtQmFzZTo6Z2V0RmlsZShjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBjb25zdCBTdHJp
bmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKQogewogICAgIFN0cmluZyBhYnNvbHV0ZVBhdGg7Ci0gICAgaWYgKCFwYXRoVG9B
YnNvbHV0ZVBhdGgobV9hc3luY0ZpbGVTeXN0ZW0tPnR5cGUoKSwgYmFzZSwgcGF0aCwgYWJzb2x1
dGVQYXRoKSkKKyAgICBpZiAoIXBhdGhUb0Fic29sdXRlUGF0aChtX2FzeW5jRmlsZVN5c3RlbS0+
dHlwZSgpLCBlbnRyeSwgcGF0aCwgYWJzb2x1dGVQYXRoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFs
VG9QbGF0Zm9ybVBhdGgoYWJzb2x1dGVQYXRoKTsKICAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+
IGNhbGxiYWNrcyA9IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJv
ckNhbGxiYWNrLCB0aGlzLCBhYnNvbHV0ZVBhdGgsIGZhbHNlKTsKICAgICBpZiAoZmxhZ3MgJiYg
ZmxhZ3MtPmlzQ3JlYXRlKCkpCi0gICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVGaWxl
KHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkp
OworICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRmlsZShhYnNvbHV0ZVBhdGgsIGZs
YWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhpc3RzKHBsYXRmb3JtUGF0aCwgY2FsbGJhY2tz
LnJlbGVhc2UoKSk7CisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5maWxlRXhpc3RzKGFic29s
dXRlUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldERpcmVjdG9yeShjb25zdCBFbnRyeUJhc2UqIGJhc2Us
IGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIFBhc3NS
ZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2spCitib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXREaXJlY3Rv
cnkoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRy
PFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKICAgICBT
dHJpbmcgYWJzb2x1dGVQYXRoOwotICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRoKG1fYXN5bmNG
aWxlU3lzdGVtLT50eXBlKCksIGJhc2UsIHBhdGgsIGFic29sdXRlUGF0aCkpCisgICAgaWYgKCFw
YXRoVG9BYnNvbHV0ZVBhdGgobV9hc3luY0ZpbGVTeXN0ZW0tPnR5cGUoKSwgZW50cnksIHBhdGgs
IGFic29sdXRlUGF0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBwbGF0
Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGFic29s
dXRlUGF0aCk7CiAgICAgT3duUHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNh
bGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJz
b2x1dGVQYXRoLCB0cnVlKTsKICAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmlzQ3JlYXRlKCkpCi0g
ICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkocGxhdGZvcm1QYXRoLCBm
bGFncy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CisgICAgICAgIG1fYXN5
bmNGaWxlU3lzdGVtLT5jcmVhdGVEaXJlY3RvcnkoYWJzb2x1dGVQYXRoLCBmbGFncy0+aXNFeGNs
dXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2FzeW5j
RmlsZVN5c3RlbS0+ZGlyZWN0b3J5RXhpc3RzKHBsYXRmb3JtUGF0aCwgY2FsbGJhY2tzLnJlbGVh
c2UoKSk7CisgICAgICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMoYWJzb2x1
dGVQYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9v
bCBET01GaWxlU3lzdGVtQmFzZTo6cmVhZERpcmVjdG9yeShQYXNzUmVmUHRyPERpcmVjdG9yeVJl
YWRlckJhc2U+IHJlYWRlciwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEVudHJpZXND
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKTsK
LSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1Bs
YXRmb3JtUGF0aChwYXRoKTsKLSAgICBtX2FzeW5jRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShw
bGF0Zm9ybVBhdGgsIEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVy
cm9yQ2FsbGJhY2ssIHJlYWRlciwgcGF0aCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFk
RGlyZWN0b3J5KHBhdGgsIEVudHJpZXNDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2ssIHJlYWRlciwgcGF0aCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwCmluZGV4IGVlNmEz
YWMuLmU3YThjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5
c3RlbVN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5
bmMuY3BwCkBAIC0xNTYsOSArMTU2LDggQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8RmlsZT4gRE9N
RmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVudHJ5
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBlYyA9IDA7Ci0gICAgU3RyaW5nIHBsYXRmb3Jt
UGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5
LT5mdWxsUGF0aCgpKTsKICAgICBSZWZQdHI8R2V0UGF0aEhlbHBlcjo6R2V0UGF0aFJlc3VsdD4g
cmVzdWx0KEdldFBhdGhIZWxwZXI6OkdldFBhdGhSZXN1bHQ6OmNyZWF0ZSgpKTsKLSAgICBtX2Fz
eW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBsYXRmb3JtUGF0aCwgR2V0UGF0aEhlbHBlcjo6
Y3JlYXRlKHJlc3VsdCkpOworICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEoZmls
ZUVudHJ5LT5mdWxsUGF0aCgpLCBHZXRQYXRoSGVscGVyOjpjcmVhdGUocmVzdWx0KSk7CiAgICAg
aWYgKCFtX2FzeW5jRmlsZVN5c3RlbS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgewog
ICAgICAgICBlYyA9IEZpbGVFeGNlcHRpb246OkFCT1JUX0VSUjsKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xNjcsOSArMTY2LDggQEAgUGFzc1JlZlB0cjxGaWxlPiBET01GaWxlU3lzdGVtU3luYzo6
Y3JlYXRlRmlsZShjb25zdCBGaWxlRW50cnlTeW5jKiBmaWxlRW50cnksIEUKICAgICAgICAgZWMg
PSByZXN1bHQtPm1fY29kZTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmICghcmVz
dWx0LT5tX3BhdGguaXNFbXB0eSgpKQotICAgICAgICBwbGF0Zm9ybVBhdGggPSByZXN1bHQtPm1f
cGF0aDsKLSAgICByZXR1cm4gRmlsZTo6Y3JlYXRlV2l0aE5hbWUocGxhdGZvcm1QYXRoLCBmaWxl
RW50cnktPm5hbWUoKSk7CisgICAgQVNTRVJUKCFyZXN1bHQtPm1fcGF0aC5pc0VtcHR5KCkpOwor
ICAgIHJldHVybiBGaWxlOjpjcmVhdGVXaXRoTmFtZShyZXN1bHQtPm1fcGF0aCwgZmlsZUVudHJ5
LT5uYW1lKCkpOwogfQogCiBuYW1lc3BhY2UgewpAQCAtMjQzLDE0ICsyNDEsMTMgQEAgUGFzc1Jl
ZlB0cjxGaWxlV3JpdGVyU3luYz4gRE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZVdyaXRlcihjb25z
dCBGaWxlRW50cnlTeW5jKgogICAgIEFTU0VSVChmaWxlRW50cnkpOwogICAgIGVjID0gMDsKIAot
ICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxh
dGZvcm1QYXRoKGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSk7CiAKICAgICBSZWZQdHI8RmlsZVdyaXRl
clN5bmM+IGZpbGVXcml0ZXIgPSBGaWxlV3JpdGVyU3luYzo6Y3JlYXRlKCk7CiAgICAgUmVmUHRy
PFJlY2VpdmVGaWxlV3JpdGVyQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjayA9IFJlY2VpdmVGaWxl
V3JpdGVyQ2FsbGJhY2s6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxMb2NhbEVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2sgPSBMb2NhbEVycm9yQ2FsbGJhY2s6OmNyZWF0ZSgpOwogCiAgICAgT3du
UHRyPEZpbGVXcml0ZXJCYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBGaWxlV3JpdGVyQmFzZUNh
bGxiYWNrczo6Y3JlYXRlKGZpbGVXcml0ZXIsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
ayk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZVdyaXRlcihmaWxlV3JpdGVyLmdldCgp
LCBwbGF0Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgIG1fYXN5bmNGaWxlU3lz
dGVtLT5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlci5nZXQoKSwgZmlsZUVudHJ5LT5mdWxsUGF0aCgp
LCBjYWxsYmFja3MucmVsZWFzZSgpKTsKICAgICBpZiAoIW1fYXN5bmNGaWxlU3lzdGVtLT53YWl0
Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpKSB7CiAgICAgICAgIGVjID0gRmlsZUV4Y2VwdGlvbjo6
QUJPUlRfRVJSOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
c3luY0ZpbGVTeXN0ZW0uY3BwCmluZGV4IGIxYTNmZTIuLjQwNGFhYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcApAQCAtNTIsMzQgKzUyLDEzIEBAIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZShUeXBlLCBj
b25zdCBTdHJpbmcmKQogICAgIHJldHVybiAwOwogfQogCi0vLyBEZWZhdWx0IGltcGxlbWVudGF0
aW9uLgogdm9pZCBBc3luY0ZpbGVTeXN0ZW06Om9wZW5GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYg
YmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIFR5cGUgdHlwZSwgYm9v
bCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAg
ICBTdHJpbmcgdHlwZVN0cmluZyA9ICh0eXBlID09IFBlcnNpc3RlbnQpID8gIlBlcnNpc3RlbnQi
IDogIlRlbXBvcmFyeSI7Ci0KLSAgICBTdHJpbmcgbmFtZSA9IHN0b3JhZ2VJZGVudGlmaWVyOwot
ICAgIG5hbWUgKz0gIjoiOwotICAgIG5hbWUgKz0gdHlwZVN0cmluZzsKLQotICAgIFN0cmluZyBy
b290UGF0aCA9IGJhc2VQYXRoOwotICAgIHJvb3RQYXRoLmFwcGVuZChQbGF0Zm9ybUZpbGVQYXRo
U2VwYXJhdG9yKTsKLSAgICByb290UGF0aCArPSBzdG9yYWdlSWRlbnRpZmllcjsKLSAgICByb290
UGF0aC5hcHBlbmQoUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRvcik7Ci0gICAgcm9vdFBhdGggKz0g
dHlwZVN0cmluZzsKLSAgICByb290UGF0aC5hcHBlbmQoUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRv
cik7Ci0KLSAgICBjYWxsYmFja3MtPmRpZE9wZW5GaWxlU3lzdGVtKG5hbWUsIEFzeW5jRmlsZVN5
c3RlbTo6Y3JlYXRlKHR5cGUsIHJvb3RQYXRoKSk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBjYWxsYmFja3MtPmRpZEZhaWwoTk9UX1NVUFBPUlRFRF9FUlIpOwogfQogI2VuZGlmCiAKLS8v
IERlZmF1bHQgaW1wbGVtZW50YXRpb24uCi1TdHJpbmcgQXN5bmNGaWxlU3lzdGVtOjp2aXJ0dWFs
VG9QbGF0Zm9ybVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdAotewotICAgIEFTU0VSVCgh
bV9wbGF0Zm9ybVJvb3RQYXRoLmlzRW1wdHkoKSk7Ci0gICAgU3RyaW5nIHZpcnR1YWxQYXRoID0g
cGF0aDsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybVJvb3RQYXRoICsgdmlydHVhbFBhdGgucmVwbGFj
ZSgnLycsIFBsYXRmb3JtRmlsZVBhdGhTZXBhcmF0b3IpOwotfQotCiB9IC8vIG5hbWVzcGFjZQog
CiAjZW5kaWYgLy8gRU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9B
c3luY0ZpbGVTeXN0ZW0uaAppbmRleCAzNTcwZGU0Li5jMmM2ODQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQogCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgpAQCAtNjYsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHdhaXRGb3JPcGVy
YXRpb25Ub0NvbXBsZXRlKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIENyZWF0ZXMgYW5k
IHJldHVybnMgYSBuZXcgcGxhdGZvcm0tc3BlY2lmaWMgQXN5bmNGaWxlU3lzdGVtIGluc3RhbmNl
IGlmIHRoZSBwbGF0Zm9ybSBoYXMgaXRzIG93biBpbXBsZW1lbnRhdGlvbi4KLSAgICBzdGF0aWMg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShUeXBlLCBjb25zdCBTdHJpbmcmIHJv
b3RQYXRoKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShU
eXBlKTsKIAogICAgIC8vIE9wZW5zIGEgbmV3IGZpbGUgc3lzdGVtLiBUaGUgY3JlYXRlIHBhcmFt
ZXRlciBzcGVjaWZpZXMgd2hldGhlciBvciBub3QgdG8gY3JlYXRlIHRoZSBwYXRoIGlmIGl0IGRv
ZXMgbm90IGFscmVhZHkgZXhpc3RzLgogICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtKGNv
bnN0IFN0cmluZyYgYmFzZVBhdGgsIGNvbnN0IFN0cmluZyYgc3RvcmFnZUlkZW50aWZpZXIsIFR5
cGUsIGJvb2wgY3JlYXRlLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwpA
QCAtMTI3LDIzICsxMjgsMTUgQEAgcHVibGljOgogICAgIC8vIEFzeW5jRmlsZVN5c3RlbUNhbGxi
YWNrczo6ZGlkRmFpbCgpIGlzIGNhbGxlZCBvdGhlcndpc2UuCiAgICAgdmlydHVhbCB2b2lkIGNy
ZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pID0gMDsKIAotICAgIC8v
IENvbnZlcnRzIGEgZ2l2ZW4gYWJzb2x1dGUgdmlydHVhbCBwYXRoIHRvIGEgcGxhdGZvcm0gcGF0
aCB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBwbGF0Zm9ybSByb290IHBhdGggb2YgdGhpcyBmaWxlIHN5
c3RlbS4KLSAgICB2aXJ0dWFsIFN0cmluZyB2aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKSBjb25zdDsKLQotICAgIC8vIEdldHRlciBmb3IgdGhpcyBmaWxlIHN5c3RlbSdz
IHJvb3QgcGF0aC4KLSAgICBTdHJpbmcgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1S
b290UGF0aDsgfQotCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBBc3luY0ZpbGVTeXN0ZW0oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcm
IHBsYXRmb3JtUm9vdFBhdGgpCisgICAgQXN5bmNGaWxlU3lzdGVtKFR5cGUgdHlwZSkKICAgICAg
ICAgOiBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX3BsYXRmb3JtUm9vdFBhdGgocGxhdGZvcm1S
b290UGF0aCkKICAgICB7CiAgICAgfQogCiAgICAgVHlwZSBtX3R5cGU7Ci0gICAgU3RyaW5nIG1f
cGxhdGZvcm1Sb290UGF0aDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMGEzYTFkOC4uZjBmZGJiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMS0wNi0wMiAgRXJpYyBVaHJoYW5lICA8ZXJp
Y3VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENsZWFuIHVwIGZpbGVzeXN0ZW0gYmFzZSBwYXRoIGNvZGUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDIxOAorCisgICAgICAgIENo
YW5nZSBhIGJ1bmNoIG9mIHVybC1oZWxkLWluLWEtc3RyaW5nIHBhcmFtZXRlcnMgaW50byByZWFs
IEtVUkxTIGFuZAorICAgICAgICBXZWJVUkxzLiAgQWxzbyBhZGQgYSAjZGVmaW5lIHRvIG1ha2Ug
aXQgZWFzaWVyIHRvIHN0YWdlIHRoaXMgY2hhbmdlLCBhcworICAgICAgICBpdCBpbnZvbHZlcyBi
b3RoIENocm9taXVtIGFuZCBXZWJLaXQgY2hhbmdlcyB0aGF0IHdvdWxkIGlkZWFsbHkgYmUgCisg
ICAgICAgIHNpbXVsdGFuZW91cy4KKworICAgICAgICBObyBuZXcgdGVzdHMtLW5vIGNoYW5nZSBp
biBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcHVibGljL1dlYkZpbGVTeXN0ZW0uaDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJGcmFtZS5oOgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHA6
CisgICAgICAgICogc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmg6CisgICAgICAgICogc3Jj
L1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAg
ICAgICAgKiBzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAq
IHNyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5oOgorICAgICAgICAqIHNyYy9Xb3Jr
ZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogc3JjL1dvcmtlckFzeW5j
RmlsZVdyaXRlckNocm9taXVtLmg6CisgICAgICAgICogc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UuY3BwOgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlLmg6CisgICAgICAgICogc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2Uu
Y3BwOgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmg6CisK
IDIwMTEtMDYtMDEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4Nzc4OC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAppbmRleCA3NzNhMWY1Li5jZjkzZWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCkBA
IC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIFdlYkZpbGVTeXN0ZW1faAogCiAjaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01NCwyOCArNTQsMjggQEAgcHVibGljOgogICAgIC8v
IE1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0aHwuCiAg
ICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVk
IHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2Uu
Ci0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgV2ViU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBX
ZWJTdHJpbmcmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBXZWJVUkwm
IHNyY1BhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdFBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3Mq
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ29waWVzIGEgZmls
ZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0aHwuCiAgICAgLy8gV2ViRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVh
bCB2b2lkIGNvcHkoY29uc3QgV2ViU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBXZWJTdHJpbmcmIGRl
c3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBXZWJVUkwmIHNyY1BhdGgsIGNv
bnN0IFdlYlVSTCYgZGVzdFBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gRGVsZXRlcyBhIGZpbGUgb3IgZGlyZWN0
b3J5IGF0IGEgZ2l2ZW4gfHBhdGh8LgogICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIHRyeSB0byBy
ZW1vdmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgZW1wdHkuCiAgICAgLy8gV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlv
biBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
Y29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIERlbGV0ZXMgYSBmaWxlIG9yIGRpcmVjdG9y
eSByZWN1cnNpdmVseSBhdCBhIGdpdmVuIHxwYXRofC4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlz
IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlUmVjdXJzaXZlbHkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIFJldHJpZXZl
cyB0aGUgbWV0YWRhdGEgaW5mb3JtYXRpb24gb2YgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IHRo
ZSBnaXZlbiB8cGF0aHwuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZE1l
dGFkYXRhKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHZhbGlkIG1ldGFkYXRhIHdoZW4gdGhlIHJl
dHJpZXZhbCBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVh
bCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCByZWFkTWV0YWRhdGEoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENyZWF0ZXMg
YSBmaWxlIGF0IGdpdmVuIHxwYXRofC4KICAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhp
c3QsIGl0IGNyZWF0ZXMgYSBuZXcgZmlsZSBhdCB8cGF0aHwuCkBAIC04NSw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICAvLwogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQo
KSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3Nm
dWxseS4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBj
YWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdlYlN0
cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxl
KGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ3JlYXRlcyBh
IGRpcmVjdG9yeSBhdCBhIGdpdmVuIHxwYXRofC4KICAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNu
J3QgZXhpc3QsIGl0IGNyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IGF0IHxwYXRofC4KQEAgLTk1LDI2
ICs5NSwyNiBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3Vj
Y2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4KICAgICAvLyB0aGUgb3BlcmF0aW9uIGlzIGNvbXBs
ZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFp
bCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGly
ZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgV2ViVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2
ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICAvLyBDaGVja3MgaWYgYSBmaWxlIGV4aXN0cyBhdCBhIGdpdmVuIHxwYXRofC4K
ICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxs
ZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8g
V2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lz
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5
c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAv
LyBDaGVja3MgaWYgYSBkaXJlY3RvcnkgZXhpc3RzIGF0IGEgZ2l2ZW4gfHBhdGh8LgogICAgIC8v
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVu
IHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBXZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAg
IHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmls
ZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICAvLyBSZWFkcyBkaXJlY3RvcnkgZW50cmllcyBvZiBhIGdpdmVuIGRpcmVjdG9yeSBhdCB8cGF0
aHwuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeSgpIG11
c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxl
ZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgV2ViU3Ry
aW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJVUkwm
IHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogCiAgICAgLy8gQ3JlYXRlcyBhIFdlYkZpbGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNl
ZCB0byB3cml0ZSB0byB0aGUgZ2l2ZW4gZmlsZS4KICAgICAvLyBUaGlzIGlzIGEgZmFzdCwgc3lu
Y2hyb25vdXMgY2FsbCwgYW5kIHNob3VsZCBub3Qgc3RhdCB0aGUgZmlsZXN5c3RlbS4KLSAgICB2
aXJ0dWFsIFdlYkZpbGVXcml0ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViU3RyaW5nJiBw
YXRoLCBXZWJGaWxlV3JpdGVyQ2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJGaWxlV3JpdGVyKiBjcmVhdGVGaWxlV3JpdGVy
KGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVdyaXRlckNsaWVudCopIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
V2ViRmlsZVN5c3RlbSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IGZhN2ViYmUuLjExNDUzNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxs
YmFja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzLmgKQEAgLTM4LDggKzM4LDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOwogc3RydWN0IFdlYkZpbGVJbmZvOwogCisvLyBU
ZW1wb3JhcnkgaGFjayB0byBlYXNlIGEgNC1waGFzZSBDaHJvbWl1bS9XZWJLaXQgY29tbWl0Lgor
I2RlZmluZSBXRUJGSUxFU1lTVEVNQ0FMTEJBQ0tTX1VTRV9VUkxfTk9UX1NUUklORyAxCisKIGNs
YXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MgewogcHVibGljOgogICAgIC8vIENhbGxiYWNrIGZv
ciBXZWJGaWxlU3lzdGVtJ3MgdmFyaW91cyBvcGVyYXRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZQpA
QCAtNTcsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3Rv
cnkoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mLCBib29sIGhhc01vcmUpID0g
MDsKIAogICAgIC8vIENhbGxiYWNrIGZvciBXZWJGcmFtZUNsaWVudDo6b3BlbkZpbGVTeXN0ZW0u
IENhbGxlZCB3aXRoIGEgbmFtZSBhbmQKLSAgICAvLyByb290IHBhdGggZm9yIHRoZSBGaWxlU3lz
dGVtIHdoZW4gdGhlIHJlcXVlc3QgaXMgYWNjZXB0ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZE9w
ZW5GaWxlU3lzdGVtKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiByb290
UGF0aCkgPSAwOworICAgIC8vIHJvb3QgVVJMIGZvciB0aGUgRmlsZVN5c3RlbSB3aGVuIHRoZSBy
ZXF1ZXN0IGlzIGFjY2VwdGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlVSTCYgcm9vdFVSTCkgPSAwOwogCiAgICAg
Ly8gQ2FsbGVkIHdpdGggYW4gZXJyb3IgY29kZSB3aGVuIGEgcmVxdWVzdGVkIG9wZXJhdGlvbiBo
YXNuJ3QgYmVlbgogICAgIC8vIGNvbXBsZXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZS5oCmluZGV4IDVkMWM5ODguLjdhMmYyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWUuaApAQCAtMjc4LDExICsyNzgsMTEgQEAgcHVibGljOgogICAg
IC8vIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgZmlsZSBzeXN0ZW0gb2JqZWN0LgogICAgIHZpcnR1
YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6
VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgPSAwOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiByb290VVJMKSA9IDA7CiAgICAgLy8gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBmaWxlIG9yIGRp
cmVjdG9yeSBlbnRyeSBvYmplY3QuCiAgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y3JlYXRlRmlsZUVudHJ5KFdlYkZpbGVTeXN0ZW06OlR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3Rl
bU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3RlbVBhdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3RlbVJv
b3RVUkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgZmlsZVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNEaXJlY3RvcnkpID0gMDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW0uY3BwCmluZGV4IGVmMWY2MTYuLmQ4NjZhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTUwLDkgKzUw
LDEwIEBAIGJvb2wgQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLUFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bShBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCkKLSAg
ICA6IEFzeW5jRmlsZVN5c3RlbSh0eXBlLCByb290UGF0aCkKK0FzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwg
Y29uc3QgS1VSTCYgcm9vdFVSTCkKKyAgICA6IEFzeW5jRmlsZVN5c3RlbSh0eXBlKQogICAgICwg
bV93ZWJGaWxlU3lzdGVtKFdlYktpdDo6d2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKSkKKyAg
ICAsIG1fZmlsZXN5c3RlbVJvb3RVUkwocm9vdFVSTCkKIHsKICAgICBBU1NFUlQobV93ZWJGaWxl
U3lzdGVtKTsKIH0KQEAgLTYzLDU3ICs2NCw1NyBAQCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6
fkFzeW5jRmlsZVN5c3RlbUNocm9taXVtKCkKIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6bW92ZShjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ewotICAgIG1fd2ViRmlsZVN5c3RlbS0+bW92ZShzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgs
IG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAg
IG1fd2ViRmlsZVN5c3RlbS0+bW92ZSh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChzb3VyY2VQ
YXRoKSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoZGVzdGluYXRpb25QYXRoKSwgbmV3IFdl
YktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQg
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNvcHkoY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPmNvcHkoc291cmNl
UGF0aCwgZGVzdGluYXRpb25QYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmNvcHkodmlydHVhbFBhdGhU
b0ZpbGVTeXN0ZW1VUkwoc291cmNlUGF0aCksIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGRl
c3RpbmF0aW9uUGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNh
bGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZW1vdmUoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVtb3ZlKHBhdGgsIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5
c3RlbS0+cmVtb3ZlKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBuZXcgV2ViS2l0
OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAg
IG1fd2ViRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkocGF0aCwgbmV3IFdlYktpdDo6V2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVt
LT5yZW1vdmVSZWN1cnNpdmVseSh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbmV3
IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZv
aWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlYWRNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0g
ICAgbV93ZWJGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aCwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5y
ZWFkTWV0YWRhdGEodmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBl
eGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiB7Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHBhdGgsIGV4Y2x1c2l2ZSwgbmV3
IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93
ZWJGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgp
LCBleGNsdXNpdmUsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxi
YWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPmNy
ZWF0ZURpcmVjdG9yeShwYXRoLCBleGNsdXNpdmUsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1D
YWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+Y3JlYXRlRGly
ZWN0b3J5KHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBleGNsdXNpdmUsIG5ldyBX
ZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lk
IEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBt
X3dlYkZpbGVTeXN0ZW0tPmZpbGVFeGlzdHMocGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5maWxlRXhp
c3RzKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBuZXcgV2ViS2l0OjpXZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVT
eXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4
aXN0cyh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW06OnJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5
c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWREaXJlY3Rvcnko
dmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0
ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiBjbGFzcyBGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzIDogcHVibGljIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJs
aWM6Ci0gICAgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhBc3luY0ZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIHdlYkZp
bGVTeXN0ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCisgICAgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhBc3luY0ZpbGVXcml0ZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3
ZWJGaWxlU3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAgICAgLCBtX3Bh
dGgocGF0aCkKICAgICAgICAgLCBtX3dlYkZpbGVTeXN0ZW0od2ViRmlsZVN5c3RlbSkKQEAgLTE0
NSw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBkZWxldGUgdGhpczsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgcm9vdFBhdGgpCisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcm9vdFVSTCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBkZWxldGUgdGhpczsK
QEAgLTE2MCwxNCArMTYxLDI0IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBBc3luY0ZpbGVX
cml0ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIFN0cmluZyBtX3BhdGg7CisgICAgS1VSTCBtX3Bh
dGg7CiAgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07CiAgICAgT3du
UHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9Owog
CiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPnJl
YWRNZXRhZGF0YShwYXRoLCBuZXcgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhjbGllbnQsIHBh
dGgsIG1fd2ViRmlsZVN5c3RlbSwgY2FsbGJhY2tzKSk7CisgICAgS1VSTCBwYXRoQXNVUkwgPSB2
aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJl
YWRNZXRhZGF0YShwYXRoQXNVUkwsIG5ldyBGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKGNsaWVu
dCwgcGF0aEFzVVJMLCBtX3dlYkZpbGVTeXN0ZW0sIGNhbGxiYWNrcykpOworfQorCitLVVJMIEFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjp2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBT
dHJpbmcmIHZpcnR1YWxQYXRoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9maWxlc3lzdGVtUm9v
dFVSTC5pc0VtcHR5KCkpOworICAgIEtVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVSTDsKKyAg
ICAvLyBSZW1vdmUgdGhlIGV4dHJhIGxlYWRpbmcgc2xhc2guCisgICAgdXJsLnNldFBhdGgodXJs
LnBhdGgoKSArIHZpcnR1YWxQYXRoLnN1YnN0cmluZygxKSk7CisgICAgcmV0dXJuIHVybDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKaW5kZXggZGE5OGEzMy4uMGM1NTBiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bS5oCkBAIC00MywxMiArNDMsMTMgQEAgY2xhc3MgV2ViRmlsZVN5c3RlbTsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3Mg
S1VSTDsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0gOiBwdWJsaWMgQXN5bmNGaWxl
U3lzdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
IGNyZWF0ZShBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290UGF0
aCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShBc3luY0Zp
bGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0odHlwZSwgcm9vdFBh
dGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bSh0eXBlLCByb290VVJMKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0oKTsKQEAgLTY2LDggKzY3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6
Ci0gICAgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0oQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBjb25z
dCBTdHJpbmcmIHJvb3RQYXRoKTsKKyAgICBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3luY0Zp
bGVTeXN0ZW06OlR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwpOwogICAgIFdlYktpdDo6V2ViRmls
ZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOworCisgICAgLy8gQ29udmVydHMgYSBnaXZlbiBhYnNv
bHV0ZSB2aXJ0dWFsIHBhdGggdG8gYSBmdWxsIG9yaWdpbi1xdWFsaWZpZWQgRmlsZVN5c3RlbSBV
UkwuCisgICAgS1VSTCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIHZp
cnR1YWxQYXRoKSBjb25zdDsKKworICAgIEtVUkwgbV9maWxlc3lzdGVtUm9vdFVSTDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcAppbmRleCAyMjZhZmQ3Li40
MzdkZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCkBAIC04NSwxOCArODUsMTggQEAgdm9pZCBXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzSW1wbDo6ZGlkUmVhZERpcmVjdG9yeShjb25zdCBXZWJWZWN0b3I8
V2ViRmlsZVN5c3RlbUUKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbDo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcmIHBhdGgpCit2b2lkIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsOjpk
aWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlVSTCYgcm9v
dFVSTCkKIHsKICAgICAvLyBUaGlzIG9iamVjdCBpcyBpbnRlbmRlZCB0byBkZWxldGUgaXRzZWxm
IG9uIGV4aXQuCiAgICAgT3duUHRyPFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsPiBjYWxsYmFj
a3MgPSBhZG9wdFB0cih0aGlzKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChtX2Nv
bnRleHQgJiYgbV9jb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkgewotICAgICAgICBtX2NhbGxi
YWNrcy0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OmNyZWF0ZShtX2NvbnRleHQsIG1fdHlwZSwgcGF0aCwgbV9zeW5jaHJvbm91cykpOworICAg
ICAgICBtX2NhbGxiYWNrcy0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW06OmNyZWF0ZShtX2NvbnRleHQsIG1fdHlwZSwgcm9vdFVSTCwgbV9zeW5j
aHJvbm91cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgbV9jYWxsYmFj
a3MtPmRpZE9wZW5GaWxlU3lzdGVtKG5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVh
dGUobV90eXBlLCBwYXRoKSk7CisgICAgbV9jYWxsYmFja3MtPmRpZE9wZW5GaWxlU3lzdGVtKG5h
bWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUobV90eXBlLCByb290VVJMKSk7CiB9
CiAKIHZvaWQgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGw6OmRpZEZhaWwoV2ViRmlsZUVycm9y
IGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVT
eXN0ZW1DYWxsYmFja3NJbXBsLmgKaW5kZXggM2UyMTkyZS4uMTBlMGY4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1w
bC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFdlYkZpbGVJ
bmZvOwogc3RydWN0IFdlYkZpbGVTeXN0ZW1FbnRyeTsKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNz
IFdlYlVSTDsKIAogY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJsaWM6CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoY29uc3QgV2ViRmlsZUluZm8mIGluZm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFkRGlyZWN0b3J5KGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVz
LCBib29sIGhhc01vcmUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgcm9vdFBhdGgpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlVSTCYgcm9vdFVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yIGVy
cm9yKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCmluZGV4IDBkNjQyOGQuLjYzOWM0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTAzLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJwYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUGVyZm9y
bWFuY2UuaCIKQEAgLTg1OCw3ICs4NTksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRnJh
bWVJbXBsOjpjcmVhdGVGaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIHRvVjgoRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlKGZyYW1lKCktPmRvY3VtZW50KCksIG5hbWUsIEFzeW5jRmlsZVN5
c3RlbUNocm9taXVtOjpjcmVhdGUoc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0
eXBlKSwgcGF0aCkpKTsKKyAgICByZXR1cm4gdG9WOChET01GaWxlU3lzdGVtOjpjcmVhdGUoZnJh
bWUoKS0+ZG9jdW1lbnQoKSwgbmFtZSwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZShz
dGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBLVVJMKFBhcnNlZFVSTFN0
cmluZywgcGF0aC51dGY4KCkuZGF0YSgpKSkpKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFdlYkZyYW1lSW1wbDo6Y3JlYXRlRmlsZUVudHJ5KFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwK
QEAgLTg2Nyw3ICs4NjgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRnJhbWVJbXBsOjpj
cmVhdGVGaWxlRW50cnkoV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmls
ZVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0RpcmVjdG9yeSkKIHsKLSAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZp
bGVTeXN0ZW0gPSBET01GaWxlU3lzdGVtOjpjcmVhdGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSwgZmls
ZVN5c3RlbU5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgZmlsZVN5c3RlbVBhdGgpKTsKKyAgICBSZWZQ
dHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0gPSBET01GaWxlU3lzdGVtOjpjcmVhdGUo
ZnJhbWUoKS0+ZG9jdW1lbnQoKSwgZmlsZVN5c3RlbU5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpjcmVhdGUoc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIGZpbGVTeXN0ZW1QYXRoLnV0ZjgoKS5kYXRhKCkpKSk7CiAgICAg
aWYgKGlzRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gdG9WOChEaXJlY3RvcnlFbnRyeTo6Y3Jl
YXRlKGZpbGVTeXN0ZW0sIGZpbGVQYXRoKSk7CiAgICAgcmV0dXJuIHRvVjgoRmlsZUVudHJ5Ojpj
cmVhdGUoZmlsZVN5c3RlbSwgZmlsZVBhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRl
eCA4ZTRiODI5Li44YmM0YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC01NiwxMiAr
NTYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciBmaWxlU3lz
dGVtT3BlcmF0aW9uc01vZGVbXSA9ICJmaWxlU3lzdGVtT3BlcmF0aW9uc01vZGUiOwogCi1Xb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5
cGUsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGJvb2wgc3luY2hyb25vdXMpCi0gICAgOiBBc3lu
Y0ZpbGVTeXN0ZW0odHlwZSwgcm9vdFBhdGgpCitXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGNvbnN0IFdlYktpdDo6V2ViVVJM
JiByb290VVJMLCBib29sIHN5bmNocm9ub3VzKQorICAgIDogQXN5bmNGaWxlU3lzdGVtKHR5cGUp
CiAgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKICAgICAsIG1fd2ViRmls
ZVN5c3RlbShXZWJLaXQ6OndlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkpCiAgICAgLCBtX3dv
cmtlckNvbnRleHQoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpKQogICAgICwg
bV9zeW5jaHJvbm91cyhzeW5jaHJvbm91cykKKyAgICAsIG1fZmlsZXN5c3RlbVJvb3RVUkwocm9v
dFVSTCkKIHsKICAgICBBU1NFUlQobV93ZWJGaWxlU3lzdGVtKTsKICAgICBBU1NFUlQobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CkBAIC04OSw1NyArOTAsNTcg
QEAgYm9vbCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6d2FpdEZvck9wZXJhdGlvblRv
Q29tcGxldGUoKQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjptb3ZlKGNv
bnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3Jl
YXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0TW92ZVRv
TWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwg
bV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0TW92ZVRvTWFpblRocmVhZChtX3dlYkZpbGVT
eXN0ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHNvdXJjZVBhdGgpLCB2aXJ0dWFsUGF0
aFRvRmlsZVN5c3RlbVVSTChkZXN0aW5hdGlvblBhdGgpLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0
aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y29weShjb25z
dCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0
ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENvcHlUb01h
aW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIG1f
bW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENvcHlUb01haW5UaHJlYWQobV93ZWJGaWxlU3lz
dGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChzb3VyY2VQYXRoKSwgdmlydHVhbFBhdGhU
b0ZpbGVTeXN0ZW1VUkwoZGVzdGluYXRpb25QYXRoKSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlv
bik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlbW92ZShjb25z
dCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxs
YmFja3MpLT5wb3N0UmVtb3ZlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9t
b2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVtb3ZlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5
c3RlbSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG1fbW9kZUZvckN1cnJlbnRP
cGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZW1v
dmVSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVtb3ZlUmVjdXJzaXZlbHlUb01haW5UaHJl
YWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAg
ICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RS
ZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRo
VG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAog
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZE1ldGFkYXRhKGNvbnN0IFN0
cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKLSAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNr
cyktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBt
X21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQobV93
ZWJGaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbV9tb2RlRm9y
Q3VycmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OmNyZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RDcmVhdGVGaWxl
VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVzaXZlLCBtX21vZGVGb3JD
dXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKGNhbGxiYWNrcyktPnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3Rl
bSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIGV4Y2x1c2l2ZSwgbV9tb2RlRm9y
Q3VycmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OmNyZWF0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNy
ZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENyZWF0
ZURpcmVjdG9yeVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIGV4Y2x1c2l2ZSwg
bV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFk
KG1fd2ViRmlsZVN5c3RlbSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIGV4Y2x1
c2l2ZSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW06OmZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0ZVdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdEZpbGVFeGlzdHNU
b01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0
aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNr
cyktPnBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgdmlydHVhbFBh
dGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQog
CiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpkaXJlY3RvcnlFeGlzdHMoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2Fs
bGJhY2tzKS0+cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0s
IHBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFp
blRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgp
LCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6cmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRlV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVhZERpcmVjdG9y
eVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVy
YXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJh
Y2tzKS0+cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCB2aXJ0
dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7
CiB9CiAKIGNsYXNzIFdvcmtlckZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MgOiBwdWJsaWMgQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxX
b3JrZXJGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzPiBjcmVhdGUoQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3
ZWJGaWxlU3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFdvcmtlckZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M+IGNyZWF0ZShBc3luY0Zp
bGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJLaXQ6OldlYkZp
bGVTeXN0ZW0qIHdlYkZpbGVTeXN0ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckZpbGVXcml0ZXJIZWxwZXJD
YWxsYmFja3MoY2xpZW50LCBwYXRoLCB3ZWJGaWxlU3lzdGVtLCBjYWxsYmFja3MsIHdvcmtlckNv
bnRleHQpKTsKICAgICB9CkBAIC0xODgsNyArMTg5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBXb3JrZXJGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKEFzeW5jRmlsZVdyaXRl
ckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3Rl
bSogd2ViRmlsZVN5c3RlbSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcywgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKKyAgICBXb3Jr
ZXJGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50
LCBjb25zdCBXZWJVUkwmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3Rl
bSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cywgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKICAgICAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgICAgICwgbV9wYXRoKHBhdGgpCiAgICAgICAgICwgbV93ZWJGaWxlU3lzdGVtKHdl
YkZpbGVTeXN0ZW0pCkBAIC0xOTgsNyArMTk5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBB
c3luY0ZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIFN0cmluZyBtX3BhdGg7CisgICAg
V2ViVVJMIG1fcGF0aDsKICAgICBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3Rl
bTsKICAgICBPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBtX2NhbGxi
YWNrczsKICAgICBXb3JrZXJDb250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CkBAIC0yMDYsNyArMjA3
LDggQEAgcHJpdmF0ZToKIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3Jl
YXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0g
ICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXb3JrZXJGaWxlV3JpdGVy
SGVscGVyQ2FsbGJhY2tzOjpjcmVhdGUoY2xpZW50LCBwYXRoLCBtX3dlYkZpbGVTeXN0ZW0sIGNh
bGxiYWNrcywgbV93b3JrZXJDb250ZXh0KSktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQo
bV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBL
VVJMIHBhdGhBc1VSTCA9IHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpOworICAgIGNy
ZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoV29ya2VyRmlsZVdyaXRlckhlbHBl
ckNhbGxiYWNrczo6Y3JlYXRlKGNsaWVudCwgcGF0aEFzVVJMLCBtX3dlYkZpbGVTeXN0ZW0sIGNh
bGxiYWNrcywgbV93b3JrZXJDb250ZXh0KSktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQo
bV93ZWJGaWxlU3lzdGVtLCBwYXRoQXNVUkwsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwog
fQogCiBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IFdvcmtlckFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCkBAIC0y
MjAsNiArMjIyLDE1IEBAIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZT4gV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0CiAgICAgcmV0dXJuIG1fYnJp
ZGdlRm9yQ3VycmVudE9wZXJhdGlvbjsKIH0KIAorS1VSTCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6dmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiB2aXJ0dWFs
UGF0aCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fZmlsZXN5c3RlbVJvb3RVUkwuaXNFbXB0eSgp
KTsKKyAgICBLVVJMIHVybCA9IG1fZmlsZXN5c3RlbVJvb3RVUkw7CisgICAgLy8gUmVtb3ZlIHRo
ZSBleHRyYSBsZWFkaW5nIHNsYXNoLgorICAgIHVybC5zZXRQYXRoKHVybC5wYXRoKCkgKyB2aXJ0
dWFsUGF0aC5zdWJzdHJpbmcoMSkpOworICAgIHJldHVybiB1cmw7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5oCmluZGV4IGMzMmY3NmUuLjEzYThlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaApAQCAt
NDAsNiArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZpbGVTeXN0ZW07
CitjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJXb3JrZXJCYXNlOwogY2xhc3MgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTsKIH0KQEAgLTUyLDkgKzUzLDkgQEAgY2xhc3MgV29ya2VyQ29u
dGV4dDsKIAogY2xhc3MgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0gOiBwdWJsaWMgQXN5
bmNGaWxlU3lzdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVT
eXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCwgYm9vbCBzeW5jaHJvbm91
cykKKyAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29u
c3QgV2ViS2l0OjpXZWJVUkwmIHJvb3RVUkwsIGJvb2wgc3luY2hyb25vdXMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKGNv
bnRleHQsIHR5cGUsIHJvb3RQYXRoLCBzeW5jaHJvbm91cykpOworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKGNvbnRleHQsIHR5cGUsIHJv
b3RVUkwsIHN5bmNocm9ub3VzKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+V29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0oKTsKQEAgLTc1LDEwICs3NiwxMyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwog
CiBwcml2YXRlOgotICAgIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IFN0cmluZyYgcm9vdFBh
dGgsIGJvb2wgc3luY2hyb25vdXMpOworICAgIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IFdl
YktpdDo6V2ViVVJMJiByb290VVJMLCBib29sIHN5bmNocm9ub3VzKTsKIAogICAgIFBhc3NSZWZQ
dHI8V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBjcmVhdGVXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CiAKKyAgICAvLyBDb252ZXJ0cyBhIGdpdmVuIGFic29sdXRlIHZpcnR1YWwgcGF0aCB0
byBhIGZ1bGwgb3JpZ2luLXF1YWxpZmllZCBGaWxlU3lzdGVtIFVSTC4KKyAgICBLVVJMIHZpcnR1
YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpIGNvbnN0Owor
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
ICAgIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOwogICAgIFdlYktpdDo6
V2ViV29ya2VyQmFzZSogbV93b3JrZXI7CkBAIC04Niw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gbV9icmlkZ2VG
b3JDdXJyZW50T3BlcmF0aW9uOwogICAgIFN0cmluZyBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9u
OwogICAgIGJvb2wgbV9zeW5jaHJvbm91czsKKyAgICBLVVJMIG1fZmlsZXN5c3RlbVJvb3RVUkw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggOGE0NTc4Ny4uN2M2MWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bShXZWJGaWxlU3lzdGVtKiB3ZWJGaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50
LCBXcml0ZXJUeXBlIHR5cGUpCitXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6V29ya2Vy
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3RlbSwgY29u
c3QgV2ViVVJMJiBwYXRoLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0LCBBc3luY0ZpbGVX
cml0ZXJDbGllbnQqIGNsaWVudCwgV3JpdGVyVHlwZSB0eXBlKQogICAgIDogbV90eXBlKHR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBBc3luY2hyb25vdXMpOyAvLyBTeW5jaHJvbm91cyBp
cyBub3QgaW1wbGVtZW50ZWQgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgKaW5kZXggM2EzZDFiOS4u
ODZlNjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICBjbGFzcyBXZWJGaWxlU3lzdGVtOwogICAgIGNsYXNzIFdlYkZpbGVX
cml0ZXI7CisgICAgY2xhc3MgV2ViVVJMOwogICAgIGNsYXNzIFdvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2U7CiB9CiAKQEAgLTYxLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICBTeW5j
aHJvbm91cywKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW0+IGNyZWF0ZShXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIHdlYkZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCwgQXN5
bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIFdyaXRlclR5cGUgdHlwZSkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bT4gY3JlYXRlKFdlYktpdDo6
V2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3RlbSwgY29uc3QgV2ViS2l0OjpXZWJVUkwmIHBhdGgs
IFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xp
ZW50LCBXcml0ZXJUeXBlIHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFdvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtKHdlYkZpbGVTeXN0ZW0sIHBhdGgsIHdvcmtl
ckNvbnRleHQsIGNsaWVudCwgdHlwZSkpOwogICAgIH0KQEAgLTc2LDcgKzc3LDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogCi0gICAgV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2ViS2l0
OjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJDb250ZXh0KiwgQXN5
bmNGaWxlV3JpdGVyQ2xpZW50KiwgV3JpdGVyVHlwZSk7CisgICAgV29ya2VyQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0oV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwm
IHBhdGgsIFdvcmtlckNvbnRleHQqLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBXcml0ZXJUeXBl
KTsKICAgICBSZWZQdHI8V2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiBt
X2JyaWRnZTsKICAgICBXcml0ZXJUeXBlIG1fdHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UuY3BwCmluZGV4IDQ0OTU4MzAuLjEwMmJmYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5o
IgogI2luY2x1ZGUgIldlYkZpbGVTeXN0ZW1FbnRyeS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYldvcmtlckJhc2UuaCIKICNpbmNs
dWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
IgpAQCAtNzcsNiArNzgsMTQgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjoKICAgICB9CiB9Owog
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBX
ZWJLaXQ6OldlYlVSTD4geworICAgIHR5cGVkZWYgV2ViS2l0OjpXZWJVUkwgVHlwZTsKKyAgICBz
dGF0aWMgVHlwZSBjb3B5KGNvbnN0IFdlYktpdDo6V2ViVVJMJiB1cmwpCisgICAgeworICAgICAg
ICByZXR1cm4gV2ViS2l0OjpXZWJVUkwoV2ViQ29yZTo6S1VSTCh1cmwpLmNvcHkoKSk7CisgICAg
fQorfTsKKwogfQogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTk3LDkgKzEwNiw5IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBwYXRoKQorICAgIHZp
cnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlVSTCYgcm9vdFVSTCkKICAgICB7Ci0gICAgICAgIG1fYnJpZGdlLT5kaWRPcGVuRmlsZVN5
c3RlbU9uTWFpblRocmVhZChuYW1lLCBwYXRoLCBtX21vZGUpOworICAgICAgICBtX2JyaWRnZS0+
ZGlkT3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQobmFtZSwgcm9vdFVSTCwgbV9tb2RlKTsKICAg
ICAgICAgZGVsZXRlIHRoaXM7CiAgICAgfQogCkBAIC0xNjEsNyArMTcwLDcgQEAgdm9pZCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0T3BlbkZpbGVTeXN0ZW1Ub01haW5UaHJl
YWQoV2ViQ29tbW9uV28KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpwb3N0TW92ZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRo
LCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2U6OnBvc3RNb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IFdlYlVSTCYgc291cmNlUGF0aCwgY29uc3QgV2ViVVJMJiBkZXN0aW5hdGlvblBhdGgsIGNvbnN0
IFN0cmluZyYgbW9kZSkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCiAgICAgICAg
IGNyZWF0ZUNhbGxiYWNrVGFzaygmbW92ZU9uTWFpblRocmVhZCwKQEAgLTE2OSw3ICsxNzgsNyBA
QCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RNb3ZlVG9NYWluVGhy
ZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxs
b3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0q
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZTo6cG9zdENvcHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5
c3RlbSwgY29uc3QgV2ViVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBXZWJVUkwmIGRlc3RpbmF0aW9u
UGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb3B5T25NYWluVGhyZWFkLApAQCAtMTc3
LDcgKzE4Niw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENv
cHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92
ZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7CiAgICAg
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKApAQCAtMTg2LDcgKzE5NSw3IEBAIHZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVRvTWFpblRocmVhZChXZWJGaWxl
U3lzdGVtKiBmaWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6cG9zdFJlbW92ZVJlY3Vyc2l2ZWx5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0q
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJzaXZlbHlU
b01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRo
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwogICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZCgKQEAgLTE5NSw3ICsyMDQsNyBAQCB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVh
ZChXZWJGaWxlUwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQo
V2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwogICAgIGRpc3BhdGNoVGFza1Rv
TWFpblRocmVhZCgKQEAgLTIwNCw3ICsyMTMsNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwg
bW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RD
cmVhdGVGaWxlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZUZpbGVUb01haW5UaHJlYWQo
V2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBib29sIGV4Y2x1
c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVh
ZCgKICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjcmVhdGVGaWxlT25NYWluVGhyZWFkLApA
QCAtMjEyLDcgKzIyMSw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
cG9zdENyZWF0ZUZpbGVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAot
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5
VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZl
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKGZpbGVTeXN0ZW0pOwogICAgIGRp
c3BhdGNoVGFza1RvTWFpblRocmVhZCgKQEAgLTIyMSw3ICsyMzAsNyBAQCB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDcmVhdGVEaXJlY3RvcnlUb01haW5UaHJlYWQo
V2ViRmlsZVN5cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2U6OnBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJG
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYg
bW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKApAQCAtMjMwLDcgKzIzOSw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZTo6cG9zdEZpbGVFeGlzdHNUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUp
KTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RGlyZWN0
b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQog
ewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
CkBAIC0yMzksNyArMjQ4LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
Ojpwb3N0RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0K
IAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZERpcmVjdG9y
eVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5
c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNT
RVJUKGZpbGVTeXN0ZW0pOwogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKQEAgLTI1Nyw1
MiArMjY2LDUyIEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6b3BlbkZp
bGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uCiAgICAgfQogfQogCi12b2lkIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFdvcmtl
ckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQor
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjptb3ZlT25NYWluVGhyZWFkKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBXZWJVUkwmIHNvdXJjZVBhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdGluYXRpb25QYXRo
LCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYg
bW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5tb3ZlKHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0
aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2Us
IG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjb3B5
T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lz
dGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25QYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2Us
IGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZTo6Y29weU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
RmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBX
ZWJVUkwmIGRlc3RpbmF0aW9uUGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSog
YnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+Y29weShzb3Vy
Y2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpj
cmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cmVtb3ZlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5n
JiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1vdmVPbk1h
aW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
IGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+
cmVtb3ZlKHBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQ
dHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0
aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcm
IG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlbW92ZVJlY3Vy
c2l2ZWx5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZp
bGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2ZWx5KHBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZE1ldGFkYXRhT25NYWluVGhyZWFkKFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRn
ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlOjpyZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFdlYlVSTCYgcGF0aCwgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUp
CiB7CiAgICAgZmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKHBhdGgsIE1haW5UaHJlYWRGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZvaWQg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRlRmlsZU9uTWFpblRocmVhZChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NC
cmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZpbGVTeXN0ZW0tPmNy
ZWF0ZUZpbGUocGF0aCwgZXhjbHVzaXZlLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6
Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2U6OmNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2Vi
VVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+Y3JlYXRl
RGlyZWN0b3J5KHBhdGgsIGV4Y2x1c2l2ZSwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6
OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpmaWxlRXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJp
bmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3Qg
U3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpmaWxl
RXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGZp
bGVTeXN0ZW0tPmZpbGVFeGlzdHMocGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6
OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBj
b25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OmRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgV2ViVVJMJiBwYXRoLCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkK
IHsKICAgICBmaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGF0aCwgTWFpblRocmVhZEZpbGVT
eXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZWFkRGlyZWN0b3J5T25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBXZWJVUkwm
IHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3Ry
aW5nJiBtb2RlKQogewogICAgIGZpbGVTeXN0ZW0tPnJlYWREaXJlY3RvcnkocGF0aCwgTWFpblRo
cmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsK
IH0KQEAgLTMxMiwxMCArMzIxLDEwIEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6ZGlkRmFpbE9uTWFpblRocmVhZChXZWJGaWxlRXJyb3IgZXJyb3IsIGNvCiAgICAgbWF5
UG9zdFRhc2tUb1dvcmtlcihjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEZhaWxPbldvcmtlclRocmVh
ZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgZXJyb3IpLCBtb2RlKTsKIH0KIAotdm9p
ZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRPcGVuRmlsZVN5c3RlbU9uTWFp
blRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0
IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlk
T3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJV
UkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBtYXlQb3N0VGFza1RvV29y
a2VyKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpLCBuYW1lLCByb290UGF0aCksIG1vZGUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
IG5hbWUsIHJvb3RVUkwpLCBtb2RlKTsKIH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpkaWRTdWNjZWVkT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbW9kZSkKQEAg
LTM1NCw5ICszNjMsOSBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRp
ZEZhaWxPbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZQogICAgIGJyaWRnZS0+bV9j
YWxsYmFja3NPbldvcmtlclRocmVhZC0+ZGlkRmFpbChlcnJvcik7CiB9CiAKLXZvaWQgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgpCit2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZE9wZW5GaWxlU3lzdGVtT25X
b3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJVUkwmIHJv
b3RVUkwpCiB7Ci0gICAgYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRPcGVu
RmlsZVN5c3RlbShuYW1lLCByb290UGF0aCk7CisgICAgYnJpZGdlLT5tX2NhbGxiYWNrc09uV29y
a2VyVGhyZWFkLT5kaWRPcGVuRmlsZVN5c3RlbShuYW1lLCByb290VVJMKTsKIH0KIAogdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRTdWNjZWVkT25Xb3JrZXJUaHJlYWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uq
IGJyaWRnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaAppbmRleCAyMGZmY2FhLi5lOGM1MTg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIE1haW5UaHJl
YWRGaWxlU3lzdGVtQ2FsbGJhY2tzOwogY2xhc3MgVGhyZWFkYWJsZUNhbGxiYWNrc0JyaWRnZVdy
YXBwZXI7CiBjbGFzcyBXZWJDb21tb25Xb3JrZXJDbGllbnQ7CiBjbGFzcyBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzOworY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViV29ya2VyQmFzZTsKIHN0cnVjdCBX
ZWJGaWxlSW5mbzsKIHN0cnVjdCBXZWJGaWxlU3lzdGVtRW50cnk7CkBAIC04NSwyMCArODYsMjAg
QEAgcHVibGljOgogCiAgICAgLy8gTWV0aG9kcyB0aGF0IGNyZWF0ZSBhbiBpbnN0YW5jZSBhbmQg
cG9zdCBhbiBpbml0aWFsIHJlcXVlc3QgdGFzayB0byB0aGUgbWFpbiB0aHJlYWQuIFRoZXkgbXVz
dCBiZSBjYWxsZWQgb24gdGhlIHdvcmtlciB0aHJlYWQuCiAgICAgdm9pZCBwb3N0T3BlbkZpbGVT
eXN0ZW1Ub01haW5UaHJlYWQoV2ViQ29tbW9uV29ya2VyQ2xpZW50KiwgV2ViRmlsZVN5c3RlbTo6
VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBjb25zdCBTdHJpbmcmIG1vZGUpOwot
ICAgIHZvaWQgcG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmlu
ZyYgc3JjUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0UGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsK
LSAgICB2b2lkIHBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJp
bmcmIHNyY1BhdGgsIGNvbnN0IFN0cmluZyYgZGVzdFBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7
Ci0gICAgdm9pZCBwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0UmVtb3ZlUmVj
dXJzaXZlbHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICB2b2lkIHBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJl
YWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2Rl
KTsKLSAgICB2b2lkIHBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBj
b25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpOwot
ICAgIHZvaWQgcG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKTsK
LSAgICB2b2lkIHBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0RGlyZWN0
b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0UmVhZERpcmVjdG9yeVRvTWFpblRo
cmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOworICAgIHZvaWQgcG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0
IFdlYlVSTCYgc3JjUGF0aCwgY29uc3QgV2ViVVJMJiBkZXN0UGF0aCwgY29uc3QgU3RyaW5nJiBt
b2RlKTsKKyAgICB2b2lkIHBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25z
dCBXZWJVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdFBhdGgsIGNvbnN0IFN0cmluZyYg
bW9kZSk7CisgICAgdm9pZCBwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBj
b25zdCBXZWJVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0UmVt
b3ZlUmVjdXJzaXZlbHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3RSZWFkTWV0YWRhdGFUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgY29uc3QgU3RyaW5n
JiBtb2RlKTsKKyAgICB2b2lkIHBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0
ZW0qLCBjb25zdCBXZWJVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOworICAgIHZvaWQgcG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lz
dGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5nJiBt
b2RlKTsKKyAgICB2b2lkIHBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0q
LCBjb25zdCBXZWJVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0
RGlyZWN0b3J5RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0UmVhZERpcmVjdG9yeVRv
TWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViVVJMJiBwYXRoLCBjb25zdCBTdHJp
bmcmIG1vZGUpOwogCiAgICAgLy8gQ2FsbGJhY2sgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgZGlkRmFpbE9uTWFpblRocmVhZChXZWJGaWxlRXJy
b3IsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbU9uTWFp
blRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0
IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlVSTCYgcm9vdFVSTCwgY29uc3QgU3RyaW5nJiBt
b2RlKTsKICAgICB2b2lkIGRpZFN1Y2NlZWRPbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBtb2Rl
KTsKICAgICB2b2lkIGRpZFJlYWRNZXRhZGF0YU9uTWFpblRocmVhZChjb25zdCBXZWJGaWxlSW5m
byYsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBkaWRSZWFkRGlyZWN0b3J5T25NYWlu
VGhyZWFkKGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+JiwgYm9vbCBoYXNNb3Jl
LCBjb25zdCBTdHJpbmcmIG1vZGUpOwpAQCAtMTA4LDIyICsxMDksMjIgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIE1ldGhvZHMgdGhhdCBhcmUgdG8gYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4K
ICAgICBzdGF0aWMgdm9pZCBvcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiwgV2ViRmlsZVN5c3Rl
bTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBtb3Zl
T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lz
dGVtKiwgY29uc3QgU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RQYXRoLCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBz
dGF0aWMgdm9pZCBjb3B5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBTdHJpbmcm
IGRlc3RQYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5n
JiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwot
ICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRo
LCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsK
LSAgICBzdGF0aWMgdm9pZCByZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZUZpbGVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhj
bHVzaXZlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBt
b2RlKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVEaXJlY3RvcnlPbk1haW5UaHJlYWQoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwg
Y29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBmaWxlRXhpc3RzT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29u
c3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3Qg
U3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBkaXJlY3RvcnlFeGlzdHNPbk1haW5UaHJl
YWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBT
dHJpbmcmIG1vZGUpOwotICAgIHN0YXRpYyB2b2lkIHJlYWREaXJlY3RvcnlPbk1haW5UaHJlYWQo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJp
bmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIG1vdmVPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHNyY1Bh
dGgsIGNvbnN0IFdlYlVSTCYgZGVzdFBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJl
YWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25z
dCBXZWJVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdFBhdGgsIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lk
IHJlbW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
RmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVj
dXJzaXZlbHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFj
a3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIHJlYWRNZXRh
ZGF0YU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZU9u
TWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZpbGVTeXN0ZW1D
YWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIGNy
ZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAg
IHN0YXRpYyB2b2lkIGZpbGVFeGlzdHNPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJVUkwmIHBhdGgsIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRp
YyB2b2lkIGRpcmVjdG9yeUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGlj
IHZvaWQgcmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYlVSTCYgcGF0aCwgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAKICAgICBmcmllbmQg
Y2xhc3MgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M7CiAKICAgICAvLyBNZXRob2RzIHRo
YXQgZGlzcGF0Y2ggV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyBvbiB0aGUgd29ya2VyIHRocmVhZHMu
CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbE9uV29ya2VyVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgV2ViRmls
ZUVycm9yKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbU9uV29ya2VyVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJvb3RQYXRoKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbU9uV29ya2VyVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJVUkwmIHJvb3RQYXRoKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRTdWNjZWVkT25Xb3JrZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWFkTWV0YWRhdGFPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFdlYkZp
bGVJbmZvJik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVhZERpcmVjdG9yeU9uV29ya2VyVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiwgY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mLCBib29sIGhh
c01vcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmls
ZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRleCAxODZiZjhhLi4zNDYyNGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVy
Q2FsbGJhY2tzQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcApAQCAtNDksNiArNDksMTggQEAKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2ViS2l0OjpXZWJV
Ukw+IHsKKyAgICB0eXBlZGVmIFdlYktpdDo6V2ViVVJMIFR5cGU7CisgICAgc3RhdGljIFR5cGUg
Y29weShjb25zdCBXZWJLaXQ6OldlYlVSTCYgdXJsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdl
YktpdDo6V2ViVVJMKEtVUkwodXJsKS5jb3B5KCkpOworICAgIH0KK307CisKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6bm90
aWZ5U3RvcCgpCkBAIC0xMDEsNyArMTEzLDcgQEAgdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJh
Y2tzQnJpZGdlOjphYm9ydE9uTWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwKICAg
ICBicmlkZ2UtPm1fd3JpdGVyLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlV3JpdGVy
Q2FsbGJhY2tzQnJpZGdlOjppbml0T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29u
c3QgU3RyaW5nJiBwYXRoKQordm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpp
bml0T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtl
ckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgV2ViVVJMJiBwYXRoKQog
ewogICAgIEFTU0VSVCghYnJpZGdlLT5tX3dyaXRlcik7CiAgICAgYnJpZGdlLT5tX3dyaXRlciA9
IGFkb3B0UHRyKHdlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCktPmNyZWF0ZUZpbGVXcml0ZXIo
cGF0aCwgYnJpZGdlLmdldCgpKSk7CkBAIC0xMzAsNyArMTQyLDcgQEAgdm9pZCBXb3JrZXJGaWxl
V3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRUcnVuY2F0ZSgpCiAKIHN0YXRpYyBjb25zdCBjaGFy
IGZpbGVXcml0ZXJPcGVyYXRpb25zTW9kZVtdID0gImZpbGVXcml0ZXJPcGVyYXRpb25zTW9kZSI7
CiAKLVdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OldvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJMb2FkZXJQcm94eSogcHJveHks
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEFzeW5jRmls
ZVdyaXRlckNsaWVudCogY2xpZW50KQorV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZShjb25zdCBXZWJVUkwmIHBhdGgsIFdvcmtl
ckxvYWRlclByb3h5KiBwcm94eSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBXb3JrZXJD
b250ZXh0OjpPYnNlcnZlcihzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpCiAgICAgLCBtX3Byb3h5KHByb3h5KQogICAgICwgbV93b3JrZXJDb250ZXh0
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCkBAIC0xNDQsNyArMTU2LDcgQEAgV29ya2VyRmlsZVdy
aXRlckNhbGxiYWNrc0JyaWRnZTo6V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZShjb25z
dCBTdHJpbmcmIHAKICAgICBwb3N0SW5pdFRvTWFpblRocmVhZChwYXRoKTsKIH0KIAotdm9pZCBX
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpwb3N0SW5pdFRvTWFpblRocmVhZChjb25z
dCBTdHJpbmcmIHBhdGgpCit2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnBv
c3RJbml0VG9NYWluVGhyZWFkKGNvbnN0IFdlYlVSTCYgcGF0aCkKIHsKICAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoCiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmaW5pdE9uTWFpblRo
cmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgcGF0aCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRn
ZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNr
c0JyaWRnZS5oCmluZGV4IGMwNDIxNTkuLmI0ZDlhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdl
LmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGaWxlU3lz
dGVtOwogY2xhc3MgV2ViRmlsZVdyaXRlcjsKIGNsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7Citj
bGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJXb3JrZXJCYXNlOwogCiAvLyBUaGlzIGNsYXNzIGlzIHVz
ZWQgYXMgYSBtZWNoYW5pc20gdG8gYnJpZGdlIGNhbGxzIGJldHdlZW4gdGhyZWFkcy4KQEAgLTg2
LDcgKzg3LDcgQEAgcHVibGljOgogICAgIC8vIFdvcmtlckNvbnRleHQ6Ok9ic2VydmVyIG1ldGhv
ZC4KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3RvcCgpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
cGF0aCwgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHByb3h5LCBXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiB3b3JrZXJDb250ZXh0LCBXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXJD
bGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2Fs
bGJhY2tzQnJpZGdlPiBjcmVhdGUoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJDb3JlOjpXb3JrZXJM
b2FkZXJQcm94eSogcHJveHksIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHdvcmtl
ckNvbnRleHQsIFdlYkNvcmU6OkFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJp
ZGdlKHBhdGgsIHByb3h5LCB3b3JrZXJDb250ZXh0LCBjbGllbnQpKTsKICAgICB9CkBAIC0xMTAs
MTUgKzExMSwxNSBAQCBwdWJsaWM6CiAgICAgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0
ZSgpOwogCiBwcml2YXRlOgotICAgIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UoY29u
c3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSosIFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXJDbGllbnQqKTsK
KyAgICBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFdlYlVSTCYgcGF0aCwg
V2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyQ2xpZW50Kik7CiAKLSAgICB2b2lkIHBvc3RJ
bml0VG9NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgdm9pZCBwb3N0SW5pdFRv
TWFpblRocmVhZChjb25zdCBXZWJVUkwmIHBhdGgpOwogCiAgICAgLy8gTWV0aG9kcyB0aGF0IGFy
ZSB0byBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHN0YXRpYyB2b2lkIHdyaXRl
T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+LCBsb25nIGxvbmcgcG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGRhdGEpOwogICAgIHN0YXRpYyB2b2lkIHRydW5jYXRlT25NYWlu
VGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtl
ckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+LCBsb25nIGxvbmcgbGVuZ3RoKTsKICAgICBzdGF0
aWMgdm9pZCBhYm9ydE9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPik7Ci0gICAgc3Rh
dGljIHZvaWQgaW5pdE9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGFzc1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3Ry
aW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgdm9pZCBpbml0T25NYWluVGhyZWFkKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0ZXJDYWxsYmFj
a3NCcmlkZ2U+LCBjb25zdCBXZWJVUkwmIHBhdGgpOwogICAgIHN0YXRpYyB2b2lkIHNodXRkb3du
T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+KTsKIAogICAgIC8vIE1ldGhvZHMgdGhh
dCBkaXNwYXRjaCB0byBBc3luY0ZpbGVXcml0ZXJDbGllbnQgb24gdGhlIHdvcmtlciB0aHJlYWRz
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97051</attachid>
            <date>2011-06-13 18:16:03 -0700</date>
            <delta_ts>2011-06-14 13:01:32 -0700</delta_ts>
            <desc>Removed CrossThreadCopier specializations</desc>
            <filename>w_gurl.patch</filename>
            <type>text/plain</type>
            <size>78888</size>
            <attacher name="Eric U.">ericu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MTVkYjEzLi44YWY4MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYg
QEAKKzIwMTEtMDYtMTMgIEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBmaWxl
c3lzdGVtIGJhc2UgcGF0aCBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjAyMTgKKworICAgICAgICBDaGFuZ2UgYSBidW5jaCBvZiB1cmwtaGVs
ZC1pbi1hLXN0cmluZyBwYXJhbWV0ZXJzIGludG8gcmVhbCBLVVJMUyBhbmQKKyAgICAgICAgV2Vi
VVJMcy4KKworICAgICAgICBObyBuZXcgdGVzdHMtLW5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5
LgorCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZVdyaXRlcik6CisgICAgICAgIChXZWJDb3JlOjpET01G
aWxlU3lzdGVtOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW1C
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXRNZXRhZGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6bW92ZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpE
T01GaWxlU3lzdGVtQmFzZTo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0
ZW1CYXNlOjpyZW1vdmVSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtQmFzZTo6Z2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNl
OjpnZXRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW1CYXNlOjpnZXREaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3Rv
cnkpOgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbVN5bmMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZVdyaXRlcik6CisgICAgICAgICogcGxhdGZvcm0v
QXN5bmNGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbTo6
b3BlbkZpbGVTeXN0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtOjpBc3luY0ZpbGVTeXN0ZW0pOgorCiAy
MDExLTA2LTEzICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW0uY3BwCmluZGV4IDczNDJhY2QuLjUxMjY1MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9ET01GaWxlU3lzdGVtLmNwcApAQCAtMTA1LDQzICsxMDUsMzcgQEAgdm9pZCBET01GaWxlU3lz
dGVtOjpjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5KiBmaWxlRW50cnksIFBhc3NSZWZQdHI8
RmlsZVdyaXQKIHsKICAgICBBU1NFUlQoZmlsZUVudHJ5KTsKIAotICAgIFN0cmluZyBwbGF0Zm9y
bVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGZpbGVFbnRy
eS0+ZnVsbFBhdGgoKSk7Ci0KICAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRlciA9IEZp
bGVXcml0ZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIFJlZlB0cjxG
aWxlV3JpdGVyQmFzZUNhbGxiYWNrPiBjb252ZXJzaW9uQ2FsbGJhY2sgPSBDb252ZXJ0VG9GaWxl
V3JpdGVyQ2FsbGJhY2s6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2spOwogICAgIE93blB0cjxGaWxl
V3JpdGVyQmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6
OmNyZWF0ZShmaWxlV3JpdGVyLCBjb252ZXJzaW9uQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOwot
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0ZXIoZmlsZVdyaXRlci5nZXQoKSwgcGxh
dGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+
Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSwgY2Fs
bGJhY2tzLnJlbGVhc2UoKSk7CiB9CiAKIG5hbWVzcGFjZSB7CiAKIGNsYXNzIEdldFBhdGhDYWxs
YmFjayA6IHB1YmxpYyBGaWxlU3lzdGVtQ2FsbGJhY2tzQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8R2V0UGF0aENhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtPiBmaWxlc3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPEdldFBh
dGhDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEdldFBhdGhDYWxsYmFjayhmaWxlc3lzdGVtLCBwYXRo
LCBuYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBHZXRQYXRoQ2FsbGJhY2soZmlsZXN5c3RlbSwgbmFtZSwgc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
YWRNZXRhZGF0YShjb25zdCBGaWxlTWV0YWRhdGEmIG1ldGFkYXRhKQogICAgIHsKLSAgICAgICAg
aWYgKCFtZXRhZGF0YS5wbGF0Zm9ybVBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9wYXRo
ID0gbWV0YWRhdGEucGxhdGZvcm1QYXRoOwotCi0gICAgICAgIG1fZmlsZXN5c3RlbS0+c2NoZWR1
bGVDYWxsYmFjayhtX3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIEZpbGU6OmNyZWF0ZVdpdGhO
YW1lKG1fcGF0aCwgbV9uYW1lKSk7CisgICAgICAgIEFTU0VSVCghbWV0YWRhdGEucGxhdGZvcm1Q
YXRoLmlzRW1wdHkoKSk7CisgICAgICAgIG1fZmlsZXN5c3RlbS0+c2NoZWR1bGVDYWxsYmFjayht
X3N1Y2Nlc3NDYWxsYmFjay5yZWxlYXNlKCksIEZpbGU6OmNyZWF0ZVdpdGhOYW1lKG1ldGFkYXRh
LnBsYXRmb3JtUGF0aCwgbV9uYW1lKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEdldFBhdGhD
YWxsYmFjayhQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3Vj
Y2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCisg
ICAgR2V0UGF0aENhbGxiYWNrKFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZXN5c3RlbSwg
Y29uc3QgU3RyaW5nJiBuYW1lLCAgUGFzc1JlZlB0cjxGaWxlQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxs
YmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogICAgICAgICA6
IEZpbGVTeXN0ZW1DYWxsYmFja3NCYXNlKGVycm9yQ2FsbGJhY2spCiAgICAgICAgICwgbV9maWxl
c3lzdGVtKGZpbGVzeXN0ZW0pCi0gICAgICAgICwgbV9wYXRoKHBhdGgpCiAgICAgICAgICwgbV9u
YW1lKG5hbWUpCiAgICAgICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQog
ICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlc3lzdGVtOwot
ICAgIFN0cmluZyBtX3BhdGg7CiAgICAgU3RyaW5nIG1fbmFtZTsKICAgICBSZWZQdHI8RmlsZUNh
bGxiYWNrPiBtX3N1Y2Nlc3NDYWxsYmFjazsKIH07CkBAIC0xNTAsOSArMTQ0LDcgQEAgcHJpdmF0
ZToKIAogdm9pZCBET01GaWxlU3lzdGVtOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVFbnRyeSogZmls
ZUVudHJ5LCBQYXNzUmVmUHRyPEZpbGVDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nIHBsYXRmb3Jt
UGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZmlsZUVudHJ5
LT5mdWxsUGF0aCgpKTsKLQotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGxh
dGZvcm1QYXRoLCBHZXRQYXRoQ2FsbGJhY2s6OmNyZWF0ZSh0aGlzLCBwbGF0Zm9ybVBhdGgsIGZp
bGVFbnRyeS0+bmFtZSgpLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBt
X2FzeW5jRmlsZVN5c3RlbS0+cmVhZE1ldGFkYXRhKGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSwgR2V0
UGF0aENhbGxiYWNrOjpjcmVhdGUodGhpcywgZmlsZUVudHJ5LT5uYW1lKCksIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1CYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3BwCmluZGV4IGM0NGQxMzYu
LjY4YTAwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3Rl
bUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2Uu
Y3BwCkBAIC0xMDUsOCArMTA1LDcgQEAgU2VjdXJpdHlPcmlnaW4qIERPTUZpbGVTeXN0ZW1CYXNl
OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAKIGJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldE1l
dGFkYXRhKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2spCiB7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0
dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkpOwotICAgIG1fYXN5bmNGaWxlU3lz
dGVtLT5yZWFkTWV0YWRhdGEocGxhdGZvcm1QYXRoLCBNZXRhZGF0YUNhbGxiYWNrczo6Y3JlYXRl
KHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIG1fYXN5bmNGaWxlU3lzdGVt
LT5yZWFkTWV0YWRhdGEoZW50cnktPmZ1bGxQYXRoKCksIE1ldGFkYXRhQ2FsbGJhY2tzOjpjcmVh
dGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTE1Niw5ICsxNTUsNyBAQCBib29sIERPTUZpbGVTeXN0ZW1CYXNlOjptb3ZlKGNvbnN0
IEVudHJ5QmFzZSogc291cmNlLCBFbnRyeUJhc2UqIHBhcmVudCwgY29uc3QgUwogICAgIGlmICgh
dmVyaWZ5QW5kR2V0RGVzdGluYXRpb25QYXRoRm9yQ29weU9yTW92ZShzb3VyY2UsIHBhcmVudCwg
bmV3TmFtZSwgZGVzdGluYXRpb25QYXRoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
U3RyaW5nIHNvdXJjZVBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9Q
bGF0Zm9ybVBhdGgoc291cmNlLT5mdWxsUGF0aCgpKTsKLSAgICBTdHJpbmcgZGVzdGluYXRpb25Q
bGF0Zm9ybVBhdGggPSBwYXJlbnQtPmZpbGVzeXN0ZW0oKS0+YXN5bmNGaWxlU3lzdGVtKCktPnZp
cnR1YWxUb1BsYXRmb3JtUGF0aChkZXN0aW5hdGlvblBhdGgpOwotICAgIG1fYXN5bmNGaWxlU3lz
dGVtLT5tb3ZlKHNvdXJjZVBsYXRmb3JtUGF0aCwgZGVzdGluYXRpb25QbGF0Zm9ybVBhdGgsIEVu
dHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlz
LCBkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+aXNEaXJlY3RvcnkoKSkpOworICAgIG1fYXN5bmNG
aWxlU3lzdGVtLT5tb3ZlKHNvdXJjZS0+ZnVsbFBhdGgoKSwgZGVzdGluYXRpb25QYXRoLCBFbnRy
eUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywg
ZGVzdGluYXRpb25QYXRoLCBzb3VyY2UtPmlzRGlyZWN0b3J5KCkpKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTY4LDkgKzE2NSw3IEBAIGJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmNvcHko
Y29uc3QgRW50cnlCYXNlKiBzb3VyY2UsIEVudHJ5QmFzZSogcGFyZW50LCBjb25zdCBTCiAgICAg
aWYgKCF2ZXJpZnlBbmRHZXREZXN0aW5hdGlvblBhdGhGb3JDb3B5T3JNb3ZlKHNvdXJjZSwgcGFy
ZW50LCBuZXdOYW1lLCBkZXN0aW5hdGlvblBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBTdHJpbmcgc291cmNlUGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1
YWxUb1BsYXRmb3JtUGF0aChzb3VyY2UtPmZ1bGxQYXRoKCkpOwotICAgIFN0cmluZyBkZXN0aW5h
dGlvblBsYXRmb3JtUGF0aCA9IHBhcmVudC0+ZmlsZXN5c3RlbSgpLT5hc3luY0ZpbGVTeXN0ZW0o
KS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGRlc3RpbmF0aW9uUGF0aCk7Ci0gICAgbV9hc3luY0Zp
bGVTeXN0ZW0tPmNvcHkoc291cmNlUGxhdGZvcm1QYXRoLCBkZXN0aW5hdGlvblBsYXRmb3JtUGF0
aCwgRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IHRoaXMsIGRlc3RpbmF0aW9uUGF0aCwgc291cmNlLT5pc0RpcmVjdG9yeSgpKSk7CisgICAgbV9h
c3luY0ZpbGVTeXN0ZW0tPmNvcHkoc291cmNlLT5mdWxsUGF0aCgpLCBkZXN0aW5hdGlvblBhdGgs
IEVudHJ5Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0
aGlzLCBkZXN0aW5hdGlvblBhdGgsIHNvdXJjZS0+aXNEaXJlY3RvcnkoKSkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xODAsOCArMTc1LDcgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6
cmVtb3ZlKGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPgog
ICAgIC8vIFdlIGRvbid0IGFsbG93IGNhbGxpbmcgcmVtb3ZlKCkgb24gdGhlIHJvb3QgZGlyZWN0
b3J5LgogICAgIGlmIChlbnRyeS0+ZnVsbFBhdGgoKSA9PSBTdHJpbmcoRE9NRmlsZVBhdGg6OnJv
b3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1f
YXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoZW50cnktPmZ1bGxQYXRoKCkp
OwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5yZW1vdmUocGxhdGZvcm1QYXRoLCBWb2lkQ2FsbGJh
Y2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgbV9hc3lu
Y0ZpbGVTeXN0ZW0tPnJlbW92ZShlbnRyeS0+ZnVsbFBhdGgoKSwgVm9pZENhbGxiYWNrczo6Y3Jl
YXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0xOTEsOCArMTg1LDcgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6cmVtb3ZlUmVj
dXJzaXZlbHkoY29uc3QgRW50cnlCYXNlKiBlbnRyeSwgUGFzc1JlZlB0cjxWb2kKICAgICAvLyBX
ZSBkb24ndCBhbGxvdyBjYWxsaW5nIHJlbW92ZSgpIG9uIHRoZSByb290IGRpcmVjdG9yeS4KICAg
ICBpZiAoZW50cnktPmZ1bGxQYXRoKCkgPT0gU3RyaW5nKERPTUZpbGVQYXRoOjpyb290KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmls
ZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGVudHJ5LT5mdWxsUGF0aCgpKTsKLSAgICBt
X2FzeW5jRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkocGxhdGZvcm1QYXRoLCBWb2lkQ2Fs
bGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgbV9h
c3luY0ZpbGVTeXN0ZW0tPnJlbW92ZVJlY3Vyc2l2ZWx5KGVudHJ5LT5mdWxsUGF0aCgpLCBWb2lk
Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTIwMCw0NiArMTkzLDQzIEBAIGJvb2wgRE9NRmlsZVN5c3Rl
bUJhc2U6OmdldFBhcmVudChjb25zdCBFbnRyeUJhc2UqIGVudHJ5LCBQYXNzUmVmUHRyPEVudHJ5
Q2FsbGJhCiB7CiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBTdHJpbmcgcGF0aCA9IERPTUZpbGVQ
YXRoOjpnZXREaXJlY3RvcnkoZW50cnktPmZ1bGxQYXRoKCkpOwotICAgIFN0cmluZyBwbGF0Zm9y
bVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKHBhdGgpOwot
ICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGxhdGZvcm1QYXRoLCBFbnRy
eUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywg
cGF0aCwgdHJ1ZSkpOworCisgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhw
YXRoLCBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFj
aywgdGhpcywgcGF0aCwgdHJ1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIERPTUZp
bGVTeXN0ZW1CYXNlOjpnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFncywgUGFzc1JlZlB0cjxFbnRyeUNh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaykKK2Jvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldEZpbGUoY29uc3QgRW50cnlCYXNl
KiBlbnRyeSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFn
cywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKICAgICBTdHJpbmcgYWJzb2x1dGVQYXRo
OwotICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRoKG1fYXN5bmNGaWxlU3lzdGVtLT50eXBlKCks
IGJhc2UsIHBhdGgsIGFic29sdXRlUGF0aCkpCisgICAgaWYgKCFwYXRoVG9BYnNvbHV0ZVBhdGgo
bV9hc3luY0ZpbGVTeXN0ZW0tPnR5cGUoKSwgZW50cnksIHBhdGgsIGFic29sdXRlUGF0aCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5j
RmlsZVN5c3RlbS0+dmlydHVhbFRvUGxhdGZvcm1QYXRoKGFic29sdXRlUGF0aCk7CiAgICAgT3du
UHRyPEVudHJ5Q2FsbGJhY2tzPiBjYWxsYmFja3MgPSBFbnRyeUNhbGxiYWNrczo6Y3JlYXRlKHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgdGhpcywgYWJzb2x1dGVQYXRoLCBmYWxzZSk7
CiAgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2FzeW5jRmls
ZVN5c3RlbS0+Y3JlYXRlRmlsZShwbGF0Zm9ybVBhdGgsIGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBj
YWxsYmFja3MucmVsZWFzZSgpKTsKKyAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZUZp
bGUoYWJzb2x1dGVQYXRoLCBmbGFncy0+aXNFeGNsdXNpdmUoKSwgY2FsbGJhY2tzLnJlbGVhc2Uo
KSk7CiAgICAgZWxzZQotICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhwbGF0
Zm9ybVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgICAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+ZmlsZUV4aXN0cyhhYnNvbHV0ZVBhdGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIERPTUZpbGVTeXN0ZW1CYXNlOjpnZXREaXJlY3RvcnkoY29u
c3QgRW50cnlCYXNlKiBiYXNlLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8V2ViS2l0
RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRyPEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQorYm9vbCBET01GaWxlU3lz
dGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgUGFzc1JlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3MsIFBhc3NSZWZQdHI8RW50cnlD
YWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9y
Q2FsbGJhY2spCiB7CiAgICAgU3RyaW5nIGFic29sdXRlUGF0aDsKLSAgICBpZiAoIXBhdGhUb0Fi
c29sdXRlUGF0aChtX2FzeW5jRmlsZVN5c3RlbS0+dHlwZSgpLCBiYXNlLCBwYXRoLCBhYnNvbHV0
ZVBhdGgpKQorICAgIGlmICghcGF0aFRvQWJzb2x1dGVQYXRoKG1fYXN5bmNGaWxlU3lzdGVtLT50
eXBlKCksIGVudHJ5LCBwYXRoLCBhYnNvbHV0ZVBhdGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxU
b1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwogICAgIE93blB0cjxFbnRyeUNhbGxiYWNrcz4g
Y2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9y
Q2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwgdHJ1ZSk7CiAgICAgaWYgKGZsYWdzICYmIGZs
YWdzLT5pc0NyZWF0ZSgpKQotICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0
b3J5KHBsYXRmb3JtUGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNl
KCkpOworICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlRGlyZWN0b3J5KGFic29sdXRl
UGF0aCwgZmxhZ3MtPmlzRXhjbHVzaXZlKCksIGNhbGxiYWNrcy5yZWxlYXNlKCkpOwogICAgIGVs
c2UKLSAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwbGF0Zm9ybVBh
dGgsIGNhbGxiYWNrcy5yZWxlYXNlKCkpOworICAgICAgICBtX2FzeW5jRmlsZVN5c3RlbS0+ZGly
ZWN0b3J5RXhpc3RzKGFic29sdXRlUGF0aCwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIGJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OnJlYWREaXJlY3RvcnkoUGFz
c1JlZlB0cjxEaXJlY3RvcnlSZWFkZXJCYXNlPiByZWFkZXIsIGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewogICAgIEFTU0VSVChET01GaWxlUGF0aDo6
aXNBYnNvbHV0ZShwYXRoKSk7Ci0gICAgU3RyaW5nIHBsYXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxl
U3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgocGF0aCk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0
ZW0tPnJlYWREaXJlY3RvcnkocGxhdGZvcm1QYXRoLCBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCByZWFkZXIsIHBhdGgpKTsKKyAgICBtX2Fz
eW5jRmlsZVN5c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBFbnRyaWVzQ2FsbGJhY2tzOjpjcmVh
dGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCByZWFkZXIsIHBhdGgpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtU3luYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1T
eW5jLmNwcAppbmRleCBlZTZhM2FjLi5lN2E4Y2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RPTUZpbGVTeXN0ZW1TeW5jLmNwcApAQCAtMTU2LDkgKzE1Niw4IEBAIHByaXZhdGU6CiBQ
YXNzUmVmUHRyPEZpbGU+IERPTUZpbGVTeXN0ZW1TeW5jOjpjcmVhdGVGaWxlKGNvbnN0IEZpbGVF
bnRyeVN5bmMqIGZpbGVFbnRyeSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZWMgPSAwOwot
ICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxh
dGZvcm1QYXRoKGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSk7CiAgICAgUmVmUHRyPEdldFBhdGhIZWxw
ZXI6OkdldFBhdGhSZXN1bHQ+IHJlc3VsdChHZXRQYXRoSGVscGVyOjpHZXRQYXRoUmVzdWx0Ojpj
cmVhdGUoKSk7Ci0gICAgbV9hc3luY0ZpbGVTeXN0ZW0tPnJlYWRNZXRhZGF0YShwbGF0Zm9ybVBh
dGgsIEdldFBhdGhIZWxwZXI6OmNyZWF0ZShyZXN1bHQpKTsKKyAgICBtX2FzeW5jRmlsZVN5c3Rl
bS0+cmVhZE1ldGFkYXRhKGZpbGVFbnRyeS0+ZnVsbFBhdGgoKSwgR2V0UGF0aEhlbHBlcjo6Y3Jl
YXRlKHJlc3VsdCkpOwogICAgIGlmICghbV9hc3luY0ZpbGVTeXN0ZW0tPndhaXRGb3JPcGVyYXRp
b25Ub0NvbXBsZXRlKCkpIHsKICAgICAgICAgZWMgPSBGaWxlRXhjZXB0aW9uOjpBQk9SVF9FUlI7
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY3LDkgKzE2Niw4IEBAIFBhc3NSZWZQdHI8RmlsZT4g
RE9NRmlsZVN5c3RlbVN5bmM6OmNyZWF0ZUZpbGUoY29uc3QgRmlsZUVudHJ5U3luYyogZmlsZUVu
dHJ5LCBFCiAgICAgICAgIGVjID0gcmVzdWx0LT5tX2NvZGU7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KLSAgICBpZiAoIXJlc3VsdC0+bV9wYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcGxhdGZv
cm1QYXRoID0gcmVzdWx0LT5tX3BhdGg7Ci0gICAgcmV0dXJuIEZpbGU6OmNyZWF0ZVdpdGhOYW1l
KHBsYXRmb3JtUGF0aCwgZmlsZUVudHJ5LT5uYW1lKCkpOworICAgIEFTU0VSVCghcmVzdWx0LT5t
X3BhdGguaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gRmlsZTo6Y3JlYXRlV2l0aE5hbWUocmVzdWx0
LT5tX3BhdGgsIGZpbGVFbnRyeS0+bmFtZSgpKTsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTI0Mywx
NCArMjQxLDEzIEBAIFBhc3NSZWZQdHI8RmlsZVdyaXRlclN5bmM+IERPTUZpbGVTeXN0ZW1TeW5j
OjpjcmVhdGVXcml0ZXIoY29uc3QgRmlsZUVudHJ5U3luYyoKICAgICBBU1NFUlQoZmlsZUVudHJ5
KTsKICAgICBlYyA9IDA7CiAKLSAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9hc3luY0ZpbGVT
eXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChmaWxlRW50cnktPmZ1bGxQYXRoKCkpOwogCiAg
ICAgUmVmUHRyPEZpbGVXcml0ZXJTeW5jPiBmaWxlV3JpdGVyID0gRmlsZVdyaXRlclN5bmM6OmNy
ZWF0ZSgpOwogICAgIFJlZlB0cjxSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrPiBzdWNjZXNzQ2Fs
bGJhY2sgPSBSZWNlaXZlRmlsZVdyaXRlckNhbGxiYWNrOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8
TG9jYWxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gTG9jYWxFcnJvckNhbGxiYWNrOjpj
cmVhdGUoKTsKIAogICAgIE93blB0cjxGaWxlV3JpdGVyQmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tz
ID0gRmlsZVdyaXRlckJhc2VDYWxsYmFja3M6OmNyZWF0ZShmaWxlV3JpdGVyLCBzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2spOwotICAgIG1fYXN5bmNGaWxlU3lzdGVtLT5jcmVhdGVXcml0
ZXIoZmlsZVdyaXRlci5nZXQoKSwgcGxhdGZvcm1QYXRoLCBjYWxsYmFja3MucmVsZWFzZSgpKTsK
KyAgICBtX2FzeW5jRmlsZVN5c3RlbS0+Y3JlYXRlV3JpdGVyKGZpbGVXcml0ZXIuZ2V0KCksIGZp
bGVFbnRyeS0+ZnVsbFBhdGgoKSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CiAgICAgaWYgKCFtX2Fz
eW5jRmlsZVN5c3RlbS0+d2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKSkgewogICAgICAgICBl
YyA9IEZpbGVFeGNlcHRpb246OkFCT1JUX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmNwcAppbmRleCBiMWEzZmUyLi40MDRh
YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Bc3luY0ZpbGVTeXN0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5jcHAKQEAg
LTUyLDM0ICs1MiwxMyBAQCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gQXN5bmNGaWxlU3lz
dGVtOjpjcmVhdGUoVHlwZSwgY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gMDsKIH0KIAotLy8g
RGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KIHZvaWQgQXN5bmNGaWxlU3lzdGVtOjpvcGVuRmlsZVN5
c3RlbShjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VJZGVudGlm
aWVyLCBUeXBlIHR5cGUsIGJvb2wsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tz
PiBjYWxsYmFja3MpCiB7Ci0gICAgU3RyaW5nIHR5cGVTdHJpbmcgPSAodHlwZSA9PSBQZXJzaXN0
ZW50KSA/ICJQZXJzaXN0ZW50IiA6ICJUZW1wb3JhcnkiOwotCi0gICAgU3RyaW5nIG5hbWUgPSBz
dG9yYWdlSWRlbnRpZmllcjsKLSAgICBuYW1lICs9ICI6IjsKLSAgICBuYW1lICs9IHR5cGVTdHJp
bmc7Ci0KLSAgICBTdHJpbmcgcm9vdFBhdGggPSBiYXNlUGF0aDsKLSAgICByb290UGF0aC5hcHBl
bmQoUGxhdGZvcm1GaWxlUGF0aFNlcGFyYXRvcik7Ci0gICAgcm9vdFBhdGggKz0gc3RvcmFnZUlk
ZW50aWZpZXI7Ci0gICAgcm9vdFBhdGguYXBwZW5kKFBsYXRmb3JtRmlsZVBhdGhTZXBhcmF0b3Ip
OwotICAgIHJvb3RQYXRoICs9IHR5cGVTdHJpbmc7Ci0gICAgcm9vdFBhdGguYXBwZW5kKFBsYXRm
b3JtRmlsZVBhdGhTZXBhcmF0b3IpOwotCi0gICAgY2FsbGJhY2tzLT5kaWRPcGVuRmlsZVN5c3Rl
bShuYW1lLCBBc3luY0ZpbGVTeXN0ZW06OmNyZWF0ZSh0eXBlLCByb290UGF0aCkpOworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgY2FsbGJhY2tzLT5kaWRGYWlsKE5PVF9TVVBQT1JURURfRVJS
KTsKIH0KICNlbmRpZgogCi0vLyBEZWZhdWx0IGltcGxlbWVudGF0aW9uLgotU3RyaW5nIEFzeW5j
RmlsZVN5c3RlbTo6dmlydHVhbFRvUGxhdGZvcm1QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoIW1fcGxhdGZvcm1Sb290UGF0aC5pc0VtcHR5KCkpOwotICAgIFN0
cmluZyB2aXJ0dWFsUGF0aCA9IHBhdGg7Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1Sb290UGF0aCAr
IHZpcnR1YWxQYXRoLnJlcGxhY2UoJy8nLCBQbGF0Zm9ybUZpbGVQYXRoU2VwYXJhdG9yKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0FzeW5jRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKaW5kZXggMzU3MGRlNC4uYzJjNjg0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQXN5bmNGaWxlU3lzdGVtLmgKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIAorI2luY2x1ZGUgIktVUkwuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTY2LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCB3YWl0Rm9yT3BlcmF0aW9uVG9Db21wbGV0ZSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICAvLyBDcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IHBsYXRmb3JtLXNwZWNpZmljIEFzeW5j
RmlsZVN5c3RlbSBpbnN0YW5jZSBpZiB0aGUgcGxhdGZvcm0gaGFzIGl0cyBvd24gaW1wbGVtZW50
YXRpb24uCi0gICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBjcmVhdGUoVHlw
ZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QXN5bmNG
aWxlU3lzdGVtPiBjcmVhdGUoVHlwZSk7CiAKICAgICAvLyBPcGVucyBhIG5ldyBmaWxlIHN5c3Rl
bS4gVGhlIGNyZWF0ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHRvIGNyZWF0
ZSB0aGUgcGF0aCBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0cy4KICAgICBzdGF0aWMgdm9p
ZCBvcGVuRmlsZVN5c3RlbShjb25zdCBTdHJpbmcmIGJhc2VQYXRoLCBjb25zdCBTdHJpbmcmIHN0
b3JhZ2VJZGVudGlmaWVyLCBUeXBlLCBib29sIGNyZWF0ZSwgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW1DYWxsYmFja3M+KTsKQEAgLTEyNywyMyArMTI4LDE1IEBAIHB1YmxpYzoKICAgICAvLyBB
c3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBpcyBjYWxsZWQgb3RoZXJ3aXNlLgog
ICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFj
a3M+KSA9IDA7CiAKLSAgICAvLyBDb252ZXJ0cyBhIGdpdmVuIGFic29sdXRlIHZpcnR1YWwgcGF0
aCB0byBhIHBsYXRmb3JtIHBhdGggdGhhdCBzdGFydHMgd2l0aCB0aGUgcGxhdGZvcm0gcm9vdCBw
YXRoIG9mIHRoaXMgZmlsZSBzeXN0ZW0uCi0gICAgdmlydHVhbCBTdHJpbmcgdmlydHVhbFRvUGxh
dGZvcm1QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3Q7Ci0KLSAgICAvLyBHZXR0ZXIgZm9y
IHRoaXMgZmlsZSBzeXN0ZW0ncyByb290IHBhdGguCi0gICAgU3RyaW5nIHJvb3QoKSBjb25zdCB7
IHJldHVybiBtX3BsYXRmb3JtUm9vdFBhdGg7IH0KLQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgQXN5bmNGaWxlU3lzdGVtKFR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBwbGF0Zm9ybVJvb3RQYXRoKQorICAgIEFzeW5jRmlsZVN5c3Rl
bShUeXBlIHR5cGUpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9wbGF0Zm9y
bVJvb3RQYXRoKHBsYXRmb3JtUm9vdFBhdGgpCiAgICAgewogICAgIH0KIAogICAgIFR5cGUgbV90
eXBlOwotICAgIFN0cmluZyBtX3BsYXRmb3JtUm9vdFBhdGg7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDdhYzkxNTkuLmQxOGQxZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDYtMTMg
IEVyaWMgVWhyaGFuZSAgPGVyaWN1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBmaWxlc3lzdGVtIGJhc2UgcGF0
aCBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjAyMTgKKworICAgICAgICBDaGFuZ2UgYSBidW5jaCBvZiB1cmwtaGVsZC1pbi1hLXN0cmluZyBw
YXJhbWV0ZXJzIGludG8gcmVhbCBLVVJMUyBhbmQKKyAgICAgICAgV2ViVVJMcy4gIEFsc28gYWRk
IGEgI2RlZmluZSB0byBtYWtlIGl0IGVhc2llciB0byBzdGFnZSB0aGlzIGNoYW5nZSwgYXMKKyAg
ICAgICAgaXQgaW52b2x2ZXMgYm90aCBDaHJvbWl1bSBhbmQgV2ViS2l0IGNoYW5nZXMgdGhhdCB3
b3VsZCBpZGVhbGx5IGJlIAorICAgICAgICBzaW11bHRhbmVvdXMuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLS1ubyBjaGFuZ2UgaW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJGaWxlU3lzdGVtLmg6CisgICAgICAgICogcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3Mu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBzcmMvQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHNyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bS5oOgorICAgICAgICAqIHNyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAg
ICAgICogc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YkZyYW1lSW1wbC5jcHA6CisgICAgICAgICogc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmNwcDoKKyAgICAgICAgKiBzcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaDoK
KyAgICAgICAgKiBzcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAqIHNyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHNyYy9X
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAgICAgICAgKiBzcmMvV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oOgorICAgICAgICAqIHNyYy9Xb3JrZXJGaWxlV3Jp
dGVyQ2FsbGJhY2tzQnJpZGdlLmNwcDoKKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZS5oOgorCiAyMDExLTA2LTEzICBKaWFuIExpICA8amlhbmxpQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW0uaAppbmRleCA3NzNhMWY1Li5jZjkzZWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCkBA
IC0zMiw3ICszMiw3IEBACiAjZGVmaW5lIFdlYkZpbGVTeXN0ZW1faAogCiAjaW5jbHVkZSAiV2Vi
Q29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01NCwyOCArNTQsMjggQEAgcHVibGljOgogICAgIC8v
IE1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0aHwuCiAg
ICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVk
IHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2Uu
Ci0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgV2ViU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBX
ZWJTdHJpbmcmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW92ZShjb25zdCBXZWJVUkwm
IHNyY1BhdGgsIGNvbnN0IFdlYlVSTCYgZGVzdFBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3Mq
KSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ29waWVzIGEgZmls
ZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8IHRvIHxkZXN0UGF0aHwuCiAgICAgLy8gV2ViRmls
ZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9w
ZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVh
bCB2b2lkIGNvcHkoY29uc3QgV2ViU3RyaW5nJiBzcmNQYXRoLCBjb25zdCBXZWJTdHJpbmcmIGRl
c3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29weShjb25zdCBXZWJVUkwmIHNyY1BhdGgsIGNv
bnN0IFdlYlVSTCYgZGVzdFBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gRGVsZXRlcyBhIGZpbGUgb3IgZGlyZWN0
b3J5IGF0IGEgZ2l2ZW4gfHBhdGh8LgogICAgIC8vIEl0IGlzIGFuIGVycm9yIHRvIHRyeSB0byBy
ZW1vdmUgYSBkaXJlY3RvcnkgdGhhdCBpcyBub3QgZW1wdHkuCiAgICAgLy8gV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlv
biBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmUo
Y29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIERlbGV0ZXMgYSBmaWxlIG9yIGRpcmVjdG9y
eSByZWN1cnNpdmVseSBhdCBhIGdpdmVuIHxwYXRofC4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlz
IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6
ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlUmVjdXJzaXZlbHkoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIFJldHJpZXZl
cyB0aGUgbWV0YWRhdGEgaW5mb3JtYXRpb24gb2YgdGhlIGZpbGUgb3IgZGlyZWN0b3J5IGF0IHRo
ZSBnaXZlbiB8cGF0aHwuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZE1l
dGFkYXRhKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHZhbGlkIG1ldGFkYXRhIHdoZW4gdGhlIHJl
dHJpZXZhbCBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVh
bCB2b2lkIHJlYWRNZXRhZGF0YShjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCByZWFkTWV0YWRhdGEoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIC8vIENyZWF0ZXMg
YSBmaWxlIGF0IGdpdmVuIHxwYXRofC4KICAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhp
c3QsIGl0IGNyZWF0ZXMgYSBuZXcgZmlsZSBhdCB8cGF0aHwuCkBAIC04NSw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICAvLwogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQo
KSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3Nm
dWxseS4KICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBj
YWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdlYlN0
cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxl
KGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAgICAgLy8gQ3JlYXRlcyBh
IGRpcmVjdG9yeSBhdCBhIGdpdmVuIHxwYXRofC4KICAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNu
J3QgZXhpc3QsIGl0IGNyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IGF0IHxwYXRofC4KQEAgLTk1LDI2
ICs5NSwyNiBAQCBwdWJsaWM6CiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3Vj
Y2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4KICAgICAvLyB0aGUgb3BlcmF0aW9uIGlzIGNvbXBs
ZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFp
bCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGly
ZWN0b3J5KGNvbnN0IFdlYlN0cmluZyYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVEaXJlY3RvcnkoY29uc3QgV2ViVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2
ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiAKICAgICAvLyBDaGVja3MgaWYgYSBmaWxlIGV4aXN0cyBhdCBhIGdpdmVuIHxwYXRofC4K
ICAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVkKCkgbXVzdCBiZSBjYWxs
ZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAgLy8g
V2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUgY2FsbGVkIG90aGVyd2lz
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUV4aXN0cyhjb25zdCBXZWJTdHJpbmcmIHBhdGgsIFdl
YkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBmaWxlRXhpc3RzKGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5
c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICAv
LyBDaGVja3MgaWYgYSBkaXJlY3RvcnkgZXhpc3RzIGF0IGEgZ2l2ZW4gfHBhdGh8LgogICAgIC8v
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVu
IHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KICAgICAvLyBXZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAg
IHZpcnR1YWwgdm9pZCBkaXJlY3RvcnlFeGlzdHMoY29uc3QgV2ViU3RyaW5nJiBwYXRoLCBXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmls
ZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAg
ICAvLyBSZWFkcyBkaXJlY3RvcnkgZW50cmllcyBvZiBhIGdpdmVuIGRpcmVjdG9yeSBhdCB8cGF0
aHwuCiAgICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkUmVhZERpcmVjdG9yeSgpIG11
c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5
LgogICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxl
ZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlYWREaXJlY3RvcnkoY29uc3QgV2ViU3Ry
aW5nJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVhZERpcmVjdG9yeShjb25zdCBXZWJVUkwm
IHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogCiAgICAgLy8gQ3JlYXRlcyBhIFdlYkZpbGVXcml0ZXIgdGhhdCBjYW4gYmUgdXNl
ZCB0byB3cml0ZSB0byB0aGUgZ2l2ZW4gZmlsZS4KICAgICAvLyBUaGlzIGlzIGEgZmFzdCwgc3lu
Y2hyb25vdXMgY2FsbCwgYW5kIHNob3VsZCBub3Qgc3RhdCB0aGUgZmlsZXN5c3RlbS4KLSAgICB2
aXJ0dWFsIFdlYkZpbGVXcml0ZXIqIGNyZWF0ZUZpbGVXcml0ZXIoY29uc3QgV2ViU3RyaW5nJiBw
YXRoLCBXZWJGaWxlV3JpdGVyQ2xpZW50KikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJGaWxlV3JpdGVyKiBjcmVhdGVGaWxlV3JpdGVy
KGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVdyaXRlckNsaWVudCopIHsgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+
V2ViRmlsZVN5c3RlbSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oCmluZGV4IGZhN2ViYmUuLjExNDUzNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZpbGVTeXN0ZW1DYWxs
YmFja3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzLmgKQEAgLTM4LDggKzM4LDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVVJMOwogc3RydWN0IFdlYkZpbGVJbmZvOwogCisvLyBU
ZW1wb3JhcnkgaGFjayB0byBlYXNlIGEgNC1waGFzZSBDaHJvbWl1bS9XZWJLaXQgY29tbWl0Lgor
I2RlZmluZSBXRUJGSUxFU1lTVEVNQ0FMTEJBQ0tTX1VTRV9VUkxfTk9UX1NUUklORyAxCisKIGNs
YXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MgewogcHVibGljOgogICAgIC8vIENhbGxiYWNrIGZv
ciBXZWJGaWxlU3lzdGVtJ3MgdmFyaW91cyBvcGVyYXRpb25zIHRoYXQgZG9uJ3QgcmVxdWlyZQpA
QCAtNTcsOCArNjEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWREaXJlY3Rv
cnkoY29uc3QgV2ViVmVjdG9yPFdlYkZpbGVTeXN0ZW1FbnRyeT4mLCBib29sIGhhc01vcmUpID0g
MDsKIAogICAgIC8vIENhbGxiYWNrIGZvciBXZWJGcmFtZUNsaWVudDo6b3BlbkZpbGVTeXN0ZW0u
IENhbGxlZCB3aXRoIGEgbmFtZSBhbmQKLSAgICAvLyByb290IHBhdGggZm9yIHRoZSBGaWxlU3lz
dGVtIHdoZW4gdGhlIHJlcXVlc3QgaXMgYWNjZXB0ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZE9w
ZW5GaWxlU3lzdGVtKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiByb290
UGF0aCkgPSAwOworICAgIC8vIHJvb3QgVVJMIGZvciB0aGUgRmlsZVN5c3RlbSB3aGVuIHRoZSBy
ZXF1ZXN0IGlzIGFjY2VwdGVkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlVSTCYgcm9vdFVSTCkgPSAwOwogCiAgICAg
Ly8gQ2FsbGVkIHdpdGggYW4gZXJyb3IgY29kZSB3aGVuIGEgcmVxdWVzdGVkIG9wZXJhdGlvbiBo
YXNuJ3QgYmVlbgogICAgIC8vIGNvbXBsZXRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZS5oCmluZGV4IDVkMWM5ODguLjdhMmYyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWUuaApAQCAtMjc4LDExICsyNzgsMTEgQEAgcHVibGljOgogICAg
IC8vIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgZmlsZSBzeXN0ZW0gb2JqZWN0LgogICAgIHZpcnR1
YWwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZUZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6
VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgcGF0aCkgPSAwOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiByb290VVJMKSA9IDA7CiAgICAgLy8gQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBmaWxlIG9yIGRp
cmVjdG9yeSBlbnRyeSBvYmplY3QuCiAgICAgdmlydHVhbCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y3JlYXRlRmlsZUVudHJ5KFdlYkZpbGVTeXN0ZW06OlR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3Rl
bU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3RlbVBhdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3RlbVJv
b3RVUkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgZmlsZVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNEaXJlY3RvcnkpID0gMDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW0uY3BwCmluZGV4IGVmMWY2MTYuLmQ4NjZhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKQEAgLTUwLDkgKzUw
LDEwIEBAIGJvb2wgQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLUFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bShBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCkKLSAg
ICA6IEFzeW5jRmlsZVN5c3RlbSh0eXBlLCByb290UGF0aCkKK0FzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwg
Y29uc3QgS1VSTCYgcm9vdFVSTCkKKyAgICA6IEFzeW5jRmlsZVN5c3RlbSh0eXBlKQogICAgICwg
bV93ZWJGaWxlU3lzdGVtKFdlYktpdDo6d2ViS2l0Q2xpZW50KCktPmZpbGVTeXN0ZW0oKSkKKyAg
ICAsIG1fZmlsZXN5c3RlbVJvb3RVUkwocm9vdFVSTCkKIHsKICAgICBBU1NFUlQobV93ZWJGaWxl
U3lzdGVtKTsKIH0KQEAgLTYzLDU3ICs2NCw1NyBAQCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6
fkFzeW5jRmlsZVN5c3RlbUNocm9taXVtKCkKIAogdm9pZCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6bW92ZShjb25zdCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25QYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQog
ewotICAgIG1fd2ViRmlsZVN5c3RlbS0+bW92ZShzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgs
IG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAg
IG1fd2ViRmlsZVN5c3RlbS0+bW92ZSh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChzb3VyY2VQ
YXRoKSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoZGVzdGluYXRpb25QYXRoKSwgbmV3IFdl
YktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQg
QXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNvcHkoY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1D
YWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPmNvcHkoc291cmNl
UGF0aCwgZGVzdGluYXRpb25QYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
SW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmNvcHkodmlydHVhbFBhdGhU
b0ZpbGVTeXN0ZW1VUkwoc291cmNlUGF0aCksIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGRl
c3RpbmF0aW9uUGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNh
bGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZW1vdmUoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5c3RlbS0+cmVtb3ZlKHBhdGgsIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5
c3RlbS0+cmVtb3ZlKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBuZXcgV2ViS2l0
OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVtb3ZlUmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRo
LCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAg
IG1fd2ViRmlsZVN5c3RlbS0+cmVtb3ZlUmVjdXJzaXZlbHkocGF0aCwgbmV3IFdlYktpdDo6V2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVt
LT5yZW1vdmVSZWN1cnNpdmVseSh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbmV3
IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZv
aWQgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlYWRNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0g
ICAgbV93ZWJGaWxlU3lzdGVtLT5yZWFkTWV0YWRhdGEocGF0aCwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5y
ZWFkTWV0YWRhdGEodmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG5ldyBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lkIEFzeW5j
RmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBl
eGNsdXNpdmUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3Mp
CiB7Ci0gICAgbV93ZWJGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHBhdGgsIGV4Y2x1c2l2ZSwgbmV3
IFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93
ZWJGaWxlU3lzdGVtLT5jcmVhdGVGaWxlKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgp
LCBleGNsdXNpdmUsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxi
YWNrcykpOwogfQogCiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPmNy
ZWF0ZURpcmVjdG9yeShwYXRoLCBleGNsdXNpdmUsIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1D
YWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOworICAgIG1fd2ViRmlsZVN5c3RlbS0+Y3JlYXRlRGly
ZWN0b3J5KHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBleGNsdXNpdmUsIG5ldyBX
ZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiB2b2lk
IEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwg
UGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBt
X3dlYkZpbGVTeXN0ZW0tPmZpbGVFeGlzdHMocGF0aCwgbmV3IFdlYktpdDo6V2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CisgICAgbV93ZWJGaWxlU3lzdGVtLT5maWxlRXhp
c3RzKHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBuZXcgV2ViS2l0OjpXZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzSW1wbChjYWxsYmFja3MpKTsKIH0KIAogdm9pZCBBc3luY0ZpbGVTeXN0
ZW1DaHJvbWl1bTo6ZGlyZWN0b3J5RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVT
eXN0ZW0tPmRpcmVjdG9yeUV4aXN0cyhwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPmRpcmVjdG9yeUV4
aXN0cyh2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbmV3IFdlYktpdDo6V2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgQXN5bmNGaWxlU3lz
dGVtQ2hyb21pdW06OnJlYWREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIG1fd2ViRmlsZVN5
c3RlbS0+cmVhZERpcmVjdG9yeShwYXRoLCBuZXcgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzSW1wbChjYWxsYmFja3MpKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJlYWREaXJlY3Rvcnko
dmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG5ldyBXZWJLaXQ6OldlYkZpbGVTeXN0
ZW1DYWxsYmFja3NJbXBsKGNhbGxiYWNrcykpOwogfQogCiBjbGFzcyBGaWxlV3JpdGVySGVscGVy
Q2FsbGJhY2tzIDogcHVibGljIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJs
aWM6Ci0gICAgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhBc3luY0ZpbGVXcml0ZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIHdlYkZp
bGVTeXN0ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCisgICAgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhBc3luY0ZpbGVXcml0ZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgS1VSTCYgcGF0aCwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3
ZWJGaWxlU3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAgICAgLCBtX3Bh
dGgocGF0aCkKICAgICAgICAgLCBtX3dlYkZpbGVTeXN0ZW0od2ViRmlsZVN5c3RlbSkKQEAgLTE0
NSw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBkZWxldGUgdGhpczsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lz
dGVtKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgcm9vdFBhdGgpCisgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5GaWxlU3lzdGVtKGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYgcm9vdFVSTCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBkZWxldGUgdGhpczsK
QEAgLTE2MCwxNCArMTYxLDI0IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBBc3luY0ZpbGVX
cml0ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIFN0cmluZyBtX3BhdGg7CisgICAgS1VSTCBtX3Bh
dGg7CiAgICAgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiBtX3dlYkZpbGVTeXN0ZW07CiAgICAgT3du
UHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gbV9jYWxsYmFja3M7CiB9Owog
CiB2b2lkIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXcml0ZXIoQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0Zp
bGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBtX3dlYkZpbGVTeXN0ZW0tPnJl
YWRNZXRhZGF0YShwYXRoLCBuZXcgRmlsZVdyaXRlckhlbHBlckNhbGxiYWNrcyhjbGllbnQsIHBh
dGgsIG1fd2ViRmlsZVN5c3RlbSwgY2FsbGJhY2tzKSk7CisgICAgS1VSTCBwYXRoQXNVUkwgPSB2
aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKTsKKyAgICBtX3dlYkZpbGVTeXN0ZW0tPnJl
YWRNZXRhZGF0YShwYXRoQXNVUkwsIG5ldyBGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKGNsaWVu
dCwgcGF0aEFzVVJMLCBtX3dlYkZpbGVTeXN0ZW0sIGNhbGxiYWNrcykpOworfQorCitLVVJMIEFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjp2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBT
dHJpbmcmIHZpcnR1YWxQYXRoKSBjb25zdAoreworICAgIEFTU0VSVCghbV9maWxlc3lzdGVtUm9v
dFVSTC5pc0VtcHR5KCkpOworICAgIEtVUkwgdXJsID0gbV9maWxlc3lzdGVtUm9vdFVSTDsKKyAg
ICAvLyBSZW1vdmUgdGhlIGV4dHJhIGxlYWRpbmcgc2xhc2guCisgICAgdXJsLnNldFBhdGgodXJs
LnBhdGgoKSArIHZpcnR1YWxQYXRoLnN1YnN0cmluZygxKSk7CisgICAgcmV0dXJuIHVybDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0FzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKaW5kZXggZGE5OGEzMy4uMGM1NTBiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXN5bmNGaWxlU3lzdGVtQ2hy
b21pdW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bS5oCkBAIC00MywxMiArNDMsMTMgQEAgY2xhc3MgV2ViRmlsZVN5c3RlbTsKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzOworY2xhc3Mg
S1VSTDsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0gOiBwdWJsaWMgQXN5bmNGaWxl
U3lzdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
IGNyZWF0ZShBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290UGF0
aCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShBc3luY0Zp
bGVTeXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgcm9vdFVSTCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0odHlwZSwgcm9vdFBh
dGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bSh0eXBlLCByb290VVJMKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+QXN5bmNGaWxlU3lzdGVt
Q2hyb21pdW0oKTsKQEAgLTY2LDggKzY3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Y3JlYXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcm
IHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPik7CiAKIHByaXZhdGU6
Ci0gICAgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0oQXN5bmNGaWxlU3lzdGVtOjpUeXBlLCBjb25z
dCBTdHJpbmcmIHJvb3RQYXRoKTsKKyAgICBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bShBc3luY0Zp
bGVTeXN0ZW06OlR5cGUsIGNvbnN0IEtVUkwmIHJvb3RVUkwpOwogICAgIFdlYktpdDo6V2ViRmls
ZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOworCisgICAgLy8gQ29udmVydHMgYSBnaXZlbiBhYnNv
bHV0ZSB2aXJ0dWFsIHBhdGggdG8gYSBmdWxsIG9yaWdpbi1xdWFsaWZpZWQgRmlsZVN5c3RlbSBV
UkwuCisgICAgS1VSTCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChjb25zdCBTdHJpbmcmIHZp
cnR1YWxQYXRoKSBjb25zdDsKKworICAgIEtVUkwgbV9maWxlc3lzdGVtUm9vdFVSTDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsLmNwcAppbmRleCAyMjZhZmQ3Li40
MzdkZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwCkBAIC04NSwxOCArODUsMTggQEAgdm9pZCBXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzSW1wbDo6ZGlkUmVhZERpcmVjdG9yeShjb25zdCBXZWJWZWN0b3I8
V2ViRmlsZVN5c3RlbUUKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzSW1wbDo6ZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcmIHBhdGgpCit2b2lkIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsOjpk
aWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlVSTCYgcm9v
dFVSTCkKIHsKICAgICAvLyBUaGlzIG9iamVjdCBpcyBpbnRlbmRlZCB0byBkZWxldGUgaXRzZWxm
IG9uIGV4aXQuCiAgICAgT3duUHRyPFdlYkZpbGVTeXN0ZW1DYWxsYmFja3NJbXBsPiBjYWxsYmFj
a3MgPSBhZG9wdFB0cih0aGlzKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChtX2Nv
bnRleHQgJiYgbV9jb250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSkgewotICAgICAgICBtX2NhbGxi
YWNrcy0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OmNyZWF0ZShtX2NvbnRleHQsIG1fdHlwZSwgcGF0aCwgbV9zeW5jaHJvbm91cykpOworICAg
ICAgICBtX2NhbGxiYWNrcy0+ZGlkT3BlbkZpbGVTeXN0ZW0obmFtZSwgV29ya2VyQXN5bmNGaWxl
U3lzdGVtQ2hyb21pdW06OmNyZWF0ZShtX2NvbnRleHQsIG1fdHlwZSwgcm9vdFVSTCwgbV9zeW5j
aHJvbm91cykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgbV9jYWxsYmFj
a3MtPmRpZE9wZW5GaWxlU3lzdGVtKG5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVh
dGUobV90eXBlLCBwYXRoKSk7CisgICAgbV9jYWxsYmFja3MtPmRpZE9wZW5GaWxlU3lzdGVtKG5h
bWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUobV90eXBlLCByb290VVJMKSk7CiB9
CiAKIHZvaWQgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGw6OmRpZEZhaWwoV2ViRmlsZUVycm9y
IGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5
c3RlbUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZpbGVT
eXN0ZW1DYWxsYmFja3NJbXBsLmgKaW5kZXggM2UyMTkyZS4uMTBlMGY4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGaWxlU3lzdGVtQ2FsbGJhY2tzSW1w
bC5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFdlYkZpbGVJ
bmZvOwogc3RydWN0IFdlYkZpbGVTeXN0ZW1FbnRyeTsKIGNsYXNzIFdlYlN0cmluZzsKK2NsYXNz
IFdlYlVSTDsKIAogY2xhc3MgV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMgV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrcyB7CiBwdWJsaWM6CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3VjY2VlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFk
TWV0YWRhdGEoY29uc3QgV2ViRmlsZUluZm8mIGluZm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFkRGlyZWN0b3J5KGNvbnN0IFdlYlZlY3RvcjxXZWJGaWxlU3lzdGVtRW50cnk+JiBlbnRyaWVz
LCBib29sIGhhc01vcmUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgcm9vdFBhdGgpOworICAgIHZpcnR1
YWwgdm9pZCBkaWRPcGVuRmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlVSTCYgcm9vdFVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViRmlsZUVycm9yIGVy
cm9yKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCmluZGV4IDIxOWE2ZTkuLjU2NTk1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTAzLDYgKzEwMyw3IEBACiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgInBhaW50aW5nL0dyYXBoaWNzQ29udGV4dEJ1
aWxkZXIuaCIKQEAgLTg2Myw3ICs4NjQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRnJh
bWVJbXBsOjpjcmVhdGVGaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIHRvVjgoRE9N
RmlsZVN5c3RlbTo6Y3JlYXRlKGZyYW1lKCktPmRvY3VtZW50KCksIG5hbWUsIEFzeW5jRmlsZVN5
c3RlbUNocm9taXVtOjpjcmVhdGUoc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0
eXBlKSwgcGF0aCkpKTsKKyAgICByZXR1cm4gdG9WOChET01GaWxlU3lzdGVtOjpjcmVhdGUoZnJh
bWUoKS0+ZG9jdW1lbnQoKSwgbmFtZSwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZShz
dGF0aWNfY2FzdDxBc3luY0ZpbGVTeXN0ZW06OlR5cGU+KHR5cGUpLCBLVVJMKFBhcnNlZFVSTFN0
cmluZywgcGF0aC51dGY4KCkuZGF0YSgpKSkpKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFdlYkZyYW1lSW1wbDo6Y3JlYXRlRmlsZUVudHJ5KFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwK
QEAgLTg3Miw3ICs4NzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRnJhbWVJbXBsOjpj
cmVhdGVGaWxlRW50cnkoV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmls
ZVBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpc0RpcmVjdG9yeSkKIHsKLSAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZp
bGVTeXN0ZW0gPSBET01GaWxlU3lzdGVtOjpjcmVhdGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSwgZmls
ZVN5c3RlbU5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgZmlsZVN5c3RlbVBhdGgpKTsKKyAgICBSZWZQ
dHI8RE9NRmlsZVN5c3RlbUJhc2U+IGZpbGVTeXN0ZW0gPSBET01GaWxlU3lzdGVtOjpjcmVhdGUo
ZnJhbWUoKS0+ZG9jdW1lbnQoKSwgZmlsZVN5c3RlbU5hbWUsIEFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtOjpjcmVhdGUoc3RhdGljX2Nhc3Q8QXN5bmNGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwgS1VS
TChQYXJzZWRVUkxTdHJpbmcsIGZpbGVTeXN0ZW1QYXRoLnV0ZjgoKS5kYXRhKCkpKSk7CiAgICAg
aWYgKGlzRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gdG9WOChEaXJlY3RvcnlFbnRyeTo6Y3Jl
YXRlKGZpbGVTeXN0ZW0sIGZpbGVQYXRoKSk7CiAgICAgcmV0dXJuIHRvVjgoRmlsZUVudHJ5Ojpj
cmVhdGUoZmlsZVN5c3RlbSwgZmlsZVBhdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmNwcAppbmRl
eCA4ZTRiODI5Li44YmM0YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uY3BwCkBAIC01NiwxMiAr
NTYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciBmaWxlU3lz
dGVtT3BlcmF0aW9uc01vZGVbXSA9ICJmaWxlU3lzdGVtT3BlcmF0aW9uc01vZGUiOwogCi1Xb3Jr
ZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5
cGUsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgsIGJvb2wgc3luY2hyb25vdXMpCi0gICAgOiBBc3lu
Y0ZpbGVTeXN0ZW0odHlwZSwgcm9vdFBhdGgpCitXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1
bTo6V29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgQXN5bmNGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGNvbnN0IFdlYktpdDo6V2ViVVJM
JiByb290VVJMLCBib29sIHN5bmNocm9ub3VzKQorICAgIDogQXN5bmNGaWxlU3lzdGVtKHR5cGUp
CiAgICAgLCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKICAgICAsIG1fd2ViRmls
ZVN5c3RlbShXZWJLaXQ6OndlYktpdENsaWVudCgpLT5maWxlU3lzdGVtKCkpCiAgICAgLCBtX3dv
cmtlckNvbnRleHQoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpKQogICAgICwg
bV9zeW5jaHJvbm91cyhzeW5jaHJvbm91cykKKyAgICAsIG1fZmlsZXN5c3RlbVJvb3RVUkwocm9v
dFVSTCkKIHsKICAgICBBU1NFUlQobV93ZWJGaWxlU3lzdGVtKTsKICAgICBBU1NFUlQobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSk7CkBAIC04OSw1NyArOTAsNTcg
QEAgYm9vbCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6d2FpdEZvck9wZXJhdGlvblRv
Q29tcGxldGUoKQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjptb3ZlKGNv
bnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblBhdGgsIFBh
c3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3Jl
YXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0TW92ZVRv
TWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwg
bV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0TW92ZVRvTWFpblRocmVhZChtX3dlYkZpbGVT
eXN0ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHNvdXJjZVBhdGgpLCB2aXJ0dWFsUGF0
aFRvRmlsZVN5c3RlbVVSTChkZXN0aW5hdGlvblBhdGgpLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0
aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y29weShjb25z
dCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBQYXNz
T3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0
ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENvcHlUb01h
aW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBzb3VyY2VQYXRoLCBkZXN0aW5hdGlvblBhdGgsIG1f
bW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENvcHlUb01haW5UaHJlYWQobV93ZWJGaWxlU3lz
dGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChzb3VyY2VQYXRoKSwgdmlydHVhbFBhdGhU
b0ZpbGVTeXN0ZW1VUkwoZGVzdGluYXRpb25QYXRoKSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlv
bik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OnJlbW92ZShjb25z
dCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxs
YmFja3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxs
YmFja3MpLT5wb3N0UmVtb3ZlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgbV9t
b2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVtb3ZlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5
c3RlbSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG1fbW9kZUZvckN1cnJlbnRP
cGVyYXRpb24pOwogfQogCiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpyZW1v
dmVSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVtb3ZlUmVjdXJzaXZlbHlUb01haW5UaHJl
YWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAg
ICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RS
ZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRo
VG9GaWxlU3lzdGVtVVJMKHBhdGgpLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAog
dm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6cmVhZE1ldGFkYXRhKGNvbnN0IFN0
cmluZyYgcGF0aCwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cykKIHsKLSAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNr
cyktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBt
X21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQobV93
ZWJGaWxlU3lzdGVtLCB2aXJ0dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbV9tb2RlRm9y
Q3VycmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OmNyZWF0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgUGFzc093
blB0cjxBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBjcmVhdGVX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNrcyktPnBvc3RDcmVhdGVGaWxl
VG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgcGF0aCwgZXhjbHVzaXZlLCBtX21vZGVGb3JD
dXJyZW50T3BlcmF0aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKGNhbGxiYWNrcyktPnBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3Rl
bSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIGV4Y2x1c2l2ZSwgbV9tb2RlRm9y
Q3VycmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21p
dW06OmNyZWF0ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBQ
YXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNy
ZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdENyZWF0
ZURpcmVjdG9yeVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIGV4Y2x1c2l2ZSwg
bV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CisgICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFk
KG1fd2ViRmlsZVN5c3RlbSwgdmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIGV4Y2x1
c2l2ZSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7CiB9CiAKIHZvaWQgV29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW06OmZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzT3du
UHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIGNyZWF0ZVdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdEZpbGVFeGlzdHNU
b01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0
aW9uKTsKKyAgICBjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKGNhbGxiYWNr
cyktPnBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKG1fd2ViRmlsZVN5c3RlbSwgdmlydHVhbFBh
dGhUb0ZpbGVTeXN0ZW1VUkwocGF0aCksIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwogfQog
CiB2b2lkIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtOjpkaXJlY3RvcnlFeGlzdHMoY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4gY2Fs
bGJhY2tzKQogewotICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2Fs
bGJhY2tzKS0+cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0s
IHBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJhY2tzKS0+cG9zdERpcmVjdG9yeUV4aXN0c1RvTWFp
blRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgp
LCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKIH0KIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVT
eXN0ZW1DaHJvbWl1bTo6cmVhZERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NPd25Q
dHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgY3JlYXRlV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShjYWxsYmFja3MpLT5wb3N0UmVhZERpcmVjdG9y
eVRvTWFpblRocmVhZChtX3dlYkZpbGVTeXN0ZW0sIHBhdGgsIG1fbW9kZUZvckN1cnJlbnRPcGVy
YXRpb24pOworICAgIGNyZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoY2FsbGJh
Y2tzKS0+cG9zdFJlYWREaXJlY3RvcnlUb01haW5UaHJlYWQobV93ZWJGaWxlU3lzdGVtLCB2aXJ0
dWFsUGF0aFRvRmlsZVN5c3RlbVVSTChwYXRoKSwgbV9tb2RlRm9yQ3VycmVudE9wZXJhdGlvbik7
CiB9CiAKIGNsYXNzIFdvcmtlckZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3MgOiBwdWJsaWMgQXN5
bmNGaWxlU3lzdGVtQ2FsbGJhY2tzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxX
b3JrZXJGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzPiBjcmVhdGUoQXN5bmNGaWxlV3JpdGVyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiB3
ZWJGaWxlU3lzdGVtLCBQYXNzT3duUHRyPFdlYkNvcmU6OkFzeW5jRmlsZVN5c3RlbUNhbGxiYWNr
cz4gY2FsbGJhY2tzLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFdvcmtlckZpbGVXcml0ZXJIZWxwZXJDYWxsYmFja3M+IGNyZWF0ZShBc3luY0Zp
bGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJLaXQ6OldlYkZp
bGVTeXN0ZW0qIHdlYkZpbGVTeXN0ZW0sIFBhc3NPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lz
dGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckZpbGVXcml0ZXJIZWxwZXJD
YWxsYmFja3MoY2xpZW50LCBwYXRoLCB3ZWJGaWxlU3lzdGVtLCBjYWxsYmFja3MsIHdvcmtlckNv
bnRleHQpKTsKICAgICB9CkBAIC0xODgsNyArMTg5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICBXb3JrZXJGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKEFzeW5jRmlsZVdyaXRl
ckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3Rl
bSogd2ViRmlsZVN5c3RlbSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxs
YmFja3M+IGNhbGxiYWNrcywgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKKyAgICBXb3Jr
ZXJGaWxlV3JpdGVySGVscGVyQ2FsbGJhY2tzKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50
LCBjb25zdCBXZWJVUkwmIHBhdGgsIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3Rl
bSwgUGFzc093blB0cjxXZWJDb3JlOjpBc3luY0ZpbGVTeXN0ZW1DYWxsYmFja3M+IGNhbGxiYWNr
cywgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKICAgICAgICAgOiBtX2NsaWVudChjbGll
bnQpCiAgICAgICAgICwgbV9wYXRoKHBhdGgpCiAgICAgICAgICwgbV93ZWJGaWxlU3lzdGVtKHdl
YkZpbGVTeXN0ZW0pCkBAIC0xOTgsNyArMTk5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICBB
c3luY0ZpbGVXcml0ZXJDbGllbnQqIG1fY2xpZW50OwotICAgIFN0cmluZyBtX3BhdGg7CisgICAg
V2ViVVJMIG1fcGF0aDsKICAgICBXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIG1fd2ViRmlsZVN5c3Rl
bTsKICAgICBPd25QdHI8V2ViQ29yZTo6QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBtX2NhbGxi
YWNrczsKICAgICBXb3JrZXJDb250ZXh0KiBtX3dvcmtlckNvbnRleHQ7CkBAIC0yMDYsNyArMjA3
LDggQEAgcHJpdmF0ZToKIAogdm9pZCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3Jl
YXRlV3JpdGVyKEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHBh
dGgsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0g
ICAgY3JlYXRlV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZShXb3JrZXJGaWxlV3JpdGVy
SGVscGVyQ2FsbGJhY2tzOjpjcmVhdGUoY2xpZW50LCBwYXRoLCBtX3dlYkZpbGVTeXN0ZW0sIGNh
bGxiYWNrcywgbV93b3JrZXJDb250ZXh0KSktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQo
bV93ZWJGaWxlU3lzdGVtLCBwYXRoLCBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9uKTsKKyAgICBL
VVJMIHBhdGhBc1VSTCA9IHZpcnR1YWxQYXRoVG9GaWxlU3lzdGVtVVJMKHBhdGgpOworICAgIGNy
ZWF0ZVdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UoV29ya2VyRmlsZVdyaXRlckhlbHBl
ckNhbGxiYWNrczo6Y3JlYXRlKGNsaWVudCwgcGF0aEFzVVJMLCBtX3dlYkZpbGVTeXN0ZW0sIGNh
bGxiYWNrcywgbV93b3JrZXJDb250ZXh0KSktPnBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQo
bV93ZWJGaWxlU3lzdGVtLCBwYXRoQXNVUkwsIG1fbW9kZUZvckN1cnJlbnRPcGVyYXRpb24pOwog
fQogCiBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U+IFdvcmtlckFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGVXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJhY2tzPiBjYWxsYmFja3MpCkBAIC0y
MjAsNiArMjIyLDE1IEBAIFBhc3NSZWZQdHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZT4gV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0CiAgICAgcmV0dXJuIG1fYnJp
ZGdlRm9yQ3VycmVudE9wZXJhdGlvbjsKIH0KIAorS1VSTCBXb3JrZXJBc3luY0ZpbGVTeXN0ZW1D
aHJvbWl1bTo6dmlydHVhbFBhdGhUb0ZpbGVTeXN0ZW1VUkwoY29uc3QgU3RyaW5nJiB2aXJ0dWFs
UGF0aCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fZmlsZXN5c3RlbVJvb3RVUkwuaXNFbXB0eSgp
KTsKKyAgICBLVVJMIHVybCA9IG1fZmlsZXN5c3RlbVJvb3RVUkw7CisgICAgLy8gUmVtb3ZlIHRo
ZSBleHRyYSBsZWFkaW5nIHNsYXNoLgorICAgIHVybC5zZXRQYXRoKHVybC5wYXRoKCkgKyB2aXJ0
dWFsUGF0aC5zdWJzdHJpbmcoMSkpOworICAgIHJldHVybiB1cmw7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVTeXN0ZW1DaHJv
bWl1bS5oCmluZGV4IGMzMmY3NmUuLjEzYThlN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0uaApAQCAt
NDAsNiArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkZpbGVTeXN0ZW07
CitjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJXb3JrZXJCYXNlOwogY2xhc3MgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTsKIH0KQEAgLTUyLDkgKzUzLDkgQEAgY2xhc3MgV29ya2VyQ29u
dGV4dDsKIAogY2xhc3MgV29ya2VyQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW0gOiBwdWJsaWMgQXN5
bmNGaWxlU3lzdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVT
eXN0ZW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVT
eXN0ZW06OlR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCwgYm9vbCBzeW5jaHJvbm91
cykKKyAgICBzdGF0aWMgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgY29u
c3QgV2ViS2l0OjpXZWJVUkwmIHJvb3RVUkwsIGJvb2wgc3luY2hyb25vdXMpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKGNv
bnRleHQsIHR5cGUsIHJvb3RQYXRoLCBzeW5jaHJvbm91cykpOworICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKGNvbnRleHQsIHR5cGUsIHJv
b3RVUkwsIHN5bmNocm9ub3VzKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+V29ya2VyQXN5bmNG
aWxlU3lzdGVtQ2hyb21pdW0oKTsKQEAgLTc1LDEwICs3NiwxMyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNyZWF0ZVdyaXRlcihBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgU3RyaW5nJiBwYXRoLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbUNhbGxiYWNrcz4pOwog
CiBwcml2YXRlOgotICAgIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVtKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IFN0cmluZyYgcm9vdFBh
dGgsIGJvb2wgc3luY2hyb25vdXMpOworICAgIFdvcmtlckFzeW5jRmlsZVN5c3RlbUNocm9taXVt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBBc3luY0ZpbGVTeXN0ZW06OlR5cGUsIGNvbnN0IFdl
YktpdDo6V2ViVVJMJiByb290VVJMLCBib29sIHN5bmNocm9ub3VzKTsKIAogICAgIFBhc3NSZWZQ
dHI8V2ViS2l0OjpXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlPiBjcmVhdGVXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtQ2FsbGJh
Y2tzPik7CiAKKyAgICAvLyBDb252ZXJ0cyBhIGdpdmVuIGFic29sdXRlIHZpcnR1YWwgcGF0aCB0
byBhIGZ1bGwgb3JpZ2luLXF1YWxpZmllZCBGaWxlU3lzdGVtIFVSTC4KKyAgICBLVVJMIHZpcnR1
YWxQYXRoVG9GaWxlU3lzdGVtVVJMKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpIGNvbnN0Owor
CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Owog
ICAgIFdlYktpdDo6V2ViRmlsZVN5c3RlbSogbV93ZWJGaWxlU3lzdGVtOwogICAgIFdlYktpdDo6
V2ViV29ya2VyQmFzZSogbV93b3JrZXI7CkBAIC04Niw2ICs5MCw3IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFdlYktpdDo6V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gbV9icmlkZ2VG
b3JDdXJyZW50T3BlcmF0aW9uOwogICAgIFN0cmluZyBtX21vZGVGb3JDdXJyZW50T3BlcmF0aW9u
OwogICAgIGJvb2wgbV9zeW5jaHJvbm91czsKKyAgICBLVVJMIG1fZmlsZXN5c3RlbVJvb3RVUkw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggOGE0NTc4Ny4uN2M2MWYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmNwcApAQCAtNTAsNyAr
NTAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtOjpXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJv
bWl1bShXZWJGaWxlU3lzdGVtKiB3ZWJGaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xpZW50
LCBXcml0ZXJUeXBlIHR5cGUpCitXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bTo6V29ya2Vy
QXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3RlbSwgY29u
c3QgV2ViVVJMJiBwYXRoLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0LCBBc3luY0ZpbGVX
cml0ZXJDbGllbnQqIGNsaWVudCwgV3JpdGVyVHlwZSB0eXBlKQogICAgIDogbV90eXBlKHR5cGUp
CiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBBc3luY2hyb25vdXMpOyAvLyBTeW5jaHJvbm91cyBp
cyBub3QgaW1wbGVtZW50ZWQgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtLmgKaW5kZXggM2EzZDFiOS4u
ODZlNjUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyQXN5
bmNGaWxlV3JpdGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICBjbGFzcyBXZWJGaWxlU3lzdGVtOwogICAgIGNsYXNzIFdlYkZpbGVX
cml0ZXI7CisgICAgY2xhc3MgV2ViVVJMOwogICAgIGNsYXNzIFdvcmtlckZpbGVXcml0ZXJDYWxs
YmFja3NCcmlkZ2U7CiB9CiAKQEAgLTYxLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICBTeW5j
aHJvbm91cywKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyQXN5bmNGaWxl
V3JpdGVyQ2hyb21pdW0+IGNyZWF0ZShXZWJLaXQ6OldlYkZpbGVTeXN0ZW0qIHdlYkZpbGVTeXN0
ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCwgQXN5
bmNGaWxlV3JpdGVyQ2xpZW50KiBjbGllbnQsIFdyaXRlclR5cGUgdHlwZSkKKyAgICBzdGF0aWMg
UGFzc093blB0cjxXb3JrZXJBc3luY0ZpbGVXcml0ZXJDaHJvbWl1bT4gY3JlYXRlKFdlYktpdDo6
V2ViRmlsZVN5c3RlbSogd2ViRmlsZVN5c3RlbSwgY29uc3QgV2ViS2l0OjpXZWJVUkwmIHBhdGgs
IFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIEFzeW5jRmlsZVdyaXRlckNsaWVudCogY2xp
ZW50LCBXcml0ZXJUeXBlIHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFdvcmtlckFzeW5jRmlsZVdyaXRlckNocm9taXVtKHdlYkZpbGVTeXN0ZW0sIHBhdGgsIHdvcmtl
ckNvbnRleHQsIGNsaWVudCwgdHlwZSkpOwogICAgIH0KQEAgLTc2LDcgKzc3LDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogCi0gICAgV29ya2VyQXN5bmNGaWxlV3JpdGVyQ2hyb21pdW0oV2ViS2l0
OjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJDb250ZXh0KiwgQXN5
bmNGaWxlV3JpdGVyQ2xpZW50KiwgV3JpdGVyVHlwZSk7CisgICAgV29ya2VyQXN5bmNGaWxlV3Jp
dGVyQ2hyb21pdW0oV2ViS2l0OjpXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwm
IHBhdGgsIFdvcmtlckNvbnRleHQqLCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqLCBXcml0ZXJUeXBl
KTsKICAgICBSZWZQdHI8V2ViS2l0OjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiBt
X2JyaWRnZTsKICAgICBXcml0ZXJUeXBlIG1fdHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlk
Z2UuY3BwCmluZGV4IDQ0OTU4MzAuLmZjMDc0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uu
Y3BwCkBAIC0zNCwxMSArMzQsMTMgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pICYmIEVOQUJM
RShXT1JLRVJTKQogCiAjaW5jbHVkZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIldlYkNvbW1vbldvcmtlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZp
bGVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVN5c3RlbUNhbGxiYWNrcy5oIgogI2luY2x1ZGUg
IldlYkZpbGVTeXN0ZW1FbnRyeS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUg
IldlYlVSTC5oIgogI2luY2x1ZGUgIldlYldvcmtlckJhc2UuaCIKICNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgpAQCAtOTcsOSAr
OTksOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVu
RmlsZVN5c3RlbShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgcGF0aCkK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW0oY29uc3QgV2ViU3RyaW5nJiBuYW1l
LCBjb25zdCBXZWJVUkwmIHJvb3RVUkwpCiAgICAgewotICAgICAgICBtX2JyaWRnZS0+ZGlkT3Bl
bkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQobmFtZSwgcGF0aCwgbV9tb2RlKTsKKyAgICAgICAgbV9i
cmlkZ2UtPmRpZE9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKG5hbWUsIHJvb3RVUkwsIG1fbW9k
ZSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KIApAQCAtMTYxLDcgKzE2Myw3IEBAIHZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdE9wZW5GaWxlU3lzdGVtVG9N
YWluVGhyZWFkKFdlYkNvbW1vbldvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzb3VyY2VQYXRoLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uUGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlOjpwb3N0TW92ZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVt
LCBjb25zdCBLVVJMJiBzb3VyY2VQYXRoLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblBhdGgsIGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCiAgICAg
ICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmbW92ZU9uTWFpblRocmVhZCwKQEAgLTE2OSw3ICsxNzEs
NyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RNb3ZlVG9NYWlu
VGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgc291cmNlUGF0aCwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6cG9zdENvcHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmls
ZVN5c3RlbSwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25Q
YXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFk
KAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmNvcHlPbk1haW5UaHJlYWQsCkBAIC0xNzcs
NyArMTc5LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q29w
eVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3kKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdl
YkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5n
JiBtb2RlKQordm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3Zl
VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgs
IGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7CiAgICAgZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKApAQCAtMTg2LDcgKzE4OCw3IEBAIHZvaWQgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlbW92ZVRvTWFpblRocmVhZChXZWJGaWxlU3lz
dGVtKiBmaWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNj
ZXNzKHRoaXMpLCBtb2RlKSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cG9zdFJlbW92ZVJlY3Vyc2l2ZWx5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJzaXZlbHlUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgY29u
c3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKICAgICBkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoCkBAIC0xOTUsNyArMTk3LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVtb3ZlUmVjdXJzaXZlbHlUb01haW5UaHJlYWQoV2Vi
RmlsZVMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
dGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
Ojpwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZE1ldGFkYXRhVG9NYWluVGhyZWFkKFdlYkZp
bGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IEtVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKIHsKICAgICBBU1NFUlQoZmlsZVN5c3RlbSk7CiAgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKApAQCAtMjA0LDcgKzIwNiw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cG9zdFJlYWRNZXRhZGF0YVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBtb2RlKSk7
CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0ZUZp
bGVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRmlsZVRvTWFpblRocmVhZChXZWJGaWxl
U3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29u
c3QgU3RyaW5nJiBtb2RlKQogewogICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKICAgICAg
ICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZjcmVhdGVGaWxlT25NYWluVGhyZWFkLApAQCAtMjEyLDcg
KzIxNCw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdENyZWF0
ZUZpbGVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhy
ZWFkKFdlYkZpbGVTeXN0ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgYm9vbCBl
eGNsdXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6cG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVt
KiBmaWxlU3lzdGVtLCBjb25zdCBLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3Ry
aW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsKICAgICBkaXNwYXRjaFRhc2tU
b01haW5UaHJlYWQoCkBAIC0yMjEsNyArMjIzLDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjpwb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyks
IG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZTo6cG9zdEZpbGVFeGlzdHNUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAg
IEFTU0VSVChmaWxlU3lzdGVtKTsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0y
MzAsNyArMjMyLDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0
RmlsZUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwgbW9kZSkpOwogfQogCi12b2lk
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3REaXJlY3RvcnlFeGlzdHNUb01h
aW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6
OnBvc3REaXJlY3RvcnlFeGlzdHNUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3Rl
bSwgY29uc3QgS1VSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChm
aWxlU3lzdGVtKTsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0yMzksNyArMjQx
LDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0RGlyZWN0b3J5
RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXMKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0UmVhZERpcmVjdG9yeVRvTWFpblRocmVhZChX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cG9zdFJlYWRE
aXJlY3RvcnlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VS
TCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChmaWxlU3lzdGVtKTsK
ICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0yNTcsNTIgKzI1OSw1MiBAQCB2b2lk
IFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om9wZW5GaWxlU3lzdGVtT25NYWluVGhy
ZWFkKFNjcmlwdEV4ZWN1dGlvbgogICAgIH0KIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjptb3ZlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHNvdXJjZVBh
dGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6bW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgc291
cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lz
dGVtLT5tb3ZlKHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwgTWFpblRocmVhZEZpbGVTeXN0
ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpjb3B5T25NYWluVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVBhdGgsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25QYXRoLCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkK
K3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y29weU9uTWFpblRocmVhZChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3Rl
bSwgY29uc3QgS1VSTCYgc291cmNlUGF0aCwgY29uc3QgS1VSTCYgZGVzdGluYXRpb25QYXRoLCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9k
ZSkKIHsKICAgICBmaWxlU3lzdGVtLT5jb3B5KHNvdXJjZVBhdGgsIGRlc3RpbmF0aW9uUGF0aCwg
TWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2UsIG1v
ZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZW1vdmVP
bk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0
ZW0qIGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJlbW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYg
cGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+cmVtb3ZlKHBhdGgsIE1haW5UaHJlYWRGaWxl
U3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9CiAKLXZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVtb3ZlUmVjdXJzaXZlbHlPbk1h
aW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0q
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2U6OnJlbW92ZVJlY3Vyc2l2ZWx5T25NYWluVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25z
dCBLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZW1vdmVSZWN1cnNpdmVseShw
YXRoLCBNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRn
ZSwgbW9kZSkpOwogfQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnJl
YWRNZXRhZGF0YU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQg
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6cmVhZE1ldGFkYXRhT25NYWluVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lz
dGVtLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBi
cmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZWFkTWV0YWRh
dGEocGF0aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihi
cmlkZ2UsIG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpjcmVhdGVGaWxlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhj
bHVzaXZlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0
cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6Y3JlYXRl
RmlsZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmls
ZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2Rl
KQogewogICAgIGZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGF0aCwgZXhjbHVzaXZlLCBNYWluVGhy
ZWFkRmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwog
fQogCi12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZURpcmVjdG9y
eU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5
c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUp
Cit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmNyZWF0ZURpcmVjdG9yeU9u
TWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogewog
ICAgIGZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwYXRoLCBleGNsdXNpdmUsIE1haW5UaHJl
YWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIoYnJpZGdlLCBtb2RlKSk7CiB9
CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZmlsZUV4aXN0c09uTWFp
blRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSog
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZTo6ZmlsZUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSogZmlsZVN5c3RlbSwgY29uc3QgS1VSTCYg
cGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiB7CiAgICAgZmlsZVN5c3RlbS0+ZmlsZUV4aXN0cyhwYXRoLCBNYWluVGhyZWFk
RmlsZVN5c3RlbUNhbGxiYWNrczo6Y3JlYXRlTGVha2VkUHRyKGJyaWRnZSwgbW9kZSkpOwogfQog
Ci12b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpcmVjdG9yeUV4aXN0c09u
TWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3Rl
bSogZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25z
dCBLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNv
bnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5kaXJlY3RvcnlFeGlzdHMocGF0
aCwgTWFpblRocmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M6OmNyZWF0ZUxlYWtlZFB0cihicmlkZ2Us
IG1vZGUpKTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZWFk
RGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UqIGJyaWRnZSwgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBX
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpyZWFkRGlyZWN0b3J5T25NYWluVGhyZWFk
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiBmaWxlU3lz
dGVtLCBjb25zdCBLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBi
cmlkZ2UsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBmaWxlU3lzdGVtLT5yZWFkRGlyZWN0
b3J5KHBhdGgsIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOjpjcmVhdGVMZWFrZWRQdHIo
YnJpZGdlLCBtb2RlKSk7CiB9CkBAIC0zMTIsMTAgKzMxNCwxMCBAQCB2b2lkIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZEZhaWxPbk1haW5UaHJlYWQoV2ViRmlsZUVycm9yIGVy
cm9yLCBjbwogICAgIG1heVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRG
YWlsT25Xb3JrZXJUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIGVycm9yKSwg
bW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkT3Bl
bkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHJvb3RQYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U6OmRpZE9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgS1VSTCYgcm9vdFVSTCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIG1h
eVBvc3RUYXNrVG9Xb3JrZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuRmlsZVN5c3RlbU9u
V29ya2VyVGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG5hbWUsIHJvb3RQYXRoKSwgbW9kZSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh0aGlzKSwgbmFtZSwgcm9vdFVSTCksIG1vZGUpOwogfQogCiB2b2lkIFdvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpZFN1Y2NlZWRPbk1haW5UaHJlYWQoY29uc3QgU3Ry
aW5nJiBtb2RlKQpAQCAtMzU0LDkgKzM1Niw5IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6ZGlkRmFpbE9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAg
ICAgYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRGYWlsKGVycm9yKTsKIH0K
IAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRPcGVuRmlsZVN5c3Rl
bU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVt
Q2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiByb290UGF0aCkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkT3Bl
bkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IEtVUkwmIHJvb3RVUkwpCiB7Ci0gICAgYnJpZGdlLT5tX2NhbGxiYWNrc09uV29ya2VyVGhy
ZWFkLT5kaWRPcGVuRmlsZVN5c3RlbShuYW1lLCByb290UGF0aCk7CisgICAgYnJpZGdlLT5tX2Nh
bGxiYWNrc09uV29ya2VyVGhyZWFkLT5kaWRPcGVuRmlsZVN5c3RlbShuYW1lLCByb290VVJMKTsK
IH0KIAogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpkaWRTdWNjZWVkT25X
b3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UqIGJyaWRnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaAppbmRleCAyMGZmY2Fh
Li40ZWM0NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCkBAIC04NSwyMCArODUsMjAgQEAg
cHVibGljOgogCiAgICAgLy8gTWV0aG9kcyB0aGF0IGNyZWF0ZSBhbiBpbnN0YW5jZSBhbmQgcG9z
dCBhbiBpbml0aWFsIHJlcXVlc3QgdGFzayB0byB0aGUgbWFpbiB0aHJlYWQuIFRoZXkgbXVzdCBi
ZSBjYWxsZWQgb24gdGhlIHdvcmtlciB0aHJlYWQuCiAgICAgdm9pZCBwb3N0T3BlbkZpbGVTeXN0
ZW1Ub01haW5UaHJlYWQoV2ViQ29tbW9uV29ya2VyQ2xpZW50KiwgV2ViRmlsZVN5c3RlbTo6VHlw
ZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAg
IHZvaWQgcG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYg
c3JjUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0UGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAg
ICB2b2lkIHBvc3RDb3B5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcm
IHNyY1BhdGgsIGNvbnN0IFN0cmluZyYgZGVzdFBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0g
ICAgdm9pZCBwb3N0UmVtb3ZlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0UmVtb3ZlUmVjdXJz
aXZlbHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBtb2RlKTsKLSAgICB2b2lkIHBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQo
V2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsK
LSAgICB2b2lkIHBvc3RDcmVhdGVGaWxlVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAg
IHZvaWQgcG9zdENyZWF0ZURpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29u
c3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAg
ICB2b2lkIHBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBT
dHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0RGlyZWN0b3J5
RXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0UmVhZERpcmVjdG9yeVRvTWFpblRocmVh
ZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUp
OworICAgIHZvaWQgcG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdl
YkNvcmU6OktVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGRlc3RQYXRoLCBjb25z
dCBTdHJpbmcmIG1vZGUpOworICAgIHZvaWQgcG9zdENvcHlUb01haW5UaHJlYWQoV2ViRmlsZVN5
c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGRlc3RQYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHZvaWQgcG9zdFJlbW92ZVRvTWFp
blRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgY29uc3Qg
U3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3RSZW1vdmVSZWN1cnNpdmVseVRvTWFpblRocmVh
ZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgY29uc3QgU3RyaW5n
JiBtb2RlKTsKKyAgICB2b2lkIHBvc3RSZWFkTWV0YWRhdGFUb01haW5UaHJlYWQoV2ViRmlsZVN5
c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7Cisg
ICAgdm9pZCBwb3N0Q3JlYXRlRmlsZVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIGNvbnN0IFN0cmluZyYgbW9kZSk7
CisgICAgdm9pZCBwb3N0Q3JlYXRlRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0q
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgY29uc3QgU3RyaW5n
JiBtb2RlKTsKKyAgICB2b2lkIHBvc3RGaWxlRXhpc3RzVG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0
ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAg
IHZvaWQgcG9zdERpcmVjdG9yeUV4aXN0c1RvTWFpblRocmVhZChXZWJGaWxlU3lzdGVtKiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBv
c3RSZWFkRGlyZWN0b3J5VG9NYWluVGhyZWFkKFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogCiAgICAgLy8gQ2FsbGJhY2sgbWV0
aG9kcyB0aGF0IGFyZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHZvaWQgZGlkRmFp
bE9uTWFpblRocmVhZChXZWJGaWxlRXJyb3IsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9p
ZCBkaWRPcGVuRmlsZVN5c3RlbU9uTWFpblRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgcm9vdFBhdGgsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBkaWRPcGVu
RmlsZVN5c3RlbU9uTWFpblRocmVhZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIHJvb3RVUkwsIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBkaWRTdWNjZWVk
T25NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgdm9pZCBkaWRSZWFkTWV0YWRh
dGFPbk1haW5UaHJlYWQoY29uc3QgV2ViRmlsZUluZm8mLCBjb25zdCBTdHJpbmcmIG1vZGUpOwog
ICAgIHZvaWQgZGlkUmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChjb25zdCBXZWJWZWN0b3I8V2Vi
RmlsZVN5c3RlbUVudHJ5PiYsIGJvb2wgaGFzTW9yZSwgY29uc3QgU3RyaW5nJiBtb2RlKTsKQEAg
LTEwOCwyMiArMTA4LDIyIEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXRob2RzIHRoYXQgYXJlIHRv
IGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgc3RhdGljIHZvaWQgb3BlbkZpbGVT
eXN0ZW1Pbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkNv
bW1vbldvcmtlckNsaWVudCosIFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBi
b29sIGNyZWF0ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmlu
ZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgbW92ZU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgc3JjUGF0
aCwgY29uc3QgU3RyaW5nJiBkZXN0UGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgY29weU9uTWFpblRocmVh
ZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0
IFN0cmluZyYgc3JjUGF0aCwgY29uc3QgU3RyaW5nJiBkZXN0UGF0aCwgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQg
cmVtb3ZlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tz
QnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCByZW1vdmVSZWN1
cnNpdmVseU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2Vi
RmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgcmVhZE1ldGFk
YXRhT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJp
ZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMgdm9pZCBjcmVhdGVGaWxlT25N
YWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxlU3lzdGVt
KiwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGljIHZvaWQgY3Jl
YXRlRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBib29sIGV4Y2x1c2l2ZSwgV29y
a2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAg
c3RhdGljIHZvaWQgZmlsZUV4aXN0c09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFN0cmluZyYgcGF0aCwgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgc3RhdGlj
IHZvaWQgZGlyZWN0b3J5RXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxl
U3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKLSAgICBzdGF0aWMg
dm9pZCByZWFkRGlyZWN0b3J5T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9p
ZCBtb3ZlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJG
aWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgc3JjUGF0aCwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZGVzdFBhdGgsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBT
dHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIGNvcHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBzcmNQYXRoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBkZXN0UGF0aCwgV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZv
aWQgcmVtb3ZlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQg
cmVtb3ZlUmVjdXJzaXZlbHlPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBXb3JrZXJG
aWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0
aWMgdm9pZCByZWFkTWV0YWRhdGFPbk1haW5UaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBz
dGF0aWMgdm9pZCBjcmVhdGVGaWxlT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgYm9v
bCBleGNsdXNpdmUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJp
bmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIGNyZWF0ZURpcmVjdG9yeU9uTWFpblRocmVhZChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdl
YkNvcmU6OktVUkwmIHBhdGgsIGJvb2wgZXhjbHVzaXZlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJh
Y2tzQnJpZGdlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBmaWxlRXhp
c3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJGaWxl
U3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQgZGlyZWN0
b3J5RXhpc3RzT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBX
ZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgV29ya2VyRmlsZVN5c3Rl
bUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgc3RhdGljIHZvaWQg
cmVhZERpcmVjdG9yeU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHBhdGgsIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogCiAgICAgZnJpZW5k
IGNsYXNzIE1haW5UaHJlYWRGaWxlU3lzdGVtQ2FsbGJhY2tzOwogCiAgICAgLy8gTWV0aG9kcyB0
aGF0IGRpc3BhdGNoIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3Mgb24gdGhlIHdvcmtlciB0aHJlYWRz
LgogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIFdlYkZp
bGVFcnJvcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVh
ZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCk7
CisgICAgc3RhdGljIHZvaWQgZGlkT3BlbkZpbGVTeXN0ZW1PbldvcmtlclRocmVhZChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRn
ZSosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcm9vdFBhdGgpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZFN1Y2NlZWRPbldvcmtlclRocmVhZChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSopOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlYWRNZXRhZGF0YU9uV29ya2VyVGhyZWFkKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29u
c3QgV2ViRmlsZUluZm8mKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWFkRGlyZWN0b3J5T25Xb3Jr
ZXJUaHJlYWQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25zdCBXZWJWZWN0b3I8V2ViRmlsZVN5c3RlbUVudHJ5PiYs
IGJvb2wgaGFzTW9yZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4IDE4NmJmOGEu
LjI5MTI1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZp
bGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCkBAIC0xMDEsNyArMTAxLDcg
QEAgdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjphYm9ydE9uTWFpblRocmVh
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwKICAgICBicmlkZ2UtPm1fd3JpdGVyLT5jYW5jZWwo
KTsKIH0KIAotdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjppbml0T25NYWlu
VGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0
ZXJDYWxsYmFja3NCcmlkZ2U+IGJyaWRnZSwgY29uc3QgU3RyaW5nJiBwYXRoKQordm9pZCBXb3Jr
ZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjppbml0T25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+
IGJyaWRnZSwgY29uc3QgS1VSTCYgcGF0aCkKIHsKICAgICBBU1NFUlQoIWJyaWRnZS0+bV93cml0
ZXIpOwogICAgIGJyaWRnZS0+bV93cml0ZXIgPSBhZG9wdFB0cih3ZWJLaXRDbGllbnQoKS0+Zmls
ZVN5c3RlbSgpLT5jcmVhdGVGaWxlV3JpdGVyKHBhdGgsIGJyaWRnZS5nZXQoKSkpOwpAQCAtMTMw
LDcgKzEzMCw3IEBAIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlkVHJ1
bmNhdGUoKQogCiBzdGF0aWMgY29uc3QgY2hhciBmaWxlV3JpdGVyT3BlcmF0aW9uc01vZGVbXSA9
ICJmaWxlV3JpdGVyT3BlcmF0aW9uc01vZGUiOwogCi1Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tz
QnJpZGdlOjpXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcGF0
aCwgV29ya2VyTG9hZGVyUHJveHkqIHByb3h5LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKK1dvcmtl
ckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OldvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlk
Z2UoY29uc3QgS1VSTCYgcGF0aCwgV29ya2VyTG9hZGVyUHJveHkqIHByb3h5LCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBBc3luY0ZpbGVXcml0ZXJDbGll
bnQqIGNsaWVudCkKICAgICA6IFdvcmtlckNvbnRleHQ6Ok9ic2VydmVyKHN0YXRpY19jYXN0PFdv
cmtlckNvbnRleHQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKICAgICAsIG1fcHJveHkocHJv
eHkpCiAgICAgLCBtX3dvcmtlckNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKQEAgLTE0
NCw3ICsxNDQsNyBAQCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpXb3JrZXJGaWxl
V3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcAogICAgIHBvc3RJbml0VG9NYWlu
VGhyZWFkKHBhdGgpOwogfQogCi12b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6
OnBvc3RJbml0VG9NYWluVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCkKK3ZvaWQgV29ya2VyRmls
ZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6cG9zdEluaXRUb01haW5UaHJlYWQoY29uc3QgS1VSTCYg
cGF0aCkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCiAgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmaW5pdE9uTWFpblRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlz
KSwgcGF0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2Vy
RmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5oCmluZGV4IGMwNDIxNTkuLjUwM2U5OWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJD
YWxsYmFja3NCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJG
aWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2lmIEVOQUJM
RShGSUxFX1NZU1RFTSkgJiYgRU5BQkxFKFdPUktFUlMpCiAKKyNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiV2ViRmlsZVdyaXRlckNsaWVudC5o
IgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKQEAgLTU2LDYgKzU3LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBXZWJGaWxlU3lzdGVtOwogY2xhc3MgV2ViRmlsZVdyaXRlcjsKIGNs
YXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7CitjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJXb3JrZXJC
YXNlOwogCiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBtZWNoYW5pc20gdG8gYnJpZGdlIGNh
bGxzIGJldHdlZW4gdGhyZWFkcy4KQEAgLTg2LDcgKzg4LDcgQEAgcHVibGljOgogICAgIC8vIFdv
cmtlckNvbnRleHQ6Ok9ic2VydmVyIG1ldGhvZC4KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3Rv
cCgpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0Jy
aWRnZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJv
eHkqIHByb3h5LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiB3b3JrZXJDb250ZXh0
LCBXZWJDb3JlOjpBc3luY0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6S1VSTCYgcGF0aCwgV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHByb3h5LCBXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiB3b3JrZXJDb250ZXh0LCBXZWJDb3JlOjpBc3lu
Y0ZpbGVXcml0ZXJDbGllbnQqIGNsaWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZShwYXRoLCBwcm94eSwgd29ya2Vy
Q29udGV4dCwgY2xpZW50KSk7CiAgICAgfQpAQCAtMTEwLDE1ICsxMTIsMTUgQEAgcHVibGljOgog
ICAgIGJvb2wgd2FpdEZvck9wZXJhdGlvblRvQ29tcGxldGUoKTsKIAogcHJpdmF0ZToKLSAgICBX
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViQ29y
ZTo6V29ya2VyTG9hZGVyUHJveHkqLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViQ29yZTo6QXN5bmNGaWxlV3JpdGVyQ2xpZW50Kik7CisgICAgV29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZShjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoLCBXZWJDb3JlOjpXb3JrZXJM
b2FkZXJQcm94eSosIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpB
c3luY0ZpbGVXcml0ZXJDbGllbnQqKTsKIAotICAgIHZvaWQgcG9zdEluaXRUb01haW5UaHJlYWQo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICB2b2lkIHBvc3RJbml0VG9NYWluVGhyZWFkKGNvbnN0
IFdlYkNvcmU6OktVUkwmIHBhdGgpOwogCiAgICAgLy8gTWV0aG9kcyB0aGF0IGFyZSB0byBiZSBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHN0YXRpYyB2b2lkIHdyaXRlT25NYWluVGhy
ZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZp
bGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+LCBsb25nIGxvbmcgcG9zaXRpb24sIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGRhdGEpOwogICAgIHN0YXRpYyB2b2lkIHRydW5jYXRlT25NYWluVGhyZWFkKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0
ZXJDYWxsYmFja3NCcmlkZ2U+LCBsb25nIGxvbmcgbGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBh
Ym9ydE9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPik7Ci0gICAgc3RhdGljIHZvaWQg
aW5pdE9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiwgY29uc3QgU3RyaW5nJiBwYXRo
KTsKKyAgICBzdGF0aWMgdm9pZCBpbml0T25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U+
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBwYXRoKTsKICAgICBzdGF0aWMgdm9pZCBzaHV0ZG93bk9u
TWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxX
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPik7CiAKICAgICAvLyBNZXRob2RzIHRoYXQg
ZGlzcGF0Y2ggdG8gQXN5bmNGaWxlV3JpdGVyQ2xpZW50IG9uIHRoZSB3b3JrZXIgdGhyZWFkcy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>