<?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>231913</bug_id>
          
          <creation_ts>2021-10-18 15:40:33 -0700</creation_ts>
          <short_desc>Do not use strerror()</short_desc>
          <delta_ts>2021-10-27 09:01:53 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1805743</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-18 15:40:33 -0700</bug_when>
    <thetext>strerror() is sadly documented as &quot;MT-Unsafe race:strerror&quot; because it returns strings that point into static memory and it may modify those strings after the function call returns, e.g. to create strings of the form &quot;Unknown error code nnn&quot; which is a real shame. Accordingly, it cannot safely be used anywhere in WebKit. This bug attempts to address all cases outside Source/ThirdParty.

This will not build on Apple ports yet because it adds new files. XCode help would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805760</commentid>
    <comment_count>1</comment_count>
      <attachid>441655</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-18 16:23:26 -0700</bug_when>
    <thetext>Created attachment 441655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805768</commentid>
    <comment_count>2</comment_count>
      <attachid>441655</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-18 16:33:21 -0700</bug_when>
    <thetext>Comment on attachment 441655
Patch

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

&gt; Source/WTF/wtf/SafeStrerror.cpp:52
&gt; +#if OS(WINDOWS)

Can we use std::strerror_s() everywhere? Also, do we really need to store them in a HashMap, can&apos;t we just return a CString?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805951</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 05:21:33 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:52
&gt; &gt; +#if OS(WINDOWS)
&gt; 
&gt; Can we use std::strerror_s() everywhere?

No. A pedantic answer would be &quot;std::strerror_s() doesn&apos;t exist because strerror_s() is not part of C++.&quot; A better answer: strerror_s() is part of an optional annex in the C11 standard, but glibc does not implement it, so it&apos;s not available on Linux. GLib uses it only on Windows, so I assumed that&apos;s the only place it&apos;s available in practice. But perhaps it&apos;s available on Apple platforms? I&apos;m not sure.

&gt; Also, do we really need to store
&gt; them in a HashMap, can&apos;t we just return a CString?

We could return a CString, sure. But then we have to modify all callers to expect a CString instead of a char*. I actually considered that before deciding it&apos;s easiest not to modify the callers, but either way is fine by me. Considering it again today, using the CString version and getting rid of the map might be a little nicer. I&apos;ll change it if you prefer.

P.S. Please help with XCode build. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805993</commentid>
    <comment_count>4</comment_count>
      <attachid>441723</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 07:43:44 -0700</bug_when>
    <thetext>Created attachment 441723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805996</commentid>
    <comment_count>5</comment_count>
      <attachid>441724</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 07:48:06 -0700</bug_when>
    <thetext>Created attachment 441724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806002</commentid>
    <comment_count>6</comment_count>
      <attachid>441725</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 07:59:38 -0700</bug_when>
    <thetext>Created attachment 441725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806004</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 08:00:42 -0700</bug_when>
    <thetext>You are right, strerror_s() doesn&apos;t exist for Cocoa ports. I believe I got your patch building on macOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806007</commentid>
    <comment_count>8</comment_count>
      <attachid>441727</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 08:08:04 -0700</bug_when>
    <thetext>Created attachment 441727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806008</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 08:12:36 -0700</bug_when>
    <thetext>Thanks Chris!

I will update the patch to return CString as you suggested. The more I think about it, the more I agree that&apos;s better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806010</commentid>
    <comment_count>10</comment_count>
      <attachid>441727</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 08:16:06 -0700</bug_when>
    <thetext>Comment on attachment 441727
Patch

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

&gt; Source/WTF/wtf/SafeStrerror.cpp:60
&gt; +    static NeverDestroyed&lt;HashMap&lt;int, CString&gt;&gt; errorsMap WTF_GUARDED_BY_LOCK(lock);

The reason I don&apos;t like this is that this is an ever-growing HashMap and a waste of memory. In general, error handling functions are not perf-sensitive I think so we should be able to get away with returning a CString.
It is true you&apos;d need to update the call sites but only to add `.data()`, and you are already updating all call sites anyway.

&gt; Source/WTF/wtf/SafeStrerror.cpp:67
&gt; +    char buffer[2048];

How did you come up with this value? From quick googling, it seems 1024 may suffice?

&gt; Source/WTF/wtf/SafeStrerror.h:4
&gt; + * This library is free software; you can redistribute it and/or

Is this intentionally not using the usual license of the WebKit project?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806023</commentid>
    <comment_count>11</comment_count>
      <attachid>441727</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 08:32:51 -0700</bug_when>
    <thetext>Comment on attachment 441727
Patch

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

&gt; Source/bmalloc/libpas/src/libpas/pas_page_malloc.c:183
&gt; +            static_assert(std::is_same&lt;decltype(ret), int&gt;::value, &quot;This code expects POSIX strerror_r, not GNU strerror_r&quot;);

Oh, I didn&apos;t catch that because libpas doesn&apos;t build on my system. However, libpas is written in C, not C++ so the use of std::is_same here is not OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806033</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 08:46:38 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; The reason I don&apos;t like this is that this is an ever-growing HashMap and a
&gt; waste of memory. In general, error handling functions are not perf-sensitive
&gt; I think so we should be able to get away with returning a CString.
&gt; It is true you&apos;d need to update the call sites but only to add `.data()`,
&gt; and you are already updating all call sites anyway.

Ack.

&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:67
&gt; &gt; +    char buffer[2048];
&gt; 
&gt; How did you come up with this value? From quick googling, it seems 1024 may
&gt; suffice?

1024 is guaranteed to be enough for glibc. In practice, it&apos;s almost surely enough for other libcs. I copied 2048 from g_strerror(), but I will drop it down to 1024. That&apos;s an awful lot of characters for an error message, anyway.

&gt; &gt; Source/WTF/wtf/SafeStrerror.h:4
&gt; &gt; + * This library is free software; you can redistribute it and/or
&gt; 
&gt; Is this intentionally not using the usual license of the WebKit project?

Yeah, since it&apos;s originally copied from LGPLv2.1+ code. WebKit requires that code use either BSD or LGPLv2.1, and plenty of other files in WTF already use this license, so shouldn&apos;t be controversial.

That said, after I remove the HashMap as you suggested, the remaining implementation will be almost entirely different different from g_strerror(). The remaining code from GLib is just a couple lines, which I changed anyway to handle the differences between POSIX vs. GNU strerror_r without requiring a cmake test, so really the only thing remaining from GLib is the strategy of using strerror_s() when building for Windows. So I&apos;m going to say the remaining copying is completely de minimis, and we can use BSD license for this file.

&gt; Oh, I didn&apos;t catch that because libpas doesn&apos;t build on my system. However, libpas is written in C, not C++ so the use of std::is_same here is not OK.

Oops, not sure how I missed that. Drat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806216</commentid>
    <comment_count>13</comment_count>
      <attachid>441727</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 12:14:47 -0700</bug_when>
    <thetext>Comment on attachment 441727
Patch

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

&gt; Source/WTF/wtf/SafeStrerror.cpp:36
&gt; +static char* strErrorAdaptor(int errnum, char* buffer, size_t bufferLength)

Why was the separate function needed?

&gt; Source/WTF/wtf/SafeStrerror.cpp:47
&gt; +    // POSIX strerror_r
&gt; +    if (ret)
&gt; +        *buffer = &apos;\0&apos;;

Not sure what you were thinking here, but writing NUL to the first position in the buffer of course cuts off the entire message.

That said, I see the POSIX strerror_r is not guaranteed to be NUL-terminated like the GNU version is. Oops. I guess you were trying to fix that to prevent it from crashing, but will need to be done differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806220</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 12:19:08 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #13)
&gt; Comment on attachment 441727 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=441727&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:36
&gt; &gt; +static char* strErrorAdaptor(int errnum, char* buffer, size_t bufferLength)
&gt; 
&gt; Why was the separate function needed?

The issue is that even with if constexpr, both branches of the if / else must build successfully. I found it easier to fix the build by moving the logic to a separate function but maybe there is a way to fix your original code without actually needing such function. Your original code didn&apos;t build on macOS (because one of the 2 branches was not valid).

&gt; 
&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:47
&gt; &gt; +    // POSIX strerror_r
&gt; &gt; +    if (ret)
&gt; &gt; +        *buffer = &apos;\0&apos;;
&gt; 
&gt; Not sure what you were thinking here, but writing NUL to the first position
&gt; in the buffer of course cuts off the entire message.

But only in case of error. Shouldn&apos;t we return an empty string in case of error?

&gt; 
&gt; That said, I see the POSIX strerror_r is not guaranteed to be NUL-terminated
&gt; like the GNU version is. Oops. I guess you were trying to fix that to
&gt; prevent it from crashing, but will need to be done differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806221</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 12:22:29 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; But only in case of error. Shouldn&apos;t we return an empty string in case of
&gt; error?

Oh yeah, makes sense. That&apos;s better than the ASSERT() I had before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806232</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 12:39:04 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #15) 
&gt; Oh yeah, makes sense. That&apos;s better than the ASSERT() I had before.

Let&apos;s make it say &quot;unknown error code&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806303</commentid>
    <comment_count>17</comment_count>
      <attachid>441795</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 14:10:13 -0700</bug_when>
    <thetext>Created attachment 441795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806304</commentid>
    <comment_count>18</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 14:10:35 -0700</bug_when>
    <thetext>Switched it to CString. Let&apos;s see if it builds....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806309</commentid>
    <comment_count>19</comment_count>
      <attachid>441795</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 14:16:11 -0700</bug_when>
    <thetext>Comment on attachment 441795
Patch

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

&gt; Source/WTF/wtf/SafeStrerror.cpp:45
&gt; +    char buffer[1024];

We should be using a CStringBuffer to avoid a string copy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806326</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 14:44:17 -0700</bug_when>
    <thetext>That would require giving CStringBuffer a public constructor. I don&apos;t think it&apos;s worth it. If safeStrerror ever shows up in profiling, that&apos;s would be weird and would surely indicate a problem with using it too much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806333</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 14:52:04 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #20)
&gt; That would require giving CStringBuffer a public constructor. I don&apos;t think
&gt; it&apos;s worth it. If safeStrerror ever shows up in profiling, that&apos;s would be
&gt; weird and would surely indicate a problem with using it too much.

Huh? static Ref&lt;CStringBuffer&gt; createUninitialized(size_t length);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806352</commentid>
    <comment_count>22</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 15:07:11 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #21)
&gt; Huh? static Ref&lt;CStringBuffer&gt; createUninitialized(size_t length);

Well, OK, but it&apos;s private and I&apos;d have to make it public. Still don&apos;t think it&apos;s worth it, but can do it if you really want to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806357</commentid>
    <comment_count>23</comment_count>
      <attachid>441805</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 15:09:01 -0700</bug_when>
    <thetext>Created attachment 441805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806358</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 15:09:55 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #21)
&gt; (In reply to Michael Catanzaro from comment #20)
&gt; &gt; That would require giving CStringBuffer a public constructor. I don&apos;t think
&gt; &gt; it&apos;s worth it. If safeStrerror ever shows up in profiling, that&apos;s would be
&gt; &gt; weird and would surely indicate a problem with using it too much.
&gt; 
&gt; Huh? static Ref&lt;CStringBuffer&gt; createUninitialized(size_t length);

Hmm indeed, I am not quite sure why though since there is a public CString constructor that takes in a CStringBuffer*. Seems like it would be as easy as making this static function public?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806363</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 15:15:55 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #24)
&gt; Hmm indeed, I am not quite sure why though since there is a public CString
&gt; constructor that takes in a CStringBuffer*. Seems like it would be as easy
&gt; as making this static function public?

I think it&apos;s because you can get the CStringBuffer from an existing CString and use it to create a different CString, since the CStringBuffer is refcounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806380</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 15:44:19 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #24)
&gt; (In reply to Chris Dumez from comment #21)
&gt; &gt; (In reply to Michael Catanzaro from comment #20)
&gt; &gt; &gt; That would require giving CStringBuffer a public constructor. I don&apos;t think
&gt; &gt; &gt; it&apos;s worth it. If safeStrerror ever shows up in profiling, that&apos;s would be
&gt; &gt; &gt; weird and would surely indicate a problem with using it too much.
&gt; &gt; 
&gt; &gt; Huh? static Ref&lt;CStringBuffer&gt; createUninitialized(size_t length);
&gt; 
&gt; Hmm indeed, I am not quite sure why though since there is a public CString
&gt; constructor that takes in a CStringBuffer*. Seems like it would be as easy
&gt; as making this static function public?

Oh, I think we can use CString::newUninitialized()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806417</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 17:17:22 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #26)
&gt; Oh, I think we can use CString::newUninitialized()

For the Windows/strerror_s case, yes. Also yes for the Apple/POSIX strerror_r case. This is an improvement.

For the Linux/GNU strerror_r case, it gets awkward because we have to use the return value of strerror_r, not the buffer we pass to it, so we have to copy the return value back into the CString&apos;s buffer, being careful that return value may or may not overlap the buffer, so using normal string handling functions like strcpy/memcpy would be undefined behavior. We have to fall back to memmove, which is surely slower than a copy would have been. But I think that is OK, because none of this is performance-sensitive, and it seems good to optimize for the standard strerror_s/strerror_r rather than optimizing for glibc&apos;s seriously messed up strerror_r.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806434</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 17:45:13 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #27)
&gt; (In reply to Chris Dumez from comment #26)
&gt; &gt; Oh, I think we can use CString::newUninitialized()
&gt; 
&gt; For the Windows/strerror_s case, yes. Also yes for the Apple/POSIX
&gt; strerror_r case. This is an improvement.
&gt; For the Linux/GNU strerror_r case, it gets awkward because we have to use
&gt; the return value of strerror_r, not the buffer we pass to it, so we have to
&gt; copy the return value back into the CString&apos;s buffer, being careful that
&gt; return value may or may not overlap the buffer, so using normal string
&gt; handling functions like strcpy/memcpy would be undefined behavior. We have
&gt; to fall back to memmove, which is surely slower than a copy would have been.
&gt; But I think that is OK, because none of this is performance-sensitive, and
&gt; it seems good to optimize for the standard strerror_s/strerror_r rather than
&gt; optimizing for glibc&apos;s seriously messed up strerror_r.

Yes, I think it is fine to keep the string copy where needed but still good to optimize where we can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806438</commentid>
    <comment_count>29</comment_count>
      <attachid>441828</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 18:01:05 -0700</bug_when>
    <thetext>Created attachment 441828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806439</commentid>
    <comment_count>30</comment_count>
      <attachid>441829</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-19 18:06:23 -0700</bug_when>
    <thetext>Created attachment 441829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806457</commentid>
    <comment_count>31</comment_count>
      <attachid>441829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-19 19:13:51 -0700</bug_when>
    <thetext>Comment on attachment 441829
Patch

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

Looks pretty good overall. Just have a few comments still.

&gt; Source/WTF/ChangeLog:8
&gt; +        Add a new safeStrerror function that we can use without safety worries.

without worrying about thread safety.

I think it is good to be clear what what we&apos;re worried about. Safety is very vague.

&gt; Source/WTF/wtf/SafeStrerror.cpp:38
&gt; +    const size_t bufferLength = 1024;

constexpr

&gt; Source/WTF/wtf/SafeStrerror.cpp:39
&gt; +    char* cstringBuffer = nullptr;

No need for `= nullptr`.

&gt; Source/WTF/wtf/SafeStrerror.cpp:50
&gt; +        int resultLength = strlen(reinterpret_cast&lt;char*&gt;(ret));

use size_t for resultLength or auto but preferably not int.

&gt; Source/WTF/wtf/SafeStrerror.cpp:51
&gt; +        memmove(cstringBuffer, reinterpret_cast&lt;char*&gt;(ret), resultLength);

Can we avoid doing this work in the (presumably common I assume) case where `reinterpret_cast&lt;char*&gt;(ret) == cstringBuffer`?

&gt; Source/WTF/wtf/SafeStrerror.cpp:52
&gt; +        cstringBuffer[resultLength] = &apos;\0&apos;;

Can we memmove `resultLength + 1` bytes and avoid this? The doc says there is always a NUL at the end.

Or actually, maybe we can simply use strncpy() if we only call it when `reinterpret_cast&lt;char*&gt;(ret) != cstringBuffer`.

&gt; Source/WTF/wtf/SafeStrerror.cpp:56
&gt; +            snprintf(cstringBuffer, bufferLength, &quot;%s %d&quot;, &quot;Unknown error&quot;, errnum);

Should probably be this:
snprintf(cstringBuffer, bufferLength, &quot;Unknown error %d&quot;, errnum);

&gt; Source/WTF/wtf/SafeStrerror.h:28
&gt; +#include &lt;wtf/text/CString.h&gt;

&lt;wtf/Forward.h&gt; should suffice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806588</commentid>
    <comment_count>32</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-20 06:15:23 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #31)
&gt; without worrying about thread safety.
&gt; 
&gt; I think it is good to be clear what what we&apos;re worried about. Safety is very
&gt; vague.

OK.

&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:38
&gt; &gt; +    const size_t bufferLength = 1024;
&gt; 
&gt; constexpr

Er, OK, but why? I think it makes no difference?
 
&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:39
&gt; &gt; +    char* cstringBuffer = nullptr;
&gt; 
&gt; No need for `= nullptr`.

Yeah I know, but this way it will break better if CString::newUninitialized() changes in the future and somehow builds. Maybe pretty unlikely, but uninitialized memory plus pass-by-reference out parameters is scary. So I&apos;d lean towards keeping this.

&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:50
&gt; &gt; +        int resultLength = strlen(reinterpret_cast&lt;char*&gt;(ret));
&gt; 
&gt; use size_t for resultLength or auto but preferably not int.

Oops, yes.

&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:51
&gt; &gt; +        memmove(cstringBuffer, reinterpret_cast&lt;char*&gt;(ret), resultLength);
&gt; 
&gt; Can we avoid doing this work in the (presumably common I assume) case where
&gt; `reinterpret_cast&lt;char*&gt;(ret) == cstringBuffer`?

Yes, OK. Without looking at the glibc implementation, I&apos;m not sure how common that really is. Might happen when locale is non-English or when an unknown error code is passed. I think for valid errors codes in English locales, it probably won&apos;t use the provided buffer.

&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:52
&gt; &gt; +        cstringBuffer[resultLength] = &apos;\0&apos;;
&gt; 
&gt; Can we memmove `resultLength + 1` bytes and avoid this? The doc says there
&gt; is always a NUL at the end.
&gt; 
&gt; Or actually, maybe we can simply use strncpy() if we only call it when
&gt; `reinterpret_cast&lt;char*&gt;(ret) != cstringBuffer`.

strncpy() is safe in this case if glibc always returns a pointer to the start of the buffer, which it really ought to do, since it would be very weird for it to return a pointer to the middle of the buffer for no reason. The docs don&apos;t really say, but I suppose it should be safe to make this assumption.

&gt; &gt; Source/WTF/wtf/SafeStrerror.cpp:56
&gt; &gt; +            snprintf(cstringBuffer, bufferLength, &quot;%s %d&quot;, &quot;Unknown error&quot;, errnum);
&gt; 
&gt; Should probably be this:
&gt; snprintf(cstringBuffer, bufferLength, &quot;Unknown error %d&quot;, errnum);

Ah yes.

&gt; &gt; Source/WTF/wtf/SafeStrerror.h:28
&gt; &gt; +#include &lt;wtf/text/CString.h&gt;
&gt; 
&gt; &lt;wtf/Forward.h&gt; should suffice.

I don&apos;t think so, because we return a CString by value, not a pointer, so I would expect the full definition to be required. Maybe I&apos;m wrong. Will try and see if it builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806599</commentid>
    <comment_count>33</comment_count>
      <attachid>441876</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-20 06:47:49 -0700</bug_when>
    <thetext>Created attachment 441876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806602</commentid>
    <comment_count>34</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-10-20 06:52:42 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #32)
&gt; I don&apos;t think so, because we return a CString by value, not a pointer, so I
&gt; would expect the full definition to be required. Maybe I&apos;m wrong. Will try
&gt; and see if it builds.

You were right!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806606</commentid>
    <comment_count>35</comment_count>
      <attachid>441876</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-20 07:24:37 -0700</bug_when>
    <thetext>Comment on attachment 441876
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806610</commentid>
    <comment_count>36</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-20 08:04:34 -0700</bug_when>
    <thetext>Committed r284533 (243275@main): &lt;https://commits.webkit.org/243275@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441876.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1806611</commentid>
    <comment_count>37</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-20 08:05:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/84462085&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809273</commentid>
    <comment_count>38</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-10-27 09:01:53 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #0)
&gt; strerror() is sadly documented as &quot;MT-Unsafe race:strerror&quot; because it
&gt; returns strings that point into static memory and it may modify those
&gt; strings after the function call returns, e.g. to create strings of the form
&gt; &quot;Unknown error code nnn&quot; which is a real shame. Accordingly, it cannot
&gt; safely be used anywhere in WebKit. This bug attempts to address all cases
&gt; outside Source/ThirdParty.
&gt; 
&gt; This will not build on Apple ports yet because it adds new files. XCode help
&gt; would be appreciated.

Wow, this makes me so sad!  But, understandable.  Thanks for fixing this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441655</attachid>
            <date>2021-10-18 16:23:26 -0700</date>
            <delta_ts>2021-10-19 07:43:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211018182325.patch</filename>
            <type>text/plain</type>
            <size>34100</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
M2FmZmVjMGY2NDQwMDRlOTMzMzJmOWFkY2Q1YWJhZWU1NWQwOTY2Li4yODlhZDZjNTVkZWZhNTU5
NDdiN2RkNTUwZGNjMDQ2ZGRkOTQ4OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE1ICBHZXphIExvcmUgIDxnbG9yZUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdWzMy
Yml0XSBGaXggQ1NSIHJlc3RvcmUgb24gREZHIHRhaWwgY2FsbHMsIGFkZCBleHRyYSByZWdpc3Rl
ciBvbiBBUk12NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBjMTRkN2U1YjVhZmQxMzE5M2E1YWY3M2EwYjdjMGFhYzhhNGQyYWZm
Li4zZWIxNjA1ZGMxYWFjMDNlMTBlNGVjNjJmZjA5MjdjYWJhOTU0ZjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDIxLTEwLTE4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUu
b3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNhZmVTdHJlcnJvciBmdW5j
dGlvbiB0aGF0IHdlIGNhbiB1c2Ugd2l0aG91dCB0aHJlYWRzYWZldHkgd29ycmllcy4KKworICAg
ICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvU2FmZVN0cmVycm9yLmNw
cDogQWRkZWQuCisgICAgICAgIChXVEY6OnNhZmVTdHJlcnJvcik6CisgICAgICAgICogd3RmL1Nh
ZmVTdHJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvcGxheXN0YXRpb24vRmlsZVN5c3Rl
bVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmRlbGV0ZUZp
bGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAo
V1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAgICogd3RmL3RocmVhZHMv
U2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OmpzY1NpZ25hbEhhbmRsZXIpOgorCiAyMDIxLTEw
LTE1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0NvY29hXSBEZXNpZ24gU3lzdGVtIFVJIGZvbnRzIGV4aXN0IG9uIE1hY0NhdGFseXN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGJjMjRhODdlN2Y0OTllOTQxYzQzYTEyOTVmNDE4Yjg4NThkZGRlMDQuLjE3ZDI0ZmE1
ZWI2YzUyZDhjYmM5NTBhYjAxZTY0YzQyNmQ5YmY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMjEtMTAtMTggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+
CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcDoKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6Cisg
ICAgICAgICogUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhp
bGlhcnlQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5k
Ym94UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnRE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0Ojp0cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2Vi
S2l0OjphcHBseVNhbmRib3gpOgorCiAyMDIxLTEwLTE1ICBHYXJyZXR0IERhdmlkc29uICA8Z2Fy
cmV0dF9kYXZpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wb3J0IEF1dGhlbnRpY2F0aW9u
U2VydmljZXNDb3JlJ3MgcHVibGljIG1vZHVsZSBhcyB3ZWxsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMTBkNjcw
NTI3ZDQzNjE3YmFhNTBlZjg4Njc3ZGY0NmI4NDIzZjhiZC4uNjlkNThjOTA0Mjc5MjA2MDNiMTM2
M2FmYzdhMWE5ZGIwMmMzMDczYiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEw
LTE4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAg
IERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYzoKKyAg
ICAgICAgKHBhc19wYWdlX21hbGxvY19jb21taXQpOgorCiAyMDIxLTEwLTE0ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW2xpYnBhc10gVXNlIGBlbnVtIHsg
Li4uIH1gIGluc3RlYWQgb2YgYHN0YXRpYyBjb25zdCBzaXplX3RgIGZvciBjb25zdGFudCB2YWx1
ZXMgdXNlZCBmb3IgYXJyYXkgc2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0K
aW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NC4uMmUzOWNjYWZh
MDVjYmMzYzk0YTgzNGZkYTNiNGZjMTgxYWNiNDZmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxzeXMvc3RhdC5oPgogI2lt
cG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9TSEExLmg+CisjaW1wb3J0IDx3
dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9X
ZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmg+CkBA
IC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVycm9yCiAgICAg
Y29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0aFN0cmluZyBzdHJpbmdCeUFwcGVu
ZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAgIGludCBmZCA9IG9wZW4oY2FjaGVG
aWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExPQ0sgfCBPX05PTkJMT0NLLCAwNjAw
KTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJDb3Vs
ZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxpa2VseSBh
bm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2luZyBpdC4gRXJyb3I6ICIsIHN0cmVy
cm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4g
b3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQncyBsaWtlbHkgYW5vdGhlciBWTSBv
ciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9yOiAiLCBzYWZlU3RyZXJyb3IoZXJy
bm8pKTsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIApAQCAtMzE0LDcgKzMxNSw3IEBAIC0g
KEJPT0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogCiAgICAgaW50IHRlbXBGRCA9IG9wZW4o
dGVtcEZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSIHwgT19FWExPQ0sgfCBPX05PTkJMT0NLLCAw
NjAwKTsKICAgICBpZiAodGVtcEZEID09IC0xKSB7Ci0gICAgICAgIGVycm9yID0gbWFrZVN0cmlu
ZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgdGVtcCBmaWxlLiBF
cnJvcjogIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJD
b3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSB0ZW1wIGZpbGUuIEVycm9y
OiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IGYyZWM0MmJh
ODg4YWY3NDlhNjA0Yzc4MDdmZTNmNTUxMzk0NjU0ZWMuLjMyZTQ5NTk0YjRlNTY1NGI3Mjg4Mzdh
MTZjZDc1M2U3NzgxMGM2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkpTV3JhcHBlck1hcFRlc3RzLmgi
CiAjaW1wb3J0ICJSZWdyZXNzMTQxMjc1LmgiCiAjaW1wb3J0ICJSZWdyZXNzMTQxODA5LmgiCisj
aW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9EYXRh
VmF1bHRTUEkuaD4KIAogCkBAIC0yNDQ4LDcgKzI0NDksNyBAQCBzdGF0aWMgTlNVUkwgKnJlc29s
dmVQYXRoVG9TY3JpcHRzKCkKICAgICAgICAgY29uc3Qgc2l6ZV90IG1heExlbmd0aCA9IDEwMDAw
OwogICAgICAgICBjaGFyIGN3ZFttYXhMZW5ndGhdOwogICAgICAgICBpZiAoIWdldGN3ZChjd2Qs
IG1heExlbmd0aCkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAiZ2V0Y3dkIGVycm9yZWQgd2l0aCBj
b2RlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBOU0xvZyhAImdldGN3ZCBl
cnJvcmVkIHdpdGggY29kZTogJXMiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAg
IGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAgTlNVUkwgKmN3ZFVSTCA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyIsIGN3ZF1dOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAppbmRleCBjNWY2OTM5ZWQwNDZkZmNkMmMzZGYwOTk5ZTgxZGMwZWZhMjll
N2MxLi5mNWRlNDU1NWI2MTAwNWVhOWU3M2ViZGU0YWVlNGMzYTBjMjY4Mjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9N
b25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1
ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4MTcsNyArMTgxOCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvbk9wZW5GaWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyCiAKICAgICBGSUxFKiBkZXNjcmlwdG9yID0gZm9wZW4oZmlsZVBhdGguZmlsZVN5c3RlbVBh
dGgoKS5hc2NpaSgpLmRhdGEoKSwgInIiKTsKICAgICBpZiAoIWRlc2NyaXB0b3IpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVy
cm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3Ms
IGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhhZCBlcnJvcjogIl9zLCBzdHJlcnJvcihlcnJu
bykpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQgbm90IG9w
ZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhhZCBlcnJvcjogIl9z
LCBzYWZlU3RyZXJyb3IoZXJybm8pKSkpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNGaWxlRGVzY3JpcHRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoZGVzY3JpcHRvcikpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcAppbmRleCA3NmYxMDJmOTAxMDY1
OTJhMDcyMjU5OTI1MTc4NGQwMjY3YjZhODZiLi5mZjA0MTJiMTk3MzgzNjNhM2M5NWE4NTBkYmM1
ZWQwNGQzNjJlZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
eXRlY29kZUNhY2hlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJCeXRlY29kZUNhY2hlRXJyb3IuaCIKIAorI2luY2x1ZGUgPHd0Zi9T
YWZlU3RyZXJyb3IuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAKIGJvb2wgQnl0ZWNvZGVDYWNoZUVy
cm9yOjpTdGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QKQEAgLTM1LDcgKzM3LDcgQEAgYm9v
bCBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6OmlzVmFsaWQoKSBjb25zdAogCiBT
dHJpbmcgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yOjptZXNzYWdlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gc3RyZXJyb3IobV9lcnJubyk7CisgICAgcmV0dXJuIHNhZmVTdHJlcnJv
cihtX2Vycm5vKTsKIH0KIAogYm9vbCBCeXRlY29kZUNhY2hlRXJyb3I6OldyaXRlRXJyb3I6Omlz
VmFsaWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1
bmN0aW9uQWxsb3dsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlv
bkFsbG93bGlzdC5jcHAKaW5kZXggMDA3YjI1M2U2NDlmMWE1ZmEyNmVlNzI2YjAwNDA4MzZkOTUz
Yjg5MC4uOGQxOTZlNWI2MTk1ZmQzNTFmNzBjYzM0M2M0YzY0OWZkOTc4NmRkZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4K
ICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC00NSw3ICs0Niw3IEBAIEZ1bmN0aW9uQWxsb3dsaXN0OjpGdW5j
dGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkKICAgICAgICAgICAgIG1faGFzQWN0
aXZlQWxsb3dsaXN0ID0gdHJ1ZTsKICAgICAgICAgICAgIG1fZW50cmllcy5hZGQoZmlsZW5hbWUp
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gb3BlbiBm
aWxlICVzLiBEaWQgeW91IGFkZCB0aGUgZmlsZS1yZWFkLWRhdGEgZW50aXRsZW1lbnQgdG8gV2Vi
UHJvY2Vzcy5zYj8gRXJyb3IgY29kZTogJXNcbiIsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykp
OworICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMuIERpZCB5b3Ug
YWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0byBXZWJQcm9jZXNzLnNiPyBFcnJv
ciBjb2RlOiAlc1xuIiwgZmlsZW5hbWUsIHNhZmVTdHJlcnJvcihlcnJubykpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03Myw3ICs3NCw3IEBAIEZ1bmN0aW9uQWxsb3dsaXN0OjpGdW5j
dGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkKIAogICAgIGludCByZXN1bHQgPSBm
Y2xvc2UoZik7CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBj
bG9zZSBmaWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
IGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzYWZl
U3RyZXJyb3IoZXJybm8pKTsKIH0KIAogYm9vbCBGdW5jdGlvbkFsbG93bGlzdDo6Y29udGFpbnMo
Q29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCBjZTk0ZTJiZGNiMTgwZjMzMjI5ZDRk
Y2I2ZThhMWE4ZTU5YWM3ZmM5Li45ZmJhY2E5ZGMwZjczNjViOWRhNWJmYjA4MGJlMzUxMzY0ZjY4
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVy
cmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJy
aWRlcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KQEAgLTI4Myw3ICsyODQsNyBAQCB2b2lkIEZ1bmN0aW9uT3ZlcnJpZGVzOjpw
YXJzZU92ZXJyaWRlc0luRmlsZShjb25zdCBjaGFyKiBmaWxlTmFtZSkKICAgICAKICAgICBpbnQg
cmVzdWx0ID0gZmNsb3NlKGZpbGUpOwogICAgIGlmIChyZXN1bHQpCi0gICAgICAgIGRhdGFMb2dG
KCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVOYW1lLCBzdHJlcnJvcihlcnJu
bykpOworICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIGNsb3NlIGZpbGUgJXM6ICVzXG4iLCBm
aWxlTmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXggNTMyOTVi
OGEwMmRmNDM0NGY0ZGRhOWE4N2I3OGVjNTViN2U4Y2I5OC4uNzdjZjc0ZTA4ODI3YThjODQ1ZmFj
ODU4NjlkMzZhZmY3ZGJlMmVkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zMDEsNyArMzAyLDcgQEAgTWVtb3J5SGFuZGxlOjp+
TWVtb3J5SGFuZGxlKCkKICAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpTaWduYWxpbmc6CiAgICAgICAgICAgICBpZiAobXByb3RlY3QobWVtb3J5LCBN
ZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewotICAg
ICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8p
LCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNh
ZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtZW1vcnlNYW5hZ2Vy
KCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KTsKQEAgLTMxMyw3ICszMTQsNyBAQCBNZW1vcnlIYW5k
bGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiB7CiAgICAgICAgICAgICAgICAgaWYgKG1w
cm90ZWN0KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkp
IHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJl
cnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVj
dCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUdyb3dhYmxlQm91bmRzQ2hlY2tpbmdN
ZW1vcnkobWVtb3J5LCBtX21hcHBlZENhcGFjaXR5KTsKQEAgLTQwNiw3ICs0MDcsNyBAQCBSZWZQ
dHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50
IG1heGltdW0sIE1lbW9yeVNoYQogICAgIAogICAgIGlmIChmYXN0TWVtb3J5KSB7CiAgICAgICAg
IGlmIChtcHJvdGVjdChmYXN0TWVtb3J5ICsgaW5pdGlhbEJ5dGVzLCBNZW1vcnk6OmZhc3RNYXBw
ZWRCeXRlcygpIC0gaW5pdGlhbEJ5dGVzLCBQUk9UX05PTkUpKSB7Ci0gICAgICAgICAgICBkYXRh
TG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwgIlxuIik7CisgICAgICAg
ICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJc
biIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQogCkBAIC00NDIsNyArNDQzLDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUo
UGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGEKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5ICsgaW5pdGlhbEJ5dGVzLCBtYXhp
bXVtQnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkpIHsKLSAgICAgICAgICAgIGRhdGFM
b2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAg
ICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0cmVycm9yKGVycm5vKSwgIlxu
Iik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CiAKQEAgLTUxNiw3ICs1MTcsNyBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0Zh
aWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291bnQgZGVsdGEpCiAKICAgICAgICAg
ZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3
UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIo
c3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVz
KSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywg
UFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0
IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2co
Im1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0cmVycm9yKGVycm5vKSwgIlxuIik7CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTYwNSw3
ICs2MDYsNyBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1l
bW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAgIAogICAgICAgICBkYXRhTG9nTG5J
Zih2ZXJib3NlLCAiTWFya2luZyBXZWJBc3NlbWJseSBtZW1vcnkncyAiLCBSYXdQb2ludGVyKG1l
bW9yeSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwgUmF3UG9pbnRlcihzdGFydEFkZHJl
c3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyArIGV4dHJhQnl0ZXMpLCAiKSIpOwog
ICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBleHRyYUJ5dGVzLCBQUk9UX1JFQUQg
fCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAi
LCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3Qg
ZmFpbGVkOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApp
bmRleCBmMTBjODFhNTc1OTliMGQwNmUxMzYxMzE5ZDQ2NzAzNjMxMjQ4ZmE1Li40ZTM4YWFhOTMw
ZDQxMDcyN2VkMzc0OWIyYzc0MTIyMzhkNmFjYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAt
MjMwLDYgKzIzMCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBSb2Jpbkhvb2RIYXNo
VGFibGUuaAogICAgIFJ1bkxvb3AuaAogICAgIFNIQTEuaAorICAgIFNhZmVTdHJlcnJvci5oCiAg
ICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2NoZWR1bGVQYWlyLmgKICAgICBTY29wZS5o
CkBAIC00NTksNiArNDYwLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUmVmQ291bnRlZExlYWtD
b3VudGVyLmNwcAogICAgIFJ1bkxvb3AuY3BwCiAgICAgU0hBMS5jcHAKKyAgICBTYWZlU3RyZXJy
b3IuY3BwCiAgICAgU2Vjb25kcy5jcHAKICAgICBTZWdtZW50ZWRWZWN0b3IuY3BwCiAgICAgU2l4
Q2hhcmFjdGVySGFzaC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NhZmVTdHJlcnJv
ci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1MWY1
ZjQ5ZjdkMzA1ODc2NTg5M2VmYzZmMzljMDcxY2U3MmVlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qIAorICog
Q29weXJpZ2h0IChDKSAyMDIxIFJlZCBIYXQgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCBzZWUg
PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CisKKyNpbmNsdWRlIDxjc3RyaW5nPgor
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL0xvY2tlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisj
aWYgVVNFKEdMSUIpCisjaW5jbHVkZSA8Z2xpYi5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYg
eworCitjb25zdCBjaGFyKiBzYWZlU3RyZXJyb3IoaW50IGVycm51bSkKK3sKKyNpZiBVU0UoR0xJ
QikKKyAgICAvLyBNaWdodCBhcyB3ZWxsIHJldXNlIEdMaWIncyBleGlzdGluZyBtYXAgb2YgZXJy
b3IgbWVzc2FnZXMgaW5zdGVhZCBvZiBrZWVwaW5nIGEgc2Vjb25kIG9uZS4KKyAgICByZXR1cm4g
Z19zdHJlcnJvcihlcnJudW0pOworI2Vsc2UKKyAgICAvLyBUaGlzIGlzIGltcGxlbWVudGF0aW9u
IGlzIGJhc2VkIG9uIEdMaWIncyBnX3N0cmVycm9yIChmcm9tIGdzdHJmdW5jcy5jLCBMR1BMdjIu
MSspLgorICAgIHN0YXRpYyBMb2NrIGxvY2s7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hNYXA8aW50LCBDU3RyaW5nPj4gZXJyb3JzTWFwIFdURl9HVUFSREVEX0JZX0xPQ0sobG9jayk7
CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OworICAgIGF1dG8gcmVzdWx0ID0gZXJyb3Jz
TWFwLT5nZXQoZXJybnVtKTsKKyAgICBpZiAoIXJlc3VsdC5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdC5kYXRhKCk7CisKKyAgICBjaGFyIGJ1ZmZlclsyMDQ4XTsKKyAgICBjaGFyKiBt
ZXNzYWdlID0gbnVsbHB0cjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIHN0cmVycm9yX3MoYnVmZmVy
LCBzaXplb2YoYnVmZmVyKSwgZXJybnVtKTsKKyAgICBtZXNzYWdlID0gYnVmZmVyOworI2Vsc2UK
KyAgICAvLyBHTlUgc3RyZXJyb3JfciBhbmQgUE9TSVggc3RyZXJyb3JfciBhcmUgaW5jb21wYXRp
YmxlLCBhbmQgbXkgYXR0ZW1wdHMgdG8gdXNlIGZlYXR1cmUgdGVzdAorICAgIC8vIG1hY3JvcyB0
byBmb3JjZSB1c2Ugb2YgUE9TSVggc3RyZXJyb3JfciBhbGwgZmFpbGVkIGR1ZSB0byBidWdzIGlu
IHRoZSBsaWJzdGRjKysgaGVhZGVycy4KKyAgICBhdXRvIHJldCA9IHN0cmVycm9yX3IoZXJybnVt
LCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2Ft
ZTxkZWNsdHlwZShyZXQpLCBjaGFyKj46OnZhbHVlKSB7CisgICAgICAgIC8vIEdOVSBzdHJlcnJv
cl9yCisgICAgICAgIG1lc3NhZ2UgPSByZXQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUE9T
SVggc3RyZXJyb3JfcgorICAgICAgICBBU1NFUlQocmV0KTsKKyAgICAgICAgbWVzc2FnZSA9IGJ1
ZmZlcjsKKyAgICB9CisjZW5kaWYgLy8gT1MoV0lORE9XUykKKworICAgIGVycm9yc01hcC0+YWRk
KGVycm51bSwgbWVzc2FnZSk7CisKKyAgICAvLyBFbnN1cmUgd2UgcmV0dXJuIGEgcG9pbnRlciB0
byB0aGUgbWVzc2FnZSB3ZSBvd24gaW4gZXJyb3JzTWFwLCB3aG9zZSBsaWZldGltZSB3ZSBndWFy
YW50ZWUuCisgICAgcmVzdWx0ID0gZXJyb3JzTWFwLT5nZXQoZXJybnVtKTsKKyAgICBBU1NFUlQo
IXJlc3VsdC5pc051bGwoKSk7CisgICAgcmV0dXJuIHJlc3VsdC5kYXRhKCk7CisjZW5kaWYgLy8g
VVNFKEdMSUIpCit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU2FmZVN0cmVycm9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kOTY2NjQ1ODg0MDI1YmRjM2UwNWI2Zjc1OGUyYTc5M2NjOWU2MGI2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmgKQEAgLTAsMCArMSw0MCBA
QAorLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYg
eworCisvLyBUaGlzIGlzIHN0cmVycm9yLCBleGNlcHQgaXQgaXMgdGhyZWFkc2FmZS4gVGhlIHBy
b2JsZW0gd2l0aCBub3JtYWwgc3RyZXJyb3IgaXMgaXQgcmV0dXJucyBhCisvLyBwb2ludGVyIHRv
IHN0YXRpYyBzdG9yYWdlLCBhbmQgaXQgbWF5IGFjdHVhbGx5IG1vZGlmeSB0aGF0IHN0b3JhZ2Us
IHNvIGl0IGNhbiBuZXZlciBiZSB1c2VkIGluCisvLyBhbnkgbXVsdGl0aHJlYWRlZCBhcHBsaWNh
dGlvbiwgb3IgYW55IGxpYnJhcnkgdGhhdCBtYXkgYmUgbGlua2VkIHRvIGEgbXVsdGl0aHJlYWRl
ZCBhcHBsaWNhdGlvbi4KKy8vIChXaHkgZG9lcyBpdCBtb2RpZnkgaXRzIHN0b3JhZ2U/IFNvIHRo
YXQgaXQgY2FuIGFwcGVuZCB0aGUgZXJyb3IgbnVtYmVyIHRvIHRoZSBlcnJvciBzdHJpbmcsIGFz
CisvLyBpbiAiVW5rbm93biBlcnJvciBuLiIpIFRoZSBzdGFuZGFyZCBhbHRlcm5hdGl2ZXMgYXJl
IHN0cmVycm9yX3MgYW5kIHN0cmVycm9yX3IsIGJ1dCBib3RoIGhhdmUKKy8vIHByb2JsZW1zLiBz
dHJlcnJvcl9zIGlzIHNwZWNpZmllZCBieSBDMTEsIGJ1dCBub3QgYnkgQysrIChhcyBvZiBDKysy
MCksIGFuZCBpdCBpcyBvcHRpb25hbCBzbworLy8gZ2xpYmMgZGVjaWRlZCB0byBpZ25vcmUgaXQu
IFdlIGNhbiBvbmx5IHJlbHkgb24gaXQgdG8gZXhpc3Qgb24gV2luZG93cy4gVGhlbiBzdHJlcnJv
cl9yIGlzIGV2ZW4KKy8vIHdvcnNlLiBGaXJzdCwgaXQgZG9lc24ndCBleGlzdCBhdCBhbGwgb24g
V2luZG93cy4gU2Vjb25kLCB0aGUgR05VIHZlcnNpb24gaXMgaW5jb21wYXRpYmxlIHdpdGgKKy8v
IHRoZSBQT1NJWCB2ZXJzaW9uLCBhbmQgaXQgaXMgaW1wb3NzaWJsZSB0byB1c2UgY29ycmVjdGx5
IHVubGVzcyB5b3Uga25vdyB3aGljaCB2ZXJzaW9uIHlvdSBoYXZlLgorLy8gQm90aCBzdHJlcnJv
cl9zIGFuZCBzdHJlcnJvcl9yIGFyZSBjdW1iZXJzb21lIGJlY2F1c2UgdGhleSBmb3JjZSB5b3Ug
dG8gYWxsb2NhdGUgdGhlIGJ1ZmZlciBmb3IKKy8vIHRoZSByZXN1bHQgbWFudWFsbHkuIEl0J3Mg
YWxsIHN1Y2ggYSBtZXNzIHRoYXQgd2Ugc2hvdWxkIGRlYWwgd2l0aCB0aGUgY29tcGxleGl0eSBo
ZXJlIHJhdGhlcgorLy8gdGhhbiBlbHNld2hlcmUgaW4gV2ViS2l0LgorV1RGX0VYUE9SVF9QUklW
QVRFIGNvbnN0IGNoYXIqIHNhZmVTdHJlcnJvcihpbnQgZXJybnVtKTsKKworfQorCit1c2luZyBX
VEY6OnNhZmVTdHJlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9u
L0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9G
aWxlU3lzdGVtUGxheVN0YXRpb24uY3BwCmluZGV4IGNkYTVlNWUxNjMyNTI0MWExZTdiOTcxNzMw
N2NmYWViNmJkOGMzNGMuLjYwZDEyYzY5MzEzMGU0NTM2YzA2YjZmYjMzOTFjNzI1NmFjNzQxN2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3Rh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlT
dGF0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CiAj
aW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3Rm
L1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
bmFtZXNwYWNlIFdURiB7CkBAIC04OCw3ICs4OSw3IEBAIGJvb2wgZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpCiAgICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwg
ZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNs
dWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKICAgICBib29s
IHVubGlua2VkID0gIXVubGluayhmc1JlcC5kYXRhKCkpOwogICAgIGlmICghdW5saW5rZWQgJiYg
ZXJybm8gIT0gRU5PRU5UKQotICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0
ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBMT0dfRVJS
T1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3RyZXJy
b3IoZXJybm8pKTsKIAogICAgIHJldHVybiB1bmxpbmtlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDc5NTY3MGZkNmQ4MDI3OGRmNmMxNzBiMjE2MmM0
OGI1MmU5Y2JiZWYuLmMzYmVjZDZkOGQ3NGQwYTYxYThjMWFiNDA3MzRhMTJhNWE0ZDY0NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUg
PHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0yNjEsNyArMjYyLDcgQEAg
Ym9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyB1bmxpbmsoLi4uKSBy
ZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8g
aW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1l
eGlzdGVudCBmaWxlKQogICAgIGJvb2wgdW5saW5rZWQgPSAhdW5saW5rKGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghdW5saW5rZWQgJiYgZXJybm8gIT0g
RU5PRU5UKQotICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3Ig
bWVzc2FnZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBMT0dfRVJST1IoIkZpbGUg
ZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3RyZXJyb3IoZXJybm8p
KTsKIAogICAgIHJldHVybiB1bmxpbmtlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RocmVhZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3Bw
CmluZGV4IDY0YjRjZDEyN2YzM2FlOTZiNzUxZGU3NjQ1NGJlYzQ1MTQzMDA5YmUuLmEzN2M0NWE3
M2I3OTBiODFlZWQzNDdlOTNhYzI4Y2UwYWFiYTBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RocmVhZHMvU2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcApAQCAtNTMsNiArNTMsNyBAQCBleHRlcm4gIkMiIHsKICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkR3JvdXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL1dURkNvbmZpZy5oPgpAQCAtMzg0LDcgKzM4NSw3IEBAIHZvaWQganNjU2ln
bmFsSGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVjb250ZXh0KQogICAg
ICAgICBzaWdmaWxsc2V0KCZkZWZhdWx0QWN0aW9uLnNhX21hc2spOwogICAgICAgICBkZWZhdWx0
QWN0aW9uLnNhX2ZsYWdzID0gMDsKICAgICAgICAgYXV0byByZXN1bHQgPSBzaWdhY3Rpb24oc2ln
LCAmZGVmYXVsdEFjdGlvbiwgbnVsbHB0cik7Ci0gICAgICAgIGRhdGFMb2dMbklmKHJlc3VsdCA9
PSAtMSwgIlVuYWJsZSB0byByZXN0b3JlIHRoZSBkZWZhdWx0IGhhbmRsZXIgd2hpbGUgcHJvY2Nl
c3Npbmcgc2lnbmFsICIsIHNpZywgIiB0aGUgcHJvY2VzcyBpcyBwcm9iYWJseSBkZWFkbG9ja2Vk
LiAoZXJybm86ICIsIHN0cmVycm9yKGVycm5vKSwgIikiKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYo
cmVzdWx0ID09IC0xLCAiVW5hYmxlIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgaGFuZGxlciB3aGls
ZSBwcm9jY2Vzc2luZyBzaWduYWwgIiwgc2lnLCAiIHRoZSBwcm9jZXNzIGlzIHByb2JhYmx5IGRl
YWRsb2NrZWQuIChlcnJubzogIiwgc2FmZVN0cmVycm9yKGVycm5vKSwgIikiKTsKICAgICB9Owog
CiAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGJlIGNh
cmVmdWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5l
Y3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlv
blVuaXguY3BwCmluZGV4IDQ5MTExMzIxOTMyMWNkY2M0ZjI0Y2JjMzllYjdhNjUxOTRjODE3NjEu
LjIzMjBmZDY2NWE1M2E5NGVhMGY0MzNmNmE1NDllOGJkNGI1MzVjNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxwb2xsLmg+CiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4K
IApAQCAtMzUyLDcgKzM1Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcigp
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2lzQ29ubmVjdGVkKSB7Ci0gICAg
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciByZWNlaXZpbmcgSVBDIG1lc3NhZ2Ugb24g
c29ja2V0ICVkIGluIHByb2Nlc3MgJWQ6ICVzIiwgbV9zb2NrZXREZXNjcmlwdG9yLCBnZXRwaWQo
KSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9y
IHJlY2VpdmluZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQgaW4gcHJvY2VzcyAlZDogJXMiLCBt
X3NvY2tldERlc2NyaXB0b3IsIGdldHBpZCgpLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFy
ZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1v
cnlVbml4LmNwcAppbmRleCA5OThhMmE3Njc5MzA1YTQzNWZhMzVjYzFhZWViNzA4ZjM0Njc1NTVi
Li4yNDJlMWQ0MWEwNjJiN2Y3ODk2YWI4ZmM2NjA2NGY1MDZjMDIwNmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC00MSw2ICs0
MSw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJv
ci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNjUsNyArMTY2
LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplX3Qg
c2l6ZSkKIHsKICAgICBpbnQgZmlsZURlc2NyaXB0b3IgPSBjcmVhdGVTaGFyZWRNZW1vcnkoKTsK
ICAgICBpZiAoZmlsZURlc2NyaXB0b3IgPT0gLTEpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJG
YWlsZWQgdG8gY3JlYXRlIHNoYXJlZCBtZW1vcnk6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY3JlYXRlIHNoYXJlZCBtZW1vcnk6ICVzIiwg
c2FmZVN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRl
eCBkZDUwZmI5ZWEzNzc0ZDViOTQ0NDYxMTAxZDVhZDliYTA3ZTVlOTEwLi44MzdlNjA3YmRmNjUz
OGZlODI0ODM1NzMyYjhjY2VhZDZkZmY3NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8
d3RmL0RhdGFMb2cuaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYv
UmFuZG9tTnVtYmVyLmg+CisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3
dGYvU2NvcGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1N5
c3RlbVRyYWNpbmcuaD4KQEAgLTI1MSw3ICsyNTIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
U3RyaW5nPiBzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyhjb25zdCBTYW5kYm94SW5p
dAogICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gaW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLm5h
bWUoaSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlID0gaW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzLnZhbHVlKGkpOwogICAgICAgICBpZiAoc2FuZGJveF9zZXRfcGFyYW0oc2FuZGJveFBhcmFt
ZXRlcnMuZ2V0KCksIG5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIl
czogQ291bGQgbm90IHNldCBzYW5kYm94IHBhcmFtZXRlcjogJXNcbiIsIGdldHByb2duYW1lKCks
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBu
b3Qgc2V0IHNhbmRib3ggcGFyYW1ldGVyOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVy
cm9yKGVycm5vKSk7CiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICB9CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKG5hbWUsICc6JywgdmFsdWUsICc6Jyk7CkBAIC0yNzEsMTMgKzI3MiwxMyBA
QCBzdGF0aWMgU3RyaW5nIHNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkoKQogICAgIGNo
YXIgdGVtcFtQQVRIX01BWF07CiAgICAgc2l6ZV90IGxlbmd0aCA9IGNvbmZzdHIoX0NTX0RBUldJ
Tl9VU0VSX0NBQ0hFX0RJUiwgdGVtcCwgc2l6ZW9mKHRlbXApKTsKICAgICBpZiAoIWxlbmd0aCkg
ewotICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgcmV0cmlldmUgdXNlciB0ZW1w
b3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJu
bykpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgcmV0cmlldmUgdXNlciB0
ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJy
b3IoZXJybm8pKTsKICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwogICAgIH0KICAgICBSRUxFQVNF
X0FTU0VSVChsZW5ndGggPD0gc2l6ZW9mKHRlbXApKTsKICAgICBjaGFyIHJlc29sdmVkUGF0aFtQ
QVRIX01BWF07CiAgICAgaWYgKCFyZWFscGF0aCh0ZW1wLCByZXNvbHZlZFBhdGgpKSB7Ci0gICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUgdXNlciB0ZW1wb3Jh
cnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykp
OworICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXplIHVzZXIg
dGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVy
cm9yKGVycm5vKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKICAgICB9CiAgICAgcmV0dXJu
IHJlc29sdmVkUGF0aDsKQEAgLTM3Myw3ICszNzQsNyBAQCBzdGF0aWMgYm9vbCBlbnN1cmVTYW5k
Ym94Q2FjaGVEaXJlY3RvcnkoY29uc3QgU2FuZGJveEluZm8mIGluZm8pCiAgICAgICAgIGlmICgh
bWFrZURhdGFWYXVsdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IFNhbmRib3ggZGlyZWN0b3J5IGNvdWxkbid0IGJl
IGNyZWF0ZWQ6ICIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXM6IFNhbmRib3ggZGlyZWN0b3J5IGNvdWxkbid0IGJlIGNyZWF0ZWQ6ICIs
IGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogI2Vsc2UKQEAgLTUyMSw3ICs1MjIsNyBAQCBzdGF0aWMgYm9vbCB0cnlBcHBs
eUNhY2hlZFNhbmRib3goY29uc3QgU2FuZGJveEluZm8mIGluZm8pCiAgICAgc2V0Tm90aWZ5T3B0
aW9ucygpOwogCiAgICAgaWYgKHNhbmRib3hfYXBwbHkoJnByb2ZpbGUpKSB7Ci0gICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBhcHBseSBjYWNoZWQgc2FuZGJveDogJXNcbiIsIGdl
dHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6
IENvdWxkIG5vdCBhcHBseSBjYWNoZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2duYW1lKCksIHNh
ZmVTdHJlcnJvcihlcnJubykpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02
MjMsNyArNjI0LDcgQEAgc3RhdGljIGJvb2wgYXBwbHlTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXQKICAgICBzZXROb3RpZnlPcHRp
b25zKCk7CiAgICAgCiAgICAgaWYgKHNhbmRib3hfYXBwbHkoc2FuZGJveFByb2ZpbGUuZ2V0KCkp
KSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBhcHBseSBjb21waWxlZCBz
YW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNvbXBpbGVkIHNhbmRib3g6ICVzXG4i
LCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgQ1JBU0goKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bh
c19wYWdlX21hbGxvYy5jIGIvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3Bh
Z2VfbWFsbG9jLmMKaW5kZXggZjE1MTVhZjk5MGU5MmE3MTU4ZjM5YjRjYTk1NTgwMjk1MTMyODBk
Ni4uZGM4OWY2OWNkZGUzMzE2NGU1MjAzMTE3OTA1YjgwODVhOTkxZmE3MCAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3BhZ2VfbWFsbG9jLmMKKysrIGIv
U291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3BhZ2VfbWFsbG9jLmMKQEAgLTQw
LDYgKzQwLDcgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2lu
Y2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dW5p
c3RkLmg+CiAKIHNpemVfdCBwYXNfcGFnZV9tYWxsb2NfbnVtX2FsbG9jYXRlZF9ieXRlczsKQEAg
LTE3Niw3ICsxNzcsMTEgQEAgdm9pZCBwYXNfcGFnZV9tYWxsb2NfY29tbWl0KHZvaWQqIHB0ciwg
c2l6ZV90IHNpemUpCiAgICAgaWYgKHBhc19wYWdlX21hbGxvY19tcHJvdGVjdF9kZWNvbW1pdHRl
ZCkgewogICAgICAgICByZXN1bHQgPSBtcHJvdGVjdCgodm9pZCopYmFzZV9hc19pbnQsIGVuZF9h
c19pbnQgLSBiYXNlX2FzX2ludCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CiAgICAgICAgIGlm
IChyZXN1bHQpIHsKLSAgICAgICAgICAgIHBhc19sb2coIkNvdWxkIG5vdCBtcHJvdGVjdCBvbiBj
b21taXQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgY2hhciBidWZmZXJb
MjA0OF07CisgICAgICAgICAgICBhdXRvIHJldCA9IHN0cmVycm9yX3IoZXJybm8sIGJ1ZmZlciwg
c2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgLy8gSWYgeW91IGhpdCB0aGlzIHdoZW4gcG9y
dGluZyBQQVMgdG8gTGludXgsIHRoZW4gc2VlIFdURidzIFNhZmVTdHJlcnJvci5jcHAuCisgICAg
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShyZXQpLCBpbnQ+Ojp2
YWx1ZSwgIlRoaXMgY29kZSBleHBlY3RzIFBPU0lYIHN0cmVycm9yX3IsIG5vdCBHTlUgc3RyZXJy
b3JfciIpOworICAgICAgICAgICAgcGFzX2xvZygiQ291bGQgbm90IG1wcm90ZWN0IG9uIGNvbW1p
dDogJXNcbiIsIGJ1ZmZlcik7CiAgICAgICAgICAgICBQQVNfQVNTRVJUKCFyZXN1bHQpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGQxZDZmYmMwYWJhNzIyOTliY2U2Y2I5MmE1M2VlMDJkYWIyMzNhY2MuLjVjY2Vm
ZWI2ODE5OGFlZGQwZjdhZjc3YTE4MjkwYWIxNTA5NjQ5YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0x
OCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBE
byBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEwLTE1ICBCSiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3RvcjogaGFuZGxlIFByb21pc2Ug
b2JqZWN0cyByZXR1cm5lZCBmcm9tIGV2YWx1YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGVlZTNhZTcyNDE1OTI2ZGVmMDI3N2FhNDNlNWQ1
ODRiZjMyOGZmNGEuLmZkZGQ2YWMwZTA4NTRjZTU5ODQyMTM1ZjRmZThjOGNkZDRhZjQ1ZTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtODIsNiArODIsNyBAQCBzZXQoVGVzdFdU
Rl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL1JvYmluSG9vZEhhc2hTZXQuY3BwCiAgICAgVGVzdHMv
V1RGL1J1bkxvb3AuY3BwCiAgICAgVGVzdHMvV1RGL1NIQTEuY3BwCisgICAgVGVzdHMvV1RGL1Nh
ZmVTdHJlcnJvci5jcHAKICAgICBUZXN0cy9XVEYvU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlv
bnMuY3BwCiAgICAgVGVzdHMvV1RGL1Njb3BlLmNwcAogICAgIFRlc3RzL1dURi9TY29wZWRMYW1i
ZGEuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TYWZlU3Ry
ZXJyb3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2FmZVN0cmVycm9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZjdlMWI2MDVlMTRlOTJiNjUyMDFiYWM3N2FhZjdjZWExNjExYTI5Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2FmZVN0cmVy
cm9yLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIFJlZCBI
YXQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KKworI2lu
Y2x1ZGUgPGNzdHJpbmc+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZf
U2FmZVN0cmVycm9yLCBTdHJpbmdzQXJlRXF1YWwpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAxMDAwOyBpKyspIHsKKyAgICAgICAgLy8gQWN0dWFsIHRleHQgb2YgZXJyb3JzIHNob3VsZCBi
ZSBpZGVudGljYWwuCisgICAgICAgIEVYUEVDVF9TVFJFUShzdHJlcnJvcihpKSwgc2FmZVN0cmVy
cm9yKGkpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1NhZmVTdHJlcnJvciwgUG9pbnRlcnNBcmVO
b3RFcXVhbCkKK3sKKyAgICAvLyBTaW5jZSBzdHJlcnJvcigpIGdlbmVyYWxseSByZXR1cm5zIHBv
aW50ZXJzIHRoYXQgYXJlIG5vdCBzYWZlIHRvIHVzZSBpbiBtdWx0aXRocmVhZGVkCisgICAgLy8g
cHJvZ3JhbXMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc2hvdyB0aGF0IHNhZmVTdHJlcnJvcigpIHJl
dHVybnMgZGlmZmVyZW50IHBvaW50ZXJzLgorICAgIC8vIEFjY29yZGluZ2x5LCBJIHdhcyB0ZW1w
dGVkIHRvIGxvb3Agb3ZlciBhIGJ1bmNoIG9mIGRpZmZlcmVudCBlcnJvciBjb2RlcyBoZXJlIGFu
ZCB2ZXJpZnkgdGhhdAorICAgIC8vIHRoZSBwb2ludGVycyByZXR1cm5lZCBieSB0aGUgdHdvIGZ1
bmN0aW9ucyBhcmUgbm90IHRoZSBzYW1lLgorICAgIC8vCisgICAgLy8gQnV0IGlmIHdlIGFyZSB1
c2luZyBHTGliLCB0aGVuIHNhZmVTdHJlcnJvcigpIHdpbGwgcmV0dXJuIGEgcmVzdWx0IHByb3Zp
ZGVkIGJ5IGdfc3RyZXJyb3IoKSwKKyAgICAvLyB3aGljaCBpbiB0dXJuIHJldHVybnMgYSByZXN1
bHQgcHJvdmlkZWQgYnkgc3RyZXJyb3JfcigpIChpZiBhdmFpbGFibGUpLiBUaGUgZ2xpYmMgKEdO
VSkKKyAgICAvLyB2ZXJzaW9uIG9mIHN0cmVycm9yX3IoKSBpcyB3ZWlyZCBpbiB0aGF0IGl0IHdp
bGwgdXN1YWxseSByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBzYW1lIHN0YXRpYworICAgIC8vIG1l
bW9yeSB0aGF0IHN0cmVycm9yKCkgcmV0dXJucywgYnV0IC0tIGNydWNpYWxseSAtLSBpdCB3aWxs
IG9ubHkgZG8gc28gd2hlbiBpdCBpcyBndWFyYW50ZWVkCisgICAgLy8gdGhhdCBnbGliYyB3aWxs
IG5ldmVyIG1vZGlmeSB0aGF0IHBvaW50ZXIuIFNvIHdoZW4gdXNpbmcgR0xpYiBhbmQgZ2xpYmMs
IGl0J3MgYWN0dWFsbHkgT0sgZm9yCisgICAgLy8gdGhlc2UgZnVuY3Rpb25zIHRvIHJldHVybiBt
YXRjaGluZyBwb2ludGVyIHZhbHVlcy4gSG93ZXZlciwgaWYgd2UgcGFzcyBhbiBpbnZhbGlkIGVy
cm9yIGNvZGUsCisgICAgLy8gdGhlbiBnbGliYyB3aWxsIG1vZGlmeSB0aGUgcmV0dXJuZWQgc3Ry
aW5nIGluIG9yZGVyIHRvIGFkZCB0aGUgaW52YWxpZCBlcnJvciBjb2RlIGRpcmVjdGx5CisgICAg
Ly8gaW50byB0aGUgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHN0cmVycm9yX3IoKSB3aWxsIG1ha2Ug
YSBjb3B5IHJhdGhlciB0aGFuIHJldHVybiB0aGUgc2FtZQorICAgIC8vIHN0YXRpYyBzdHJpbmcg
dGhhdCB3b3VsZCBiZSByZXR1cm5lZCBieSBlcnJuby4KKyAgICAvLworICAgIC8vIEl0J3MgcXVl
c3Rpb25hYmxlIHdoZXRoZXIgdGhpcyB0ZXN0IGlzIHRydWx5IHZhbHVhYmxlLCBzaW5jZSBpdCBy
ZWxpZXMgb24gc28gbWFueQorICAgIC8vIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGJ1dCBpdCdz
IG5pY2UgdG8gc2hvdyB0aGF0IHNhZmVTdHJlcnJvcigpIGlzIGRvaW5nICpzb21ldGhpbmcqCisg
ICAgLy8gZGlmZmVyZW50bHkgdGhhbiBub3JtYWwgc3RyZXJyb3IoKSwgZXZlbiBpZiB3ZSBoYXZl
IHRvIHJlbHkgb24gdGhpcyBlZGdlIGNhc2UgdG8gZG8gc28uCisgICAgRVhQRUNUX05FKHN0cmVy
cm9yKDQyNDI0MiksIHNhZmVTdHJlcnJvcig0MjQyNDIpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441723</attachid>
            <date>2021-10-19 07:43:44 -0700</date>
            <delta_ts>2021-10-19 07:53:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211019074343.patch</filename>
            <type>text/plain</type>
            <size>36147</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2JjZmNmNzgyODZjY2JhNTI5ZDI3MjI4YzI2MzI4NTJkMGQ3MDg1Li4zN2I3YmIwZTY0NjBkZTU5
ZmFkYzI5ZGI4MDYwZDBjNmU3ZGVmYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE4ICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5jb20+CiAKICAgICAgICAgc2hh
ZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2ZWQ1MjRmODc5YTFjMzMxZDgwNjdiMTcx
MWY5MzMzYjNhYzNmODBiLi5lZjIzZmU0Y2I4Y2QyYjc5YmRhMjQyZWY0N2Y5YzdlMTlhNWJiMjIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNh
ZmVTdHJlcnJvciBmdW5jdGlvbiB0aGF0IHdlIGNhbiB1c2Ugd2l0aG91dCB0aHJlYWRzYWZldHkg
d29ycmllcy4KKworICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYv
U2FmZVN0cmVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnNhZmVTdHJlcnJvcik6Cisg
ICAgICAgICogd3RmL1NhZmVTdHJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvcGxheXN0
YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OmRlbGV0ZUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAg
ICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OmpzY1NpZ25hbEhhbmRs
ZXIpOgorCiAyMDIxLTEwLTE5ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgRW5zdXJlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3SW1hZ2Uodmlk
ZW8pIHVzZXMgdGhlIHJpZ2h0IGNvbG9yIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjN2EzYmQzYTg4ZTFl
OGRjOGEwZDRmNjZkMGJiNDFlNDk3MmRlZDYuLmEzNzFhYjBjYTI5NTc5NjlhYzJlMzJmYTRjMzFh
OTg5MmVlNzBjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTAtMTkgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVz
ZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vdW5p
eC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0Ojp0
cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2ViS2l0OjphcHBseVNhbmRib3gpOgor
CiAyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgog
CiAgICAgICAgIFVwZGF0ZSBzZWNjb21wIGZpbHRlcnMgd2l0aCBsYXRlc3QgY2hhbmdlcyBmcm9t
IGZsYXRwYWsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZwppbmRleCAxYzY1MmQxOWNlNmM0MDBiMWJmOWEyNDRhZTAwODU1MWQ5
NjBhNzc1Li4zMWVkN2ExOTcxMDcwNTY2NzVmMjBiNDFhZmU2YzA0NDQzZmRlNzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxpYnBhcy9zcmMv
bGlicGFzL3Bhc19wYWdlX21hbGxvYy5jOgorICAgICAgICAocGFzX3BhZ2VfbWFsbG9jX2NvbW1p
dCk6CisKIDIwMjEtMTAtMTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg0MzA1LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHQubW0KaW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0
MWE4YjA5NjE5NC4uMmUzOWNjYWZhMDVjYmMzYzk0YTgzNGZkYTNiNGZjMTgxYWNiNDZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1w
b3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9TSEExLmg+CisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2Nv
cGUuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3
aW4vRGF0YVZhdWx0U1BJLmg+CkBAIC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgY29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0
aFN0cmluZyBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAg
IGludCBmZCA9IG9wZW4oY2FjaGVGaWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExP
Q0sgfCBPX05PTkJMT0NLLCAwNjAwKTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJy
b3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNo
ZSBmaWxlLiBJdCdzIGxpa2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2lu
ZyBpdC4gRXJyb3I6ICIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0
cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQn
cyBsaWtlbHkgYW5vdGhlciBWTSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9y
OiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIApA
QCAtMzE0LDcgKzMxNSw3IEBAIC0gKEJPT0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogCiAg
ICAgaW50IHRlbXBGRCA9IG9wZW4odGVtcEZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSIHwgT19F
WExPQ0sgfCBPX05PTkJMT0NLLCAwNjAwKTsKICAgICBpZiAodGVtcEZEID09IC0xKSB7Ci0gICAg
ICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNv
ZGUgY2FjaGUgdGVtcCBmaWxlLiBFcnJvcjogIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
ZXJyb3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBj
YWNoZSB0ZW1wIGZpbGUuIEVycm9yOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAg
cmV0dXJuIE5POwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCmluZGV4IGYyZWM0MmJhODg4YWY3NDlhNjA0Yzc4MDdmZTNmNTUxMzk0NjU0ZWMuLjMy
ZTQ5NTk0YjRlNTY1NGI3Mjg4MzdhMTZjZDc1M2U3NzgxMGM2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQg
IkpTV3JhcHBlck1hcFRlc3RzLmgiCiAjaW1wb3J0ICJSZWdyZXNzMTQxMjc1LmgiCiAjaW1wb3J0
ICJSZWdyZXNzMTQxODA5LmgiCisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9EYXRhVmF1bHRTUEkuaD4KIAogCkBAIC0yNDQ4LDcgKzI0NDksNyBA
QCBzdGF0aWMgTlNVUkwgKnJlc29sdmVQYXRoVG9TY3JpcHRzKCkKICAgICAgICAgY29uc3Qgc2l6
ZV90IG1heExlbmd0aCA9IDEwMDAwOwogICAgICAgICBjaGFyIGN3ZFttYXhMZW5ndGhdOwogICAg
ICAgICBpZiAoIWdldGN3ZChjd2QsIG1heExlbmd0aCkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAi
Z2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
ICAgICBOU0xvZyhAImdldGN3ZCBlcnJvcmVkIHdpdGggY29kZTogJXMiLCBzYWZlU3RyZXJyb3Io
ZXJybm8pKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAgTlNVUkwg
KmN3ZFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlcyIsIGN3ZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0ZjRlMjVjM2QyY2EzOWQ0
YWNlMTY1MzZiOGMyZjdlNDlhNDJjNGQ2Li44OGFjZGM3NjI3ZDdlMGUxZDM3Nzk4OWExODcxODVm
ZWM2MDQ5NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVT
dHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4MTksNyArMTgyMCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk9wZW5GaWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBGSUxFKiBkZXNjcmlwdG9yID0gZm9wZW4o
ZmlsZVBhdGguZmlsZVN5c3RlbVBhdGgoKS5hc2NpaSgpLmRhdGEoKSwgInIiKTsKICAgICBpZiAo
IWRlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQg
bm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhhZCBlcnJv
cjogIl9zLCBzdHJlcnJvcihlcnJubykpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFr
ZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAi
IGZvcGVuIGhhZCBlcnJvcjogIl9zLCBzYWZlU3RyZXJyb3IoZXJybm8pKSkpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNGaWxlRGVzY3JpcHRvcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoZGVzY3JpcHRvcikpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNw
cAppbmRleCA3NmYxMDJmOTAxMDY1OTJhMDcyMjU5OTI1MTc4NGQwMjY3YjZhODZiLi5mZjA0MTJi
MTk3MzgzNjNhM2M5NWE4NTBkYmM1ZWQwNGQzNjJlZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKQEAgLTI2LDYgKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCeXRlY29kZUNhY2hlRXJyb3Iu
aCIKIAorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAK
IGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QK
QEAgLTM1LDcgKzM3LDcgQEAgYm9vbCBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6
OmlzVmFsaWQoKSBjb25zdAogCiBTdHJpbmcgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVy
cm9yOjptZXNzYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RyZXJyb3IobV9lcnJubyk7Cisg
ICAgcmV0dXJuIHNhZmVTdHJlcnJvcihtX2Vycm5vKTsKIH0KIAogYm9vbCBCeXRlY29kZUNhY2hl
RXJyb3I6OldyaXRlRXJyb3I6OmlzVmFsaWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKaW5kZXggMDA3YjI1M2U2NDlmMWE1
ZmEyNmVlNzI2YjAwNDA4MzZkOTUzYjg5MC4uOGQxOTZlNWI2MTk1ZmQzNTFmNzBjYzM0M2M0YzY0
OWZkOTc4NmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0
aW9uQWxsb3dsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rp
b25BbGxvd2xpc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
U2FmZVN0cmVycm9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NSw3ICs0Niw3IEBAIEZ1
bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkK
ICAgICAgICAgICAgIG1faGFzQWN0aXZlQWxsb3dsaXN0ID0gdHJ1ZTsKICAgICAgICAgICAgIG1f
ZW50cmllcy5hZGQoZmlsZW5hbWUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzLiBEaWQgeW91IGFkZCB0aGUgZmlsZS1yZWFkLWRh
dGEgZW50aXRsZW1lbnQgdG8gV2ViUHJvY2Vzcy5zYj8gRXJyb3IgY29kZTogJXNcbiIsIGZpbGVu
YW1lLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBv
cGVuIGZpbGUgJXMuIERpZCB5b3UgYWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0
byBXZWJQcm9jZXNzLnNiPyBFcnJvciBjb2RlOiAlc1xuIiwgZmlsZW5hbWUsIHNhZmVTdHJlcnJv
cihlcnJubykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03Myw3ICs3NCw3IEBAIEZ1
bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkK
IAogICAgIGludCByZXN1bHQgPSBmY2xvc2UoZik7CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAg
ZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVy
cm9yKGVycm5vKSk7CisgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczog
JXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKIH0KIAogYm9vbCBGdW5jdGlv
bkFsbG93bGlzdDo6Y29udGFpbnMoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCBj
ZTk0ZTJiZGNiMTgwZjMzMjI5ZDRkY2I2ZThhMWE4ZTU5YWM3ZmM5Li45ZmJhY2E5ZGMwZjczNjVi
OWRhNWJmYjA4MGJlMzUxMzY0ZjY4OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTI4Myw3ICsyODQsNyBAQCB2b2lk
IEZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJzZU92ZXJyaWRlc0luRmlsZShjb25zdCBjaGFyKiBmaWxl
TmFtZSkKICAgICAKICAgICBpbnQgcmVzdWx0ID0gZmNsb3NlKGZpbGUpOwogICAgIGlmIChyZXN1
bHQpCi0gICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZp
bGVOYW1lLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIGNs
b3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlTmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiB9CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeS5jcHAKaW5kZXggNTMyOTViOGEwMmRmNDM0NGY0ZGRhOWE4N2I3OGVjNTViN2U4Y2I5OC4u
NzdjZjc0ZTA4ODI3YThjODQ1ZmFjODU4NjlkMzZhZmY3ZGJlMmVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRl
IDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zMDEsNyArMzAy
LDcgQEAgTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKCkKICAgICAgICAgc3dpdGNoIChtX21v
ZGUpIHsKICAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6CiAgICAgICAgICAgICBp
ZiAobXByb3RlY3QobWVtb3J5LCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQg
fCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxl
ZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJt
cHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KTsKQEAgLTMxMyw3
ICszMTQsNyBAQCBNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiB7CiAg
ICAgICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJP
VF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXBy
b3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJc
biIpOwogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUdy
b3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWVtb3J5LCBtX21hcHBlZENhcGFjaXR5KTsKQEAg
LTQwNiw3ICs0MDcsNyBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291
bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYQogICAgIAogICAgIGlmIChm
YXN0TWVtb3J5KSB7CiAgICAgICAgIGlmIChtcHJvdGVjdChmYXN0TWVtb3J5ICsgaW5pdGlhbEJ5
dGVzLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpIC0gaW5pdGlhbEJ5dGVzLCBQUk9UX05PTkUp
KSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVy
cm5vKSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNh
ZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQogCkBAIC00NDIsNyArNDQzLDcgQEAgUmVmUHRyPE1lbW9y
eT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVt
LCBNZW1vcnlTaGEKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5
ICsgaW5pdGlhbEJ5dGVzLCBtYXhpbXVtQnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkp
IHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2Fm
ZVN0cmVycm9yKGVycm5vKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTUxNiw3ICs1MTcsNyBAQCBFeHBlY3RlZDxQYWdl
Q291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291
bnQgZGVsdGEpCiAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNz
ZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQrd3JpdGUgaW4g
cmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFy
dEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0
QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAg
ICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0cmVycm9yKGVy
cm5vKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICB9CiAKQEAgLTYwNSw3ICs2MDYsNyBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9y
eTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAg
IAogICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWFya2luZyBXZWJBc3NlbWJseSBtZW1v
cnkncyAiLCBSYXdQb2ludGVyKG1lbW9yeSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwg
UmF3UG9pbnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyAr
IGV4dHJhQnl0ZXMpLCAiKSIpOwogICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBl
eHRyYUJ5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgZGF0YUxv
ZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAg
ICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pLCAiXG4i
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjMxOWZiMzEz
YmUwNjMxOGNiNzNiOGQ5ZjRkNGNiYTJjZmEwMjdlYi4uYzVmNTA0ODVjZDY4YjkwMmIwZjRkYWVi
MzVmYjY0MmYyNzA2ZmIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zOTcsNiArMzk3LDggQEAKIAkJNDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENh
bmNlbGxhYmxlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW5jZWxsYWJsZVRhc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJDIC8qIENvbXBs
ZXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBsZXRp
b25IYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVCNkU5MjJGRkRE
RDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkU0MzY0NjI3MUYxMEFBMDBD
ODhDOTAgLyogU2FmZVN0cmVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVTdHJlcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkU0MzY0NzI3MUYxMEFBMDBDODhDOTAgLyog
U2FmZVN0cmVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhZmVTdHJlcnJvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwREUzNUYzMjE1QkIwMTUwMEI5NzlDNyAvKiBF
eHRlcm5hbFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTBERTM1RjQyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlcm5hbFN0cmluZ0ltcGwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzRTE3MEExQ0Q3RDVCRjAwRTM2NTBCIC8qIExvZ2dpbmdB
Y2N1bXVsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2dnaW5nQWNj
dW11bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzcsNiArMTI3OSw4
IEBACiAJCQkJRTMxQ0YwQTUyNjEwNTg1ODAwMzZFNjczIC8qIFJvYmluSG9vZEhhc2hUYWJsZS5o
ICovLAogCQkJCTJDREVEMEYxMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCAqLywKIAkJ
CQkyQ0RFRDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovLAorCQkJCTQ2RTQzNjQ3
MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovLAorCQkJCTQ2RTQzNjQ2Mjcx
RjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuaCAqLywKIAkJCQkxNEYzQjBGNjE1RTQ1RTQ2
MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oICovLAogCQkJCTE0Njk0MTk0MTZFQUFG
RjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAz
MTcyOUIgLyogU2NvcGUuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZjEwYzgxYTU3NTk5
YjBkMDZlMTM2MTMxOWQ0NjcwMzYzMTI0OGZhNS4uNGUzOGFhYTkzMGQ0MTA3MjdlZDM3NDliMmM3
NDEyMjM4ZDZhY2FiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTIzMCw2ICsyMzAsNyBAQCBz
ZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgUm9iaW5Ib29kSGFzaFRhYmxlLmgKICAgICBSdW5M
b29wLmgKICAgICBTSEExLmgKKyAgICBTYWZlU3RyZXJyb3IuaAogICAgIFNhdHVyYXRlZEFyaXRo
bWV0aWMuaAogICAgIFNjaGVkdWxlUGFpci5oCiAgICAgU2NvcGUuaApAQCAtNDU5LDYgKzQ2MCw3
IEBAIHNldChXVEZfU09VUkNFUwogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBS
dW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCisgICAgU2FmZVN0cmVycm9yLmNwcAogICAgIFNlY29u
ZHMuY3BwCiAgICAgU2VnbWVudGVkVmVjdG9yLmNwcAogICAgIFNpeENoYXJhY3Rlckhhc2guY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuY3BwIGIvU291cmNlL1dU
Ri93dGYvU2FmZVN0cmVycm9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTFmNWY0OWY3ZDMwNTg3NjU4OTNl
ZmM2ZjM5YzA3MWNlNzJlZTFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU2Fm
ZVN0cmVycm9yLmNwcApAQCAtMCwwICsxLDc4IEBACisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBSZWQgSGF0IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4x
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v
cmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3Rm
L1NhZmVTdHJlcnJvci5oPgorCisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDx0eXBlX3Ry
YWl0cz4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4K
KyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFVTRShHTElCKQorI2lu
Y2x1ZGUgPGdsaWIuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworY29uc3QgY2hhciog
c2FmZVN0cmVycm9yKGludCBlcnJudW0pCit7CisjaWYgVVNFKEdMSUIpCisgICAgLy8gTWlnaHQg
YXMgd2VsbCByZXVzZSBHTGliJ3MgZXhpc3RpbmcgbWFwIG9mIGVycm9yIG1lc3NhZ2VzIGluc3Rl
YWQgb2Yga2VlcGluZyBhIHNlY29uZCBvbmUuCisgICAgcmV0dXJuIGdfc3RyZXJyb3IoZXJybnVt
KTsKKyNlbHNlCisgICAgLy8gVGhpcyBpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBHTGli
J3MgZ19zdHJlcnJvciAoZnJvbSBnc3RyZnVuY3MuYywgTEdQTHYyLjErKS4KKyAgICBzdGF0aWMg
TG9jayBsb2NrOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPGludCwgQ1N0cmlu
Zz4+IGVycm9yc01hcCBXVEZfR1VBUkRFRF9CWV9MT0NLKGxvY2spOworCisgICAgTG9ja2VyIGxv
Y2tlciB7IGxvY2sgfTsKKyAgICBhdXRvIHJlc3VsdCA9IGVycm9yc01hcC0+Z2V0KGVycm51bSk7
CisgICAgaWYgKCFyZXN1bHQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiByZXN1bHQuZGF0YSgp
OworCisgICAgY2hhciBidWZmZXJbMjA0OF07CisgICAgY2hhciogbWVzc2FnZSA9IG51bGxwdHI7
CisjaWYgT1MoV0lORE9XUykKKyAgICBzdHJlcnJvcl9zKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciks
IGVycm51bSk7CisgICAgbWVzc2FnZSA9IGJ1ZmZlcjsKKyNlbHNlCisgICAgLy8gR05VIHN0cmVy
cm9yX3IgYW5kIFBPU0lYIHN0cmVycm9yX3IgYXJlIGluY29tcGF0aWJsZSwgYW5kIG15IGF0dGVt
cHRzIHRvIHVzZSBmZWF0dXJlIHRlc3QKKyAgICAvLyBtYWNyb3MgdG8gZm9yY2UgdXNlIG9mIFBP
U0lYIHN0cmVycm9yX3IgYWxsIGZhaWxlZCBkdWUgdG8gYnVncyBpbiB0aGUgbGlic3RkYysrIGhl
YWRlcnMuCisgICAgYXV0byByZXQgPSBzdHJlcnJvcl9yKGVycm51bSwgYnVmZmVyLCBzaXplb2Yo
YnVmZmVyKSk7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUocmV0KSwg
Y2hhcio+Ojp2YWx1ZSkgeworICAgICAgICAvLyBHTlUgc3RyZXJyb3JfcgorICAgICAgICBtZXNz
YWdlID0gcmV0OworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFBPU0lYIHN0cmVycm9yX3IKKyAg
ICAgICAgQVNTRVJUKHJldCk7CisgICAgICAgIG1lc3NhZ2UgPSBidWZmZXI7CisgICAgfQorI2Vu
ZGlmIC8vIE9TKFdJTkRPV1MpCisKKyAgICBlcnJvcnNNYXAtPmFkZChlcnJudW0sIG1lc3NhZ2Up
OworCisgICAgLy8gRW5zdXJlIHdlIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG1lc3NhZ2Ugd2Ug
b3duIGluIGVycm9yc01hcCwgd2hvc2UgbGlmZXRpbWUgd2UgZ3VhcmFudGVlLgorICAgIHJlc3Vs
dCA9IGVycm9yc01hcC0+Z2V0KGVycm51bSk7CisgICAgQVNTRVJUKCFyZXN1bHQuaXNOdWxsKCkp
OworICAgIHJldHVybiByZXN1bHQuZGF0YSgpOworI2VuZGlmIC8vIFVTRShHTElCKQorfQorCit9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NhZmVTdHJlcnJv
ci5oIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk2NjY0NTg4
NDAyNWJkYzNlMDViNmY3NThlMmE3OTNjYzllNjBiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1NhZmVTdHJlcnJvci5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIAorICogQ29weXJp
Z2h0IChDKSAyMDIxIFJlZCBIYXQgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCBzZWUgPGh0dHA6
Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhpcyBpcyBz
dHJlcnJvciwgZXhjZXB0IGl0IGlzIHRocmVhZHNhZmUuIFRoZSBwcm9ibGVtIHdpdGggbm9ybWFs
IHN0cmVycm9yIGlzIGl0IHJldHVybnMgYQorLy8gcG9pbnRlciB0byBzdGF0aWMgc3RvcmFnZSwg
YW5kIGl0IG1heSBhY3R1YWxseSBtb2RpZnkgdGhhdCBzdG9yYWdlLCBzbyBpdCBjYW4gbmV2ZXIg
YmUgdXNlZCBpbgorLy8gYW55IG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb24sIG9yIGFueSBsaWJy
YXJ5IHRoYXQgbWF5IGJlIGxpbmtlZCB0byBhIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb24uCisv
LyAoV2h5IGRvZXMgaXQgbW9kaWZ5IGl0cyBzdG9yYWdlPyBTbyB0aGF0IGl0IGNhbiBhcHBlbmQg
dGhlIGVycm9yIG51bWJlciB0byB0aGUgZXJyb3Igc3RyaW5nLCBhcworLy8gaW4gIlVua25vd24g
ZXJyb3Igbi4iKSBUaGUgc3RhbmRhcmQgYWx0ZXJuYXRpdmVzIGFyZSBzdHJlcnJvcl9zIGFuZCBz
dHJlcnJvcl9yLCBidXQgYm90aCBoYXZlCisvLyBwcm9ibGVtcy4gc3RyZXJyb3JfcyBpcyBzcGVj
aWZpZWQgYnkgQzExLCBidXQgbm90IGJ5IEMrKyAoYXMgb2YgQysrMjApLCBhbmQgaXQgaXMgb3B0
aW9uYWwgc28KKy8vIGdsaWJjIGRlY2lkZWQgdG8gaWdub3JlIGl0LiBXZSBjYW4gb25seSByZWx5
IG9uIGl0IHRvIGV4aXN0IG9uIFdpbmRvd3MuIFRoZW4gc3RyZXJyb3JfciBpcyBldmVuCisvLyB3
b3JzZS4gRmlyc3QsIGl0IGRvZXNuJ3QgZXhpc3QgYXQgYWxsIG9uIFdpbmRvd3MuIFNlY29uZCwg
dGhlIEdOVSB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoCisvLyB0aGUgUE9TSVggdmVyc2lv
biwgYW5kIGl0IGlzIGltcG9zc2libGUgdG8gdXNlIGNvcnJlY3RseSB1bmxlc3MgeW91IGtub3cg
d2hpY2ggdmVyc2lvbiB5b3UgaGF2ZS4KKy8vIEJvdGggc3RyZXJyb3JfcyBhbmQgc3RyZXJyb3Jf
ciBhcmUgY3VtYmVyc29tZSBiZWNhdXNlIHRoZXkgZm9yY2UgeW91IHRvIGFsbG9jYXRlIHRoZSBi
dWZmZXIgZm9yCisvLyB0aGUgcmVzdWx0IG1hbnVhbGx5LiBJdCdzIGFsbCBzdWNoIGEgbWVzcyB0
aGF0IHdlIHNob3VsZCBkZWFsIHdpdGggdGhlIGNvbXBsZXhpdHkgaGVyZSByYXRoZXIKKy8vIHRo
YW4gZWxzZXdoZXJlIGluIFdlYktpdC4KK1dURl9FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBz
YWZlU3RyZXJyb3IoaW50IGVycm51bSk7CisKK30KKwordXNpbmcgV1RGOjpzYWZlU3RyZXJyb3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0
YXRpb24uY3BwIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0
aW9uLmNwcAppbmRleCBjZGE1ZTVlMTYzMjUyNDFhMWU3Yjk3MTczMDdjZmFlYjZiZDhjMzRjLi42
MGQxMmM2OTMxMzBlNDUzNmMwNmI2ZmIzMzkxYzcyNTZhYzc0MTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgogI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpA
QCAtODgsNyArODksNyBAQCBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
IC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBw
YXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVy
bWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCiAgICAgYm9vbCB1bmxpbmtlZCA9ICF1bmxp
bmsoZnNSZXAuZGF0YSgpKTsKICAgICBpZiAoIXVubGlua2VkICYmIGVycm5vICE9IEVOT0VOVCkK
LSAgICAgICAgTE9HX0VSUk9SKCJGaWxlIGZhaWxlZCB0byBkZWxldGUuIEVycm9yIG1lc3NhZ2U6
ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGaWxlIGZhaWxlZCB0
byBkZWxldGUuIEVycm9yIG1lc3NhZ2U6ICVzIiwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiAKICAg
ICByZXR1cm4gdW5saW5rZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9G
aWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcAppbmRleCA3OTU2NzBmZDZkODAyNzhkZjZjMTcwYjIxNjJjNDhiNTJlOWNiYmVmLi5jM2Jl
Y2Q2ZDhkNzRkMGE2MWE4YzFhYjQwNzM0YTEyYTVhNGQ2NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjYxLDcgKzI2Miw3IEBAIGJvb2wgZGVsZXRlRmlsZShj
b25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nl
c3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNl
IChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKICAg
ICBib29sIHVubGlua2VkID0gIXVubGluayhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpKTsKICAgICBpZiAoIXVubGlua2VkICYmIGVycm5vICE9IEVOT0VOVCkKLSAgICAgICAg
TE9HX0VSUk9SKCJGaWxlIGZhaWxlZCB0byBkZWxldGUuIEVycm9yIG1lc3NhZ2U6ICVzIiwgc3Ry
ZXJyb3IoZXJybm8pKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGaWxlIGZhaWxlZCB0byBkZWxldGUu
IEVycm9yIG1lc3NhZ2U6ICVzIiwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiAKICAgICByZXR1cm4g
dW5saW5rZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMu
Y3BwIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAppbmRleCA2NGI0Y2QxMjdm
MzNhZTk2Yjc1MWRlNzY0NTRiZWM0NTE0MzAwOWJlLi5hMzdjNDVhNzNiNzkwYjgxZWVkMzQ3ZTkz
YWMyOGNlMGFhYmEwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25h
bHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKQEAgLTUzLDYg
KzUzLDcgQEAgZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3Rl
cnMuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZEdyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZD
b25maWcuaD4KQEAgLTM4NCw3ICszODUsNyBAQCB2b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNp
Zywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1Y29udGV4dCkKICAgICAgICAgc2lnZmlsbHNldCgm
ZGVmYXVsdEFjdGlvbi5zYV9tYXNrKTsKICAgICAgICAgZGVmYXVsdEFjdGlvbi5zYV9mbGFncyA9
IDA7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2lnYWN0aW9uKHNpZywgJmRlZmF1bHRBY3Rpb24s
IG51bGxwdHIpOwotICAgICAgICBkYXRhTG9nTG5JZihyZXN1bHQgPT0gLTEsICJVbmFibGUgdG8g
cmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5kbGVyIHdoaWxlIHByb2NjZXNzaW5nIHNpZ25hbCAiLCBz
aWcsICIgdGhlIHByb2Nlc3MgaXMgcHJvYmFibHkgZGVhZGxvY2tlZC4gKGVycm5vOiAiLCBzdHJl
cnJvcihlcnJubyksICIpIik7CisgICAgICAgIGRhdGFMb2dMbklmKHJlc3VsdCA9PSAtMSwgIlVu
YWJsZSB0byByZXN0b3JlIHRoZSBkZWZhdWx0IGhhbmRsZXIgd2hpbGUgcHJvY2Nlc3Npbmcgc2ln
bmFsICIsIHNpZywgIiB0aGUgcHJvY2VzcyBpcyBwcm9iYWJseSBkZWFkbG9ja2VkLiAoZXJybm86
ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICIpIik7CiAgICAgfTsKIAogICAgIC8vIFRoaXMgc2hv
dWxkbid0IGhhcHBlbiBidXQgd2UgbWlnaHQgYXMgd2VsbCBiZSBjYXJlZnVsLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCA0
OTExMTMyMTkzMjFjZGNjNGYyNGNiYzM5ZWI3YTY1MTk0YzgxNzYxLi4yMzIwZmQ2NjVhNTNhOTRl
YTBmNDMzZjZhNTQ5ZThiZDRiNTM1YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8cG9sbC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAKQEAgLTM1Miw3ICszNTMs
NyBAQCB2b2lkIENvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIoKQogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAobV9pc0Nvbm5lY3RlZCkgewotICAgICAgICAgICAgICAgIFdURkxv
Z0Fsd2F5cygiRXJyb3IgcmVjZWl2aW5nIElQQyBtZXNzYWdlIG9uIHNvY2tldCAlZCBpbiBwcm9j
ZXNzICVkOiAlcyIsIG1fc29ja2V0RGVzY3JpcHRvciwgZ2V0cGlkKCksIHN0cmVycm9yKGVycm5v
KSk7CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciByZWNlaXZpbmcgSVBDIG1l
c3NhZ2Ugb24gc29ja2V0ICVkIGluIHByb2Nlc3MgJWQ6ICVzIiwgbV9zb2NrZXREZXNjcmlwdG9y
LCBnZXRwaWQoKSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICAgICAgY29ubmVj
dGlvbkRpZENsb3NlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKaW5kZXgg
OTk4YTJhNzY3OTMwNWE0MzVmYTM1Y2MxYWVlYjcwOGYzNDY3NTU1Yi4uMjQyZTFkNDFhMDYyYjdm
Nzg5NmFiOGZjNjYwNjRmNTA2YzAyMDZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
PHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Jh
bmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3
dGYvVW5pU3RkRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTY1LDcgKzE2Niw3IEBAIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCiB7CiAgICAgaW50
IGZpbGVEZXNjcmlwdG9yID0gY3JlYXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKGZpbGVEZXNj
cmlwdG9yID09IC0xKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNyZWF0ZSBz
aGFyZWQgbWVtb3J5OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5
cygiRmFpbGVkIHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5OiAlcyIsIHNhZmVTdHJlcnJvcihlcnJu
bykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggZGQ1MGZiOWVhMzc3NGQ1
Yjk0NDQ2MTEwMWQ1YWQ5YmEwN2U1ZTkxMC4uODM3ZTYwN2JkZjY1MzhmZTgyNDgzNTczMmI4Y2Nl
YWQ2ZGZmNzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFy
eVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CiAj
aW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgor
I2ltcG9ydCA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBA
IC0yNTEsNyArMjUyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gc2V0QW5kU2Vy
aWFsaXplU2FuZGJveFBhcmFtZXRlcnMoY29uc3QgU2FuZGJveEluaXQKICAgICAgICAgY29uc3Qg
Y2hhciogbmFtZSA9IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5uYW1lKGkpOwogICAgICAgICBj
b25zdCBjaGFyKiB2YWx1ZSA9IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy52YWx1ZShpKTsKICAg
ICAgICAgaWYgKHNhbmRib3hfc2V0X3BhcmFtKHNhbmRib3hQYXJhbWV0ZXJzLmdldCgpLCBuYW1l
LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBzZXQg
c2FuZGJveCBwYXJhbWV0ZXI6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykp
OworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IHNldCBzYW5kYm94IHBh
cmFtZXRlcjogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykpOwogICAg
ICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLmFwcGVuZChuYW1l
LCAnOicsIHZhbHVlLCAnOicpOwpAQCAtMjcxLDEzICsyNzIsMTMgQEAgc3RhdGljIFN0cmluZyBz
YW5kYm94RGF0YVZhdWx0UGFyZW50RGlyZWN0b3J5KCkKICAgICBjaGFyIHRlbXBbUEFUSF9NQVhd
OwogICAgIHNpemVfdCBsZW5ndGggPSBjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9DQUNIRV9ESVIs
IHRlbXAsIHNpemVvZih0ZW1wKSk7CiAgICAgaWYgKCFsZW5ndGgpIHsKLSAgICAgICAgV1RGTG9n
QWx3YXlzKCIlczogQ291bGQgbm90IHJldHJpZXZlIHVzZXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSBw
YXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCIlczogQ291bGQgbm90IHJldHJpZXZlIHVzZXIgdGVtcG9yYXJ5IGRpcmVjdG9y
eSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiAgICAg
ICAgIGV4aXQoRVhfTk9QRVJNKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9
IHNpemVvZih0ZW1wKSk7CiAgICAgY2hhciByZXNvbHZlZFBhdGhbUEFUSF9NQVhdOwogICAgIGlm
ICghcmVhbHBhdGgodGVtcCwgcmVzb2x2ZWRQYXRoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMo
IiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXplIHVzZXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRo
OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCIlczogQ291bGQgbm90IGNhbm9uaWNhbGl6ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3Rv
cnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykpOwogICAg
ICAgICBleGl0KEVYX05PUEVSTSk7CiAgICAgfQogICAgIHJldHVybiByZXNvbHZlZFBhdGg7CkBA
IC0zNzMsNyArMzc0LDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlU2FuZGJveENhY2hlRGlyZWN0b3J5
KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogICAgICAgICBpZiAoIW1ha2VEYXRhVmF1bHQoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2UgewotICAgICAgICBXVEZMb2dB
bHdheXMoIiVzOiBTYW5kYm94IGRpcmVjdG9yeSBjb3VsZG4ndCBiZSBjcmVhdGVkOiAiLCBnZXRw
cm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBT
YW5kYm94IGRpcmVjdG9yeSBjb3VsZG4ndCBiZSBjcmVhdGVkOiAiLCBnZXRwcm9nbmFtZSgpLCBz
YWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICNlbHNl
CkBAIC01MjEsNyArNTIyLDcgQEAgc3RhdGljIGJvb2wgdHJ5QXBwbHlDYWNoZWRTYW5kYm94KGNv
bnN0IFNhbmRib3hJbmZvJiBpbmZvKQogICAgIHNldE5vdGlmeU9wdGlvbnMoKTsKIAogICAgIGlm
IChzYW5kYm94X2FwcGx5KCZwcm9maWxlKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBD
b3VsZCBub3QgYXBwbHkgY2FjaGVkIHNhbmRib3g6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJl
cnJvcihlcnJubykpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgYXBwbHkg
Y2FjaGVkIHNhbmRib3g6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8p
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNjIzLDcgKzYyNCw3IEBAIHN0
YXRpYyBib29sIGFwcGx5U2FuZGJveChjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0CiAgICAgc2V0Tm90aWZ5T3B0aW9ucygpOwogICAgIAogICAg
IGlmIChzYW5kYm94X2FwcGx5KHNhbmRib3hQcm9maWxlLmdldCgpKSkgewotICAgICAgICBXVEZM
b2dBbHdheXMoIiVzOiBDb3VsZCBub3QgYXBwbHkgY29tcGlsZWQgc2FuZGJveDogJXNcbiIsIGdl
dHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6
IENvdWxkIG5vdCBhcHBseSBjb21waWxlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwg
c2FmZVN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYyBi
L1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdlX21hbGxvYy5jCmluZGV4
IGYxNTE1YWY5OTBlOTJhNzE1OGYzOWI0Y2E5NTU4MDI5NTEzMjgwZDYuLmRjODlmNjljZGRlMzMx
NjRlNTIwMzExNzkwNWI4MDg1YTk5MWZhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc19wYWdlX21hbGxvYy5jCisrKyBiL1NvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc19wYWdlX21hbGxvYy5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvbW1hbi5o
PgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiBzaXplX3Qg
cGFzX3BhZ2VfbWFsbG9jX251bV9hbGxvY2F0ZWRfYnl0ZXM7CkBAIC0xNzYsNyArMTc3LDExIEBA
IHZvaWQgcGFzX3BhZ2VfbWFsbG9jX2NvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCBzaXplKQogICAg
IGlmIChwYXNfcGFnZV9tYWxsb2NfbXByb3RlY3RfZGVjb21taXR0ZWQpIHsKICAgICAgICAgcmVz
dWx0ID0gbXByb3RlY3QoKHZvaWQqKWJhc2VfYXNfaW50LCBlbmRfYXNfaW50IC0gYmFzZV9hc19p
bnQsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwogICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAg
ICAgICAgICBwYXNfbG9nKCJDb3VsZCBub3QgbXByb3RlY3Qgb24gY29tbWl0OiAlc1xuIiwgc3Ry
ZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIwNDhdOworICAgICAgICAg
ICAgYXV0byByZXQgPSBzdHJlcnJvcl9yKGVycm5vLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsK
KyAgICAgICAgICAgIC8vIElmIHlvdSBoaXQgdGhpcyB3aGVuIHBvcnRpbmcgUEFTIHRvIExpbnV4
LCB0aGVuIHNlZSBXVEYncyBTYWZlU3RyZXJyb3IuY3BwLgorICAgICAgICAgICAgc3RhdGljX2Fz
c2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUocmV0KSwgaW50Pjo6dmFsdWUsICJUaGlzIGNvZGUg
ZXhwZWN0cyBQT1NJWCBzdHJlcnJvcl9yLCBub3QgR05VIHN0cmVycm9yX3IiKTsKKyAgICAgICAg
ICAgIHBhc19sb2coIkNvdWxkIG5vdCBtcHJvdGVjdCBvbiBjb21taXQ6ICVzXG4iLCBidWZmZXIp
OwogICAgICAgICAgICAgUEFTX0FTU0VSVCghcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1YWYwZDA5
MTJlODE4ODczMzM1M2U3OGJmMTgzNTAxMDQwM2ZiN2M3Li5hYjA4ZGQ4MDg2ZWNkMThlYTc0Zjk4
NGE0NzkyMDQzYWExNjg5M2UyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56
YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJv
cigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5
MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU2FmZVN0cmVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKwogMjAyMS0xMC0xOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODQ0MTMuCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZWUzYWU3MjQxNTkyNmRlZjAyNzdhYTQzZTVkNTg0YmYz
MjhmZjRhLi5mZGRkNmFjMGUwODU0Y2U1OTg0MjEzNWY0ZmU4YzhjZGQ0YWY0NWUyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTgyLDYgKzgyLDcgQEAgc2V0KFRlc3RXVEZfU09V
UkNFUwogICAgIFRlc3RzL1dURi9Sb2Jpbkhvb2RIYXNoU2V0LmNwcAogICAgIFRlc3RzL1dURi9S
dW5Mb29wLmNwcAogICAgIFRlc3RzL1dURi9TSEExLmNwcAorICAgIFRlc3RzL1dURi9TYWZlU3Ry
ZXJyb3IuY3BwCiAgICAgVGVzdHMvV1RGL1NhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNw
cAogICAgIFRlc3RzL1dURi9TY29wZS5jcHAKICAgICBUZXN0cy9XVEYvU2NvcGVkTGFtYmRhLmNw
cApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2FmZVN0cmVycm9y
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWY3ZTFiNjA1ZTE0ZTkyYjY1MjAxYmFjNzdhYWY3Y2VhMTYxMWEyOQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5j
cHAKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CisKKyNpbmNsdWRl
IDxjc3RyaW5nPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV1RGX1NhZmVT
dHJlcnJvciwgU3RyaW5nc0FyZUVxdWFsKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTAw
MDsgaSsrKSB7CisgICAgICAgIC8vIEFjdHVhbCB0ZXh0IG9mIGVycm9ycyBzaG91bGQgYmUgaWRl
bnRpY2FsLgorICAgICAgICBFWFBFQ1RfU1RSRVEoc3RyZXJyb3IoaSksIHNhZmVTdHJlcnJvcihp
KSk7CisgICAgfQorfQorCitURVNUKFdURl9TYWZlU3RyZXJyb3IsIFBvaW50ZXJzQXJlTm90RXF1
YWwpCit7CisgICAgLy8gU2luY2Ugc3RyZXJyb3IoKSBnZW5lcmFsbHkgcmV0dXJucyBwb2ludGVy
cyB0aGF0IGFyZSBub3Qgc2FmZSB0byB1c2UgaW4gbXVsdGl0aHJlYWRlZAorICAgIC8vIHByb2dy
YW1zLCBpdCB3b3VsZCBiZSBuaWNlIHRvIHNob3cgdGhhdCBzYWZlU3RyZXJyb3IoKSByZXR1cm5z
IGRpZmZlcmVudCBwb2ludGVycy4KKyAgICAvLyBBY2NvcmRpbmdseSwgSSB3YXMgdGVtcHRlZCB0
byBsb29wIG92ZXIgYSBidW5jaCBvZiBkaWZmZXJlbnQgZXJyb3IgY29kZXMgaGVyZSBhbmQgdmVy
aWZ5IHRoYXQKKyAgICAvLyB0aGUgcG9pbnRlcnMgcmV0dXJuZWQgYnkgdGhlIHR3byBmdW5jdGlv
bnMgYXJlIG5vdCB0aGUgc2FtZS4KKyAgICAvLworICAgIC8vIEJ1dCBpZiB3ZSBhcmUgdXNpbmcg
R0xpYiwgdGhlbiBzYWZlU3RyZXJyb3IoKSB3aWxsIHJldHVybiBhIHJlc3VsdCBwcm92aWRlZCBi
eSBnX3N0cmVycm9yKCksCisgICAgLy8gd2hpY2ggaW4gdHVybiByZXR1cm5zIGEgcmVzdWx0IHBy
b3ZpZGVkIGJ5IHN0cmVycm9yX3IoKSAoaWYgYXZhaWxhYmxlKS4gVGhlIGdsaWJjIChHTlUpCisg
ICAgLy8gdmVyc2lvbiBvZiBzdHJlcnJvcl9yKCkgaXMgd2VpcmQgaW4gdGhhdCBpdCB3aWxsIHVz
dWFsbHkgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgc2FtZSBzdGF0aWMKKyAgICAvLyBtZW1vcnkg
dGhhdCBzdHJlcnJvcigpIHJldHVybnMsIGJ1dCAtLSBjcnVjaWFsbHkgLS0gaXQgd2lsbCBvbmx5
IGRvIHNvIHdoZW4gaXQgaXMgZ3VhcmFudGVlZAorICAgIC8vIHRoYXQgZ2xpYmMgd2lsbCBuZXZl
ciBtb2RpZnkgdGhhdCBwb2ludGVyLiBTbyB3aGVuIHVzaW5nIEdMaWIgYW5kIGdsaWJjLCBpdCdz
IGFjdHVhbGx5IE9LIGZvcgorICAgIC8vIHRoZXNlIGZ1bmN0aW9ucyB0byByZXR1cm4gbWF0Y2hp
bmcgcG9pbnRlciB2YWx1ZXMuIEhvd2V2ZXIsIGlmIHdlIHBhc3MgYW4gaW52YWxpZCBlcnJvciBj
b2RlLAorICAgIC8vIHRoZW4gZ2xpYmMgd2lsbCBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZyBp
biBvcmRlciB0byBhZGQgdGhlIGludmFsaWQgZXJyb3IgY29kZSBkaXJlY3RseQorICAgIC8vIGlu
dG8gdGhlIHN0cmluZy4gSW4gdGhpcyBjYXNlLCBzdHJlcnJvcl9yKCkgd2lsbCBtYWtlIGEgY29w
eSByYXRoZXIgdGhhbiByZXR1cm4gdGhlIHNhbWUKKyAgICAvLyBzdGF0aWMgc3RyaW5nIHRoYXQg
d291bGQgYmUgcmV0dXJuZWQgYnkgZXJybm8uCisgICAgLy8KKyAgICAvLyBJdCdzIHF1ZXN0aW9u
YWJsZSB3aGV0aGVyIHRoaXMgdGVzdCBpcyB0cnVseSB2YWx1YWJsZSwgc2luY2UgaXQgcmVsaWVz
IG9uIHNvIG1hbnkKKyAgICAvLyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBidXQgaXQncyBuaWNl
IHRvIHNob3cgdGhhdCBzYWZlU3RyZXJyb3IoKSBpcyBkb2luZyAqc29tZXRoaW5nKgorICAgIC8v
IGRpZmZlcmVudGx5IHRoYW4gbm9ybWFsIHN0cmVycm9yKCksIGV2ZW4gaWYgd2UgaGF2ZSB0byBy
ZWx5IG9uIHRoaXMgZWRnZSBjYXNlIHRvIGRvIHNvLgorICAgIEVYUEVDVF9ORShzdHJlcnJvcig0
MjQyNDIpLCBzYWZlU3RyZXJyb3IoNDI0MjQyKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkK
</data>
<flag name="commit-queue"
          id="466068"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441724</attachid>
            <date>2021-10-19 07:48:06 -0700</date>
            <delta_ts>2021-10-19 08:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211019074805.patch</filename>
            <type>text/plain</type>
            <size>37747</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2JjZmNmNzgyODZjY2JhNTI5ZDI3MjI4YzI2MzI4NTJkMGQ3MDg1Li4zN2I3YmIwZTY0NjBkZTU5
ZmFkYzI5ZGI4MDYwZDBjNmU3ZGVmYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE4ICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5jb20+CiAKICAgICAgICAgc2hh
ZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2ZWQ1MjRmODc5YTFjMzMxZDgwNjdiMTcx
MWY5MzMzYjNhYzNmODBiLi5lZjIzZmU0Y2I4Y2QyYjc5YmRhMjQyZWY0N2Y5YzdlMTlhNWJiMjIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNh
ZmVTdHJlcnJvciBmdW5jdGlvbiB0aGF0IHdlIGNhbiB1c2Ugd2l0aG91dCB0aHJlYWRzYWZldHkg
d29ycmllcy4KKworICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYv
U2FmZVN0cmVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnNhZmVTdHJlcnJvcik6Cisg
ICAgICAgICogd3RmL1NhZmVTdHJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvcGxheXN0
YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OmRlbGV0ZUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAg
ICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OmpzY1NpZ25hbEhhbmRs
ZXIpOgorCiAyMDIxLTEwLTE5ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgRW5zdXJlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3SW1hZ2Uodmlk
ZW8pIHVzZXMgdGhlIHJpZ2h0IGNvbG9yIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjN2EzYmQzYTg4ZTFl
OGRjOGEwZDRmNjZkMGJiNDFlNDk3MmRlZDYuLmEzNzFhYjBjYTI5NTc5NjlhYzJlMzJmYTRjMzFh
OTg5MmVlNzBjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTAtMTkgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVz
ZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vdW5p
eC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0Ojp0
cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2ViS2l0OjphcHBseVNhbmRib3gpOgor
CiAyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgog
CiAgICAgICAgIFVwZGF0ZSBzZWNjb21wIGZpbHRlcnMgd2l0aCBsYXRlc3QgY2hhbmdlcyBmcm9t
IGZsYXRwYWsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZwppbmRleCAxYzY1MmQxOWNlNmM0MDBiMWJmOWEyNDRhZTAwODU1MWQ5
NjBhNzc1Li4zMWVkN2ExOTcxMDcwNTY2NzVmMjBiNDFhZmU2YzA0NDQzZmRlNzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxpYnBhcy9zcmMv
bGlicGFzL3Bhc19wYWdlX21hbGxvYy5jOgorICAgICAgICAocGFzX3BhZ2VfbWFsbG9jX2NvbW1p
dCk6CisKIDIwMjEtMTAtMTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg0MzA1LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHQubW0KaW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0
MWE4YjA5NjE5NC4uMmUzOWNjYWZhMDVjYmMzYzk0YTgzNGZkYTNiNGZjMTgxYWNiNDZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1w
b3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9TSEExLmg+CisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2Nv
cGUuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3
aW4vRGF0YVZhdWx0U1BJLmg+CkBAIC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgY29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0
aFN0cmluZyBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAg
IGludCBmZCA9IG9wZW4oY2FjaGVGaWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExP
Q0sgfCBPX05PTkJMT0NLLCAwNjAwKTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJy
b3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNo
ZSBmaWxlLiBJdCdzIGxpa2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2lu
ZyBpdC4gRXJyb3I6ICIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0
cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQn
cyBsaWtlbHkgYW5vdGhlciBWTSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9y
OiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIApA
QCAtMzE0LDcgKzMxNSw3IEBAIC0gKEJPT0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogCiAg
ICAgaW50IHRlbXBGRCA9IG9wZW4odGVtcEZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSIHwgT19F
WExPQ0sgfCBPX05PTkJMT0NLLCAwNjAwKTsKICAgICBpZiAodGVtcEZEID09IC0xKSB7Ci0gICAg
ICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNv
ZGUgY2FjaGUgdGVtcCBmaWxlLiBFcnJvcjogIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
ZXJyb3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBj
YWNoZSB0ZW1wIGZpbGUuIEVycm9yOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAg
cmV0dXJuIE5POwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCmluZGV4IGYyZWM0MmJhODg4YWY3NDlhNjA0Yzc4MDdmZTNmNTUxMzk0NjU0ZWMuLjMy
ZTQ5NTk0YjRlNTY1NGI3Mjg4MzdhMTZjZDc1M2U3NzgxMGM2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQg
IkpTV3JhcHBlck1hcFRlc3RzLmgiCiAjaW1wb3J0ICJSZWdyZXNzMTQxMjc1LmgiCiAjaW1wb3J0
ICJSZWdyZXNzMTQxODA5LmgiCisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9EYXRhVmF1bHRTUEkuaD4KIAogCkBAIC0yNDQ4LDcgKzI0NDksNyBA
QCBzdGF0aWMgTlNVUkwgKnJlc29sdmVQYXRoVG9TY3JpcHRzKCkKICAgICAgICAgY29uc3Qgc2l6
ZV90IG1heExlbmd0aCA9IDEwMDAwOwogICAgICAgICBjaGFyIGN3ZFttYXhMZW5ndGhdOwogICAg
ICAgICBpZiAoIWdldGN3ZChjd2QsIG1heExlbmd0aCkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAi
Z2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
ICAgICBOU0xvZyhAImdldGN3ZCBlcnJvcmVkIHdpdGggY29kZTogJXMiLCBzYWZlU3RyZXJyb3Io
ZXJybm8pKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAgTlNVUkwg
KmN3ZFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlcyIsIGN3ZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0ZjRlMjVjM2QyY2EzOWQ0
YWNlMTY1MzZiOGMyZjdlNDlhNDJjNGQ2Li44OGFjZGM3NjI3ZDdlMGUxZDM3Nzk4OWExODcxODVm
ZWM2MDQ5NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVT
dHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4MTksNyArMTgyMCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk9wZW5GaWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBGSUxFKiBkZXNjcmlwdG9yID0gZm9wZW4o
ZmlsZVBhdGguZmlsZVN5c3RlbVBhdGgoKS5hc2NpaSgpLmRhdGEoKSwgInIiKTsKICAgICBpZiAo
IWRlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQg
bm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhhZCBlcnJv
cjogIl9zLCBzdHJlcnJvcihlcnJubykpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFr
ZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAi
IGZvcGVuIGhhZCBlcnJvcjogIl9zLCBzYWZlU3RyZXJyb3IoZXJybm8pKSkpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNGaWxlRGVzY3JpcHRvcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoZGVzY3JpcHRvcikpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNw
cAppbmRleCA3NmYxMDJmOTAxMDY1OTJhMDcyMjU5OTI1MTc4NGQwMjY3YjZhODZiLi5mZjA0MTJi
MTk3MzgzNjNhM2M5NWE4NTBkYmM1ZWQwNGQzNjJlZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKQEAgLTI2LDYgKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCeXRlY29kZUNhY2hlRXJyb3Iu
aCIKIAorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAK
IGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QK
QEAgLTM1LDcgKzM3LDcgQEAgYm9vbCBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6
OmlzVmFsaWQoKSBjb25zdAogCiBTdHJpbmcgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVy
cm9yOjptZXNzYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RyZXJyb3IobV9lcnJubyk7Cisg
ICAgcmV0dXJuIHNhZmVTdHJlcnJvcihtX2Vycm5vKTsKIH0KIAogYm9vbCBCeXRlY29kZUNhY2hl
RXJyb3I6OldyaXRlRXJyb3I6OmlzVmFsaWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKaW5kZXggMDA3YjI1M2U2NDlmMWE1
ZmEyNmVlNzI2YjAwNDA4MzZkOTUzYjg5MC4uOGQxOTZlNWI2MTk1ZmQzNTFmNzBjYzM0M2M0YzY0
OWZkOTc4NmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0
aW9uQWxsb3dsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rp
b25BbGxvd2xpc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
U2FmZVN0cmVycm9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NSw3ICs0Niw3IEBAIEZ1
bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkK
ICAgICAgICAgICAgIG1faGFzQWN0aXZlQWxsb3dsaXN0ID0gdHJ1ZTsKICAgICAgICAgICAgIG1f
ZW50cmllcy5hZGQoZmlsZW5hbWUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzLiBEaWQgeW91IGFkZCB0aGUgZmlsZS1yZWFkLWRh
dGEgZW50aXRsZW1lbnQgdG8gV2ViUHJvY2Vzcy5zYj8gRXJyb3IgY29kZTogJXNcbiIsIGZpbGVu
YW1lLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBv
cGVuIGZpbGUgJXMuIERpZCB5b3UgYWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0
byBXZWJQcm9jZXNzLnNiPyBFcnJvciBjb2RlOiAlc1xuIiwgZmlsZW5hbWUsIHNhZmVTdHJlcnJv
cihlcnJubykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03Myw3ICs3NCw3IEBAIEZ1
bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkK
IAogICAgIGludCByZXN1bHQgPSBmY2xvc2UoZik7CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAg
ZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVy
cm9yKGVycm5vKSk7CisgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczog
JXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKIH0KIAogYm9vbCBGdW5jdGlv
bkFsbG93bGlzdDo6Y29udGFpbnMoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCBj
ZTk0ZTJiZGNiMTgwZjMzMjI5ZDRkY2I2ZThhMWE4ZTU5YWM3ZmM5Li45ZmJhY2E5ZGMwZjczNjVi
OWRhNWJmYjA4MGJlMzUxMzY0ZjY4OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTI4Myw3ICsyODQsNyBAQCB2b2lk
IEZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJzZU92ZXJyaWRlc0luRmlsZShjb25zdCBjaGFyKiBmaWxl
TmFtZSkKICAgICAKICAgICBpbnQgcmVzdWx0ID0gZmNsb3NlKGZpbGUpOwogICAgIGlmIChyZXN1
bHQpCi0gICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZp
bGVOYW1lLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIGNs
b3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlTmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiB9CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeS5jcHAKaW5kZXggNTMyOTViOGEwMmRmNDM0NGY0ZGRhOWE4N2I3OGVjNTViN2U4Y2I5OC4u
NzdjZjc0ZTA4ODI3YThjODQ1ZmFjODU4NjlkMzZhZmY3ZGJlMmVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRl
IDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zMDEsNyArMzAy
LDcgQEAgTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKCkKICAgICAgICAgc3dpdGNoIChtX21v
ZGUpIHsKICAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6CiAgICAgICAgICAgICBp
ZiAobXByb3RlY3QobWVtb3J5LCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQg
fCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxl
ZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJt
cHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KTsKQEAgLTMxMyw3
ICszMTQsNyBAQCBNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiB7CiAg
ICAgICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJP
VF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXBy
b3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJc
biIpOwogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUdy
b3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWVtb3J5LCBtX21hcHBlZENhcGFjaXR5KTsKQEAg
LTQwNiw3ICs0MDcsNyBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291
bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYQogICAgIAogICAgIGlmIChm
YXN0TWVtb3J5KSB7CiAgICAgICAgIGlmIChtcHJvdGVjdChmYXN0TWVtb3J5ICsgaW5pdGlhbEJ5
dGVzLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpIC0gaW5pdGlhbEJ5dGVzLCBQUk9UX05PTkUp
KSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVy
cm5vKSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNh
ZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQogCkBAIC00NDIsNyArNDQzLDcgQEAgUmVmUHRyPE1lbW9y
eT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVt
LCBNZW1vcnlTaGEKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5
ICsgaW5pdGlhbEJ5dGVzLCBtYXhpbXVtQnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkp
IHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2Fm
ZVN0cmVycm9yKGVycm5vKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTUxNiw3ICs1MTcsNyBAQCBFeHBlY3RlZDxQYWdl
Q291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291
bnQgZGVsdGEpCiAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNz
ZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQrd3JpdGUgaW4g
cmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFy
dEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0
QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAg
ICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0cmVycm9yKGVy
cm5vKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICB9CiAKQEAgLTYwNSw3ICs2MDYsNyBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9y
eTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAg
IAogICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWFya2luZyBXZWJBc3NlbWJseSBtZW1v
cnkncyAiLCBSYXdQb2ludGVyKG1lbW9yeSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwg
UmF3UG9pbnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyAr
IGV4dHJhQnl0ZXMpLCAiKSIpOwogICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBl
eHRyYUJ5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgZGF0YUxv
ZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAg
ICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pLCAiXG4i
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjMxOWZiMzEz
YmUwNjMxOGNiNzNiOGQ5ZjRkNGNiYTJjZmEwMjdlYi4uM2VjMDM5MWY3YzczN2EzYWYxNjI0NzM2
YmI4NTEyYTUyZDdiMWU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC03Myw2ICs3Myw3IEBACiAJCTMzN0IyRDZBMjY1NDZFQjMwMERERkQzRCAvKiBMaWtl
bHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMzdCMkQ2ODI2NTQ2RUFBMDBEREZEM0QgLyogTGlrZWx5RGVu
c2VVbnNpZ25lZEludGVnZXJTZXQuY3BwICovOyB9OwogCQk0NDI3QzVBQTIxRjZENkMzMDBBNjEy
QTQgLyogQVNDSUlDVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NDI3QzVBOTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgKi87
IH07CiAJCTQ2QkVCNkVCMjJGRkUyNDkwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkU5MjJGRkRERDUw
MDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLzsgfTsKKwkJNDZFOTMwNDkyNzFGMTIwNTAwNUJB
NkU1IC8qIFNhZmVTdHJlcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkU0MzY0NzI3MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmNw
cCAqLzsgfTsKIAkJNTBERTM1RjUyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1w
bC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MERF
MzVGMzIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJ
NTE1Rjc5NEUxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTRCMUNGQzlGNEEw
MENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgKi87IH07CiAJCTUxN0Y4MkQ3MUZEMjJG
MzAwMERBM0RFQSAvKiBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0Y4MkQ1MUZEMjJGMkYwMERBM0RFQSAv
KiBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCAqLzsgfTsKQEAgLTM5Nyw2ICszOTgsOCBAQAog
CQk0NjIwOUEyNzI2NkQ1NDNBMDA3RjhGNEEgLyogQ2FuY2VsbGFibGVUYXNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhbmNlbGxhYmxlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkJBOUVBQjFGNENENjFFMDA5QTJCQkMgLyogQ29tcGxldGlvbkhhbmRsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmQ291bnRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2RTQzNjQ2MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2FmZVN0cmVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2RTQzNjQ3MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2FmZVN0cmVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTBERTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlcm5hbFN0cmluZ0ltcGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGNDIxNUJCMDE1MDBCOTc5Qzcg
LyogRXh0ZXJuYWxTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4dGVybmFsU3RyaW5nSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTNF
MTcwQTFDRDdENUJGMDBFMzY1MEIgLyogTG9nZ2luZ0FjY3VtdWxhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dpbmdBY2N1bXVsYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTI3Nyw2ICsxMjgwLDggQEAKIAkJCQlFMzFDRjBBNTI2MTA1ODU4
MDAzNkU2NzMgLyogUm9iaW5Ib29kSGFzaFRhYmxlLmggKi8sCiAJCQkJMkNERUQwRjExODExNUM4
NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovLAogCQkJCTJDREVEMEYyMTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmggKi8sCisJCQkJNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVT
dHJlcnJvci5jcHAgKi8sCisJCQkJNDZFNDM2NDYyNzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVTdHJl
cnJvci5oICovLAogCQkJCTE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0
aG1ldGljLmggKi8sCiAJCQkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFp
ci5oICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICovLApAQCAt
MTgyMSw2ICsxODI2LDcgQEAKIAkJCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9v
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAgLyogUnVu
TG9vcENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQTg1Q0E5MjQxQjBCMjYwMDcxQzJGNSAv
KiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
NkU5MzA0OTI3MUYxMjA1MDA1QkE2RTUgLyogU2FmZVN0cmVycm9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUEzRUU1QzNEMjFGRkFDN0QwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWly
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEUxREM5N0JBQjAwNEExRDNGIC8qIFNl
Y29uZHMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGYxMGM4MWE1
NzU5OWIwZDA2ZTEzNjEzMTlkNDY3MDM2MzEyNDhmYTUuLjRlMzhhYWE5MzBkNDEwNzI3ZWQzNzQ5
YjJjNzQxMjIzOGQ2YWNhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMzAsNiArMjMwLDcg
QEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFJvYmluSG9vZEhhc2hUYWJsZS5oCiAgICAg
UnVuTG9vcC5oCiAgICAgU0hBMS5oCisgICAgU2FmZVN0cmVycm9yLmgKICAgICBTYXR1cmF0ZWRB
cml0aG1ldGljLmgKICAgICBTY2hlZHVsZVBhaXIuaAogICAgIFNjb3BlLmgKQEAgLTQ1OSw2ICs0
NjAsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCiAg
ICAgUnVuTG9vcC5jcHAKICAgICBTSEExLmNwcAorICAgIFNhZmVTdHJlcnJvci5jcHAKICAgICBT
ZWNvbmRzLmNwcAogICAgIFNlZ21lbnRlZFZlY3Rvci5jcHAKICAgICBTaXhDaGFyYWN0ZXJIYXNo
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1NhZmVTdHJlcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTUxZjVmNDlmN2QzMDU4NzY1
ODkzZWZjNmYzOWMwNzFjZTcyZWUxZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1NhZmVTdHJlcnJvci5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyogCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n
bnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
PHd0Zi9TYWZlU3RyZXJyb3IuaD4KKworI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8dHlw
ZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9ja2Vy
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0UoR0xJQikK
KyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK2NvbnN0IGNo
YXIqIHNhZmVTdHJlcnJvcihpbnQgZXJybnVtKQoreworI2lmIFVTRShHTElCKQorICAgIC8vIE1p
Z2h0IGFzIHdlbGwgcmV1c2UgR0xpYidzIGV4aXN0aW5nIG1hcCBvZiBlcnJvciBtZXNzYWdlcyBp
bnN0ZWFkIG9mIGtlZXBpbmcgYSBzZWNvbmQgb25lLgorICAgIHJldHVybiBnX3N0cmVycm9yKGVy
cm51bSk7CisjZWxzZQorICAgIC8vIFRoaXMgaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24g
R0xpYidzIGdfc3RyZXJyb3IgKGZyb20gZ3N0cmZ1bmNzLmMsIExHUEx2Mi4xKykuCisgICAgc3Rh
dGljIExvY2sgbG9jazsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxpbnQsIENT
dHJpbmc+PiBlcnJvcnNNYXAgV1RGX0dVQVJERURfQllfTE9DSyhsb2NrKTsKKworICAgIExvY2tl
ciBsb2NrZXIgeyBsb2NrIH07CisgICAgYXV0byByZXN1bHQgPSBlcnJvcnNNYXAtPmdldChlcnJu
dW0pOworICAgIGlmICghcmVzdWx0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LmRh
dGEoKTsKKworICAgIGNoYXIgYnVmZmVyWzIwNDhdOworICAgIGNoYXIqIG1lc3NhZ2UgPSBudWxs
cHRyOworI2lmIE9TKFdJTkRPV1MpCisgICAgc3RyZXJyb3JfcyhidWZmZXIsIHNpemVvZihidWZm
ZXIpLCBlcnJudW0pOworICAgIG1lc3NhZ2UgPSBidWZmZXI7CisjZWxzZQorICAgIC8vIEdOVSBz
dHJlcnJvcl9yIGFuZCBQT1NJWCBzdHJlcnJvcl9yIGFyZSBpbmNvbXBhdGlibGUsIGFuZCBteSBh
dHRlbXB0cyB0byB1c2UgZmVhdHVyZSB0ZXN0CisgICAgLy8gbWFjcm9zIHRvIGZvcmNlIHVzZSBv
ZiBQT1NJWCBzdHJlcnJvcl9yIGFsbCBmYWlsZWQgZHVlIHRvIGJ1Z3MgaW4gdGhlIGxpYnN0ZGMr
KyBoZWFkZXJzLgorICAgIGF1dG8gcmV0ID0gc3RyZXJyb3JfcihlcnJudW0sIGJ1ZmZlciwgc2l6
ZW9mKGJ1ZmZlcikpOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPGRlY2x0eXBlKHJl
dCksIGNoYXIqPjo6dmFsdWUpIHsKKyAgICAgICAgLy8gR05VIHN0cmVycm9yX3IKKyAgICAgICAg
bWVzc2FnZSA9IHJldDsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBQT1NJWCBzdHJlcnJvcl9y
CisgICAgICAgIEFTU0VSVChyZXQpOworICAgICAgICBtZXNzYWdlID0gYnVmZmVyOworICAgIH0K
KyNlbmRpZiAvLyBPUyhXSU5ET1dTKQorCisgICAgZXJyb3JzTWFwLT5hZGQoZXJybnVtLCBtZXNz
YWdlKTsKKworICAgIC8vIEVuc3VyZSB3ZSByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBtZXNzYWdl
IHdlIG93biBpbiBlcnJvcnNNYXAsIHdob3NlIGxpZmV0aW1lIHdlIGd1YXJhbnRlZS4KKyAgICBy
ZXN1bHQgPSBlcnJvcnNNYXAtPmdldChlcnJudW0pOworICAgIEFTU0VSVCghcmVzdWx0LmlzTnVs
bCgpKTsKKyAgICByZXR1cm4gcmVzdWx0LmRhdGEoKTsKKyNlbmRpZiAvLyBVU0UoR0xJQikKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3Ry
ZXJyb3IuaCBiL1NvdXJjZS9XVEYvd3RmL1NhZmVTdHJlcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NjY2
NDU4ODQwMjViZGMzZTA1YjZmNzU4ZTJhNzkzY2M5ZTYwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuaApAQCAtMCwwICsxLDQwIEBACisvKiAKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgc2VlIDxo
dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIFRoaXMg
aXMgc3RyZXJyb3IsIGV4Y2VwdCBpdCBpcyB0aHJlYWRzYWZlLiBUaGUgcHJvYmxlbSB3aXRoIG5v
cm1hbCBzdHJlcnJvciBpcyBpdCByZXR1cm5zIGEKKy8vIHBvaW50ZXIgdG8gc3RhdGljIHN0b3Jh
Z2UsIGFuZCBpdCBtYXkgYWN0dWFsbHkgbW9kaWZ5IHRoYXQgc3RvcmFnZSwgc28gaXQgY2FuIG5l
dmVyIGJlIHVzZWQgaW4KKy8vIGFueSBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9uLCBvciBhbnkg
bGlicmFyeSB0aGF0IG1heSBiZSBsaW5rZWQgdG8gYSBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9u
LgorLy8gKFdoeSBkb2VzIGl0IG1vZGlmeSBpdHMgc3RvcmFnZT8gU28gdGhhdCBpdCBjYW4gYXBw
ZW5kIHRoZSBlcnJvciBudW1iZXIgdG8gdGhlIGVycm9yIHN0cmluZywgYXMKKy8vIGluICJVbmtu
b3duIGVycm9yIG4uIikgVGhlIHN0YW5kYXJkIGFsdGVybmF0aXZlcyBhcmUgc3RyZXJyb3JfcyBh
bmQgc3RyZXJyb3JfciwgYnV0IGJvdGggaGF2ZQorLy8gcHJvYmxlbXMuIHN0cmVycm9yX3MgaXMg
c3BlY2lmaWVkIGJ5IEMxMSwgYnV0IG5vdCBieSBDKysgKGFzIG9mIEMrKzIwKSwgYW5kIGl0IGlz
IG9wdGlvbmFsIHNvCisvLyBnbGliYyBkZWNpZGVkIHRvIGlnbm9yZSBpdC4gV2UgY2FuIG9ubHkg
cmVseSBvbiBpdCB0byBleGlzdCBvbiBXaW5kb3dzLiBUaGVuIHN0cmVycm9yX3IgaXMgZXZlbgor
Ly8gd29yc2UuIEZpcnN0LCBpdCBkb2Vzbid0IGV4aXN0IGF0IGFsbCBvbiBXaW5kb3dzLiBTZWNv
bmQsIHRoZSBHTlUgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aAorLy8gdGhlIFBPU0lYIHZl
cnNpb24sIGFuZCBpdCBpcyBpbXBvc3NpYmxlIHRvIHVzZSBjb3JyZWN0bHkgdW5sZXNzIHlvdSBr
bm93IHdoaWNoIHZlcnNpb24geW91IGhhdmUuCisvLyBCb3RoIHN0cmVycm9yX3MgYW5kIHN0cmVy
cm9yX3IgYXJlIGN1bWJlcnNvbWUgYmVjYXVzZSB0aGV5IGZvcmNlIHlvdSB0byBhbGxvY2F0ZSB0
aGUgYnVmZmVyIGZvcgorLy8gdGhlIHJlc3VsdCBtYW51YWxseS4gSXQncyBhbGwgc3VjaCBhIG1l
c3MgdGhhdCB3ZSBzaG91bGQgZGVhbCB3aXRoIHRoZSBjb21wbGV4aXR5IGhlcmUgcmF0aGVyCisv
LyB0aGFuIGVsc2V3aGVyZSBpbiBXZWJLaXQuCitXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hh
ciogc2FmZVN0cmVycm9yKGludCBlcnJudW0pOworCit9CisKK3VzaW5nIFdURjo6c2FmZVN0cmVy
cm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBs
YXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5
U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2MzI1MjQxYTFlN2I5NzE3MzA3Y2ZhZWI2YmQ4YzM0
Yy4uNjBkMTJjNjkzMTMwZTQ1MzZjMDZiNmZiMzM5MWM3MjU2YWM3NDE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KICNpbmNsdWRlIDxzeXMv
dHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV1RG
IHsKQEAgLTg4LDcgKzg5LDcgQEAgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0
aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlk
IHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQogICAgIGJvb2wgdW5saW5rZWQgPSAh
dW5saW5rKGZzUmVwLmRhdGEoKSk7CiAgICAgaWYgKCF1bmxpbmtlZCAmJiBlcnJubyAhPSBFTk9F
TlQpCi0gICAgICAgIExPR19FUlJPUigiRmlsZSBmYWlsZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNz
YWdlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIExPR19FUlJPUigiRmlsZSBmYWls
ZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHNhZmVTdHJlcnJvcihlcnJubykpOwog
CiAgICAgcmV0dXJuIHVubGlua2VkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1Q
T1NJWC5jcHAKaW5kZXggNzk1NjcwZmQ2ZDgwMjc4ZGY2YzE3MGIyMTYyYzQ4YjUyZTljYmJlZi4u
YzNiZWNkNmQ4ZDc0ZDBhNjFhOGMxYWI0MDczNGExMmE1YTRkNjQ2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8
c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFp
dHMuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTI2MSw3ICsyNjIsNyBAQCBib29sIGRlbGV0ZUZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBz
dWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBwYXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIg
Y2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVybWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUp
CiAgICAgYm9vbCB1bmxpbmtlZCA9ICF1bmxpbmsoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpLmRhdGEoKSk7CiAgICAgaWYgKCF1bmxpbmtlZCAmJiBlcnJubyAhPSBFTk9FTlQpCi0gICAg
ICAgIExPR19FUlJPUigiRmlsZSBmYWlsZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIs
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIExPR19FUlJPUigiRmlsZSBmYWlsZWQgdG8gZGVs
ZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHNhZmVTdHJlcnJvcihlcnJubykpOwogCiAgICAgcmV0
dXJuIHVubGlua2VkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKaW5kZXggNjRiNGNk
MTI3ZjMzYWU5NmI3NTFkZTc2NDU0YmVjNDUxNDMwMDliZS4uYTM3YzQ1YTczYjc5MGI4MWVlZDM0
N2U5M2FjMjhjZTBhYWJhMGM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC01
Myw2ICs1Myw3IEBAIGV4dGVybiAiQyIgewogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtUmVn
aXN0ZXJzLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRHcm91cC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYv
V1RGQ29uZmlnLmg+CkBAIC0zODQsNyArMzg1LDcgQEAgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGlu
dCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgICAgIHNpZ2ZpbGxz
ZXQoJmRlZmF1bHRBY3Rpb24uc2FfbWFzayk7CiAgICAgICAgIGRlZmF1bHRBY3Rpb24uc2FfZmxh
Z3MgPSAwOwogICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2FjdGlvbihzaWcsICZkZWZhdWx0QWN0
aW9uLCBudWxscHRyKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYocmVzdWx0ID09IC0xLCAiVW5hYmxl
IHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgaGFuZGxlciB3aGlsZSBwcm9jY2Vzc2luZyBzaWduYWwg
Iiwgc2lnLCAiIHRoZSBwcm9jZXNzIGlzIHByb2JhYmx5IGRlYWRsb2NrZWQuIChlcnJubzogIiwg
c3RyZXJyb3IoZXJybm8pLCAiKSIpOworICAgICAgICBkYXRhTG9nTG5JZihyZXN1bHQgPT0gLTEs
ICJVbmFibGUgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5kbGVyIHdoaWxlIHByb2NjZXNzaW5n
IHNpZ25hbCAiLCBzaWcsICIgdGhlIHByb2Nlc3MgaXMgcHJvYmFibHkgZGVhZGxvY2tlZC4gKGVy
cm5vOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pLCAiKSIpOwogICAgIH07CiAKICAgICAvLyBUaGlz
IHNob3VsZG4ndCBoYXBwZW4gYnV0IHdlIG1pZ2h0IGFzIHdlbGwgYmUgY2FyZWZ1bC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3Bw
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5k
ZXggNDkxMTEzMjE5MzIxY2RjYzRmMjRjYmMzOWViN2E2NTE5NGM4MTc2MS4uMjMyMGZkNjY1YTUz
YTk0ZWEwZjQzM2Y2YTU0OWU4YmQ0YjUzNWM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHBvbGwuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogCkBAIC0zNTIsNyAr
MzUzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyKCkKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKG1faXNDb25uZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkVycm9yIHJlY2VpdmluZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQgaW4g
cHJvY2VzcyAlZDogJXMiLCBtX3NvY2tldERlc2NyaXB0b3IsIGdldHBpZCgpLCBzdHJlcnJvcihl
cnJubykpOworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgcmVjZWl2aW5nIElQ
QyBtZXNzYWdlIG9uIHNvY2tldCAlZCBpbiBwcm9jZXNzICVkOiAlcyIsIG1fc29ja2V0RGVzY3Jp
cHRvciwgZ2V0cGlkKCksIHNhZmVTdHJlcnJvcihlcnJubykpOwogICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb25EaWRDbG9zZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXgu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCmlu
ZGV4IDk5OGEyYTc2NzkzMDVhNDM1ZmEzNWNjMWFlZWI3MDhmMzQ2NzU1NWIuLjI0MmUxZDQxYTA2
MmI3Zjc4OTZhYjhmYzY2MDY0ZjUwNmMwMjA2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNs
dWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9SYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVk
ZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE2NSw3ICsxNjYsNyBAQCBSZWZQdHI8
U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemVfdCBzaXplKQogewogICAg
IGludCBmaWxlRGVzY3JpcHRvciA9IGNyZWF0ZVNoYXJlZE1lbW9yeSgpOwogICAgIGlmIChmaWxl
RGVzY3JpcHRvciA9PSAtMSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVh
dGUgc2hhcmVkIG1lbW9yeTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBXVEZMb2dB
bHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2hhcmVkIG1lbW9yeTogJXMiLCBzYWZlU3RyZXJyb3Io
ZXJybm8pKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmluZGV4IGRkNTBmYjllYTM3
NzRkNWI5NDQ0NjExMDFkNWFkOWJhMDdlNWU5MTAuLjgzN2U2MDdiZGY2NTM4ZmU4MjQ4MzU3MzJi
OGNjZWFkNmRmZjc2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhp
bGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlh
cnlQcm9jZXNzTWFjLm1tCkBAIC01MSw2ICs1MSw3IEBACiAjaW1wb3J0IDx3dGYvRGF0YUxvZy5o
PgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIu
aD4KKyNpbXBvcnQgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgog
I2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5o
PgpAQCAtMjUxLDcgKzI1Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IHNldEFu
ZFNlcmlhbGl6ZVNhbmRib3hQYXJhbWV0ZXJzKGNvbnN0IFNhbmRib3hJbml0CiAgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWUgPSBpbml0aWFsaXphdGlvblBhcmFtZXRlcnMubmFtZShpKTsKICAgICAg
ICAgY29uc3QgY2hhciogdmFsdWUgPSBpbml0aWFsaXphdGlvblBhcmFtZXRlcnMudmFsdWUoaSk7
CiAgICAgICAgIGlmIChzYW5kYm94X3NldF9wYXJhbShzYW5kYm94UGFyYW1ldGVycy5nZXQoKSwg
bmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3Qg
c2V0IHNhbmRib3ggcGFyYW1ldGVyOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJy
bm8pKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBzZXQgc2FuZGJv
eCBwYXJhbWV0ZXI6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsK
ICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bmFtZSwgJzonLCB2YWx1ZSwgJzonKTsKQEAgLTI3MSwxMyArMjcyLDEzIEBAIHN0YXRpYyBTdHJp
bmcgc2FuZGJveERhdGFWYXVsdFBhcmVudERpcmVjdG9yeSgpCiAgICAgY2hhciB0ZW1wW1BBVEhf
TUFYXTsKICAgICBzaXplX3QgbGVuZ3RoID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVf
RElSLCB0ZW1wLCBzaXplb2YodGVtcCkpOwogICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3Rv
cnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykpOwog
ICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0
aCA8PSBzaXplb2YodGVtcCkpOwogICAgIGNoYXIgcmVzb2x2ZWRQYXRoW1BBVEhfTUFYXTsKICAg
ICBpZiAoIXJlYWxwYXRoKHRlbXAsIHJlc29sdmVkUGF0aCkpIHsKLSAgICAgICAgV1RGTG9nQWx3
YXlzKCIlczogQ291bGQgbm90IGNhbm9uaWNhbGl6ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3Rvcnkg
cGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUgdXNlciB0ZW1wb3JhcnkgZGly
ZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsK
ICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwogICAgIH0KICAgICByZXR1cm4gcmVzb2x2ZWRQYXRo
OwpAQCAtMzczLDcgKzM3NCw3IEBAIHN0YXRpYyBib29sIGVuc3VyZVNhbmRib3hDYWNoZURpcmVj
dG9yeShjb25zdCBTYW5kYm94SW5mbyYgaW5mbykKICAgICAgICAgaWYgKCFtYWtlRGF0YVZhdWx0
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV1RG
TG9nQWx3YXlzKCIlczogU2FuZGJveCBkaXJlY3RvcnkgY291bGRuJ3QgYmUgY3JlYXRlZDogIiwg
Z2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIl
czogU2FuZGJveCBkaXJlY3RvcnkgY291bGRuJ3QgYmUgY3JlYXRlZDogIiwgZ2V0cHJvZ25hbWUo
KSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAj
ZWxzZQpAQCAtNTIxLDcgKzUyMiw3IEBAIHN0YXRpYyBib29sIHRyeUFwcGx5Q2FjaGVkU2FuZGJv
eChjb25zdCBTYW5kYm94SW5mbyYgaW5mbykKICAgICBzZXROb3RpZnlPcHRpb25zKCk7CiAKICAg
ICBpZiAoc2FuZGJveF9hcHBseSgmcHJvZmlsZSkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIl
czogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwg
c3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFw
cGx5IGNhY2hlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVy
cm5vKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTYyMyw3ICs2MjQsNyBA
QCBzdGF0aWMgYm9vbCBhcHBseVNhbmRib3goY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxp
emF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldAogICAgIHNldE5vdGlmeU9wdGlvbnMoKTsKICAgICAK
ICAgICBpZiAoc2FuZGJveF9hcHBseShzYW5kYm94UHJvZmlsZS5nZXQoKSkpIHsKLSAgICAgICAg
V1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNvbXBpbGVkIHNhbmRib3g6ICVzXG4i
LCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBXVEZMb2dBbHdheXMo
IiVzOiBDb3VsZCBub3QgYXBwbHkgY29tcGlsZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2duYW1l
KCksIHNhZmVTdHJlcnJvcihlcnJubykpOwogICAgICAgICBDUkFTSCgpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3BhZ2VfbWFsbG9j
LmMgYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYwpp
bmRleCBmMTUxNWFmOTkwZTkyYTcxNThmMzliNGNhOTU1ODAyOTUxMzI4MGQ2Li5kYzg5ZjY5Y2Rk
ZTMzMTY0ZTUyMDMxMTc5MDViODA4NWE5OTFmYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYworKysgYi9Tb3VyY2UvYm1hbGxv
Yy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYwpAQCAtNDAsNiArNDAsNyBAQAog
I2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3lzL21t
YW4uaD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogc2l6
ZV90IHBhc19wYWdlX21hbGxvY19udW1fYWxsb2NhdGVkX2J5dGVzOwpAQCAtMTc2LDcgKzE3Nywx
MSBAQCB2b2lkIHBhc19wYWdlX21hbGxvY19jb21taXQodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkK
ICAgICBpZiAocGFzX3BhZ2VfbWFsbG9jX21wcm90ZWN0X2RlY29tbWl0dGVkKSB7CiAgICAgICAg
IHJlc3VsdCA9IG1wcm90ZWN0KCh2b2lkKiliYXNlX2FzX2ludCwgZW5kX2FzX2ludCAtIGJhc2Vf
YXNfaW50LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKICAgICAgICAgaWYgKHJlc3VsdCkgewot
ICAgICAgICAgICAgcGFzX2xvZygiQ291bGQgbm90IG1wcm90ZWN0IG9uIGNvbW1pdDogJXNcbiIs
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyMDQ4XTsKKyAgICAg
ICAgICAgIGF1dG8gcmV0ID0gc3RyZXJyb3JfcihlcnJubywgYnVmZmVyLCBzaXplb2YoYnVmZmVy
KSk7CisgICAgICAgICAgICAvLyBJZiB5b3UgaGl0IHRoaXMgd2hlbiBwb3J0aW5nIFBBUyB0byBM
aW51eCwgdGhlbiBzZWUgV1RGJ3MgU2FmZVN0cmVycm9yLmNwcC4KKyAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0eXBlKHJldCksIGludD46OnZhbHVlLCAiVGhpcyBj
b2RlIGV4cGVjdHMgUE9TSVggc3RyZXJyb3Jfciwgbm90IEdOVSBzdHJlcnJvcl9yIik7CisgICAg
ICAgICAgICBwYXNfbG9nKCJDb3VsZCBub3QgbXByb3RlY3Qgb24gY29tbWl0OiAlc1xuIiwgYnVm
ZmVyKTsKICAgICAgICAgICAgIFBBU19BU1NFUlQoIXJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWFm
MGQwOTEyZTgxODg3MzMzNTNlNzhiZjE4MzUwMTA0MDNmYjdjNy4uYWIwOGRkODA4NmVjZDE4ZWE3
NGY5ODRhNDc5MjA0M2FhMTY4OTNlMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTE5ICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3Ry
ZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisKIDIwMjEtMTAtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg0NDEzLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggZWVlM2FlNzI0MTU5MjZkZWYwMjc3YWE0M2U1ZDU4
NGJmMzI4ZmY0YS4uZmRkZDZhYzBlMDg1NGNlNTk4NDIxMzVmNGZlOGM4Y2RkNGFmNDVlMiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC04Miw2ICs4Miw3IEBAIHNldChUZXN0V1RG
X1NPVVJDRVMKICAgICBUZXN0cy9XVEYvUm9iaW5Ib29kSGFzaFNldC5jcHAKICAgICBUZXN0cy9X
VEYvUnVuTG9vcC5jcHAKICAgICBUZXN0cy9XVEYvU0hBMS5jcHAKKyAgICBUZXN0cy9XVEYvU2Fm
ZVN0cmVycm9yLmNwcAogICAgIFRlc3RzL1dURi9TYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9u
cy5jcHAKICAgICBUZXN0cy9XVEYvU2NvcGUuY3BwCiAgICAgVGVzdHMvV1RGL1Njb3BlZExhbWJk
YS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NhZmVTdHJl
cnJvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFmN2UxYjYwNWUxNGU5MmI2NTIwMWJhYzc3YWFmN2NlYTE2MTFhMjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TYWZlU3RyZXJy
b3IuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUmVkIEhh
dCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgorCisjaW5j
bHVkZSA8Y3N0cmluZz4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9T
YWZlU3RyZXJyb3IsIFN0cmluZ3NBcmVFcXVhbCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICAvLyBBY3R1YWwgdGV4dCBvZiBlcnJvcnMgc2hvdWxkIGJl
IGlkZW50aWNhbC4KKyAgICAgICAgRVhQRUNUX1NUUkVRKHN0cmVycm9yKGkpLCBzYWZlU3RyZXJy
b3IoaSkpOworICAgIH0KK30KKworVEVTVChXVEZfU2FmZVN0cmVycm9yLCBQb2ludGVyc0FyZU5v
dEVxdWFsKQoreworICAgIC8vIFNpbmNlIHN0cmVycm9yKCkgZ2VuZXJhbGx5IHJldHVybnMgcG9p
bnRlcnMgdGhhdCBhcmUgbm90IHNhZmUgdG8gdXNlIGluIG11bHRpdGhyZWFkZWQKKyAgICAvLyBw
cm9ncmFtcywgaXQgd291bGQgYmUgbmljZSB0byBzaG93IHRoYXQgc2FmZVN0cmVycm9yKCkgcmV0
dXJucyBkaWZmZXJlbnQgcG9pbnRlcnMuCisgICAgLy8gQWNjb3JkaW5nbHksIEkgd2FzIHRlbXB0
ZWQgdG8gbG9vcCBvdmVyIGEgYnVuY2ggb2YgZGlmZmVyZW50IGVycm9yIGNvZGVzIGhlcmUgYW5k
IHZlcmlmeSB0aGF0CisgICAgLy8gdGhlIHBvaW50ZXJzIHJldHVybmVkIGJ5IHRoZSB0d28gZnVu
Y3Rpb25zIGFyZSBub3QgdGhlIHNhbWUuCisgICAgLy8KKyAgICAvLyBCdXQgaWYgd2UgYXJlIHVz
aW5nIEdMaWIsIHRoZW4gc2FmZVN0cmVycm9yKCkgd2lsbCByZXR1cm4gYSByZXN1bHQgcHJvdmlk
ZWQgYnkgZ19zdHJlcnJvcigpLAorICAgIC8vIHdoaWNoIGluIHR1cm4gcmV0dXJucyBhIHJlc3Vs
dCBwcm92aWRlZCBieSBzdHJlcnJvcl9yKCkgKGlmIGF2YWlsYWJsZSkuIFRoZSBnbGliYyAoR05V
KQorICAgIC8vIHZlcnNpb24gb2Ygc3RyZXJyb3JfcigpIGlzIHdlaXJkIGluIHRoYXQgaXQgd2ls
bCB1c3VhbGx5IHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHNhbWUgc3RhdGljCisgICAgLy8gbWVt
b3J5IHRoYXQgc3RyZXJyb3IoKSByZXR1cm5zLCBidXQgLS0gY3J1Y2lhbGx5IC0tIGl0IHdpbGwg
b25seSBkbyBzbyB3aGVuIGl0IGlzIGd1YXJhbnRlZWQKKyAgICAvLyB0aGF0IGdsaWJjIHdpbGwg
bmV2ZXIgbW9kaWZ5IHRoYXQgcG9pbnRlci4gU28gd2hlbiB1c2luZyBHTGliIGFuZCBnbGliYywg
aXQncyBhY3R1YWxseSBPSyBmb3IKKyAgICAvLyB0aGVzZSBmdW5jdGlvbnMgdG8gcmV0dXJuIG1h
dGNoaW5nIHBvaW50ZXIgdmFsdWVzLiBIb3dldmVyLCBpZiB3ZSBwYXNzIGFuIGludmFsaWQgZXJy
b3IgY29kZSwKKyAgICAvLyB0aGVuIGdsaWJjIHdpbGwgbW9kaWZ5IHRoZSByZXR1cm5lZCBzdHJp
bmcgaW4gb3JkZXIgdG8gYWRkIHRoZSBpbnZhbGlkIGVycm9yIGNvZGUgZGlyZWN0bHkKKyAgICAv
LyBpbnRvIHRoZSBzdHJpbmcuIEluIHRoaXMgY2FzZSwgc3RyZXJyb3JfcigpIHdpbGwgbWFrZSBh
IGNvcHkgcmF0aGVyIHRoYW4gcmV0dXJuIHRoZSBzYW1lCisgICAgLy8gc3RhdGljIHN0cmluZyB0
aGF0IHdvdWxkIGJlIHJldHVybmVkIGJ5IGVycm5vLgorICAgIC8vCisgICAgLy8gSXQncyBxdWVz
dGlvbmFibGUgd2hldGhlciB0aGlzIHRlc3QgaXMgdHJ1bHkgdmFsdWFibGUsIHNpbmNlIGl0IHJl
bGllcyBvbiBzbyBtYW55CisgICAgLy8gaW1wbGVtZW50YXRpb24gZGV0YWlscywgYnV0IGl0J3Mg
bmljZSB0byBzaG93IHRoYXQgc2FmZVN0cmVycm9yKCkgaXMgZG9pbmcgKnNvbWV0aGluZyoKKyAg
ICAvLyBkaWZmZXJlbnRseSB0aGFuIG5vcm1hbCBzdHJlcnJvcigpLCBldmVuIGlmIHdlIGhhdmUg
dG8gcmVseSBvbiB0aGlzIGVkZ2UgY2FzZSB0byBkbyBzby4KKyAgICBFWFBFQ1RfTkUoc3RyZXJy
b3IoNDI0MjQyKSwgc2FmZVN0cmVycm9yKDQyNDI0MikpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>
<flag name="commit-queue"
          id="466072"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441725</attachid>
            <date>2021-10-19 07:59:38 -0700</date>
            <delta_ts>2021-10-19 08:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211019075937.patch</filename>
            <type>text/plain</type>
            <size>37948</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2JjZmNmNzgyODZjY2JhNTI5ZDI3MjI4YzI2MzI4NTJkMGQ3MDg1Li4zN2I3YmIwZTY0NjBkZTU5
ZmFkYzI5ZGI4MDYwZDBjNmU3ZGVmYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE4ICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5jb20+CiAKICAgICAgICAgc2hh
ZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2ZWQ1MjRmODc5YTFjMzMxZDgwNjdiMTcx
MWY5MzMzYjNhYzNmODBiLi5lZjIzZmU0Y2I4Y2QyYjc5YmRhMjQyZWY0N2Y5YzdlMTlhNWJiMjIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNh
ZmVTdHJlcnJvciBmdW5jdGlvbiB0aGF0IHdlIGNhbiB1c2Ugd2l0aG91dCB0aHJlYWRzYWZldHkg
d29ycmllcy4KKworICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYv
U2FmZVN0cmVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnNhZmVTdHJlcnJvcik6Cisg
ICAgICAgICogd3RmL1NhZmVTdHJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvcGxheXN0
YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OmRlbGV0ZUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAg
ICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OmpzY1NpZ25hbEhhbmRs
ZXIpOgorCiAyMDIxLTEwLTE5ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgRW5zdXJlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3SW1hZ2Uodmlk
ZW8pIHVzZXMgdGhlIHJpZ2h0IGNvbG9yIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjN2EzYmQzYTg4ZTFl
OGRjOGEwZDRmNjZkMGJiNDFlNDk3MmRlZDYuLmEzNzFhYjBjYTI5NTc5NjlhYzJlMzJmYTRjMzFh
OTg5MmVlNzBjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTAtMTkgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVz
ZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vdW5p
eC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0Ojp0
cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2ViS2l0OjphcHBseVNhbmRib3gpOgor
CiAyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgog
CiAgICAgICAgIFVwZGF0ZSBzZWNjb21wIGZpbHRlcnMgd2l0aCBsYXRlc3QgY2hhbmdlcyBmcm9t
IGZsYXRwYWsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZwppbmRleCAxYzY1MmQxOWNlNmM0MDBiMWJmOWEyNDRhZTAwODU1MWQ5
NjBhNzc1Li4zMWVkN2ExOTcxMDcwNTY2NzVmMjBiNDFhZmU2YzA0NDQzZmRlNzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxpYnBhcy9zcmMv
bGlicGFzL3Bhc19wYWdlX21hbGxvYy5jOgorICAgICAgICAocGFzX3BhZ2VfbWFsbG9jX2NvbW1p
dCk6CisKIDIwMjEtMTAtMTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg0MzA1LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHQubW0KaW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0
MWE4YjA5NjE5NC4uMmUzOWNjYWZhMDVjYmMzYzk0YTgzNGZkYTNiNGZjMTgxYWNiNDZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1w
b3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9TSEExLmg+CisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2Nv
cGUuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3
aW4vRGF0YVZhdWx0U1BJLmg+CkBAIC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgY29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0
aFN0cmluZyBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAg
IGludCBmZCA9IG9wZW4oY2FjaGVGaWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExP
Q0sgfCBPX05PTkJMT0NLLCAwNjAwKTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJy
b3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNo
ZSBmaWxlLiBJdCdzIGxpa2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2lu
ZyBpdC4gRXJyb3I6ICIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0
cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQn
cyBsaWtlbHkgYW5vdGhlciBWTSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9y
OiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIApA
QCAtMzE0LDcgKzMxNSw3IEBAIC0gKEJPT0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogCiAg
ICAgaW50IHRlbXBGRCA9IG9wZW4odGVtcEZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSIHwgT19F
WExPQ0sgfCBPX05PTkJMT0NLLCAwNjAwKTsKICAgICBpZiAodGVtcEZEID09IC0xKSB7Ci0gICAg
ICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNv
ZGUgY2FjaGUgdGVtcCBmaWxlLiBFcnJvcjogIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
ZXJyb3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBj
YWNoZSB0ZW1wIGZpbGUuIEVycm9yOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAg
cmV0dXJuIE5POwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCmluZGV4IGYyZWM0MmJhODg4YWY3NDlhNjA0Yzc4MDdmZTNmNTUxMzk0NjU0ZWMuLjMy
ZTQ5NTk0YjRlNTY1NGI3Mjg4MzdhMTZjZDc1M2U3NzgxMGM2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQg
IkpTV3JhcHBlck1hcFRlc3RzLmgiCiAjaW1wb3J0ICJSZWdyZXNzMTQxMjc1LmgiCiAjaW1wb3J0
ICJSZWdyZXNzMTQxODA5LmgiCisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9EYXRhVmF1bHRTUEkuaD4KIAogCkBAIC0yNDQ4LDcgKzI0NDksNyBA
QCBzdGF0aWMgTlNVUkwgKnJlc29sdmVQYXRoVG9TY3JpcHRzKCkKICAgICAgICAgY29uc3Qgc2l6
ZV90IG1heExlbmd0aCA9IDEwMDAwOwogICAgICAgICBjaGFyIGN3ZFttYXhMZW5ndGhdOwogICAg
ICAgICBpZiAoIWdldGN3ZChjd2QsIG1heExlbmd0aCkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAi
Z2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
ICAgICBOU0xvZyhAImdldGN3ZCBlcnJvcmVkIHdpdGggY29kZTogJXMiLCBzYWZlU3RyZXJyb3Io
ZXJybm8pKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAgTlNVUkwg
KmN3ZFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlcyIsIGN3ZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0ZjRlMjVjM2QyY2EzOWQ0
YWNlMTY1MzZiOGMyZjdlNDlhNDJjNGQ2Li44OGFjZGM3NjI3ZDdlMGUxZDM3Nzk4OWExODcxODVm
ZWM2MDQ5NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODgsNiArODgsNyBAQAogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVT
dHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQ
cmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4MTksNyArMTgyMCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk9wZW5GaWxlLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBGSUxFKiBkZXNjcmlwdG9yID0gZm9wZW4o
ZmlsZVBhdGguZmlsZVN5c3RlbVBhdGgoKS5hc2NpaSgpLmRhdGEoKSwgInIiKTsKICAgICBpZiAo
IWRlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQg
bm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhhZCBlcnJv
cjogIl9zLCBzdHJlcnJvcihlcnJubykpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0
aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFr
ZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAi
IGZvcGVuIGhhZCBlcnJvcjogIl9zLCBzYWZlU3RyZXJyb3IoZXJybm8pKSkpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNGaWxlRGVzY3JpcHRvcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoZGVzY3JpcHRvcikpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNw
cAppbmRleCA3NmYxMDJmOTAxMDY1OTJhMDcyMjU5OTI1MTc4NGQwMjY3YjZhODZiLi5mZjA0MTJi
MTk3MzgzNjNhM2M5NWE4NTBkYmM1ZWQwNGQzNjJlZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKQEAgLTI2LDYgKzI2
LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCeXRlY29kZUNhY2hlRXJyb3Iu
aCIKIAorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KKwogbmFtZXNwYWNlIEpTQyB7CiAK
IGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QK
QEAgLTM1LDcgKzM3LDcgQEAgYm9vbCBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6
OmlzVmFsaWQoKSBjb25zdAogCiBTdHJpbmcgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVy
cm9yOjptZXNzYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RyZXJyb3IobV9lcnJubyk7Cisg
ICAgcmV0dXJuIHNhZmVTdHJlcnJvcihtX2Vycm5vKTsKIH0KIAogYm9vbCBCeXRlY29kZUNhY2hl
RXJyb3I6OldyaXRlRXJyb3I6OmlzVmFsaWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKaW5kZXggMDA3YjI1M2U2NDlmMWE1
ZmEyNmVlNzI2YjAwNDA4MzZkOTUzYjg5MC4uOGQxOTZlNWI2MTk1ZmQzNTFmNzBjYzM0M2M0YzY0
OWZkOTc4NmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0
aW9uQWxsb3dsaXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rp
b25BbGxvd2xpc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
U2FmZVN0cmVycm9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NSw3ICs0Niw3IEBAIEZ1
bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkK
ICAgICAgICAgICAgIG1faGFzQWN0aXZlQWxsb3dsaXN0ID0gdHJ1ZTsKICAgICAgICAgICAgIG1f
ZW50cmllcy5hZGQoZmlsZW5hbWUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzLiBEaWQgeW91IGFkZCB0aGUgZmlsZS1yZWFkLWRh
dGEgZW50aXRsZW1lbnQgdG8gV2ViUHJvY2Vzcy5zYj8gRXJyb3IgY29kZTogJXNcbiIsIGZpbGVu
YW1lLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBv
cGVuIGZpbGUgJXMuIERpZCB5b3UgYWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0
byBXZWJQcm9jZXNzLnNiPyBFcnJvciBjb2RlOiAlc1xuIiwgZmlsZW5hbWUsIHNhZmVTdHJlcnJv
cihlcnJubykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03Myw3ICs3NCw3IEBAIEZ1
bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkK
IAogICAgIGludCByZXN1bHQgPSBmY2xvc2UoZik7CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAg
ZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVy
cm9yKGVycm5vKSk7CisgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczog
JXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKIH0KIAogYm9vbCBGdW5jdGlv
bkFsbG93bGlzdDo6Y29udGFpbnMoQ29kZUJsb2NrKiBjb2RlQmxvY2spIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCBj
ZTk0ZTJiZGNiMTgwZjMzMjI5ZDRkY2I2ZThhMWE4ZTU5YWM3ZmM5Li45ZmJhY2E5ZGMwZjczNjVi
OWRhNWJmYjA4MGJlMzUxMzY0ZjY4OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
IDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KQEAgLTI4Myw3ICsyODQsNyBAQCB2b2lk
IEZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJzZU92ZXJyaWRlc0luRmlsZShjb25zdCBjaGFyKiBmaWxl
TmFtZSkKICAgICAKICAgICBpbnQgcmVzdWx0ID0gZmNsb3NlKGZpbGUpOwogICAgIGlmIChyZXN1
bHQpCi0gICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZp
bGVOYW1lLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIGNs
b3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlTmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiB9CiAg
ICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeS5jcHAKaW5kZXggNTMyOTViOGEwMmRmNDM0NGY0ZGRhOWE4N2I3OGVjNTViN2U4Y2I5OC4u
NzdjZjc0ZTA4ODI3YThjODQ1ZmFjODU4NjlkMzZhZmY3ZGJlMmVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRl
IDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zMDEsNyArMzAy
LDcgQEAgTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKCkKICAgICAgICAgc3dpdGNoIChtX21v
ZGUpIHsKICAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6CiAgICAgICAgICAgICBp
ZiAobXByb3RlY3QobWVtb3J5LCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpLCBQUk9UX1JFQUQg
fCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxl
ZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJt
cHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KTsKQEAgLTMxMyw3
ICszMTQsNyBAQCBNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiB7CiAg
ICAgICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJP
VF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXBy
b3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJc
biIpOwogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtZW1vcnlNYW5hZ2VyKCkuZnJlZUdy
b3dhYmxlQm91bmRzQ2hlY2tpbmdNZW1vcnkobWVtb3J5LCBtX21hcHBlZENhcGFjaXR5KTsKQEAg
LTQwNiw3ICs0MDcsNyBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291
bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIE1lbW9yeVNoYQogICAgIAogICAgIGlmIChm
YXN0TWVtb3J5KSB7CiAgICAgICAgIGlmIChtcHJvdGVjdChmYXN0TWVtb3J5ICsgaW5pdGlhbEJ5
dGVzLCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpIC0gaW5pdGlhbEJ5dGVzLCBQUk9UX05PTkUp
KSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVy
cm5vKSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNh
ZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQogCkBAIC00NDIsNyArNDQzLDcgQEAgUmVmUHRyPE1lbW9y
eT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVt
LCBNZW1vcnlTaGEKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5
ICsgaW5pdGlhbEJ5dGVzLCBtYXhpbXVtQnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkp
IHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2Fm
ZVN0cmVycm9yKGVycm5vKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTUxNiw3ICs1MTcsNyBAQCBFeHBlY3RlZDxQYWdl
Q291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJlZChQYWdlQ291
bnQgZGVsdGEpCiAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNz
ZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQrd3JpdGUgaW4g
cmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRlcihzdGFy
dEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0
QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAgICAg
ICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsK
KyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0cmVycm9yKGVy
cm5vKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICB9CiAKQEAgLTYwNSw3ICs2MDYsNyBAQCBFeHBlY3RlZDxQYWdlQ291bnQsIE1lbW9y
eTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3JvdyhQYWdlQ291bnQgZGVsdGEpCiAgICAgICAg
IAogICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAiTWFya2luZyBXZWJBc3NlbWJseSBtZW1v
cnkncyAiLCBSYXdQb2ludGVyKG1lbW9yeSksICIgYXMgcmVhZCt3cml0ZSBpbiByYW5nZSBbIiwg
UmF3UG9pbnRlcihzdGFydEFkZHJlc3MpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcyAr
IGV4dHJhQnl0ZXMpLCAiKSIpOwogICAgICAgICBpZiAobXByb3RlY3Qoc3RhcnRBZGRyZXNzLCBl
eHRyYUJ5dGVzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgZGF0YUxv
ZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAg
ICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pLCAiXG4i
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjMxOWZiMzEz
YmUwNjMxOGNiNzNiOGQ5ZjRkNGNiYTJjZmEwMjdlYi4uM2VjMDM5MWY3YzczN2EzYWYxNjI0NzM2
YmI4NTEyYTUyZDdiMWU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC03Myw2ICs3Myw3IEBACiAJCTMzN0IyRDZBMjY1NDZFQjMwMERERkQzRCAvKiBMaWtl
bHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMzdCMkQ2ODI2NTQ2RUFBMDBEREZEM0QgLyogTGlrZWx5RGVu
c2VVbnNpZ25lZEludGVnZXJTZXQuY3BwICovOyB9OwogCQk0NDI3QzVBQTIxRjZENkMzMDBBNjEy
QTQgLyogQVNDSUlDVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NDI3QzVBOTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgKi87
IH07CiAJCTQ2QkVCNkVCMjJGRkUyNDkwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkU5MjJGRkRERDUw
MDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLzsgfTsKKwkJNDZFOTMwNDkyNzFGMTIwNTAwNUJB
NkU1IC8qIFNhZmVTdHJlcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkU0MzY0NzI3MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmNw
cCAqLzsgfTsKIAkJNTBERTM1RjUyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1w
bC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MERF
MzVGMzIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJ
NTE1Rjc5NEUxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTRCMUNGQzlGNEEw
MENDRUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgKi87IH07CiAJCTUxN0Y4MkQ3MUZEMjJG
MzAwMERBM0RFQSAvKiBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0Y4MkQ1MUZEMjJGMkYwMERBM0RFQSAv
KiBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCAqLzsgfTsKQEAgLTM5Nyw2ICszOTgsOCBAQAog
CQk0NjIwOUEyNzI2NkQ1NDNBMDA3RjhGNEEgLyogQ2FuY2VsbGFibGVUYXNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhbmNlbGxhYmxlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NkJBOUVBQjFGNENENjFFMDA5QTJCQkMgLyogQ29tcGxldGlvbkhhbmRsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmQ291bnRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2RTQzNjQ2MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2FmZVN0cmVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ2RTQzNjQ3MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2FmZVN0cmVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTBERTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlcm5hbFN0cmluZ0ltcGwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGNDIxNUJCMDE1MDBCOTc5Qzcg
LyogRXh0ZXJuYWxTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4dGVybmFsU3RyaW5nSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTNF
MTcwQTFDRDdENUJGMDBFMzY1MEIgLyogTG9nZ2luZ0FjY3VtdWxhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dpbmdBY2N1bXVsYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTI3Nyw2ICsxMjgwLDggQEAKIAkJCQlFMzFDRjBBNTI2MTA1ODU4
MDAzNkU2NzMgLyogUm9iaW5Ib29kSGFzaFRhYmxlLmggKi8sCiAJCQkJMkNERUQwRjExODExNUM4
NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovLAogCQkJCTJDREVEMEYyMTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmggKi8sCisJCQkJNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVT
dHJlcnJvci5jcHAgKi8sCisJCQkJNDZFNDM2NDYyNzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVTdHJl
cnJvci5oICovLAogCQkJCTE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0
aG1ldGljLmggKi8sCiAJCQkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFp
ci5oICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICovLApAQCAt
MTgyMSw2ICsxODI2LDcgQEAKIAkJCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9v
cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAgLyogUnVu
TG9vcENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQTg1Q0E5MjQxQjBCMjYwMDcxQzJGNSAv
KiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
NkU5MzA0OTI3MUYxMjA1MDA1QkE2RTUgLyogU2FmZVN0cmVycm9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUEzRUU1QzNEMjFGRkFDN0QwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWly
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEUxREM5N0JBQjAwNEExRDNGIC8qIFNl
Y29uZHMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGYxMGM4MWE1
NzU5OWIwZDA2ZTEzNjEzMTlkNDY3MDM2MzEyNDhmYTUuLjRlMzhhYWE5MzBkNDEwNzI3ZWQzNzQ5
YjJjNzQxMjIzOGQ2YWNhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMzAsNiArMjMwLDcg
QEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFJvYmluSG9vZEhhc2hUYWJsZS5oCiAgICAg
UnVuTG9vcC5oCiAgICAgU0hBMS5oCisgICAgU2FmZVN0cmVycm9yLmgKICAgICBTYXR1cmF0ZWRB
cml0aG1ldGljLmgKICAgICBTY2hlZHVsZVBhaXIuaAogICAgIFNjb3BlLmgKQEAgLTQ1OSw2ICs0
NjAsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCiAg
ICAgUnVuTG9vcC5jcHAKICAgICBTSEExLmNwcAorICAgIFNhZmVTdHJlcnJvci5jcHAKICAgICBT
ZWNvbmRzLmNwcAogICAgIFNlZ21lbnRlZFZlY3Rvci5jcHAKICAgICBTaXhDaGFyYWN0ZXJIYXNo
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1NhZmVTdHJlcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JiNWVhZDdmYzM0ZWI1M2Jk
Y2E0YmQ2NWI1NzJiYmE2MzY1NWMzZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1NhZmVTdHJlcnJvci5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyogCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n
bnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
PHd0Zi9TYWZlU3RyZXJyb3IuaD4KKworI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8dHlw
ZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9ja2Vy
Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0UoR0xJQikK
KyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiAhVVNF
KEdMSUIpIHx8ICFPUyhXSU5ET1dTKQorc3RhdGljIGNoYXIqIHN0ckVycm9yQWRhcHRvcihpbnQg
ZXJybnVtLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgpCit7CisgICAgLy8gR05V
IHN0cmVycm9yX3IgYW5kIFBPU0lYIHN0cmVycm9yX3IgYXJlIGluY29tcGF0aWJsZSwgYW5kIG15
IGF0dGVtcHRzIHRvIHVzZSBmZWF0dXJlIHRlc3QKKyAgICAvLyBtYWNyb3MgdG8gZm9yY2UgdXNl
IG9mIFBPU0lYIHN0cmVycm9yX3IgYWxsIGZhaWxlZCBkdWUgdG8gYnVncyBpbiB0aGUgbGlic3Rk
YysrIGhlYWRlcnMuCisgICAgYXV0byByZXQgPSBzdHJlcnJvcl9yKGVycm51bSwgYnVmZmVyLCBi
dWZmZXJMZW5ndGgpOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1lPGRlY2x0eXBlKHJl
dCksIGNoYXIqPjo6dmFsdWUpIHsKKyAgICAgICAgLy8gR05VIHN0cmVycm9yX3IKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJldCk7CisgICAgfQorICAgIC8vIFBPU0lY
IHN0cmVycm9yX3IKKyAgICBpZiAocmV0KQorICAgICAgICAqYnVmZmVyID0gJ1wwJzsKKyAgICBy
ZXR1cm4gYnVmZmVyOworfQorI2VuZGlmCisKK2NvbnN0IGNoYXIqIHNhZmVTdHJlcnJvcihpbnQg
ZXJybnVtKQoreworI2lmIFVTRShHTElCKQorICAgIC8vIE1pZ2h0IGFzIHdlbGwgcmV1c2UgR0xp
YidzIGV4aXN0aW5nIG1hcCBvZiBlcnJvciBtZXNzYWdlcyBpbnN0ZWFkIG9mIGtlZXBpbmcgYSBz
ZWNvbmQgb25lLgorICAgIHJldHVybiBnX3N0cmVycm9yKGVycm51bSk7CisjZWxzZQorICAgIC8v
IFRoaXMgaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gR0xpYidzIGdfc3RyZXJyb3IgKGZy
b20gZ3N0cmZ1bmNzLmMsIExHUEx2Mi4xKykuCisgICAgc3RhdGljIExvY2sgbG9jazsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxpbnQsIENTdHJpbmc+PiBlcnJvcnNNYXAgV1RG
X0dVQVJERURfQllfTE9DSyhsb2NrKTsKKworICAgIExvY2tlciBsb2NrZXIgeyBsb2NrIH07Cisg
ICAgYXV0byByZXN1bHQgPSBlcnJvcnNNYXAtPmdldChlcnJudW0pOworICAgIGlmICghcmVzdWx0
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEoKTsKKworICAgIGNoYXIgYnVm
ZmVyWzIwNDhdOworICAgIGNoYXIqIG1lc3NhZ2UgPSBudWxscHRyOworI2lmIE9TKFdJTkRPV1Mp
CisgICAgc3RyZXJyb3JfcyhidWZmZXIsIHNpemVvZihidWZmZXIpLCBlcnJudW0pOworICAgIG1l
c3NhZ2UgPSBidWZmZXI7CisjZWxzZQorICAgIG1lc3NhZ2UgPSBzdHJFcnJvckFkYXB0b3IoZXJy
bnVtLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyNlbmRpZiAvLyBPUyhXSU5ET1dTKQorCisg
ICAgZXJyb3JzTWFwLT5hZGQoZXJybnVtLCBtZXNzYWdlKTsKKworICAgIC8vIEVuc3VyZSB3ZSBy
ZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBtZXNzYWdlIHdlIG93biBpbiBlcnJvcnNNYXAsIHdob3Nl
IGxpZmV0aW1lIHdlIGd1YXJhbnRlZS4KKyAgICByZXN1bHQgPSBlcnJvcnNNYXAtPmdldChlcnJu
dW0pOworICAgIEFTU0VSVCghcmVzdWx0LmlzTnVsbCgpKTsKKyAgICByZXR1cm4gcmVzdWx0LmRh
dGEoKTsKKyNlbmRpZiAvLyBVU0UoR0xJQikKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuaCBiL1NvdXJjZS9XVEYvd3RmL1Nh
ZmVTdHJlcnJvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NjY2NDU4ODQwMjViZGMzZTA1YjZmNzU4ZTJhNzkz
Y2M5ZTYwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3Iu
aApAQCAtMCwwICsxLDQwIEBACisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IElu
Yy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv
Pi4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKKy8vIFRoaXMgaXMgc3RyZXJyb3IsIGV4Y2VwdCBpdCBpcyB0
aHJlYWRzYWZlLiBUaGUgcHJvYmxlbSB3aXRoIG5vcm1hbCBzdHJlcnJvciBpcyBpdCByZXR1cm5z
IGEKKy8vIHBvaW50ZXIgdG8gc3RhdGljIHN0b3JhZ2UsIGFuZCBpdCBtYXkgYWN0dWFsbHkgbW9k
aWZ5IHRoYXQgc3RvcmFnZSwgc28gaXQgY2FuIG5ldmVyIGJlIHVzZWQgaW4KKy8vIGFueSBtdWx0
aXRocmVhZGVkIGFwcGxpY2F0aW9uLCBvciBhbnkgbGlicmFyeSB0aGF0IG1heSBiZSBsaW5rZWQg
dG8gYSBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9uLgorLy8gKFdoeSBkb2VzIGl0IG1vZGlmeSBp
dHMgc3RvcmFnZT8gU28gdGhhdCBpdCBjYW4gYXBwZW5kIHRoZSBlcnJvciBudW1iZXIgdG8gdGhl
IGVycm9yIHN0cmluZywgYXMKKy8vIGluICJVbmtub3duIGVycm9yIG4uIikgVGhlIHN0YW5kYXJk
IGFsdGVybmF0aXZlcyBhcmUgc3RyZXJyb3JfcyBhbmQgc3RyZXJyb3JfciwgYnV0IGJvdGggaGF2
ZQorLy8gcHJvYmxlbXMuIHN0cmVycm9yX3MgaXMgc3BlY2lmaWVkIGJ5IEMxMSwgYnV0IG5vdCBi
eSBDKysgKGFzIG9mIEMrKzIwKSwgYW5kIGl0IGlzIG9wdGlvbmFsIHNvCisvLyBnbGliYyBkZWNp
ZGVkIHRvIGlnbm9yZSBpdC4gV2UgY2FuIG9ubHkgcmVseSBvbiBpdCB0byBleGlzdCBvbiBXaW5k
b3dzLiBUaGVuIHN0cmVycm9yX3IgaXMgZXZlbgorLy8gd29yc2UuIEZpcnN0LCBpdCBkb2Vzbid0
IGV4aXN0IGF0IGFsbCBvbiBXaW5kb3dzLiBTZWNvbmQsIHRoZSBHTlUgdmVyc2lvbiBpcyBpbmNv
bXBhdGlibGUgd2l0aAorLy8gdGhlIFBPU0lYIHZlcnNpb24sIGFuZCBpdCBpcyBpbXBvc3NpYmxl
IHRvIHVzZSBjb3JyZWN0bHkgdW5sZXNzIHlvdSBrbm93IHdoaWNoIHZlcnNpb24geW91IGhhdmUu
CisvLyBCb3RoIHN0cmVycm9yX3MgYW5kIHN0cmVycm9yX3IgYXJlIGN1bWJlcnNvbWUgYmVjYXVz
ZSB0aGV5IGZvcmNlIHlvdSB0byBhbGxvY2F0ZSB0aGUgYnVmZmVyIGZvcgorLy8gdGhlIHJlc3Vs
dCBtYW51YWxseS4gSXQncyBhbGwgc3VjaCBhIG1lc3MgdGhhdCB3ZSBzaG91bGQgZGVhbCB3aXRo
IHRoZSBjb21wbGV4aXR5IGhlcmUgcmF0aGVyCisvLyB0aGFuIGVsc2V3aGVyZSBpbiBXZWJLaXQu
CitXVEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgY2hhciogc2FmZVN0cmVycm9yKGludCBlcnJudW0p
OworCit9CisKK3VzaW5nIFdURjo6c2FmZVN0cmVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2
MzI1MjQxYTFlN2I5NzE3MzA3Y2ZhZWI2YmQ4YzM0Yy4uNjBkMTJjNjkzMTMwZTQ1MzZjMDZiNmZi
MzM5MWM3MjU2YWM3NDE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24v
RmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlv
bi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8
c3lzL3N0YXR2ZnMuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQu
aD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTg4LDcgKzg5LDcgQEAgYm9vbCBk
ZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5z
IDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55
IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVu
dCBmaWxlKQogICAgIGJvb2wgdW5saW5rZWQgPSAhdW5saW5rKGZzUmVwLmRhdGEoKSk7CiAgICAg
aWYgKCF1bmxpbmtlZCAmJiBlcnJubyAhPSBFTk9FTlQpCi0gICAgICAgIExPR19FUlJPUigiRmls
ZSBmYWlsZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7
CisgICAgICAgIExPR19FUlJPUigiRmlsZSBmYWlsZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNzYWdl
OiAlcyIsIHNhZmVTdHJlcnJvcihlcnJubykpOwogCiAgICAgcmV0dXJuIHVubGlua2VkOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggNzk1NjcwZmQ2ZDgw
Mjc4ZGY2YzE3MGIyMTYyYzQ4YjUyZTljYmJlZi4uYzNiZWNkNmQ4ZDc0ZDBhNjFhOGMxYWI0MDcz
NGExMmE1YTRkNjQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5p
c3RkLmg+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0
cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTI2MSw3ICsyNjIsNyBAQCBib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAg
IC8vIHVubGluayguLi4pIHJldHVybnMgMCBvbiBzdWNjZXNzZnVsIGRlbGV0aW9uIG9mIHRoZSBw
YXRoIGFuZCBub24temVybyBpbiBhbnkgb3RoZXIgY2FzZSAoaW5jbHVkaW5nIGludmFsaWQgcGVy
bWlzc2lvbnMgb3Igbm9uLWV4aXN0ZW50IGZpbGUpCiAgICAgYm9vbCB1bmxpbmtlZCA9ICF1bmxp
bmsoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCF1bmxp
bmtlZCAmJiBlcnJubyAhPSBFTk9FTlQpCi0gICAgICAgIExPR19FUlJPUigiRmlsZSBmYWlsZWQg
dG8gZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
IExPR19FUlJPUigiRmlsZSBmYWlsZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHNh
ZmVTdHJlcnJvcihlcnJubykpOwogCiAgICAgcmV0dXJuIHVubGlua2VkOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Ro
cmVhZHMvU2lnbmFscy5jcHAKaW5kZXggNjRiNGNkMTI3ZjMzYWU5NmI3NTFkZTc2NDU0YmVjNDUx
NDMwMDliZS4uYTM3YzQ1YTczYjc5MGI4MWVlZDM0N2U5M2FjMjhjZTBhYWJhMGM2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCkBAIC01Myw2ICs1Myw3IEBAIGV4dGVybiAiQyIgewog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg+CisjaW5jbHVkZSA8d3RmL1Nh
ZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRHcm91cC5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRlIDx3dGYvV1RGQ29uZmlnLmg+CkBAIC0zODQsNyArMzg1
LDcgQEAgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9p
ZCogdWNvbnRleHQpCiAgICAgICAgIHNpZ2ZpbGxzZXQoJmRlZmF1bHRBY3Rpb24uc2FfbWFzayk7
CiAgICAgICAgIGRlZmF1bHRBY3Rpb24uc2FfZmxhZ3MgPSAwOwogICAgICAgICBhdXRvIHJlc3Vs
dCA9IHNpZ2FjdGlvbihzaWcsICZkZWZhdWx0QWN0aW9uLCBudWxscHRyKTsKLSAgICAgICAgZGF0
YUxvZ0xuSWYocmVzdWx0ID09IC0xLCAiVW5hYmxlIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgaGFu
ZGxlciB3aGlsZSBwcm9jY2Vzc2luZyBzaWduYWwgIiwgc2lnLCAiIHRoZSBwcm9jZXNzIGlzIHBy
b2JhYmx5IGRlYWRsb2NrZWQuIChlcnJubzogIiwgc3RyZXJyb3IoZXJybm8pLCAiKSIpOworICAg
ICAgICBkYXRhTG9nTG5JZihyZXN1bHQgPT0gLTEsICJVbmFibGUgdG8gcmVzdG9yZSB0aGUgZGVm
YXVsdCBoYW5kbGVyIHdoaWxlIHByb2NjZXNzaW5nIHNpZ25hbCAiLCBzaWcsICIgdGhlIHByb2Nl
c3MgaXMgcHJvYmFibHkgZGVhZGxvY2tlZC4gKGVycm5vOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8p
LCAiKSIpOwogICAgIH07CiAKICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gYnV0IHdlIG1p
Z2h0IGFzIHdlbGwgYmUgY2FyZWZ1bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNDkxMTEzMjE5MzIxY2RjYzRmMjRjYmMz
OWViN2E2NTE5NGM4MTc2MS4uMjMyMGZkNjY1YTUzYTk0ZWEwZjQzM2Y2YTU0OWU4YmQ0YjUzNWM0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9u
VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9u
VW5peC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUg
PHBvbGwuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZl
U3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1VuaVN0ZEV4dHJhcy5oPgogCkBAIC0zNTIsNyArMzUzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpy
ZWFkeVJlYWRIYW5kbGVyKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1faXND
b25uZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHJlY2Vpdmlu
ZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQgaW4gcHJvY2VzcyAlZDogJXMiLCBtX3NvY2tldERl
c2NyaXB0b3IsIGdldHBpZCgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3IgcmVjZWl2aW5nIElQQyBtZXNzYWdlIG9uIHNvY2tldCAlZCBpbiBw
cm9jZXNzICVkOiAlcyIsIG1fc29ja2V0RGVzY3JpcHRvciwgZ2V0cGlkKCksIHNhZmVTdHJlcnJv
cihlcnJubykpOwogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25EaWRDbG9zZSgpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCmluZGV4IDk5OGEyYTc2NzkzMDVhNDM1ZmEzNWNj
MWFlZWI3MDhmMzQ2NzU1NWIuLjI0MmUxZDQxYTA2MmI3Zjc4OTZhYjhmYzY2MDY0ZjUwNmMwMjA2
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlV
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5p
eC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRl
IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTE2NSw3ICsxNjYsNyBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6
OmFsbG9jYXRlKHNpemVfdCBzaXplKQogewogICAgIGludCBmaWxlRGVzY3JpcHRvciA9IGNyZWF0
ZVNoYXJlZE1lbW9yeSgpOwogICAgIGlmIChmaWxlRGVzY3JpcHRvciA9PSAtMSkgewotICAgICAg
ICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2hhcmVkIG1lbW9yeTogJXMiLCBzdHJl
cnJvcihlcnJubykpOworICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxlZCB0byBjcmVhdGUgc2hh
cmVkIG1lbW9yeTogJXMiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4
aWxpYXJ5UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQ
cm9jZXNzTWFjLm1tCmluZGV4IGRkNTBmYjllYTM3NzRkNWI5NDQ0NjExMDFkNWFkOWJhMDdlNWU5
MTAuLjgzN2U2MDdiZGY2NTM4ZmU4MjQ4MzU3MzJiOGNjZWFkNmRmZjc2ZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC01MSw2ICs1
MSw3IEBACiAjaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KKyNpbXBvcnQgPHd0Zi9TYWZlU3RyZXJy
b3IuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+
CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtMjUxLDcgKzI1Miw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IHNldEFuZFNlcmlhbGl6ZVNhbmRib3hQYXJhbWV0ZXJz
KGNvbnN0IFNhbmRib3hJbml0CiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBpbml0aWFsaXph
dGlvblBhcmFtZXRlcnMubmFtZShpKTsKICAgICAgICAgY29uc3QgY2hhciogdmFsdWUgPSBpbml0
aWFsaXphdGlvblBhcmFtZXRlcnMudmFsdWUoaSk7CiAgICAgICAgIGlmIChzYW5kYm94X3NldF9w
YXJhbShzYW5kYm94UGFyYW1ldGVycy5nZXQoKSwgbmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3Qgc2V0IHNhbmRib3ggcGFyYW1ldGVyOiAlc1xu
IiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXM6IENvdWxkIG5vdCBzZXQgc2FuZGJveCBwYXJhbWV0ZXI6ICVzXG4iLCBnZXRwcm9n
bmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAgIENSQVNIKCk7CiAgICAg
ICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQobmFtZSwgJzonLCB2YWx1ZSwgJzonKTsKQEAg
LTI3MSwxMyArMjcyLDEzIEBAIHN0YXRpYyBTdHJpbmcgc2FuZGJveERhdGFWYXVsdFBhcmVudERp
cmVjdG9yeSgpCiAgICAgY2hhciB0ZW1wW1BBVEhfTUFYXTsKICAgICBzaXplX3QgbGVuZ3RoID0g
Y29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSLCB0ZW1wLCBzaXplb2YodGVtcCkpOwog
ICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBy
ZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1l
KCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5v
dCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2du
YW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykpOwogICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8PSBzaXplb2YodGVtcCkpOwogICAgIGNo
YXIgcmVzb2x2ZWRQYXRoW1BBVEhfTUFYXTsKICAgICBpZiAoIXJlYWxwYXRoKHRlbXAsIHJlc29s
dmVkUGF0aCkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGNhbm9uaWNh
bGl6ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCks
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBj
YW5vbmljYWxpemUgdXNlciB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9n
bmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwog
ICAgIH0KICAgICByZXR1cm4gcmVzb2x2ZWRQYXRoOwpAQCAtMzczLDcgKzM3NCw3IEBAIHN0YXRp
YyBib29sIGVuc3VyZVNhbmRib3hDYWNoZURpcmVjdG9yeShjb25zdCBTYW5kYm94SW5mbyYgaW5m
bykKICAgICAgICAgaWYgKCFtYWtlRGF0YVZhdWx0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogU2FuZGJveCBkaXJl
Y3RvcnkgY291bGRuJ3QgYmUgY3JlYXRlZDogIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJy
bm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogU2FuZGJveCBkaXJlY3RvcnkgY291bGRu
J3QgYmUgY3JlYXRlZDogIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZWxzZQpAQCAtNTIxLDcgKzUyMiw3IEBAIHN0
YXRpYyBib29sIHRyeUFwcGx5Q2FjaGVkU2FuZGJveChjb25zdCBTYW5kYm94SW5mbyYgaW5mbykK
ICAgICBzZXROb3RpZnlPcHRpb25zKCk7CiAKICAgICBpZiAoc2FuZGJveF9hcHBseSgmcHJvZmls
ZSkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBz
YW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBzYW5kYm94OiAlc1xuIiwg
Z2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKQEAgLTYyMyw3ICs2MjQsNyBAQCBzdGF0aWMgYm9vbCBhcHBseVNhbmRib3go
Y29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldAog
ICAgIHNldE5vdGlmeU9wdGlvbnMoKTsKICAgICAKICAgICBpZiAoc2FuZGJveF9hcHBseShzYW5k
Ym94UHJvZmlsZS5nZXQoKSkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90
IGFwcGx5IGNvbXBpbGVkIHNhbmRib3g6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihl
cnJubykpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgYXBwbHkgY29tcGls
ZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykpOwog
ICAgICAgICBDUkFTSCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy9saWJwYXMvcGFzX3BhZ2VfbWFsbG9jLmMgYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMv
c3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYwppbmRleCBmMTUxNWFmOTkwZTkyYTcxNThmMzli
NGNhOTU1ODAyOTUxMzI4MGQ2Li5kYzg5ZjY5Y2RkZTMzMTY0ZTUyMDMxMTc5MDViODA4NWE5OTFm
YTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFn
ZV9tYWxsb2MuYworKysgYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFn
ZV9tYWxsb2MuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0
cz4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogc2l6ZV90IHBhc19wYWdlX21hbGxvY19udW1fYWxs
b2NhdGVkX2J5dGVzOwpAQCAtMTc2LDcgKzE3NywxMSBAQCB2b2lkIHBhc19wYWdlX21hbGxvY19j
b21taXQodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKICAgICBpZiAocGFzX3BhZ2VfbWFsbG9jX21w
cm90ZWN0X2RlY29tbWl0dGVkKSB7CiAgICAgICAgIHJlc3VsdCA9IG1wcm90ZWN0KCh2b2lkKili
YXNlX2FzX2ludCwgZW5kX2FzX2ludCAtIGJhc2VfYXNfaW50LCBQUk9UX1JFQUQgfCBQUk9UX1dS
SVRFKTsKICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgcGFzX2xvZygiQ291bGQg
bm90IG1wcm90ZWN0IG9uIGNvbW1pdDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
ICAgICBjaGFyIGJ1ZmZlclsyMDQ4XTsKKyAgICAgICAgICAgIGF1dG8gcmV0ID0gc3RyZXJyb3Jf
cihlcnJubywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICAvLyBJZiB5b3Ug
aGl0IHRoaXMgd2hlbiBwb3J0aW5nIFBBUyB0byBMaW51eCwgdGhlbiBzZWUgV1RGJ3MgU2FmZVN0
cmVycm9yLmNwcC4KKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGRlY2x0
eXBlKHJldCksIGludD46OnZhbHVlLCAiVGhpcyBjb2RlIGV4cGVjdHMgUE9TSVggc3RyZXJyb3Jf
ciwgbm90IEdOVSBzdHJlcnJvcl9yIik7CisgICAgICAgICAgICBwYXNfbG9nKCJDb3VsZCBub3Qg
bXByb3RlY3Qgb24gY29tbWl0OiAlc1xuIiwgYnVmZmVyKTsKICAgICAgICAgICAgIFBBU19BU1NF
UlQoIXJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWFmMGQwOTEyZTgxODg3MzMzNTNlNzhiZjE4MzUw
MTA0MDNmYjdjNy4uYWIwOGRkODA4NmVjZDE4ZWE3NGY5ODRhNDc5MjA0M2FhMTY4OTNlMiAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUu
b3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHA6
IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMTAtMTggIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjg0NDEzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9D
TWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZWVlM2FlNzI0MTU5MjZkZWYwMjc3YWE0M2U1ZDU4NGJmMzI4ZmY0YS4uZmRkZDZhYzBlMDg1NGNl
NTk4NDIxMzVmNGZlOGM4Y2RkNGFmNDVlMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
CkBAIC04Miw2ICs4Miw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvUm9i
aW5Ib29kSGFzaFNldC5jcHAKICAgICBUZXN0cy9XVEYvUnVuTG9vcC5jcHAKICAgICBUZXN0cy9X
VEYvU0hBMS5jcHAKKyAgICBUZXN0cy9XVEYvU2FmZVN0cmVycm9yLmNwcAogICAgIFRlc3RzL1dU
Ri9TYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAgICBUZXN0cy9XVEYvU2NvcGUu
Y3BwCiAgICAgVGVzdHMvV1RGL1Njb3BlZExhbWJkYS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmN2UxYjYwNWUxNGU5
MmI2NTIwMWJhYzc3YWFmN2NlYTE2MTFhMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSA8d3RmL1NhZmVTdHJlcnJvci5oPgorCisjaW5jbHVkZSA8Y3N0cmluZz4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9TYWZlU3RyZXJyb3IsIFN0cmluZ3NBcmVFcXVh
bCkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICAvLyBB
Y3R1YWwgdGV4dCBvZiBlcnJvcnMgc2hvdWxkIGJlIGlkZW50aWNhbC4KKyAgICAgICAgRVhQRUNU
X1NUUkVRKHN0cmVycm9yKGkpLCBzYWZlU3RyZXJyb3IoaSkpOworICAgIH0KK30KKworVEVTVChX
VEZfU2FmZVN0cmVycm9yLCBQb2ludGVyc0FyZU5vdEVxdWFsKQoreworICAgIC8vIFNpbmNlIHN0
cmVycm9yKCkgZ2VuZXJhbGx5IHJldHVybnMgcG9pbnRlcnMgdGhhdCBhcmUgbm90IHNhZmUgdG8g
dXNlIGluIG11bHRpdGhyZWFkZWQKKyAgICAvLyBwcm9ncmFtcywgaXQgd291bGQgYmUgbmljZSB0
byBzaG93IHRoYXQgc2FmZVN0cmVycm9yKCkgcmV0dXJucyBkaWZmZXJlbnQgcG9pbnRlcnMuCisg
ICAgLy8gQWNjb3JkaW5nbHksIEkgd2FzIHRlbXB0ZWQgdG8gbG9vcCBvdmVyIGEgYnVuY2ggb2Yg
ZGlmZmVyZW50IGVycm9yIGNvZGVzIGhlcmUgYW5kIHZlcmlmeSB0aGF0CisgICAgLy8gdGhlIHBv
aW50ZXJzIHJldHVybmVkIGJ5IHRoZSB0d28gZnVuY3Rpb25zIGFyZSBub3QgdGhlIHNhbWUuCisg
ICAgLy8KKyAgICAvLyBCdXQgaWYgd2UgYXJlIHVzaW5nIEdMaWIsIHRoZW4gc2FmZVN0cmVycm9y
KCkgd2lsbCByZXR1cm4gYSByZXN1bHQgcHJvdmlkZWQgYnkgZ19zdHJlcnJvcigpLAorICAgIC8v
IHdoaWNoIGluIHR1cm4gcmV0dXJucyBhIHJlc3VsdCBwcm92aWRlZCBieSBzdHJlcnJvcl9yKCkg
KGlmIGF2YWlsYWJsZSkuIFRoZSBnbGliYyAoR05VKQorICAgIC8vIHZlcnNpb24gb2Ygc3RyZXJy
b3JfcigpIGlzIHdlaXJkIGluIHRoYXQgaXQgd2lsbCB1c3VhbGx5IHJldHVybiBhIHBvaW50ZXIg
dG8gdGhlIHNhbWUgc3RhdGljCisgICAgLy8gbWVtb3J5IHRoYXQgc3RyZXJyb3IoKSByZXR1cm5z
LCBidXQgLS0gY3J1Y2lhbGx5IC0tIGl0IHdpbGwgb25seSBkbyBzbyB3aGVuIGl0IGlzIGd1YXJh
bnRlZWQKKyAgICAvLyB0aGF0IGdsaWJjIHdpbGwgbmV2ZXIgbW9kaWZ5IHRoYXQgcG9pbnRlci4g
U28gd2hlbiB1c2luZyBHTGliIGFuZCBnbGliYywgaXQncyBhY3R1YWxseSBPSyBmb3IKKyAgICAv
LyB0aGVzZSBmdW5jdGlvbnMgdG8gcmV0dXJuIG1hdGNoaW5nIHBvaW50ZXIgdmFsdWVzLiBIb3dl
dmVyLCBpZiB3ZSBwYXNzIGFuIGludmFsaWQgZXJyb3IgY29kZSwKKyAgICAvLyB0aGVuIGdsaWJj
IHdpbGwgbW9kaWZ5IHRoZSByZXR1cm5lZCBzdHJpbmcgaW4gb3JkZXIgdG8gYWRkIHRoZSBpbnZh
bGlkIGVycm9yIGNvZGUgZGlyZWN0bHkKKyAgICAvLyBpbnRvIHRoZSBzdHJpbmcuIEluIHRoaXMg
Y2FzZSwgc3RyZXJyb3JfcigpIHdpbGwgbWFrZSBhIGNvcHkgcmF0aGVyIHRoYW4gcmV0dXJuIHRo
ZSBzYW1lCisgICAgLy8gc3RhdGljIHN0cmluZyB0aGF0IHdvdWxkIGJlIHJldHVybmVkIGJ5IGVy
cm5vLgorICAgIC8vCisgICAgLy8gSXQncyBxdWVzdGlvbmFibGUgd2hldGhlciB0aGlzIHRlc3Qg
aXMgdHJ1bHkgdmFsdWFibGUsIHNpbmNlIGl0IHJlbGllcyBvbiBzbyBtYW55CisgICAgLy8gaW1w
bGVtZW50YXRpb24gZGV0YWlscywgYnV0IGl0J3MgbmljZSB0byBzaG93IHRoYXQgc2FmZVN0cmVy
cm9yKCkgaXMgZG9pbmcgKnNvbWV0aGluZyoKKyAgICAvLyBkaWZmZXJlbnRseSB0aGFuIG5vcm1h
bCBzdHJlcnJvcigpLCBldmVuIGlmIHdlIGhhdmUgdG8gcmVseSBvbiB0aGlzIGVkZ2UgY2FzZSB0
byBkbyBzby4KKyAgICBFWFBFQ1RfTkUoc3RyZXJyb3IoNDI0MjQyKSwgc2FmZVN0cmVycm9yKDQy
NDI0MikpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="commit-queue"
          id="466077"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441727</attachid>
            <date>2021-10-19 08:08:04 -0700</date>
            <delta_ts>2021-10-19 14:10:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211019080803.patch</filename>
            <type>text/plain</type>
            <size>38666</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
N2JjZmNmNzgyODZjY2JhNTI5ZDI3MjI4YzI2MzI4NTJkMGQ3MDg1Li4zN2I3YmIwZTY0NjBkZTU5
ZmFkYzI5ZGI4MDYwZDBjNmU3ZGVmYzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE4ICBQaGlsbGlwIE1hdGVzICA8cG1hdGVzQGlnYWxpYS5jb20+CiAKICAgICAgICAgc2hh
ZG93IHJlYWxtcyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2ZWQ1MjRmODc5YTFjMzMxZDgwNjdiMTcx
MWY5MzMzYjNhYzNmODBiLi5lZjIzZmU0Y2I4Y2QyYjc5YmRhMjQyZWY0N2Y5YzdlMTlhNWJiMjIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNh
ZmVTdHJlcnJvciBmdW5jdGlvbiB0aGF0IHdlIGNhbiB1c2Ugd2l0aG91dCB0aHJlYWRzYWZldHkg
d29ycmllcy4KKworICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYv
U2FmZVN0cmVycm9yLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnNhZmVTdHJlcnJvcik6Cisg
ICAgICAgICogd3RmL1NhZmVTdHJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvcGxheXN0
YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OmRlbGV0ZUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAg
ICogd3RmL3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OmpzY1NpZ25hbEhhbmRs
ZXIpOgorCiAyMDIxLTEwLTE5ICBDYW1lcm9uIE1jQ29ybWFjayAgPGhleWNhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgRW5zdXJlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5kcmF3SW1hZ2Uodmlk
ZW8pIHVzZXMgdGhlIHJpZ2h0IGNvbG9yIHNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFjN2EzYmQzYTg4ZTFl
OGRjOGEwZDRmNjZkMGJiNDFlNDk3MmRlZDYuLmEzNzFhYjBjYTI5NTc5NjlhYzJlMzJmYTRjMzFh
OTg5MmVlNzBjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTAtMTkgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVz
ZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQ
Qzo6Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgICogUGxhdGZvcm0vdW5p
eC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyk6CisgICAg
ICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkpOgorICAgICAgICAo
V2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0Ojp0
cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2ViS2l0OjphcHBseVNhbmRib3gpOgor
CiAyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgog
CiAgICAgICAgIFVwZGF0ZSBzZWNjb21wIGZpbHRlcnMgd2l0aCBsYXRlc3QgY2hhbmdlcyBmcm9t
IGZsYXRwYWsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZwppbmRleCAxYzY1MmQxOWNlNmM0MDBiMWJmOWEyNDRhZTAwODU1MWQ5
NjBhNzc1Li4zMWVkN2ExOTcxMDcwNTY2NzVmMjBiNDFhZmU2YzA0NDQzZmRlNzgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxpYnBhcy9zcmMv
bGlicGFzL3Bhc19wYWdlX21hbGxvYy5jOgorICAgICAgICAocGFzX3BhZ2VfbWFsbG9jX2NvbW1p
dCk6CisKIDIwMjEtMTAtMTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg0MzA1LgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHQubW0KaW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0
MWE4YjA5NjE5NC4uMmUzOWNjYWZhMDVjYmMzYzk0YTgzNGZkYTNiNGZjMTgxYWNiNDZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1w
b3J0IDxzeXMvc3RhdC5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0
Zi9TSEExLmg+CisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2Nv
cGUuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3
aW4vRGF0YVZhdWx0U1BJLmg+CkBAIC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAgICAgY29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0
aFN0cmluZyBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAg
IGludCBmZCA9IG9wZW4oY2FjaGVGaWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExP
Q0sgfCBPX05PTkJMT0NLLCAwNjAwKTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJy
b3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNo
ZSBmaWxlLiBJdCdzIGxpa2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2lu
ZyBpdC4gRXJyb3I6ICIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0
cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQn
cyBsaWtlbHkgYW5vdGhlciBWTSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9y
OiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIApA
QCAtMzE0LDcgKzMxNSw3IEBAIC0gKEJPT0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogCiAg
ICAgaW50IHRlbXBGRCA9IG9wZW4odGVtcEZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSIHwgT19F
WExPQ0sgfCBPX05PTkJMT0NLLCAwNjAwKTsKICAgICBpZiAodGVtcEZEID09IC0xKSB7Ci0gICAg
ICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNv
ZGUgY2FjaGUgdGVtcCBmaWxlLiBFcnJvcjogIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
ZXJyb3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBj
YWNoZSB0ZW1wIGZpbGUuIEVycm9yOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAg
cmV0dXJuIE5POwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0
YXBpLm1tCmluZGV4IGYyZWM0MmJhODg4YWY3NDlhNjA0Yzc4MDdmZTNmNTUxMzk0NjU0ZWMuLjMy
ZTQ5NTk0YjRlNTY1NGI3Mjg4MzdhMTZjZDc1M2U3NzgxMGM2ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQg
IkpTV3JhcHBlck1hcFRlc3RzLmgiCiAjaW1wb3J0ICJSZWdyZXNzMTQxMjc1LmgiCiAjaW1wb3J0
ICJSZWdyZXNzMTQxODA5LmgiCisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9EYXRhVmF1bHRTUEkuaD4KIAogCkBAIC0yNDQ4LDcgKzI0NDksNyBA
QCBzdGF0aWMgTlNVUkwgKnJlc29sdmVQYXRoVG9TY3JpcHRzKCkKICAgICAgICAgY29uc3Qgc2l6
ZV90IG1heExlbmd0aCA9IDEwMDAwOwogICAgICAgICBjaGFyIGN3ZFttYXhMZW5ndGhdOwogICAg
ICAgICBpZiAoIWdldGN3ZChjd2QsIG1heExlbmd0aCkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAi
Z2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
ICAgICBOU0xvZyhAImdldGN3ZCBlcnJvcmVkIHdpdGggY29kZTogJXMiLCBzYWZlU3RyZXJyb3Io
ZXJybm8pKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAgTlNVUkwg
KmN3ZFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlcyIsIGN3ZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCA5MjJjNWM0N2U0M2Y2MzkxMWVhNzM4ZTU3
MDRjZmRlNjg3NDBmNGEwLi41YzQ3YWY5OWQ0MTc4YjJjOWU2NGQyNTVlOGU5MzNjMDgwMTI0MWQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5w
dXQueGNmaWxlbGlzdApAQCAtMTY2LDYgKzE2Niw3IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1JlZmxlY3RPYmpl
Y3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAogJChQ
Uk9KRUNUX0RJUikvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9TdHJp
bmdDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKaW5kZXggNGY0ZTI1YzNkMmNhMzlkNGFjZTE2NTM2YjhjMmY3ZTQ5YTQyYzRk
Ni4uODhhY2RjNzYyN2Q3ZTBlMWQzNzc5ODlhMTg3MTg1ZmVjNjA0OTU2NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvVVJMLmg+CkBAIC0xODE5LDcgKzE4MjAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25PcGVuRmlsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cgogCiAgICAgRklMRSogZGVzY3JpcHRvciA9IGZvcGVuKGZpbGVQYXRoLmZpbGVTeXN0ZW1QYXRo
KCkuYXNjaWkoKS5kYXRhKCksICJyIik7CiAgICAgaWYgKCFkZXNjcmlwdG9yKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVVUklFcnJv
cihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgYXQgIl9zLCBm
aWxlUGF0aC5zdHJpbmcoKSwgIiBmb3BlbiBoYWQgZXJyb3I6ICJfcywgc3RyZXJyb3IoZXJybm8p
KSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVVUklFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVu
IGZpbGUgYXQgIl9zLCBmaWxlUGF0aC5zdHJpbmcoKSwgIiBmb3BlbiBoYWQgZXJyb3I6ICJfcywg
c2FmZVN0cmVycm9yKGVycm5vKSkpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKEpTRmlsZURlc2NyaXB0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGRlc2NyaXB0b3IpKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKaW5kZXggNzZmMTAyZjkwMTA2NTky
YTA3MjI1OTkyNTE3ODRkMDI2N2I2YTg2Yi4uZmYwNDEyYjE5NzM4MzYzYTNjOTVhODUwZGJjNWVk
MDRkMzYyZWYwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0
ZWNvZGVDYWNoZUVycm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
eXRlY29kZUNhY2hlRXJyb3IuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDYWNoZUVycm9yLmgiCiAKKyNpbmNsdWRlIDx3dGYvU2Fm
ZVN0cmVycm9yLmg+CisKIG5hbWVzcGFjZSBKU0MgewogCiBib29sIEJ5dGVjb2RlQ2FjaGVFcnJv
cjo6U3RhbmRhcmRFcnJvcjo6aXNWYWxpZCgpIGNvbnN0CkBAIC0zNSw3ICszNyw3IEBAIGJvb2wg
Qnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QKIAogU3Ry
aW5nIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHN0cmVycm9yKG1fZXJybm8pOworICAgIHJldHVybiBzYWZlU3RyZXJyb3Io
bV9lcnJubyk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpXcml0ZUVycm9yOjppc1Zh
bGlkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5j
dGlvbkFsbG93bGlzdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25B
bGxvd2xpc3QuY3BwCmluZGV4IDAwN2IyNTNlNjQ5ZjFhNWZhMjZlZTcyNmIwMDQwODM2ZDk1M2I4
OTAuLjhkMTk2ZTViNjE5NWZkMzUxZjcwY2MzNDNjNGM2NDlmZDk3ODZkZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj
aW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtNDUsNyArNDYsNyBAQCBGdW5jdGlvbkFsbG93bGlzdDo6RnVuY3Rp
b25BbGxvd2xpc3QoY29uc3QgY2hhciogZmlsZW5hbWUpCiAgICAgICAgICAgICBtX2hhc0FjdGl2
ZUFsbG93bGlzdCA9IHRydWU7CiAgICAgICAgICAgICBtX2VudHJpZXMuYWRkKGZpbGVuYW1lKTsK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIG9wZW4gZmls
ZSAlcy4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVhZC1kYXRhIGVudGl0bGVtZW50IHRvIFdlYlBy
b2Nlc3Muc2I/IEVycm9yIGNvZGU6ICVzXG4iLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsK
KyAgICAgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gb3BlbiBmaWxlICVzLiBEaWQgeW91IGFk
ZCB0aGUgZmlsZS1yZWFkLWRhdGEgZW50aXRsZW1lbnQgdG8gV2ViUHJvY2Vzcy5zYj8gRXJyb3Ig
Y29kZTogJXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtNzMsNyArNzQsNyBAQCBGdW5jdGlvbkFsbG93bGlzdDo6RnVuY3Rp
b25BbGxvd2xpc3QoY29uc3QgY2hhciogZmlsZW5hbWUpCiAKICAgICBpbnQgcmVzdWx0ID0gZmNs
b3NlKGYpOwogICAgIGlmIChyZXN1bHQpCi0gICAgICAgIGRhdGFMb2dGKCJGYWlsZWQgdG8gY2xv
c2UgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBk
YXRhTG9nRigiRmFpbGVkIHRvIGNsb3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlbmFtZSwgc2FmZVN0
cmVycm9yKGVycm5vKSk7CiB9CiAKIGJvb2wgRnVuY3Rpb25BbGxvd2xpc3Q6OmNvbnRhaW5zKENv
ZGVCbG9jayogY29kZUJsb2NrKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKaW5kZXggY2U5NGUyYmRjYjE4MGYzMzIyOWQ0ZGNi
NmU4YTFhOGU1OWFjN2ZjOS4uOWZiYWNhOWRjMGY3MzY1YjlkYTViZmIwODBiZTM1MTM2NGY2ODlh
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJp
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CkBAIC0yODMsNyArMjg0LDcgQEAgdm9pZCBGdW5jdGlvbk92ZXJyaWRlczo6cGFy
c2VPdmVycmlkZXNJbkZpbGUoY29uc3QgY2hhciogZmlsZU5hbWUpCiAgICAgCiAgICAgaW50IHJl
c3VsdCA9IGZjbG9zZShmaWxlKTsKICAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nRigi
RmFpbGVkIHRvIGNsb3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlTmFtZSwgc3RyZXJyb3IoZXJybm8p
KTsKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmls
ZU5hbWUsIHNhZmVTdHJlcnJvcihlcnJubykpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCmluZGV4IDUzMjk1Yjhh
MDJkZjQzNDRmNGRkYTlhODdiNzhlYzU1YjdlOGNiOTguLjc3Y2Y3NGUwODgyN2E4Yzg0NWZhYzg1
ODY5ZDM2YWZmN2RiZTJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KKyNpbmNs
dWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzAxLDcgKzMwMiw3IEBAIE1lbW9yeUhhbmRsZTo6fk1l
bW9yeUhhbmRsZSgpCiAgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgICAgIGNhc2UgTWVt
b3J5TW9kZTo6U2lnbmFsaW5nOgogICAgICAgICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSwgTWVt
b3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwg
IlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZl
U3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigp
LmZyZWVGYXN0TWVtb3J5KG1lbW9yeSk7CkBAIC0zMTMsNyArMzE0LDcgQEAgTWVtb3J5SGFuZGxl
Ojp+TWVtb3J5SGFuZGxlKCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgTWVtb3J5U2hhcmluZ01vZGU6OlNoYXJlZDogewogICAgICAgICAgICAgICAgIGlmIChtcHJv
dGVjdChtZW1vcnksIG1fbWFwcGVkQ2FwYWNpdHksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJy
b3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3Qg
ZmFpbGVkOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVHcm93YWJsZUJvdW5kc0NoZWNraW5nTWVt
b3J5KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSk7CkBAIC00MDYsNyArNDA3LDcgQEAgUmVmUHRy
PE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBt
YXhpbXVtLCBNZW1vcnlTaGEKICAgICAKICAgICBpZiAoZmFzdE1lbW9yeSkgewogICAgICAgICBp
ZiAobXByb3RlY3QoZmFzdE1lbW9yeSArIGluaXRpYWxCeXRlcywgTWVtb3J5OjpmYXN0TWFwcGVk
Qnl0ZXMoKSAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkgewotICAgICAgICAgICAgZGF0YUxv
ZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAg
ICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pLCAiXG4i
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
IApAQCAtNDQyLDcgKzQ0Myw3IEBAIFJlZlB0cjxNZW1vcnk+IE1lbW9yeTo6dHJ5Q3JlYXRlKFBh
Z2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwgTWVtb3J5U2hhCiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobXByb3RlY3Qoc2xvd01lbW9yeSArIGluaXRpYWxCeXRlcywgbWF4aW11
bUJ5dGVzIC0gaW5pdGlhbEJ5dGVzLCBQUk9UX05PTkUpKSB7Ci0gICAgICAgICAgICBkYXRhTG9n
KCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwgIlxuIik7CisgICAgICAgICAg
ICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJcbiIp
OwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQog
CkBAIC01MTYsNyArNTE3LDcgQEAgRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWls
UmVhc29uPiBNZW1vcnk6Omdyb3dTaGFyZWQoUGFnZUNvdW50IGRlbHRhKQogCiAgICAgICAgIGRh
dGFMb2dMbklmKHZlcmJvc2UsICJNYXJraW5nIFdlYkFzc2VtYmx5IG1lbW9yeSdzICIsIFJhd1Bv
aW50ZXIobWVtb3J5KSwgIiBhcyByZWFkK3dyaXRlIGluIHJhbmdlIFsiLCBSYXdQb2ludGVyKHN0
YXJ0QWRkcmVzcyksICIsICIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzICsgZXh0cmFCeXRlcyks
ICIpIik7CiAgICAgICAgIGlmIChtcHJvdGVjdChzdGFydEFkZHJlc3MsIGV4dHJhQnl0ZXMsIFBS
T1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBm
YWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCJt
cHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubyksICJcbiIpOwogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkBAIC02MDUsNyAr
NjA2LDcgQEAgRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiBNZW1v
cnk6Omdyb3coUGFnZUNvdW50IGRlbHRhKQogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYo
dmVyYm9zZSwgIk1hcmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1v
cnkpLCAiIGFzIHJlYWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNz
KSwgIiwgIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAg
ICAgICAgaWYgKG1wcm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwg
UFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwg
c3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZh
aWxlZDogIiwgc2FmZVN0cmVycm9yKGVycm5vKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIzMTlmYjMxM2JlMDYzMThjYjczYjhkOWY0ZDRjYmEy
Y2ZhMDI3ZWIuLjNlYzAzOTFmN2M3MzdhM2FmMTYyNDczNmJiODUxMmE1MmQ3YjFlNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzMsNiArNzMsNyBAQAog
CQkzMzdCMkQ2QTI2NTQ2RUIzMDBEREZEM0QgLyogTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJT
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzM3
QjJENjgyNjU0NkVBQTAwRERGRDNEIC8qIExpa2VseURlbnNlVW5zaWduZWRJbnRlZ2VyU2V0LmNw
cCAqLzsgfTsKIAkJNDQyN0M1QUEyMUY2RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQyN0M1QTkyMUY2
RDZDMzAwQTYxMkE0IC8qIEFTQ0lJQ1R5cGUuY3BwICovOyB9OwogCQk0NkJFQjZFQjIyRkZFMjQ5
MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZFOTIyRkZEREQ1MDAyNjk4NjcgLyogUmVmQ291bnRlZC5j
cHAgKi87IH07CisJCTQ2RTkzMDQ5MjcxRjEyMDUwMDVCQTZFNSAvKiBTYWZlU3RyZXJyb3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFNDM2NDcy
NzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVTdHJlcnJvci5jcHAgKi87IH07CiAJCTUwREUzNUY1MjE1
QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTBERTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8q
IEV4dGVybmFsU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTUxNUY3OTRFMUNGQzlGNEEwMENDRUQ5
MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTVGNzk0QjFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwICovOyB9OwogCQk1MTdGODJENzFGRDIyRjMwMDBEQTNERUEgLyogQ3Jvc3NUaHJl
YWRUYXNrSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTdGODJENTFGRDIyRjJGMDBEQTNERUEgLyogQ3Jvc3NUaHJlYWRUYXNrSGFuZGxl
ci5jcHAgKi87IH07CkBAIC0zOTcsNiArMzk4LDggQEAKIAkJNDYyMDlBMjcyNjZENTQzQTAwN0Y4
RjRBIC8qIENhbmNlbGxhYmxlVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYW5jZWxsYWJsZVRhc2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCQTlFQUIxRjRDRDYxRTAwOUEyQkJD
IC8qIENvbXBsZXRpb25IYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbXBsZXRpb25IYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkVC
NkU5MjJGRkRERDUwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZkNvdW50ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkU0MzY0NjI3
MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhZmVTdHJl
cnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkU0MzY0NzI3MUYxMEFBMDBD
ODhDOTAgLyogU2FmZVN0cmVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhZmVTdHJlcnJv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwREUzNUYzMjE1QkIwMTUwMEI5
NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTBERTM1RjQyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlcm5hbFN0cmluZ0ltcGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzRTE3MEExQ0Q3RDVCRjAwRTM2NTBCIC8q
IExvZ2dpbmdBY2N1bXVsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
b2dnaW5nQWNjdW11bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNzcs
NiArMTI4MCw4IEBACiAJCQkJRTMxQ0YwQTUyNjEwNTg1ODAwMzZFNjczIC8qIFJvYmluSG9vZEhh
c2hUYWJsZS5oICovLAogCQkJCTJDREVEMEYxMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNw
cCAqLywKIAkJCQkyQ0RFRDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oICovLAorCQkJ
CTQ2RTQzNjQ3MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovLAorCQkJCTQ2
RTQzNjQ2MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuaCAqLywKIAkJCQkxNEYzQjBG
NjE1RTQ1RTQ2MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oICovLAogCQkJCTE0Njk0
MTk0MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywKIAkJCQkxQTM1MjRBQTFE
NjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKQEAgLTE4MjEsNiArMTgyNiw3IEBACiAJCQkJ
MkNERUQwRjMxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkNERUQwRUYxODExNUMzODAwNERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQ0E4NUNBOTI0MUIwQjI2MDA3MUMyRjUgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hl
Y2tzQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDZFOTMwNDkyNzFGMTIwNTAwNUJBNkU1
IC8qIFNhZmVTdHJlcnJvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0VFNUMzRDIxRkZBQzdE
MDBGQUJENjEgLyogU2NoZWR1bGVQYWlyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVD
NDAyMUZGQUNBMjAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpck1hYy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTBGNjZCMjhFMURDOTdCQUIwMDRBMUQzRiAvKiBTZWNvbmRzLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBmMTBjODFhNTc1OTliMGQwNmUxMzYxMzE5ZDQ2NzAz
NjMxMjQ4ZmE1Li40ZTM4YWFhOTMwZDQxMDcyN2VkMzc0OWIyYzc0MTIyMzhkNmFjYWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjMwLDYgKzIzMCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURF
UlMKICAgICBSb2Jpbkhvb2RIYXNoVGFibGUuaAogICAgIFJ1bkxvb3AuaAogICAgIFNIQTEuaAor
ICAgIFNhZmVTdHJlcnJvci5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2NoZWR1
bGVQYWlyLmgKICAgICBTY29wZS5oCkBAIC00NTksNiArNDYwLDcgQEAgc2V0KFdURl9TT1VSQ0VT
CiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAogICAgIFJ1bkxvb3AuY3BwCiAgICAgU0hB
MS5jcHAKKyAgICBTYWZlU3RyZXJyb3IuY3BwCiAgICAgU2Vjb25kcy5jcHAKICAgICBTZWdtZW50
ZWRWZWN0b3IuY3BwCiAgICAgU2l4Q2hhcmFjdGVySGFzaC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1NhZmVTdHJlcnJvci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY2NjE0OGNhNjc0MjNlMmVlNmE5NjAxY2MwNmRjNjk5ZGJiM2I1NTQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuY3BwCkBAIC0w
LDAgKzEsODUgQEAKKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDIxIFJlZCBIYXQgSW5jLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CisK
KyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgorI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCisjaWYgVVNFKEdMSUIpCisjaW5jbHVkZSA8Z2xpYi5oPgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgIVVTRShHTElCKSAmJiAhT1MoV0lORE9XUykK
K3N0YXRpYyBjaGFyKiBzdHJFcnJvckFkYXB0b3IoaW50IGVycm51bSwgY2hhciogYnVmZmVyLCBz
aXplX3QgYnVmZmVyTGVuZ3RoKQoreworICAgIC8vIEdOVSBzdHJlcnJvcl9yIGFuZCBQT1NJWCBz
dHJlcnJvcl9yIGFyZSBpbmNvbXBhdGlibGUsIGFuZCBteSBhdHRlbXB0cyB0byB1c2UgZmVhdHVy
ZSB0ZXN0CisgICAgLy8gbWFjcm9zIHRvIGZvcmNlIHVzZSBvZiBQT1NJWCBzdHJlcnJvcl9yIGFs
bCBmYWlsZWQgZHVlIHRvIGJ1Z3MgaW4gdGhlIGxpYnN0ZGMrKyBoZWFkZXJzLgorICAgIGF1dG8g
cmV0ID0gc3RyZXJyb3JfcihlcnJudW0sIGJ1ZmZlciwgYnVmZmVyTGVuZ3RoKTsKKyAgICBpZiBj
b25zdGV4cHIgKHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShyZXQpLCBjaGFyKj46OnZhbHVlKSB7Cisg
ICAgICAgIC8vIEdOVSBzdHJlcnJvcl9yCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNoYXIqPihyZXQpOworICAgIH0KKyAgICAvLyBQT1NJWCBzdHJlcnJvcl9yCisgICAgaWYgKHJl
dCkKKyAgICAgICAgKmJ1ZmZlciA9ICdcMCc7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKyNlbmRp
ZgorCitjb25zdCBjaGFyKiBzYWZlU3RyZXJyb3IoaW50IGVycm51bSkKK3sKKyNpZiBVU0UoR0xJ
QikKKyAgICAvLyBNaWdodCBhcyB3ZWxsIHJldXNlIEdMaWIncyBleGlzdGluZyBtYXAgb2YgZXJy
b3IgbWVzc2FnZXMgaW5zdGVhZCBvZiBrZWVwaW5nIGEgc2Vjb25kIG9uZS4KKyAgICByZXR1cm4g
Z19zdHJlcnJvcihlcnJudW0pOworI2Vsc2UKKyAgICAvLyBUaGlzIGlzIGltcGxlbWVudGF0aW9u
IGlzIGJhc2VkIG9uIEdMaWIncyBnX3N0cmVycm9yIChmcm9tIGdzdHJmdW5jcy5jLCBMR1BMdjIu
MSspLgorICAgIHN0YXRpYyBMb2NrIGxvY2s7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhh
c2hNYXA8aW50LCBDU3RyaW5nPj4gZXJyb3JzTWFwIFdURl9HVUFSREVEX0JZX0xPQ0sobG9jayk7
CisKKyAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OworICAgIGF1dG8gcmVzdWx0ID0gZXJyb3Jz
TWFwLT5nZXQoZXJybnVtKTsKKyAgICBpZiAoIXJlc3VsdC5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIHJlc3VsdC5kYXRhKCk7CisKKyAgICBjaGFyIGJ1ZmZlclsyMDQ4XTsKKyAgICBjaGFyKiBt
ZXNzYWdlID0gbnVsbHB0cjsKKyNpZiBPUyhXSU5ET1dTKQorICAgIHN0cmVycm9yX3MoYnVmZmVy
LCBzaXplb2YoYnVmZmVyKSwgZXJybnVtKTsKKyAgICBtZXNzYWdlID0gYnVmZmVyOworI2Vsc2UK
KyAgICBtZXNzYWdlID0gc3RyRXJyb3JBZGFwdG9yKGVycm51bSwgYnVmZmVyLCBzaXplb2YoYnVm
ZmVyKSk7CisjZW5kaWYgLy8gT1MoV0lORE9XUykKKworICAgIGVycm9yc01hcC0+YWRkKGVycm51
bSwgbWVzc2FnZSk7CisKKyAgICAvLyBFbnN1cmUgd2UgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUg
bWVzc2FnZSB3ZSBvd24gaW4gZXJyb3JzTWFwLCB3aG9zZSBsaWZldGltZSB3ZSBndWFyYW50ZWUu
CisgICAgcmVzdWx0ID0gZXJyb3JzTWFwLT5nZXQoZXJybnVtKTsKKyAgICBBU1NFUlQoIXJlc3Vs
dC5pc051bGwoKSk7CisgICAgcmV0dXJuIHJlc3VsdC5kYXRhKCk7CisjZW5kaWYgLy8gVVNFKEdM
SUIpCit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
U2FmZVN0cmVycm9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kOTY2NjQ1ODg0MDI1YmRjM2UwNWI2Zjc1OGUyYTc5M2NjOWU2MGI2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmgKQEAgLTAsMCArMSw0MCBAQAorLyog
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs
IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisv
LyBUaGlzIGlzIHN0cmVycm9yLCBleGNlcHQgaXQgaXMgdGhyZWFkc2FmZS4gVGhlIHByb2JsZW0g
d2l0aCBub3JtYWwgc3RyZXJyb3IgaXMgaXQgcmV0dXJucyBhCisvLyBwb2ludGVyIHRvIHN0YXRp
YyBzdG9yYWdlLCBhbmQgaXQgbWF5IGFjdHVhbGx5IG1vZGlmeSB0aGF0IHN0b3JhZ2UsIHNvIGl0
IGNhbiBuZXZlciBiZSB1c2VkIGluCisvLyBhbnkgbXVsdGl0aHJlYWRlZCBhcHBsaWNhdGlvbiwg
b3IgYW55IGxpYnJhcnkgdGhhdCBtYXkgYmUgbGlua2VkIHRvIGEgbXVsdGl0aHJlYWRlZCBhcHBs
aWNhdGlvbi4KKy8vIChXaHkgZG9lcyBpdCBtb2RpZnkgaXRzIHN0b3JhZ2U/IFNvIHRoYXQgaXQg
Y2FuIGFwcGVuZCB0aGUgZXJyb3IgbnVtYmVyIHRvIHRoZSBlcnJvciBzdHJpbmcsIGFzCisvLyBp
biAiVW5rbm93biBlcnJvciBuLiIpIFRoZSBzdGFuZGFyZCBhbHRlcm5hdGl2ZXMgYXJlIHN0cmVy
cm9yX3MgYW5kIHN0cmVycm9yX3IsIGJ1dCBib3RoIGhhdmUKKy8vIHByb2JsZW1zLiBzdHJlcnJv
cl9zIGlzIHNwZWNpZmllZCBieSBDMTEsIGJ1dCBub3QgYnkgQysrIChhcyBvZiBDKysyMCksIGFu
ZCBpdCBpcyBvcHRpb25hbCBzbworLy8gZ2xpYmMgZGVjaWRlZCB0byBpZ25vcmUgaXQuIFdlIGNh
biBvbmx5IHJlbHkgb24gaXQgdG8gZXhpc3Qgb24gV2luZG93cy4gVGhlbiBzdHJlcnJvcl9yIGlz
IGV2ZW4KKy8vIHdvcnNlLiBGaXJzdCwgaXQgZG9lc24ndCBleGlzdCBhdCBhbGwgb24gV2luZG93
cy4gU2Vjb25kLCB0aGUgR05VIHZlcnNpb24gaXMgaW5jb21wYXRpYmxlIHdpdGgKKy8vIHRoZSBQ
T1NJWCB2ZXJzaW9uLCBhbmQgaXQgaXMgaW1wb3NzaWJsZSB0byB1c2UgY29ycmVjdGx5IHVubGVz
cyB5b3Uga25vdyB3aGljaCB2ZXJzaW9uIHlvdSBoYXZlLgorLy8gQm90aCBzdHJlcnJvcl9zIGFu
ZCBzdHJlcnJvcl9yIGFyZSBjdW1iZXJzb21lIGJlY2F1c2UgdGhleSBmb3JjZSB5b3UgdG8gYWxs
b2NhdGUgdGhlIGJ1ZmZlciBmb3IKKy8vIHRoZSByZXN1bHQgbWFudWFsbHkuIEl0J3MgYWxsIHN1
Y2ggYSBtZXNzIHRoYXQgd2Ugc2hvdWxkIGRlYWwgd2l0aCB0aGUgY29tcGxleGl0eSBoZXJlIHJh
dGhlcgorLy8gdGhhbiBlbHNld2hlcmUgaW4gV2ViS2l0LgorV1RGX0VYUE9SVF9QUklWQVRFIGNv
bnN0IGNoYXIqIHNhZmVTdHJlcnJvcihpbnQgZXJybnVtKTsKKworfQorCit1c2luZyBXVEY6OnNh
ZmVTdHJlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVT
eXN0ZW1QbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lz
dGVtUGxheVN0YXRpb24uY3BwCmluZGV4IGNkYTVlNWUxNjMyNTI0MWExZTdiOTcxNzMwN2NmYWVi
NmJkOGMzNGMuLjYwZDEyYzY5MzEzMGU0NTM2YzA2YjZmYjMzOTFjNzI1NmFjNzQxN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9u
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CiAjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVT
dHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNw
YWNlIFdURiB7CkBAIC04OCw3ICs4OSw3IEBAIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpCiAgICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRp
b24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcg
aW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKICAgICBib29sIHVubGlu
a2VkID0gIXVubGluayhmc1JlcC5kYXRhKCkpOwogICAgIGlmICghdW5saW5rZWQgJiYgZXJybm8g
IT0gRU5PRU5UKQotICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJy
b3IgbWVzc2FnZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBMT0dfRVJST1IoIkZp
bGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3RyZXJyb3IoZXJy
bm8pKTsKIAogICAgIHJldHVybiB1bmxpbmtlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDc5NTY3MGZkNmQ4MDI3OGRmNmMxNzBiMjE2MmM0OGI1MmU5
Y2JiZWYuLmMzYmVjZDZkOGQ3NGQwYTYxYThjMWFiNDA3MzRhMTJhNWE0ZDY0NjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9F
bnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0yNjEsNyArMjYyLDcgQEAgYm9vbCBk
ZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5z
IDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55
IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVu
dCBmaWxlKQogICAgIGJvb2wgdW5saW5rZWQgPSAhdW5saW5rKGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghdW5saW5rZWQgJiYgZXJybm8gIT0gRU5PRU5U
KQotICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2Fn
ZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVk
IHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKIAog
ICAgIHJldHVybiB1bmxpbmtlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVh
ZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCmluZGV4
IDY0YjRjZDEyN2YzM2FlOTZiNzUxZGU3NjQ1NGJlYzQ1MTQzMDA5YmUuLmEzN2M0NWE3M2I3OTBi
ODFlZWQzNDdlOTNhYzI4Y2UwYWFiYTBjNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Ro
cmVhZHMvU2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNw
cApAQCAtNTMsNiArNTMsNyBAQCBleHRlcm4gIkMiIHsKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybVJlZ2lzdGVycy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkR3JvdXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL1dURkNvbmZpZy5oPgpAQCAtMzg0LDcgKzM4NSw3IEBAIHZvaWQganNjU2lnbmFsSGFu
ZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIHVjb250ZXh0KQogICAgICAgICBz
aWdmaWxsc2V0KCZkZWZhdWx0QWN0aW9uLnNhX21hc2spOwogICAgICAgICBkZWZhdWx0QWN0aW9u
LnNhX2ZsYWdzID0gMDsKICAgICAgICAgYXV0byByZXN1bHQgPSBzaWdhY3Rpb24oc2lnLCAmZGVm
YXVsdEFjdGlvbiwgbnVsbHB0cik7Ci0gICAgICAgIGRhdGFMb2dMbklmKHJlc3VsdCA9PSAtMSwg
IlVuYWJsZSB0byByZXN0b3JlIHRoZSBkZWZhdWx0IGhhbmRsZXIgd2hpbGUgcHJvY2Nlc3Npbmcg
c2lnbmFsICIsIHNpZywgIiB0aGUgcHJvY2VzcyBpcyBwcm9iYWJseSBkZWFkbG9ja2VkLiAoZXJy
bm86ICIsIHN0cmVycm9yKGVycm5vKSwgIikiKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYocmVzdWx0
ID09IC0xLCAiVW5hYmxlIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgaGFuZGxlciB3aGlsZSBwcm9j
Y2Vzc2luZyBzaWduYWwgIiwgc2lnLCAiIHRoZSBwcm9jZXNzIGlzIHByb2JhYmx5IGRlYWRsb2Nr
ZWQuIChlcnJubzogIiwgc2FmZVN0cmVycm9yKGVycm5vKSwgIikiKTsKICAgICB9OwogCiAgICAg
Ly8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGJlIGNhcmVmdWwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXgu
Y3BwCmluZGV4IDQ5MTExMzIxOTMyMWNkY2M0ZjI0Y2JjMzllYjdhNjUxOTRjODE3NjEuLjIzMjBm
ZDY2NWE1M2E5NGVhMGY0MzNmNmE1NDllOGJkNGI1MzVjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxwb2xsLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KIApAQCAt
MzUyLDcgKzM1Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcigpCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2lzQ29ubmVjdGVkKSB7Ci0gICAgICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciByZWNlaXZpbmcgSVBDIG1lc3NhZ2Ugb24gc29ja2V0
ICVkIGluIHByb2Nlc3MgJWQ6ICVzIiwgbV9zb2NrZXREZXNjcmlwdG9yLCBnZXRwaWQoKSwgc3Ry
ZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHJlY2Vp
dmluZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQgaW4gcHJvY2VzcyAlZDogJXMiLCBtX3NvY2tl
dERlc2NyaXB0b3IsIGdldHBpZCgpLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1v
cnlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4
LmNwcAppbmRleCA5OThhMmE3Njc5MzA1YTQzNWZhMzVjYzFhZWViNzA4ZjM0Njc1NTViLi4yNDJl
MWQ0MWEwNjJiN2Y3ODk2YWI4ZmM2NjA2NGY1MDZjMDIwNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNs
dWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgog
I2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNjUsNyArMTY2LDcgQEAg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkK
IHsKICAgICBpbnQgZmlsZURlc2NyaXB0b3IgPSBjcmVhdGVTaGFyZWRNZW1vcnkoKTsKICAgICBp
ZiAoZmlsZURlc2NyaXB0b3IgPT0gLTEpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQg
dG8gY3JlYXRlIHNoYXJlZCBtZW1vcnk6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY3JlYXRlIHNoYXJlZCBtZW1vcnk6ICVzIiwgc2FmZVN0
cmVycm9yKGVycm5vKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQppbmRleCBkZDUw
ZmI5ZWEzNzc0ZDViOTQ0NDYxMTAxZDVhZDliYTA3ZTVlOTEwLi44MzdlNjA3YmRmNjUzOGZlODI0
ODM1NzMyYjhjY2VhZDZkZmY3NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
QXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCA8d3RmL0Rh
dGFMb2cuaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUmFuZG9t
TnVtYmVyLmg+CisjaW1wb3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2Nv
cGUuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL1N5c3RlbVRy
YWNpbmcuaD4KQEAgLTI1MSw3ICsyNTIsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDU3RyaW5n
PiBzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyhjb25zdCBTYW5kYm94SW5pdAogICAg
ICAgICBjb25zdCBjaGFyKiBuYW1lID0gaW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLm5hbWUoaSk7
CiAgICAgICAgIGNvbnN0IGNoYXIqIHZhbHVlID0gaW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLnZh
bHVlKGkpOwogICAgICAgICBpZiAoc2FuZGJveF9zZXRfcGFyYW0oc2FuZGJveFBhcmFtZXRlcnMu
Z2V0KCksIG5hbWUsIHZhbHVlKSkgewotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291
bGQgbm90IHNldCBzYW5kYm94IHBhcmFtZXRlcjogJXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVy
cm9yKGVycm5vKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3Qgc2V0
IHNhbmRib3ggcGFyYW1ldGVyOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVy
cm5vKSk7CiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKG5hbWUsICc6JywgdmFsdWUsICc6Jyk7CkBAIC0yNzEsMTMgKzI3MiwxMyBAQCBzdGF0
aWMgU3RyaW5nIHNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkoKQogICAgIGNoYXIgdGVt
cFtQQVRIX01BWF07CiAgICAgc2l6ZV90IGxlbmd0aCA9IGNvbmZzdHIoX0NTX0RBUldJTl9VU0VS
X0NBQ0hFX0RJUiwgdGVtcCwgc2l6ZW9mKHRlbXApKTsKICAgICBpZiAoIWxlbmd0aCkgewotICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgcmV0cmlldmUgdXNlciB0ZW1wb3Jhcnkg
ZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOwor
ICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgcmV0cmlldmUgdXNlciB0ZW1wb3Jh
cnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJy
bm8pKTsKICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VS
VChsZW5ndGggPD0gc2l6ZW9mKHRlbXApKTsKICAgICBjaGFyIHJlc29sdmVkUGF0aFtQQVRIX01B
WF07CiAgICAgaWYgKCFyZWFscGF0aCh0ZW1wLCByZXNvbHZlZFBhdGgpKSB7Ci0gICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUgdXNlciB0ZW1wb3JhcnkgZGly
ZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXplIHVzZXIgdGVtcG9y
YXJ5IGRpcmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVy
cm5vKSk7CiAgICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc29s
dmVkUGF0aDsKQEAgLTM3Myw3ICszNzQsNyBAQCBzdGF0aWMgYm9vbCBlbnN1cmVTYW5kYm94Q2Fj
aGVEaXJlY3RvcnkoY29uc3QgU2FuZGJveEluZm8mIGluZm8pCiAgICAgICAgIGlmICghbWFrZURh
dGFWYXVsdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IFNhbmRib3ggZGlyZWN0b3J5IGNvdWxkbid0IGJlIGNyZWF0
ZWQ6ICIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXM6IFNhbmRib3ggZGlyZWN0b3J5IGNvdWxkbid0IGJlIGNyZWF0ZWQ6ICIsIGdldHBy
b2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogI2Vsc2UKQEAgLTUyMSw3ICs1MjIsNyBAQCBzdGF0aWMgYm9vbCB0cnlBcHBseUNhY2hl
ZFNhbmRib3goY29uc3QgU2FuZGJveEluZm8mIGluZm8pCiAgICAgc2V0Tm90aWZ5T3B0aW9ucygp
OwogCiAgICAgaWYgKHNhbmRib3hfYXBwbHkoJnByb2ZpbGUpKSB7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiJXM6IENvdWxkIG5vdCBhcHBseSBjYWNoZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2du
YW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxk
IG5vdCBhcHBseSBjYWNoZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJl
cnJvcihlcnJubykpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02MjMsNyAr
NjI0LDcgQEAgc3RhdGljIGJvb2wgYXBwbHlTYW5kYm94KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXQKICAgICBzZXROb3RpZnlPcHRpb25zKCk7
CiAgICAgCiAgICAgaWYgKHNhbmRib3hfYXBwbHkoc2FuZGJveFByb2ZpbGUuZ2V0KCkpKSB7Ci0g
ICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBhcHBseSBjb21waWxlZCBzYW5kYm94
OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNvbXBpbGVkIHNhbmRib3g6ICVzXG4iLCBnZXRw
cm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgQ1JBU0goKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdl
X21hbGxvYy5jIGIvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3BhZ2VfbWFs
bG9jLmMKaW5kZXggZjE1MTVhZjk5MGU5MmE3MTU4ZjM5YjRjYTk1NTgwMjk1MTMyODBkNi4uZGM4
OWY2OWNkZGUzMzE2NGU1MjAzMTE3OTA1YjgwODVhOTkxZmE3MCAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3BhZ2VfbWFsbG9jLmMKKysrIGIvU291cmNl
L2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3BhZ2VfbWFsbG9jLmMKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUg
PHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CiAjaW5jbHVkZSA8dW5pc3RkLmg+
CiAKIHNpemVfdCBwYXNfcGFnZV9tYWxsb2NfbnVtX2FsbG9jYXRlZF9ieXRlczsKQEAgLTE3Niw3
ICsxNzcsMTEgQEAgdm9pZCBwYXNfcGFnZV9tYWxsb2NfY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90
IHNpemUpCiAgICAgaWYgKHBhc19wYWdlX21hbGxvY19tcHJvdGVjdF9kZWNvbW1pdHRlZCkgewog
ICAgICAgICByZXN1bHQgPSBtcHJvdGVjdCgodm9pZCopYmFzZV9hc19pbnQsIGVuZF9hc19pbnQg
LSBiYXNlX2FzX2ludCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7CiAgICAgICAgIGlmIChyZXN1
bHQpIHsKLSAgICAgICAgICAgIHBhc19sb2coIkNvdWxkIG5vdCBtcHJvdGVjdCBvbiBjb21taXQ6
ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgY2hhciBidWZmZXJbMjA0OF07
CisgICAgICAgICAgICBhdXRvIHJldCA9IHN0cmVycm9yX3IoZXJybm8sIGJ1ZmZlciwgc2l6ZW9m
KGJ1ZmZlcikpOworICAgICAgICAgICAgLy8gSWYgeW91IGhpdCB0aGlzIHdoZW4gcG9ydGluZyBQ
QVMgdG8gTGludXgsIHRoZW4gc2VlIFdURidzIFNhZmVTdHJlcnJvci5jcHAuCisgICAgICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxkZWNsdHlwZShyZXQpLCBpbnQ+Ojp2YWx1ZSwg
IlRoaXMgY29kZSBleHBlY3RzIFBPU0lYIHN0cmVycm9yX3IsIG5vdCBHTlUgc3RyZXJyb3JfciIp
OworICAgICAgICAgICAgcGFzX2xvZygiQ291bGQgbm90IG1wcm90ZWN0IG9uIGNvbW1pdDogJXNc
biIsIGJ1ZmZlcik7CiAgICAgICAgICAgICBQQVNfQVNTRVJUKCFyZXN1bHQpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDVhZjBkMDkxMmU4MTg4NzMzMzUzZTc4YmYxODM1MDEwNDAzZmI3YzcuLmFiMDhkZDgwODZl
Y2QxOGVhNzRmOTg0YTQ3OTIwNDNhYTE2ODkzZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0xOSAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBEbyBub3Qg
dXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTEwLTE4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NDQxMy4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGVlZTNhZTcyNDE1OTI2ZGVmMDI3N2Fh
NDNlNWQ1ODRiZjMyOGZmNGEuLmZkZGQ2YWMwZTA4NTRjZTU5ODQyMTM1ZjRmZThjOGNkZDRhZjQ1
ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtODIsNiArODIsNyBAQCBzZXQo
VGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL1JvYmluSG9vZEhhc2hTZXQuY3BwCiAgICAg
VGVzdHMvV1RGL1J1bkxvb3AuY3BwCiAgICAgVGVzdHMvV1RGL1NIQTEuY3BwCisgICAgVGVzdHMv
V1RGL1NhZmVTdHJlcnJvci5jcHAKICAgICBUZXN0cy9XVEYvU2F0dXJhdGVkQXJpdGhtZXRpY09w
ZXJhdGlvbnMuY3BwCiAgICAgVGVzdHMvV1RGL1Njb3BlLmNwcAogICAgIFRlc3RzL1dURi9TY29w
ZWRMYW1iZGEuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
YWZlU3RyZXJyb3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2FmZVN0cmVy
cm9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZjdlMWI2MDVlMTRlOTJiNjUyMDFiYWM3N2FhZjdjZWExNjEx
YTI5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU2Fm
ZVN0cmVycm9yLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IFJlZCBIYXQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4K
KworI2luY2x1ZGUgPGNzdHJpbmc+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVT
VChXVEZfU2FmZVN0cmVycm9yLCBTdHJpbmdzQXJlRXF1YWwpCit7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgLy8gQWN0dWFsIHRleHQgb2YgZXJyb3JzIHNo
b3VsZCBiZSBpZGVudGljYWwuCisgICAgICAgIEVYUEVDVF9TVFJFUShzdHJlcnJvcihpKSwgc2Fm
ZVN0cmVycm9yKGkpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1NhZmVTdHJlcnJvciwgUG9pbnRl
cnNBcmVOb3RFcXVhbCkKK3sKKyAgICAvLyBTaW5jZSBzdHJlcnJvcigpIGdlbmVyYWxseSByZXR1
cm5zIHBvaW50ZXJzIHRoYXQgYXJlIG5vdCBzYWZlIHRvIHVzZSBpbiBtdWx0aXRocmVhZGVkCisg
ICAgLy8gcHJvZ3JhbXMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc2hvdyB0aGF0IHNhZmVTdHJlcnJv
cigpIHJldHVybnMgZGlmZmVyZW50IHBvaW50ZXJzLgorICAgIC8vIEFjY29yZGluZ2x5LCBJIHdh
cyB0ZW1wdGVkIHRvIGxvb3Agb3ZlciBhIGJ1bmNoIG9mIGRpZmZlcmVudCBlcnJvciBjb2RlcyBo
ZXJlIGFuZCB2ZXJpZnkgdGhhdAorICAgIC8vIHRoZSBwb2ludGVycyByZXR1cm5lZCBieSB0aGUg
dHdvIGZ1bmN0aW9ucyBhcmUgbm90IHRoZSBzYW1lLgorICAgIC8vCisgICAgLy8gQnV0IGlmIHdl
IGFyZSB1c2luZyBHTGliLCB0aGVuIHNhZmVTdHJlcnJvcigpIHdpbGwgcmV0dXJuIGEgcmVzdWx0
IHByb3ZpZGVkIGJ5IGdfc3RyZXJyb3IoKSwKKyAgICAvLyB3aGljaCBpbiB0dXJuIHJldHVybnMg
YSByZXN1bHQgcHJvdmlkZWQgYnkgc3RyZXJyb3JfcigpIChpZiBhdmFpbGFibGUpLiBUaGUgZ2xp
YmMgKEdOVSkKKyAgICAvLyB2ZXJzaW9uIG9mIHN0cmVycm9yX3IoKSBpcyB3ZWlyZCBpbiB0aGF0
IGl0IHdpbGwgdXN1YWxseSByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBzYW1lIHN0YXRpYworICAg
IC8vIG1lbW9yeSB0aGF0IHN0cmVycm9yKCkgcmV0dXJucywgYnV0IC0tIGNydWNpYWxseSAtLSBp
dCB3aWxsIG9ubHkgZG8gc28gd2hlbiBpdCBpcyBndWFyYW50ZWVkCisgICAgLy8gdGhhdCBnbGli
YyB3aWxsIG5ldmVyIG1vZGlmeSB0aGF0IHBvaW50ZXIuIFNvIHdoZW4gdXNpbmcgR0xpYiBhbmQg
Z2xpYmMsIGl0J3MgYWN0dWFsbHkgT0sgZm9yCisgICAgLy8gdGhlc2UgZnVuY3Rpb25zIHRvIHJl
dHVybiBtYXRjaGluZyBwb2ludGVyIHZhbHVlcy4gSG93ZXZlciwgaWYgd2UgcGFzcyBhbiBpbnZh
bGlkIGVycm9yIGNvZGUsCisgICAgLy8gdGhlbiBnbGliYyB3aWxsIG1vZGlmeSB0aGUgcmV0dXJu
ZWQgc3RyaW5nIGluIG9yZGVyIHRvIGFkZCB0aGUgaW52YWxpZCBlcnJvciBjb2RlIGRpcmVjdGx5
CisgICAgLy8gaW50byB0aGUgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHN0cmVycm9yX3IoKSB3aWxs
IG1ha2UgYSBjb3B5IHJhdGhlciB0aGFuIHJldHVybiB0aGUgc2FtZQorICAgIC8vIHN0YXRpYyBz
dHJpbmcgdGhhdCB3b3VsZCBiZSByZXR1cm5lZCBieSBlcnJuby4KKyAgICAvLworICAgIC8vIEl0
J3MgcXVlc3Rpb25hYmxlIHdoZXRoZXIgdGhpcyB0ZXN0IGlzIHRydWx5IHZhbHVhYmxlLCBzaW5j
ZSBpdCByZWxpZXMgb24gc28gbWFueQorICAgIC8vIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGJ1
dCBpdCdzIG5pY2UgdG8gc2hvdyB0aGF0IHNhZmVTdHJlcnJvcigpIGlzIGRvaW5nICpzb21ldGhp
bmcqCisgICAgLy8gZGlmZmVyZW50bHkgdGhhbiBub3JtYWwgc3RyZXJyb3IoKSwgZXZlbiBpZiB3
ZSBoYXZlIHRvIHJlbHkgb24gdGhpcyBlZGdlIGNhc2UgdG8gZG8gc28uCisgICAgRVhQRUNUX05F
KHN0cmVycm9yKDQyNDI0MiksIHNhZmVTdHJlcnJvcig0MjQyNDIpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441795</attachid>
            <date>2021-10-19 14:10:13 -0700</date>
            <delta_ts>2021-10-19 15:17:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211019161012.patch</filename>
            <type>text/plain</type>
            <size>36781</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MjhjZTYyYjhiYzQwZTVhMTUzNGQ2MjU3MjUzOGUxOTVhMTM2N2E0Li41ZjQ0NmM5ODc5YTQ3MWU3
Mzk5M2VjMzRkMjA2OGEyNzVmZjMwZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgV2Fz
bSBUYWJsZSBjYW4gdGFrZSBhcmJpdHJhcnkgZGVmYXVsdCB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3ZWU4YThhNmIz
YjgxODIxYTVhZTA4N2U2NGEzM2I4ZGYwYzQzOTQ3Li5kOGRhODNlYjBlZWM2MTY5NmViYjU0ZWRj
YmE3NDVjZjNjNjA5NGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTEwLTE5ICBNaWNoYWVs
IENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ug
c3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgbmV3IHNhZmVTdHJlcnJvciBmdW5jdGlvbiB0aGF0IHdlIGNhbiB1c2Ugd2l0aG91
dCBzYWZldHkgd29ycmllcy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvU2FmZVN0
cmVycm9yLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0
ZWNvZGVDYWNoZUVycm9yLmNwcC4KKyAgICAgICAgKFdURjo6c2FmZVN0cmVycm9yKToKKyAgICAg
ICAgKiB3dGYvU2FmZVN0cmVycm9yLmg6IEFkZGVkLgorICAgICAgICAqIHd0Zi9wbGF5c3RhdGlv
bi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1w
bDo6ZGVsZXRlRmlsZSk6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6
CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpkZWxldGVGaWxlKToKKyAgICAgICAgKiB3
dGYvdGhyZWFkcy9TaWduYWxzLmNwcDoKKyAgICAgICAgKFdURjo6anNjU2lnbmFsSGFuZGxlcik6
CisKIDIwMjEtMTAtMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdHJpbmdCdWZmZXIgc2hvdWxkIHJlYWxseSBrbm93IHRoYXQgc3RyaW5ncyBtaWdodCBiZSA4
LWJpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA3ZmI2YzZhOWE0NGQ4ZTIzM2NkZDdlOTM1ZWE0OWFjNzdkMzQ4MmUw
Li45ZmM2YTE2MzkyZWZlN2Y2YzhiOTNlNTQ3Yjg4YmM4MzVkYTZmMjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIxLTEwLTE5ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
Z25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlYWR5UmVhZEhh
bmRsZXIpOgorICAgICAgICAqIFBsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUpOgorICAgICAgICAqIFNoYXJl
ZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6c2V0QW5kU2Vy
aWFsaXplU2FuZGJveFBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpzYW5kYm94RGF0YVZh
dWx0UGFyZW50RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6ZW5zdXJlU2FuZGJveENhY2hl
RGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6dHJ5QXBwbHlDYWNoZWRTYW5kYm94KToKKyAg
ICAgICAgKFdlYktpdDo6YXBwbHlTYW5kYm94KToKKwogMjAyMS0xMC0xOSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjg0MDc5
KTogZmFzdC9jYW52YXMvZ3JhZGllbnQtd2l0aC1jbGlwLmh0bWwgYW5kIGZhc3QvY2FudmFzL2dy
YWRpZW50LXRleHQtd2l0aC1zaGFkb3cuaHRtbCBhcmUgZmxha3kgZmFpbHVyZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpp
bmRleCAxYzY1MmQxOWNlNmM0MDBiMWJmOWEyNDRhZTAwODU1MWQ5NjBhNzc1Li4zMWVkN2ExOTcx
MDcwNTY2NzVmMjBiNDFhZmU2YzA0NDQzZmRlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+
CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdlX21h
bGxvYy5jOgorICAgICAgICAocGFzX3BhZ2VfbWFsbG9jX2NvbW1pdCk6CisKIDIwMjEtMTAtMTYg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjg0MzA1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQu
bW0KaW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NC4uODUwMzQ3
YjdjZDcxMjYwYTBiZjY1OTA3NTBhOWE0NTBkYzMxMWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxzeXMvc3RhdC5oPgog
I2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9TSEExLmg+CisjaW1wb3J0
IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQgPHd0
Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJLmg+
CkBAIC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVycm9yCiAg
ICAgY29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0aFN0cmluZyBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAgIGludCBmZCA9IG9wZW4oY2Fj
aGVGaWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExPQ0sgfCBPX05PTkJMT0NLLCAw
NjAwKTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJD
b3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxpa2Vs
eSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2luZyBpdC4gRXJyb3I6ICIsIHN0
cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9w
ZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQncyBsaWtlbHkgYW5vdGhlciBW
TSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9yOiAiLCBzYWZlU3RyZXJyb3Io
ZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9CiAKQEAgLTMxNCw3ICsz
MTUsNyBAQCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJyb3IKIAogICAgIGludCB0ZW1w
RkQgPSBvcGVuKHRlbXBGaWxlTmFtZSwgT19DUkVBVCB8IE9fUkRXUiB8IE9fRVhMT0NLIHwgT19O
T05CTE9DSywgMDYwMCk7CiAgICAgaWYgKHRlbXBGRCA9PSAtMSkgewotICAgICAgICBlcnJvciA9
IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIG9yIGxvY2sgdGhlIGJ5dGVjb2RlIGNhY2hlIHRl
bXAgZmlsZS4gRXJyb3I6ICIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFr
ZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgdGVtcCBm
aWxlLiBFcnJvcjogIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm4gTk87CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGku
bW0KaW5kZXggZjJlYzQyYmE4ODhhZjc0OWE2MDRjNzgwN2ZlM2Y1NTEzOTQ2NTRlYy4uM2ZjM2E5
ZTAyMzc0Nzc0MjcwMzE5MDQ2MDUyOWM5MGRlNWEwOWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiSlNX
cmFwcGVyTWFwVGVzdHMuaCIKICNpbXBvcnQgIlJlZ3Jlc3MxNDEyNzUuaCIKICNpbXBvcnQgIlJl
Z3Jlc3MxNDE4MDkuaCIKKyNpbXBvcnQgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbXBvcnQgPHd0
Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQSS5oPgogCiAKQEAgLTI0NDgsNyArMjQ0OSw3IEBAIHN0
YXRpYyBOU1VSTCAqcmVzb2x2ZVBhdGhUb1NjcmlwdHMoKQogICAgICAgICBjb25zdCBzaXplX3Qg
bWF4TGVuZ3RoID0gMTAwMDA7CiAgICAgICAgIGNoYXIgY3dkW21heExlbmd0aF07CiAgICAgICAg
IGlmICghZ2V0Y3dkKGN3ZCwgbWF4TGVuZ3RoKSkgewotICAgICAgICAgICAgTlNMb2coQCJnZXRj
d2QgZXJyb3JlZCB3aXRoIGNvZGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAg
IE5TTG9nKEAiZ2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIsIHNhZmVTdHJlcnJvcihlcnJu
bykuZGF0YSgpKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAgTlNV
UkwgKmN3ZFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlcyIsIGN3ZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0ZjRlMjVjM2QyY2Ez
OWQ0YWNlMTY1MzZiOGMyZjdlNDlhNDJjNGQ2Li5mYjEwZDY2MzA1MTdlYTQwNjJhZDA3OGE0OWMx
YWZlMGM4MDljNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODgsNiArODgsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Nh
ZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4MTksNyArMTgyMCw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk9wZW5GaWxlLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBGSUxFKiBkZXNjcmlwdG9yID0gZm9w
ZW4oZmlsZVBhdGguZmlsZVN5c3RlbVBhdGgoKS5hc2NpaSgpLmRhdGEoKSwgInIiKTsKICAgICBp
ZiAoIWRlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291
bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhhZCBl
cnJvcjogIl9zLCBzdHJlcnJvcihlcnJubykpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwg
bWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygp
LCAiIGZvcGVuIGhhZCBlcnJvcjogIl9zLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSkpKTsK
IAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTRmlsZURl
c2NyaXB0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRlc2NyaXB0b3IpKSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVD
YWNoZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2RlQ2Fj
aGVFcnJvci5jcHAKaW5kZXggNzZmMTAyZjkwMTA2NTkyYTA3MjI1OTkyNTE3ODRkMDI2N2I2YTg2
Yi4uYTlmY2IzZWYyNTQ5NjJlYzljMGQ4NDFmZjdhMmZmZjFjNjE4NmZlZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwCkBA
IC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVD
YWNoZUVycm9yLmgiCiAKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CisKIG5hbWVzcGFj
ZSBKU0MgewogCiBib29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcjo6aXNWYWxp
ZCgpIGNvbnN0CkBAIC0zNSw3ICszNyw3IEBAIGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpTdGFu
ZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QKIAogU3RyaW5nIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6
U3RhbmRhcmRFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cmVycm9yKG1f
ZXJybm8pOworICAgIHJldHVybiBzYWZlU3RyZXJyb3IobV9lcnJubykuZGF0YSgpOwogfQogCiBi
b29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6V3JpdGVFcnJvcjo6aXNWYWxpZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcAppbmRl
eCAwMDdiMjUzZTY0OWYxYTVmYTI2ZWU3MjZiMDA0MDgzNmQ5NTNiODkwLi4wNjBlNDY2YjZhMzE3
MzA4NTQ0MDRmMjUwZDcxNjljODU0YjJiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTQ1LDcgKzQ2LDcgQEAgRnVuY3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KGNvbnN0
IGNoYXIqIGZpbGVuYW1lKQogICAgICAgICAgICAgbV9oYXNBY3RpdmVBbGxvd2xpc3QgPSB0cnVl
OwogICAgICAgICAgICAgbV9lbnRyaWVzLmFkZChmaWxlbmFtZSk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMuIERpZCB5b3UgYWRk
IHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0byBXZWJQcm9jZXNzLnNiPyBFcnJvciBj
b2RlOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBkYXRh
TG9nRigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcy4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVhZC1k
YXRhIGVudGl0bGVtZW50IHRvIFdlYlByb2Nlc3Muc2I/IEVycm9yIGNvZGU6ICVzXG4iLCBmaWxl
bmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC03Myw3ICs3NCw3IEBAIEZ1bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93bGlz
dChjb25zdCBjaGFyKiBmaWxlbmFtZSkKIAogICAgIGludCByZXN1bHQgPSBmY2xvc2UoZik7CiAg
ICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVz
OiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGRhdGFMb2dGKCJG
YWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3IoZXJy
bm8pLmRhdGEoKSk7CiB9CiAKIGJvb2wgRnVuY3Rpb25BbGxvd2xpc3Q6OmNvbnRhaW5zKENvZGVC
bG9jayogY29kZUJsb2NrKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29s
cy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKaW5kZXggY2U5NGUyYmRjYjE4MGYzMzIyOWQ0ZGNiNmU4
YTFhOGU1OWFjN2ZjOS4uMzBmNWU3NmM5MTRlNjQ4ODFlNDE4ZTZlMzkzYjJiOTI1NDc3MWMzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CkBAIC0yODMsNyArMjg0LDcgQEAgdm9pZCBGdW5jdGlvbk92ZXJyaWRlczo6cGFyc2VP
dmVycmlkZXNJbkZpbGUoY29uc3QgY2hhciogZmlsZU5hbWUpCiAgICAgCiAgICAgaW50IHJlc3Vs
dCA9IGZjbG9zZShmaWxlKTsKICAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nRigiRmFp
bGVkIHRvIGNsb3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlTmFtZSwgc3RyZXJyb3IoZXJybm8pKTsK
KyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmlsZU5h
bWUsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCA1MzI5
NWI4YTAyZGY0MzQ0ZjRkZGE5YTg3Yjc4ZWM1NWI3ZThjYjk4Li40NDA3NTk1MmYwMDc2OWRiMmI5
MDE2MDBiMTAxYmYyYmRlNGI2ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TWVtb3J5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgog
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+Cisj
aW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTMwMSw3ICszMDIsNyBAQCBNZW1vcnlIYW5kbGU6
On5NZW1vcnlIYW5kbGUoKQogICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICBjYXNl
IE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKICAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnks
IE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7Ci0g
ICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJu
byksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwg
c2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtZW1v
cnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KTsKQEAgLTMxMyw3ICszMTQsNyBAQCBN
ZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiB7CiAgICAgICAgICAgICAg
ICAgaWYgKG1wcm90ZWN0KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwgUFJP
VF9XUklURSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVk
OiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpLCAiXG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVHcm93YWJs
ZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSk7CkBAIC00MDYs
NyArNDA3LDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50IGlu
aXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGEKICAgICAKICAgICBpZiAoZmFzdE1l
bW9yeSkgewogICAgICAgICBpZiAobXByb3RlY3QoZmFzdE1lbW9yeSArIGluaXRpYWxCeXRlcywg
TWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkgewot
ICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyks
ICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZlU3Ry
ZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDMsNyBAQCBSZWZQdHI8TWVt
b3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGlt
dW0sIE1lbW9yeVNoYQogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1wcm90ZWN0KHNsb3dNZW1v
cnkgKyBpbml0aWFsQnl0ZXMsIG1heGltdW1CeXRlcyAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05F
KSkgewotICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihl
cnJubyksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBz
YWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTUxNiw3ICs1MTcsNyBAQCBFeHBl
Y3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1NoYXJl
ZChQYWdlQ291bnQgZGVsdGEpCiAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtp
bmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQr
d3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9p
bnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90
ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8p
LCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0
cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkBAIC02MDUsNyArNjA2LDcgQEAgRXhwZWN0ZWQ8
UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3coUGFnZUNvdW50
IGRlbHRhKQogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtpbmcg
V2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQrd3Jp
dGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9pbnRl
cihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90ZWN0
KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsKLSAg
ICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAi
XG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0cmVy
cm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBiMzE5ZmIzMTNiZTA2MzE4Y2I3M2I4ZDlmNGQ0Y2JhMmNmYTAyN2ViLi4z
ZWMwMzkxZjdjNzM3YTNhZjE2MjQ3MzZiYjg1MTJhNTJkN2IxZTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTczLDYgKzczLDcgQEAKIAkJMzM3QjJENkEy
NjU0NkVCMzAwRERGRDNEIC8qIExpa2VseURlbnNlVW5zaWduZWRJbnRlZ2VyU2V0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzN0IyRDY4MjY1NDZF
QUEwMERERkQzRCAvKiBMaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5jcHAgKi87IH07CiAJ
CTQ0MjdDNUFBMjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2MTJB
NCAvKiBBU0NJSUNUeXBlLmNwcCAqLzsgfTsKIAkJNDZCRUI2RUIyMkZGRTI0OTAwMjY5ODY3IC8q
IFJlZkNvdW50ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovOyB9Owor
CQk0NkU5MzA0OTI3MUYxMjA1MDA1QkE2RTUgLyogU2FmZVN0cmVycm9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTQzNjQ3MjcxRjEwQUEwMEM4
OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovOyB9OwogCQk1MERFMzVGNTIxNUJCMDE1MDBCOTc5
QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUwREUzNUYzMjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0
cmluZ0ltcGwuY3BwICovOyB9OwogCQk1MTVGNzk0RTFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE1Rjc5NEIxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCAq
LzsgfTsKIAkJNTE3RjgyRDcxRkQyMkYzMDAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hhbmRs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
RjgyRDUxRkQyMkYyRjAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwICovOyB9
OwpAQCAtMzk3LDYgKzM5OCw4IEBACiAJCTQ2MjA5QTI3MjY2RDU0M0EwMDdGOEY0QSAvKiBDYW5j
ZWxsYWJsZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FuY2VsbGFibGVUYXNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkE5RUFCMUY0Q0Q2MUUwMDlBMkJCQyAvKiBDb21wbGV0
aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wbGV0aW9u
SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFOTIyRkZEREQ1
MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3VudGVk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFNDM2NDYyNzFGMTBBQTAwQzg4
QzkwIC8qIFNhZmVTdHJlcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlU3RyZXJyb3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8qIFNh
ZmVTdHJlcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYWZlU3RyZXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJCMDE1MDBCOTc5QzcgLyogRXh0
ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEV4dGVybmFsU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUw
REUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJbXBsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxM0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5nQWNj
dW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZ0FjY3Vt
dWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc3LDYgKzEyODAsOCBA
QAogCQkJCUUzMUNGMEE1MjYxMDU4NTgwMDM2RTY3MyAvKiBSb2Jpbkhvb2RIYXNoVGFibGUuaCAq
LywKIAkJCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi8sCiAJCQkJ
MkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLywKKwkJCQk0NkU0MzY0NzI3
MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmNwcCAqLywKKwkJCQk0NkU0MzY0NjI3MUYx
MEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmggKi8sCiAJCQkJMTRGM0IwRjYxNUU0NUU0NjAw
MjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLywKIAkJCQkxNDY5NDE5NDE2RUFBRkY4
MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAwMzE3
MjlCIC8qIFNjb3BlLmggKi8sCkBAIC0xODIxLDYgKzE4MjYsNyBAQAogCQkJCTJDREVEMEYzMTgx
MTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEVG
MTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNB
ODVDQTkyNDFCMEIyNjAwNzFDMkY1IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQ2RTkzMDQ5MjcxRjEyMDUwMDVCQTZFNSAvKiBTYWZlU3Ry
ZXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVDM0QyMUZGQUM3RDAwRkFCRDYxIC8q
IFNjaGVkdWxlUGFpckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU1QzQwMjFGRkFDQTIw
MEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4
RTFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKaW5kZXggZjEwYzgxYTU3NTk5YjBkMDZlMTM2MTMxOWQ0NjcwMzYzMTI0OGZhNS4u
NGUzOGFhYTkzMGQ0MTA3MjdlZDM3NDliMmM3NDEyMjM4ZDZhY2FiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKQEAgLTIzMCw2ICsyMzAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgUm9i
aW5Ib29kSGFzaFRhYmxlLmgKICAgICBSdW5Mb29wLmgKICAgICBTSEExLmgKKyAgICBTYWZlU3Ry
ZXJyb3IuaAogICAgIFNhdHVyYXRlZEFyaXRobWV0aWMuaAogICAgIFNjaGVkdWxlUGFpci5oCiAg
ICAgU2NvcGUuaApAQCAtNDU5LDYgKzQ2MCw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFJlZkNv
dW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCisgICAg
U2FmZVN0cmVycm9yLmNwcAogICAgIFNlY29uZHMuY3BwCiAgICAgU2VnbWVudGVkVmVjdG9yLmNw
cAogICAgIFNpeENoYXJhY3Rlckhhc2guY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
YWZlU3RyZXJyb3IuY3BwIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NjFmYmQ3MDQ4YWFkZjBhMjIyMDFmNmFjNmI0ZDY1MzU2MDQxZTVjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcApAQCAtMCwwICsxLDY1IEBA
CisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KKworI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8
dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9j
a2VyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0UoR0xJ
QikKKyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK0NTdHJp
bmcgc2FmZVN0cmVycm9yKGludCBlcnJudW0pCit7CisgICAgY2hhciBidWZmZXJbMTAyNF07Cisg
ICAgY2hhciogbWVzc2FnZSA9IG51bGxwdHI7CisjaWYgT1MoV0lORE9XUykKKyAgICBzdHJlcnJv
cl9zKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGVycm51bSk7CisgICAgbWVzc2FnZSA9IGJ1ZmZl
cjsKKyNlbHNlCisgICAgYXV0byByZXQgPSBzdHJlcnJvcl9yKGVycm51bSwgYnVmZmVyLCBzaXpl
b2YoYnVmZmVyKSk7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUocmV0
KSwgY2hhcio+Ojp2YWx1ZSkgeworICAgICAgICAvLyBXZSBoYXZlIEdOVSBzdHJlcnJvcl9yKCks
IHdoaWNoIHJldHVybnMgY2hhciouCisgICAgICAgIG1lc3NhZ2UgPSByZWludGVycHJldF9jYXN0
PGNoYXIqPihyZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGhhdmUgUE9TSVggc3Ry
ZXJyb3Jfciwgd2hpY2ggcmV0dXJucyBpbnQuCisgICAgICAgIGlmIChyZXQpCisgICAgICAgICAg
ICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJXMgJWQiLCAiVW5rbm93biBlcnJv
ciIsIGVycm51bSk7CisgICAgICAgIG1lc3NhZ2UgPSBidWZmZXI7CisgICAgfQorI2VuZGlmIC8v
IE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIENTdHJpbmcobWVzc2FnZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmggYi9T
b3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2ZjNTdlMTUzMzk3YTYy
YzFiMDk3M2ZjNTNhOTc2YmUyNGY5ODFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvU2FmZVN0cmVycm9yLmgKQEAgLTAsMCArMSw0OCBAQAorLyogCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworLy8gVGhpcyBpcyBzdHJlcnJvciwgZXhjZXB0IGl0IGlzIHRocmVh
ZHNhZmUuIFRoZSBwcm9ibGVtIHdpdGggbm9ybWFsIHN0cmVycm9yIGlzIGl0IHJldHVybnMgYQor
Ly8gcG9pbnRlciB0byBzdGF0aWMgc3RvcmFnZSwgYW5kIGl0IG1heSBhY3R1YWxseSBtb2RpZnkg
dGhhdCBzdG9yYWdlLCBzbyBpdCBjYW4gbmV2ZXIgYmUgdXNlZCBpbgorLy8gYW55IG11bHRpdGhy
ZWFkZWQgYXBwbGljYXRpb24sIG9yIGFueSBsaWJyYXJ5IHRoYXQgbWF5IGJlIGxpbmtlZCB0byBh
IG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb24uCisvLyAoV2h5IGRvZXMgaXQgbW9kaWZ5IGl0cyBz
dG9yYWdlPyBTbyB0aGF0IGl0IGNhbiBhcHBlbmQgdGhlIGVycm9yIG51bWJlciB0byB0aGUgZXJy
b3Igc3RyaW5nLCBhcworLy8gaW4gIlVua25vd24gZXJyb3Igbi4iIEFsc28sIGJlY2F1c2UgaXQg
d2lsbCBsb2NhbGl6ZSB0aGUgZXJyb3IgbWVzc2FnZS4pIFRoZSBzdGFuZGFyZAorLy8gYWx0ZXJu
YXRpdmVzIGFyZSBzdHJlcnJvcl9zIGFuZCBzdHJlcnJvcl9yLCBidXQgYm90aCBoYXZlIHByb2Js
ZW1zLiBzdHJlcnJvcl9zIGlzIHNwZWNpZmllZCBieQorLy8gQzExLCBidXQgbm90IGJ5IEMrKyAo
YXMgb2YgQysrMjApLCBhbmQgaXQgaXMgb3B0aW9uYWwgc28gZ2xpYmMgZGVjaWRlZCB0byBpZ25v
cmUgaXQuIFdlIGNhbiBvbmx5CisvLyByZWx5IG9uIGl0IHRvIGV4aXN0IG9uIFdpbmRvd3MuIFRo
ZW4gc3RyZXJyb3JfciBpcyBldmVuIHdvcnNlLiBGaXJzdCwgaXQgZG9lc24ndCBleGlzdCBhdCBh
bGwgb24KKy8vIFdpbmRvd3MuIFNlY29uZCwgdGhlIEdOVSB2ZXJzaW9uIGlzIGluY29tcGF0aWJs
ZSB3aXRoIHRoZSBQT1NJWCB2ZXJzaW9uLCBhbmQgaXQgaXMgaW1wb3NzaWJsZSB0bworLy8gdXNl
IGNvcnJlY3RseSB1bmxlc3MgeW91IGtub3cgd2hpY2ggdmVyc2lvbiB5b3UgaGF2ZS4gQm90aCBz
dHJlcnJvcl9zIGFuZCBzdHJlcnJvcl9yIGFyZQorLy8gY3VtYmVyc29tZSBiZWNhdXNlIHRoZXkg
Zm9yY2UgeW91IHRvIGFsbG9jYXRlIHRoZSBidWZmZXIgZm9yIHRoZSByZXN1bHQgbWFudWFsbHku
IEl0J3MgYWxsIHN1Y2ggYQorLy8gbWVzcyB0aGF0IHdlIHNob3VsZCBkZWFsIHdpdGggdGhlIGNv
bXBsZXhpdHkgaGVyZSByYXRoZXIgdGhhbiBlbHNld2hlcmUgaW4gV2ViS2l0LgorV1RGX0VYUE9S
VF9QUklWQVRFIENTdHJpbmcgc2FmZVN0cmVycm9yKGludCBlcnJudW0pOworCit9CisKK3VzaW5n
IFdURjo6c2FmZVN0cmVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGxheXN0YXRp
b24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9u
L0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2MzI1MjQxYTFlN2I5NzE3
MzA3Y2ZhZWI2YmQ4YzM0Yy4uYjg4MGViNzdkYjBiOWU1MTczZmQ1MTNlOTcwMGEwMTRiYjc2NGVl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlT
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxh
eVN0YXRpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4K
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3
dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CiBuYW1lc3BhY2UgV1RGIHsKQEAgLTg4LDcgKzg5LDcgQEAgYm9vbCBkZWxldGVGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1
bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGlu
Y2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQogICAgIGJv
b2wgdW5saW5rZWQgPSAhdW5saW5rKGZzUmVwLmRhdGEoKSk7CiAgICAgaWYgKCF1bmxpbmtlZCAm
JiBlcnJubyAhPSBFTk9FTlQpCi0gICAgICAgIExPR19FUlJPUigiRmlsZSBmYWlsZWQgdG8gZGVs
ZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIExPR19F
UlJPUigiRmlsZSBmYWlsZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHNhZmVTdHJl
cnJvcihlcnJubykuZGF0YSgpKTsKIAogICAgIHJldHVybiB1bmxpbmtlZDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDc5NTY3MGZkNmQ4MDI3OGRmNmMx
NzBiMjE2MmM0OGI1MmU5Y2JiZWYuLmYxMjEyNTM4NzYzNDUzNTQxOTI0M2Q4MWVjNmM0ZmYwYjFi
ZjAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgog
I2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0yNjEsNyAr
MjYyLDcgQEAgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyB1bmxp
bmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQg
bm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25z
IG9yIG5vbi1leGlzdGVudCBmaWxlKQogICAgIGJvb2wgdW5saW5rZWQgPSAhdW5saW5rKGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghdW5saW5rZWQgJiYg
ZXJybm8gIT0gRU5PRU5UKQotICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0
ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBMT0dfRVJS
T1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3RyZXJy
b3IoZXJybm8pLmRhdGEoKSk7CiAKICAgICByZXR1cm4gdW5saW5rZWQ7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIvU291cmNlL1dURi93dGYvdGhy
ZWFkcy9TaWduYWxzLmNwcAppbmRleCA2NGI0Y2QxMjdmMzNhZTk2Yjc1MWRlNzY0NTRiZWM0NTE0
MzAwOWJlLi5jNTJkMjgyMmMwNjBmMjBiMzRiNjU4NTAzYmMzZTk5ZGQ4ZGVmZWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RocmVhZHMvU2lnbmFscy5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgZXh0ZXJuICJDIiB7CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KKyNpbmNsdWRlIDx3dGYvU2Fm
ZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZEdyb3VwLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KQEAgLTM4NCw3ICszODUs
NyBAQCB2b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lk
KiB1Y29udGV4dCkKICAgICAgICAgc2lnZmlsbHNldCgmZGVmYXVsdEFjdGlvbi5zYV9tYXNrKTsK
ICAgICAgICAgZGVmYXVsdEFjdGlvbi5zYV9mbGFncyA9IDA7CiAgICAgICAgIGF1dG8gcmVzdWx0
ID0gc2lnYWN0aW9uKHNpZywgJmRlZmF1bHRBY3Rpb24sIG51bGxwdHIpOwotICAgICAgICBkYXRh
TG9nTG5JZihyZXN1bHQgPT0gLTEsICJVbmFibGUgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5k
bGVyIHdoaWxlIHByb2NjZXNzaW5nIHNpZ25hbCAiLCBzaWcsICIgdGhlIHByb2Nlc3MgaXMgcHJv
YmFibHkgZGVhZGxvY2tlZC4gKGVycm5vOiAiLCBzdHJlcnJvcihlcnJubyksICIpIik7CisgICAg
ICAgIGRhdGFMb2dMbklmKHJlc3VsdCA9PSAtMSwgIlVuYWJsZSB0byByZXN0b3JlIHRoZSBkZWZh
dWx0IGhhbmRsZXIgd2hpbGUgcHJvY2Nlc3Npbmcgc2lnbmFsICIsIHNpZywgIiB0aGUgcHJvY2Vz
cyBpcyBwcm9iYWJseSBkZWFkbG9ja2VkLiAoZXJybm86ICIsIHNhZmVTdHJlcnJvcihlcnJubyku
ZGF0YSgpLCAiKSIpOwogICAgIH07CiAKICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gYnV0
IHdlIG1pZ2h0IGFzIHdlbGwgYmUgY2FyZWZ1bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNDkxMTEzMjE5MzIxY2RjYzRm
MjRjYmMzOWViN2E2NTE5NGM4MTc2MS4uZmEzNzQ1NWE5NWJlMWFmM2U3NThlMmNkNDgzZjZjMjUz
OGM1NjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25u
ZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25u
ZWN0aW9uVW5peC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2lu
Y2x1ZGUgPHBvbGwuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVk
ZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogCkBAIC0zNTIsNyArMzUzLDcgQEAgdm9pZCBDb25uZWN0
aW9uOjpyZWFkeVJlYWRIYW5kbGVyKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KG1faXNDb25uZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHJl
Y2VpdmluZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQgaW4gcHJvY2VzcyAlZDogJXMiLCBtX3Nv
Y2tldERlc2NyaXB0b3IsIGdldHBpZCgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgcmVjZWl2aW5nIElQQyBtZXNzYWdlIG9uIHNvY2tldCAl
ZCBpbiBwcm9jZXNzICVkOiAlcyIsIG1fc29ja2V0RGVzY3JpcHRvciwgZ2V0cGlkKCksIHNhZmVT
dHJlcnJvcihlcnJubykuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xv
c2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAppbmRleCA5OThhMmE3Njc5
MzA1YTQzNWZhMzVjYzFhZWViNzA4ZjM0Njc1NTViLi5mMzQ2NjZiYzhlMDA1MjJmNjQ1NGRhYjI0
MmUwZDQwNzUyZjEwMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgv
U2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1No
YXJlZE1lbW9yeVVuaXguY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVy
Lmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CkBAIC0xNjUsNyArMTY2LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKIHsKICAgICBpbnQgZmlsZURlc2Ny
aXB0b3IgPSBjcmVhdGVTaGFyZWRNZW1vcnkoKTsKICAgICBpZiAoZmlsZURlc2NyaXB0b3IgPT0g
LTEpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY3JlYXRlIHNoYXJlZCBtZW1v
cnk6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQg
dG8gY3JlYXRlIHNoYXJlZCBtZW1vcnk6ICVzIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggZGQ1MGZiOWVhMzc3NGQ1Yjk0
NDQ2MTEwMWQ1YWQ5YmEwN2U1ZTkxMC4uZDgwZGFlMWIxYzhiMmQxZjZhYTQ2ZjIwYzk4NWRkNWU2
NmUzNjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nl
c3NNYWMubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CiAjaW1w
b3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgorI2lt
cG9ydCA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1wb3J0
IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBAIC0y
NTEsNyArMjUyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gc2V0QW5kU2VyaWFs
aXplU2FuZGJveFBhcmFtZXRlcnMoY29uc3QgU2FuZGJveEluaXQKICAgICAgICAgY29uc3QgY2hh
ciogbmFtZSA9IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5uYW1lKGkpOwogICAgICAgICBjb25z
dCBjaGFyKiB2YWx1ZSA9IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy52YWx1ZShpKTsKICAgICAg
ICAgaWYgKHNhbmRib3hfc2V0X3BhcmFtKHNhbmRib3hQYXJhbWV0ZXJzLmdldCgpLCBuYW1lLCB2
YWx1ZSkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBzZXQgc2Fu
ZGJveCBwYXJhbWV0ZXI6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOwor
ICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IHNldCBzYW5kYm94IHBhcmFt
ZXRlcjogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsK
ICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQo
bmFtZSwgJzonLCB2YWx1ZSwgJzonKTsKQEAgLTI3MSwxMyArMjcyLDEzIEBAIHN0YXRpYyBTdHJp
bmcgc2FuZGJveERhdGFWYXVsdFBhcmVudERpcmVjdG9yeSgpCiAgICAgY2hhciB0ZW1wW1BBVEhf
TUFYXTsKICAgICBzaXplX3QgbGVuZ3RoID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVf
RElSLCB0ZW1wLCBzaXplb2YodGVtcCkpOwogICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3Rv
cnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
IFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykuZGF0
YSgpKTsKICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VS
VChsZW5ndGggPD0gc2l6ZW9mKHRlbXApKTsKICAgICBjaGFyIHJlc29sdmVkUGF0aFtQQVRIX01B
WF07CiAgICAgaWYgKCFyZWFscGF0aCh0ZW1wLCByZXNvbHZlZFBhdGgpKSB7Ci0gICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUgdXNlciB0ZW1wb3JhcnkgZGly
ZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXplIHVzZXIgdGVtcG9y
YXJ5IGRpcmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVy
cm5vKS5kYXRhKCkpOwogICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAgICAgfQogICAgIHJldHVy
biByZXNvbHZlZFBhdGg7CkBAIC0zNzMsNyArMzc0LDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlU2Fu
ZGJveENhY2hlRGlyZWN0b3J5KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogICAgICAgICBpZiAo
IW1ha2VEYXRhVmF1bHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBTYW5kYm94IGRpcmVjdG9yeSBjb3VsZG4ndCBi
ZSBjcmVhdGVkOiAiLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBX
VEZMb2dBbHdheXMoIiVzOiBTYW5kYm94IGRpcmVjdG9yeSBjb3VsZG4ndCBiZSBjcmVhdGVkOiAi
LCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAjZWxzZQpAQCAtNTIxLDcgKzUyMiw3IEBAIHN0YXRpYyBib29s
IHRyeUFwcGx5Q2FjaGVkU2FuZGJveChjb25zdCBTYW5kYm94SW5mbyYgaW5mbykKICAgICBzZXRO
b3RpZnlPcHRpb25zKCk7CiAKICAgICBpZiAoc2FuZGJveF9hcHBseSgmcHJvZmlsZSkpIHsKLSAg
ICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBzYW5kYm94OiAl
c1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25h
bWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC02MjMsNyArNjI0LDcgQEAgc3RhdGljIGJvb2wgYXBwbHlTYW5kYm94KGNv
bnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXQKICAg
ICBzZXROb3RpZnlPcHRpb25zKCk7CiAgICAgCiAgICAgaWYgKHNhbmRib3hfYXBwbHkoc2FuZGJv
eFByb2ZpbGUuZ2V0KCkpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBh
cHBseSBjb21waWxlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJy
bm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNvbXBpbGVk
IHNhbmRib3g6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEo
KSk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYyBiL1NvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc19wYWdlX21hbGxvYy5jCmluZGV4IGYxNTE1YWY5OTBlOTJhNzE1
OGYzOWI0Y2E5NTU4MDI5NTEzMjgwZDYuLjRhODMwYzI2NjU4ZjBkZWFkZjZiOWM2MjhjODU0NTZj
MzMwMGJlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bh
c19wYWdlX21hbGxvYy5jCisrKyBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bh
c19wYWdlX21hbGxvYy5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHR5cGVf
dHJhaXRzPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiBzaXplX3QgcGFzX3BhZ2VfbWFsbG9jX251
bV9hbGxvY2F0ZWRfYnl0ZXM7CkBAIC0xNzYsNyArMTc3LDcgQEAgdm9pZCBwYXNfcGFnZV9tYWxs
b2NfY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiAgICAgaWYgKHBhc19wYWdlX21hbGxv
Y19tcHJvdGVjdF9kZWNvbW1pdHRlZCkgewogICAgICAgICByZXN1bHQgPSBtcHJvdGVjdCgodm9p
ZCopYmFzZV9hc19pbnQsIGVuZF9hc19pbnQgLSBiYXNlX2FzX2ludCwgUFJPVF9SRUFEIHwgUFJP
VF9XUklURSk7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHBhc19sb2coIkNv
dWxkIG5vdCBtcHJvdGVjdCBvbiBjb21taXQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworICAg
ICAgICAgICAgcGFzX2xvZygiQ291bGQgbm90IG1wcm90ZWN0IG9uIGNvbW1pdDogZXJyb3IgY29k
ZSAlZFxuIiwgcmVzdWx0KTsKICAgICAgICAgICAgIFBBU19BU1NFUlQoIXJlc3VsdCk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZjAzNmNlODdlODZmODRiNDVjNGU2YTdkMjdkYjNiN2FmZDBkMmUwOC4uYjMzYmM0
NmEzYWM0ZDljMDc0MGIwNGJlMjc5MGE3ODYxNWQ4MTE3YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTE5
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERv
IG5vdCB1c2Ugc3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHA6IEFkZGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMTAtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggaU9TIEFQSSB0ZXN0cyBhZnRl
ciByMjg0MzA0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZWUzYWU3MjQxNTky
NmRlZjAyNzdhYTQzZTVkNTg0YmYzMjhmZjRhLi5mZGRkNmFjMGUwODU0Y2U1OTg0MjEzNWY0ZmU4
YzhjZGQ0YWY0NWUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTgyLDYgKzgy
LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9Sb2Jpbkhvb2RIYXNoU2V0
LmNwcAogICAgIFRlc3RzL1dURi9SdW5Mb29wLmNwcAogICAgIFRlc3RzL1dURi9TSEExLmNwcAor
ICAgIFRlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwCiAgICAgVGVzdHMvV1RGL1NhdHVyYXRlZEFy
aXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgIFRlc3RzL1dURi9TY29wZS5jcHAKICAgICBUZXN0
cy9XVEYvU2NvcGVkTGFtYmRhLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU2FmZVN0cmVycm9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1NhZmVTdHJlcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFmMGVlOGFjZDhmY2ZlMjZjMTI2ZWMwOWI1
MjQxOWJjNmUyMGY1ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1NhZmVTdHJlcnJvci5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvU2FmZVN0
cmVycm9yLmg+CisKKyNpbmNsdWRlIDxjc3RyaW5nPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK1RFU1QoV1RGX1NhZmVTdHJlcnJvciwgU3RyaW5nc0FyZUVxdWFsKQoreworICAgIC8v
IFdlIHRlc3Qgb25seSBhIGZldyBrbm93biBlcnJvciBjb2RlcyBiZWNhdXNlIG91ciBlcnJvciBt
ZXNzYWdlIHdoZW4gcGFzc2luZyBhbiB1bmtub3duIGVycm9yCisgICAgLy8gY29kZSB3b24ndCBi
ZSBsb2NhbGl6ZWQgYW5kIG1pZ2h0IG5vdCBtYXRjaCB0aGUgc3lzdGVtIGxpYmMgYW55d2F5Lgor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICAgICAgRVhQRUNUX1NUUkVRKHN0
cmVycm9yX2woaSksIHNhZmVTdHJlcnJvcihpKS5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="commit-queue"
          id="466171"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441805</attachid>
            <date>2021-10-19 15:09:01 -0700</date>
            <delta_ts>2021-10-19 17:19:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211019170900.patch</filename>
            <type>text/plain</type>
            <size>36502</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2YxMzUwYTVhMjFlYjljNTUyZDMyM2MwYjczNTBmMjNiZWEzMTYyLi4yM2Q1N2Q4OThmNTdjMDE1
Y2IzZWM3NjgwNDg2NzNlMGE4YTZiNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2NsYW5n
IDEzXSBTdXBwcmVzcyBzaWduIGNvbXBhcmlzb24gd2FybmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOGMwMmFmYmQ1Yjdi
MjUzZDUzYjdkMDU3NzZkYzI5ZGY4MzM5OWUzYS4uN2ZjYzEwM2RjODM1MTZiYmFhNTJjODRmM2M5
ZmMyZmNhZjk1YWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0
cmVycm9yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBzYWZlU3RyZXJyb3IgZnVuY3Rpb24gdGhhdCB3ZSBjYW4gdXNlIHdpdGhvdXQg
c2FmZXR5IHdvcnJpZXMuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1NhZmVTdHJl
cnJvci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVj
b2RlQ2FjaGVFcnJvci5jcHAuCisgICAgICAgIChXVEY6OnNhZmVTdHJlcnJvcik6CisgICAgICAg
ICogd3RmL1NhZmVTdHJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvcGxheXN0YXRpb24v
RmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmRlbGV0ZUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAgICogd3Rm
L3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OmpzY1NpZ25hbEhhbmRsZXIpOgor
CiAyMDIxLTEwLTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIG9sZCBHQ0Mgd29ya2Fyb3VuZCBmb3IgQWxsb2NhdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE5
M2NjMTYzZWIyMWVlYjMwMzY0NWIwYTA3YTg4NjBhNTRjM2RlZjEuLmI2MmZhNWI0YTE2MmQyMDUy
YzAzYmE3NjQ4ZmUzMDYwNzgzYTdkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEt
MTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAg
ICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgICog
UGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjphbGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0Ojp0cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eVNhbmRib3gpOgorCiAyMDIxLTEwLTE5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NDA5OS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
ZwppbmRleCAxYzY1MmQxOWNlNmM0MDBiMWJmOWEyNDRhZTAwODU1MWQ5NjBhNzc1Li4zMWVkN2Ex
OTcxMDcwNTY2NzVmMjBiNDFhZmU2YzA0NDQzZmRlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5v
cmc+CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdl
X21hbGxvYy5jOgorICAgICAgICAocGFzX3BhZ2VfbWFsbG9jX2NvbW1pdCk6CisKIDIwMjEtMTAt
MTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJldmVydGluZyByMjg0MzA1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NC4uODUw
MzQ3YjdjZDcxMjYwYTBiZjY1OTA3NTBhOWE0NTBkYzMxMWMxYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxzeXMvc3RhdC5o
PgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9TSEExLmg+CisjaW1w
b3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJ
Lmg+CkBAIC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVycm9y
CiAgICAgY29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0aFN0cmluZyBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAgIGludCBmZCA9IG9wZW4o
Y2FjaGVGaWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExPQ0sgfCBPX05PTkJMT0NL
LCAwNjAwKTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5n
KCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxp
a2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2luZyBpdC4gRXJyb3I6ICIs
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90
IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQncyBsaWtlbHkgYW5vdGhl
ciBWTSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9yOiAiLCBzYWZlU3RyZXJy
b3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9CiAKQEAgLTMxNCw3
ICszMTUsNyBAQCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJyb3IKIAogICAgIGludCB0
ZW1wRkQgPSBvcGVuKHRlbXBGaWxlTmFtZSwgT19DUkVBVCB8IE9fUkRXUiB8IE9fRVhMT0NLIHwg
T19OT05CTE9DSywgMDYwMCk7CiAgICAgaWYgKHRlbXBGRCA9PSAtMSkgewotICAgICAgICBlcnJv
ciA9IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIG9yIGxvY2sgdGhlIGJ5dGVjb2RlIGNhY2hl
IHRlbXAgZmlsZS4gRXJyb3I6ICIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0g
bWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgdGVt
cCBmaWxlLiBFcnJvcjogIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0KaW5kZXggZjJlYzQyYmE4ODhhZjc0OWE2MDRjNzgwN2ZlM2Y1NTEzOTQ2NTRlYy4uM2Zj
M2E5ZTAyMzc0Nzc0MjcwMzE5MDQ2MDUyOWM5MGRlNWEwOWFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAi
SlNXcmFwcGVyTWFwVGVzdHMuaCIKICNpbXBvcnQgIlJlZ3Jlc3MxNDEyNzUuaCIKICNpbXBvcnQg
IlJlZ3Jlc3MxNDE4MDkuaCIKKyNpbXBvcnQgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQSS5oPgogCiAKQEAgLTI0NDgsNyArMjQ0OSw3IEBA
IHN0YXRpYyBOU1VSTCAqcmVzb2x2ZVBhdGhUb1NjcmlwdHMoKQogICAgICAgICBjb25zdCBzaXpl
X3QgbWF4TGVuZ3RoID0gMTAwMDA7CiAgICAgICAgIGNoYXIgY3dkW21heExlbmd0aF07CiAgICAg
ICAgIGlmICghZ2V0Y3dkKGN3ZCwgbWF4TGVuZ3RoKSkgewotICAgICAgICAgICAgTlNMb2coQCJn
ZXRjd2QgZXJyb3JlZCB3aXRoIGNvZGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
ICAgIE5TTG9nKEAiZ2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIsIHNhZmVTdHJlcnJvcihl
cnJubykuZGF0YSgpKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAg
TlNVUkwgKmN3ZFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlcyIsIGN3ZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0ZjRlMjVjM2Qy
Y2EzOWQ0YWNlMTY1MzZiOGMyZjdlNDlhNDJjNGQ2Li5mYjEwZDY2MzA1MTdlYTQwNjJhZDA3OGE0
OWMxYWZlMGM4MDljNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODgsNiArODgsNyBAQAog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3Rm
L1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4MTksNyArMTgy
MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk9wZW5GaWxlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBGSUxFKiBkZXNjcmlwdG9yID0g
Zm9wZW4oZmlsZVBhdGguZmlsZVN5c3RlbVBhdGgoKS5hc2NpaSgpLmRhdGEoKSwgInIiKTsKICAg
ICBpZiAoIWRlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygi
Q291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhh
ZCBlcnJvcjogIl9zLCBzdHJlcnJvcihlcnJubykpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVj
dCwgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmlu
ZygpLCAiIGZvcGVuIGhhZCBlcnJvcjogIl9zLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSkp
KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTRmls
ZURlc2NyaXB0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRlc2NyaXB0b3Ip
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNv
ZGVDYWNoZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2Rl
Q2FjaGVFcnJvci5jcHAKaW5kZXggNzZmMTAyZjkwMTA2NTkyYTA3MjI1OTkyNTE3ODRkMDI2N2I2
YTg2Yi4uYTlmY2IzZWYyNTQ5NjJlYzljMGQ4NDFmZjdhMmZmZjFjNjE4NmZlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3Bw
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVDYWNoZUVycm9yLmgiCiAKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CisKIG5hbWVz
cGFjZSBKU0MgewogCiBib29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcjo6aXNW
YWxpZCgpIGNvbnN0CkBAIC0zNSw3ICszNyw3IEBAIGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpT
dGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QKIAogU3RyaW5nIEJ5dGVjb2RlQ2FjaGVFcnJv
cjo6U3RhbmRhcmRFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cmVycm9y
KG1fZXJybm8pOworICAgIHJldHVybiBzYWZlU3RyZXJyb3IobV9lcnJubykuZGF0YSgpOwogfQog
CiBib29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6V3JpdGVFcnJvcjo6aXNWYWxpZCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcApp
bmRleCAwMDdiMjUzZTY0OWYxYTVmYTI2ZWU3MjZiMDA0MDgzNmQ5NTNiODkwLi4wNjBlNDY2YjZh
MzE3MzA4NTQ0MDRmMjUwZDcxNjljODU0YjJiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTQ1LDcgKzQ2LDcgQEAgRnVuY3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KGNv
bnN0IGNoYXIqIGZpbGVuYW1lKQogICAgICAgICAgICAgbV9oYXNBY3RpdmVBbGxvd2xpc3QgPSB0
cnVlOwogICAgICAgICAgICAgbV9lbnRyaWVzLmFkZChmaWxlbmFtZSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMuIERpZCB5b3Ug
YWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0byBXZWJQcm9jZXNzLnNiPyBFcnJv
ciBjb2RlOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBk
YXRhTG9nRigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcy4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVh
ZC1kYXRhIGVudGl0bGVtZW50IHRvIFdlYlByb2Nlc3Muc2I/IEVycm9yIGNvZGU6ICVzXG4iLCBm
aWxlbmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC03Myw3ICs3NCw3IEBAIEZ1bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93
bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkKIAogICAgIGludCByZXN1bHQgPSBmY2xvc2UoZik7
CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxl
ICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGRhdGFMb2dG
KCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3Io
ZXJybm8pLmRhdGEoKSk7CiB9CiAKIGJvb2wgRnVuY3Rpb25BbGxvd2xpc3Q6OmNvbnRhaW5zKENv
ZGVCbG9jayogY29kZUJsb2NrKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKaW5kZXggY2U5NGUyYmRjYjE4MGYzMzIyOWQ0ZGNi
NmU4YTFhOGU1OWFjN2ZjOS4uMzBmNWU3NmM5MTRlNjQ4ODFlNDE4ZTZlMzkzYjJiOTI1NDc3MWMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJp
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CkBAIC0yODMsNyArMjg0LDcgQEAgdm9pZCBGdW5jdGlvbk92ZXJyaWRlczo6cGFy
c2VPdmVycmlkZXNJbkZpbGUoY29uc3QgY2hhciogZmlsZU5hbWUpCiAgICAgCiAgICAgaW50IHJl
c3VsdCA9IGZjbG9zZShmaWxlKTsKICAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nRigi
RmFpbGVkIHRvIGNsb3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlTmFtZSwgc3RyZXJyb3IoZXJybm8p
KTsKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmls
ZU5hbWUsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCA1
MzI5NWI4YTAyZGY0MzQ0ZjRkZGE5YTg3Yjc4ZWM1NWI3ZThjYjk4Li40NDA3NTk1MmYwMDc2OWRi
MmI5MDE2MDBiMTAxYmYyYmRlNGI2ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+
CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTMwMSw3ICszMDIsNyBAQCBNZW1vcnlIYW5k
bGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICBj
YXNlIE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKICAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1v
cnksIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihl
cnJubyksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDog
Iiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
ZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KTsKQEAgLTMxMyw3ICszMTQsNyBA
QCBNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiB7CiAgICAgICAgICAg
ICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwg
UFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFp
bGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVHcm93
YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSk7CkBAIC00
MDYsNyArNDA3LDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50
IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGEKICAgICAKICAgICBpZiAoZmFz
dE1lbW9yeSkgewogICAgICAgICBpZiAobXByb3RlY3QoZmFzdE1lbW9yeSArIGluaXRpYWxCeXRl
cywgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkg
ewotICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJu
byksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZl
U3RyZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDMsNyBAQCBSZWZQdHI8
TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1h
eGltdW0sIE1lbW9yeVNoYQogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1wcm90ZWN0KHNsb3dN
ZW1vcnkgKyBpbml0aWFsQnl0ZXMsIG1heGltdW1CeXRlcyAtIGluaXRpYWxCeXRlcywgUFJPVF9O
T05FKSkgewotICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJv
cihlcnJubyksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAi
LCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTUxNiw3ICs1MTcsNyBAQCBF
eHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1No
YXJlZChQYWdlQ291bnQgZGVsdGEpCiAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1h
cmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJl
YWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3
UG9pbnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1w
cm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkp
IHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2Fm
ZVN0cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkBAIC02MDUsNyArNjA2LDcgQEAgRXhwZWN0
ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3coUGFnZUNv
dW50IGRlbHRhKQogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtp
bmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQr
d3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9p
bnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90
ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8p
LCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0
cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiMzE5ZmIzMTNiZTA2MzE4Y2I3M2I4ZDlmNGQ0Y2JhMmNmYTAyN2Vi
Li4zZWMwMzkxZjdjNzM3YTNhZjE2MjQ3MzZiYjg1MTJhNTJkN2IxZTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTczLDYgKzczLDcgQEAKIAkJMzM3QjJE
NkEyNjU0NkVCMzAwRERGRDNEIC8qIExpa2VseURlbnNlVW5zaWduZWRJbnRlZ2VyU2V0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzN0IyRDY4MjY1
NDZFQUEwMERERkQzRCAvKiBMaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5jcHAgKi87IH07
CiAJCTQ0MjdDNUFBMjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2
MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCAqLzsgfTsKIAkJNDZCRUI2RUIyMkZGRTI0OTAwMjY5ODY3
IC8qIFJlZkNvdW50ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovOyB9
OworCQk0NkU5MzA0OTI3MUYxMjA1MDA1QkE2RTUgLyogU2FmZVN0cmVycm9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTQzNjQ3MjcxRjEwQUEw
MEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovOyB9OwogCQk1MERFMzVGNTIxNUJCMDE1MDBC
OTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwREUzNUYzMjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5h
bFN0cmluZ0ltcGwuY3BwICovOyB9OwogCQk1MTVGNzk0RTFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1Rjc5NEIxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNw
cCAqLzsgfTsKIAkJNTE3RjgyRDcxRkQyMkYzMDAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hh
bmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3RjgyRDUxRkQyMkYyRjAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwICov
OyB9OwpAQCAtMzk3LDYgKzM5OCw4IEBACiAJCTQ2MjA5QTI3MjY2RDU0M0EwMDdGOEY0QSAvKiBD
YW5jZWxsYWJsZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FuY2VsbGFibGVUYXNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkE5RUFCMUY0Q0Q2MUUwMDlBMkJCQyAvKiBDb21w
bGV0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wbGV0
aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFOTIyRkZE
REQ1MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3Vu
dGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFNDM2NDYyNzFGMTBBQTAw
Qzg4QzkwIC8qIFNhZmVTdHJlcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlU3RyZXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8q
IFNhZmVTdHJlcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYWZlU3RyZXJyb3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJCMDE1MDBCOTc5QzcgLyog
RXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEV4dGVybmFsU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUwREUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJbXBsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5n
QWNjdW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZ0Fj
Y3VtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc3LDYgKzEyODAs
OCBAQAogCQkJCUUzMUNGMEE1MjYxMDU4NTgwMDM2RTY3MyAvKiBSb2Jpbkhvb2RIYXNoVGFibGUu
aCAqLywKIAkJCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi8sCiAJ
CQkJMkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLywKKwkJCQk0NkU0MzY0
NzI3MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmNwcCAqLywKKwkJCQk0NkU0MzY0NjI3
MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmggKi8sCiAJCQkJMTRGM0IwRjYxNUU0NUU0
NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLywKIAkJCQkxNDY5NDE5NDE2RUFB
RkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAw
MzE3MjlCIC8qIFNjb3BlLmggKi8sCkBAIC0xODIxLDYgKzE4MjYsNyBAQAogCQkJCTJDREVEMEYz
MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVE
MEVGMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUNBODVDQTkyNDFCMEIyNjAwNzFDMkY1IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ2RTkzMDQ5MjcxRjEyMDUwMDVCQTZFNSAvKiBTYWZl
U3RyZXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVDM0QyMUZGQUM3RDAwRkFCRDYx
IC8qIFNjaGVkdWxlUGFpckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU1QzQwMjFGRkFD
QTIwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjY2
QjI4RTFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKaW5kZXggZjEwYzgxYTU3NTk5YjBkMDZlMTM2MTMxOWQ0NjcwMzYzMTI0OGZh
NS4uNGUzOGFhYTkzMGQ0MTA3MjdlZDM3NDliMmM3NDEyMjM4ZDZhY2FiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKQEAgLTIzMCw2ICsyMzAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAg
Um9iaW5Ib29kSGFzaFRhYmxlLmgKICAgICBSdW5Mb29wLmgKICAgICBTSEExLmgKKyAgICBTYWZl
U3RyZXJyb3IuaAogICAgIFNhdHVyYXRlZEFyaXRobWV0aWMuaAogICAgIFNjaGVkdWxlUGFpci5o
CiAgICAgU2NvcGUuaApAQCAtNDU5LDYgKzQ2MCw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFJl
ZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCisg
ICAgU2FmZVN0cmVycm9yLmNwcAogICAgIFNlY29uZHMuY3BwCiAgICAgU2VnbWVudGVkVmVjdG9y
LmNwcAogICAgIFNpeENoYXJhY3Rlckhhc2guY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TYWZlU3RyZXJyb3IuY3BwIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NjFmYmQ3MDQ4YWFkZjBhMjIyMDFmNmFjNmI0ZDY1MzU2MDQxZTVjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcApAQCAtMCwwICsxLDY1
IEBACisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KKworI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
TG9ja2VyLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBVU0Uo
R0xJQikKKyNpbmNsdWRlIDxnbGliLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdURiB7CisKK0NT
dHJpbmcgc2FmZVN0cmVycm9yKGludCBlcnJudW0pCit7CisgICAgY2hhciBidWZmZXJbMTAyNF07
CisgICAgY2hhciogbWVzc2FnZSA9IG51bGxwdHI7CisjaWYgT1MoV0lORE9XUykKKyAgICBzdHJl
cnJvcl9zKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksIGVycm51bSk7CisgICAgbWVzc2FnZSA9IGJ1
ZmZlcjsKKyNlbHNlCisgICAgYXV0byByZXQgPSBzdHJlcnJvcl9yKGVycm51bSwgYnVmZmVyLCBz
aXplb2YoYnVmZmVyKSk7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUo
cmV0KSwgY2hhcio+Ojp2YWx1ZSkgeworICAgICAgICAvLyBXZSBoYXZlIEdOVSBzdHJlcnJvcl9y
KCksIHdoaWNoIHJldHVybnMgY2hhciouCisgICAgICAgIG1lc3NhZ2UgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPihyZXQpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlIGhhdmUgUE9TSVgg
c3RyZXJyb3Jfciwgd2hpY2ggcmV0dXJucyBpbnQuCisgICAgICAgIGlmIChyZXQpCisgICAgICAg
ICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiJXMgJWQiLCAiVW5rbm93biBl
cnJvciIsIGVycm51bSk7CisgICAgICAgIG1lc3NhZ2UgPSBidWZmZXI7CisgICAgfQorI2VuZGlm
IC8vIE9TKFdJTkRPV1MpCisgICAgcmV0dXJuIENTdHJpbmcobWVzc2FnZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2ZjNTdlMTUzMzk3
YTYyYzFiMDk3M2ZjNTNhOTc2YmUyNGY5ODFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dU
Ri93dGYvU2FmZVN0cmVycm9yLmgKQEAgLTAsMCArMSw0OCBAQAorLyogCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
CituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhpcyBpcyBzdHJlcnJvciwgZXhjZXB0IGl0IGlzIHRo
cmVhZHNhZmUuIFRoZSBwcm9ibGVtIHdpdGggbm9ybWFsIHN0cmVycm9yIGlzIGl0IHJldHVybnMg
YQorLy8gcG9pbnRlciB0byBzdGF0aWMgc3RvcmFnZSwgYW5kIGl0IG1heSBhY3R1YWxseSBtb2Rp
ZnkgdGhhdCBzdG9yYWdlLCBzbyBpdCBjYW4gbmV2ZXIgYmUgdXNlZCBpbgorLy8gYW55IG11bHRp
dGhyZWFkZWQgYXBwbGljYXRpb24sIG9yIGFueSBsaWJyYXJ5IHRoYXQgbWF5IGJlIGxpbmtlZCB0
byBhIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb24uCisvLyAoV2h5IGRvZXMgaXQgbW9kaWZ5IGl0
cyBzdG9yYWdlPyBTbyB0aGF0IGl0IGNhbiBhcHBlbmQgdGhlIGVycm9yIG51bWJlciB0byB0aGUg
ZXJyb3Igc3RyaW5nLCBhcworLy8gaW4gIlVua25vd24gZXJyb3Igbi4iIEFsc28sIGJlY2F1c2Ug
aXQgd2lsbCBsb2NhbGl6ZSB0aGUgZXJyb3IgbWVzc2FnZS4pIFRoZSBzdGFuZGFyZAorLy8gYWx0
ZXJuYXRpdmVzIGFyZSBzdHJlcnJvcl9zIGFuZCBzdHJlcnJvcl9yLCBidXQgYm90aCBoYXZlIHBy
b2JsZW1zLiBzdHJlcnJvcl9zIGlzIHNwZWNpZmllZCBieQorLy8gQzExLCBidXQgbm90IGJ5IEMr
KyAoYXMgb2YgQysrMjApLCBhbmQgaXQgaXMgb3B0aW9uYWwgc28gZ2xpYmMgZGVjaWRlZCB0byBp
Z25vcmUgaXQuIFdlIGNhbiBvbmx5CisvLyByZWx5IG9uIGl0IHRvIGV4aXN0IG9uIFdpbmRvd3Mu
IFRoZW4gc3RyZXJyb3JfciBpcyBldmVuIHdvcnNlLiBGaXJzdCwgaXQgZG9lc24ndCBleGlzdCBh
dCBhbGwgb24KKy8vIFdpbmRvd3MuIFNlY29uZCwgdGhlIEdOVSB2ZXJzaW9uIGlzIGluY29tcGF0
aWJsZSB3aXRoIHRoZSBQT1NJWCB2ZXJzaW9uLCBhbmQgaXQgaXMgaW1wb3NzaWJsZSB0bworLy8g
dXNlIGNvcnJlY3RseSB1bmxlc3MgeW91IGtub3cgd2hpY2ggdmVyc2lvbiB5b3UgaGF2ZS4gQm90
aCBzdHJlcnJvcl9zIGFuZCBzdHJlcnJvcl9yIGFyZQorLy8gY3VtYmVyc29tZSBiZWNhdXNlIHRo
ZXkgZm9yY2UgeW91IHRvIGFsbG9jYXRlIHRoZSBidWZmZXIgZm9yIHRoZSByZXN1bHQgbWFudWFs
bHkuIEl0J3MgYWxsIHN1Y2ggYQorLy8gbWVzcyB0aGF0IHdlIHNob3VsZCBkZWFsIHdpdGggdGhl
IGNvbXBsZXhpdHkgaGVyZSByYXRoZXIgdGhhbiBlbHNld2hlcmUgaW4gV2ViS2l0LgorV1RGX0VY
UE9SVF9QUklWQVRFIENTdHJpbmcgc2FmZVN0cmVycm9yKGludCBlcnJudW0pOworCit9CisKK3Vz
aW5nIFdURjo6c2FmZVN0cmVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGxheXN0
YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0
aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2MzI1MjQxYTFlN2I5
NzE3MzA3Y2ZhZWI2YmQ4YzM0Yy4uYjg4MGViNzdkYjBiOWU1MTczZmQ1MTNlOTcwMGEwMTRiYjc2
NGVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBs
YXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVt
UGxheVN0YXRpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMu
aD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRl
IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTg4LDcgKzg5LDcgQEAgYm9vbCBkZWxldGVGaWxlKGNv
bnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vz
c2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2Ug
KGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQogICAg
IGJvb2wgdW5saW5rZWQgPSAhdW5saW5rKGZzUmVwLmRhdGEoKSk7CiAgICAgaWYgKCF1bmxpbmtl
ZCAmJiBlcnJubyAhPSBFTk9FTlQpCi0gICAgICAgIExPR19FUlJPUigiRmlsZSBmYWlsZWQgdG8g
ZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIExP
R19FUlJPUigiRmlsZSBmYWlsZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHNhZmVT
dHJlcnJvcihlcnJubykuZGF0YSgpKTsKIAogICAgIHJldHVybiB1bmxpbmtlZDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDc5NTY3MGZkNmQ4MDI3OGRm
NmMxNzBiMjE2MmM0OGI1MmU5Y2JiZWYuLmYxMjEyNTM4NzYzNDUzNTQxOTI0M2Q4MWVjNmM0ZmYw
YjFiZjAzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5o
PgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJv
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0yNjEs
NyArMjYyLDcgQEAgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyB1
bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBh
bmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Np
b25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQogICAgIGJvb2wgdW5saW5rZWQgPSAhdW5saW5rKGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghdW5saW5rZWQg
JiYgZXJybm8gIT0gRU5PRU5UKQotICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRl
bGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBMT0df
RVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3Ry
ZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAKICAgICByZXR1cm4gdW5saW5rZWQ7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIvU291cmNlL1dURi93dGYv
dGhyZWFkcy9TaWduYWxzLmNwcAppbmRleCA2NGI0Y2QxMjdmMzNhZTk2Yjc1MWRlNzY0NTRiZWM0
NTE0MzAwOWJlLi5jNTJkMjgyMmMwNjBmMjBiMzRiNjU4NTAzYmMzZTk5ZGQ4ZGVmZWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgZXh0ZXJuICJDIiB7
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KKyNpbmNsdWRlIDx3dGYv
U2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZEdyb3VwLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KQEAgLTM4NCw3ICsz
ODUsNyBAQCB2b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2
b2lkKiB1Y29udGV4dCkKICAgICAgICAgc2lnZmlsbHNldCgmZGVmYXVsdEFjdGlvbi5zYV9tYXNr
KTsKICAgICAgICAgZGVmYXVsdEFjdGlvbi5zYV9mbGFncyA9IDA7CiAgICAgICAgIGF1dG8gcmVz
dWx0ID0gc2lnYWN0aW9uKHNpZywgJmRlZmF1bHRBY3Rpb24sIG51bGxwdHIpOwotICAgICAgICBk
YXRhTG9nTG5JZihyZXN1bHQgPT0gLTEsICJVbmFibGUgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCBo
YW5kbGVyIHdoaWxlIHByb2NjZXNzaW5nIHNpZ25hbCAiLCBzaWcsICIgdGhlIHByb2Nlc3MgaXMg
cHJvYmFibHkgZGVhZGxvY2tlZC4gKGVycm5vOiAiLCBzdHJlcnJvcihlcnJubyksICIpIik7Cisg
ICAgICAgIGRhdGFMb2dMbklmKHJlc3VsdCA9PSAtMSwgIlVuYWJsZSB0byByZXN0b3JlIHRoZSBk
ZWZhdWx0IGhhbmRsZXIgd2hpbGUgcHJvY2Nlc3Npbmcgc2lnbmFsICIsIHNpZywgIiB0aGUgcHJv
Y2VzcyBpcyBwcm9iYWJseSBkZWFkbG9ja2VkLiAoZXJybm86ICIsIHNhZmVTdHJlcnJvcihlcnJu
bykuZGF0YSgpLCAiKSIpOwogICAgIH07CiAKICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4g
YnV0IHdlIG1pZ2h0IGFzIHdlbGwgYmUgY2FyZWZ1bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNDkxMTEzMjE5MzIxY2Rj
YzRmMjRjYmMzOWViN2E2NTE5NGM4MTc2MS4uZmEzNzQ1NWE5NWJlMWFmM2U3NThlMmNkNDgzZjZj
MjUzOGM1NjU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9D
b25uZWN0aW9uVW5peC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxmY250bC5oPgog
I2luY2x1ZGUgPHBvbGwuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgogCkBAIC0zNTIsNyArMzUzLDcgQEAgdm9pZCBDb25u
ZWN0aW9uOjpyZWFkeVJlYWRIYW5kbGVyKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKG1faXNDb25uZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9y
IHJlY2VpdmluZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQgaW4gcHJvY2VzcyAlZDogJXMiLCBt
X3NvY2tldERlc2NyaXB0b3IsIGdldHBpZCgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiRXJyb3IgcmVjZWl2aW5nIElQQyBtZXNzYWdlIG9uIHNvY2tl
dCAlZCBpbiBwcm9jZXNzICVkOiAlcyIsIG1fc29ja2V0RGVzY3JpcHRvciwgZ2V0cGlkKCksIHNh
ZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uRGlk
Q2xvc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAppbmRleCA5OThhMmE3
Njc5MzA1YTQzNWZhMzVjYzFhZWViNzA4ZjM0Njc1NTViLi5mMzQ2NjZiYzhlMDA1MjJmNjQ1NGRh
YjI0MmUwZDQwNzUyZjEwMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Vu
aXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4
L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8dW5pc3Rk
Lmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVt
YmVyLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlT
dGRFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNjUsNyArMTY2LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKIHsKICAgICBpbnQgZmlsZURl
c2NyaXB0b3IgPSBjcmVhdGVTaGFyZWRNZW1vcnkoKTsKICAgICBpZiAoZmlsZURlc2NyaXB0b3Ig
PT0gLTEpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY3JlYXRlIHNoYXJlZCBt
ZW1vcnk6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWls
ZWQgdG8gY3JlYXRlIHNoYXJlZCBtZW1vcnk6ICVzIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggZGQ1MGZiOWVhMzc3NGQ1
Yjk0NDQ2MTEwMWQ1YWQ5YmEwN2U1ZTkxMC4uZDgwZGFlMWIxYzhiMmQxZjZhYTQ2ZjIwYzk4NWRk
NWU2NmUzNjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFy
eVByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVBy
b2Nlc3NNYWMubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CiAj
aW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgor
I2ltcG9ydCA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBA
IC0yNTEsNyArMjUyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gc2V0QW5kU2Vy
aWFsaXplU2FuZGJveFBhcmFtZXRlcnMoY29uc3QgU2FuZGJveEluaXQKICAgICAgICAgY29uc3Qg
Y2hhciogbmFtZSA9IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5uYW1lKGkpOwogICAgICAgICBj
b25zdCBjaGFyKiB2YWx1ZSA9IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy52YWx1ZShpKTsKICAg
ICAgICAgaWYgKHNhbmRib3hfc2V0X3BhcmFtKHNhbmRib3hQYXJhbWV0ZXJzLmdldCgpLCBuYW1l
LCB2YWx1ZSkpIHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBzZXQg
c2FuZGJveCBwYXJhbWV0ZXI6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykp
OworICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IHNldCBzYW5kYm94IHBh
cmFtZXRlcjogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgp
KTsKICAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBl
bmQobmFtZSwgJzonLCB2YWx1ZSwgJzonKTsKQEAgLTI3MSwxMyArMjcyLDEzIEBAIHN0YXRpYyBT
dHJpbmcgc2FuZGJveERhdGFWYXVsdFBhcmVudERpcmVjdG9yeSgpCiAgICAgY2hhciB0ZW1wW1BB
VEhfTUFYXTsKICAgICBzaXplX3QgbGVuZ3RoID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FD
SEVfRElSLCB0ZW1wLCBzaXplb2YodGVtcCkpOwogICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBk
aXJlY3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubyku
ZGF0YSgpKTsKICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwogICAgIH0KICAgICBSRUxFQVNFX0FT
U0VSVChsZW5ndGggPD0gc2l6ZW9mKHRlbXApKTsKICAgICBjaGFyIHJlc29sdmVkUGF0aFtQQVRI
X01BWF07CiAgICAgaWYgKCFyZWFscGF0aCh0ZW1wLCByZXNvbHZlZFBhdGgpKSB7Ci0gICAgICAg
IFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUgdXNlciB0ZW1wb3Jhcnkg
ZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOwor
ICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXplIHVzZXIgdGVt
cG9yYXJ5IGRpcmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9y
KGVycm5vKS5kYXRhKCkpOwogICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAgICAgfQogICAgIHJl
dHVybiByZXNvbHZlZFBhdGg7CkBAIC0zNzMsNyArMzc0LDcgQEAgc3RhdGljIGJvb2wgZW5zdXJl
U2FuZGJveENhY2hlRGlyZWN0b3J5KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogICAgICAgICBp
ZiAoIW1ha2VEYXRhVmF1bHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVs
c2UgewotICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBTYW5kYm94IGRpcmVjdG9yeSBjb3VsZG4n
dCBiZSBjcmVhdGVkOiAiLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAg
ICBXVEZMb2dBbHdheXMoIiVzOiBTYW5kYm94IGRpcmVjdG9yeSBjb3VsZG4ndCBiZSBjcmVhdGVk
OiAiLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAjZWxzZQpAQCAtNTIxLDcgKzUyMiw3IEBAIHN0YXRpYyBi
b29sIHRyeUFwcGx5Q2FjaGVkU2FuZGJveChjb25zdCBTYW5kYm94SW5mbyYgaW5mbykKICAgICBz
ZXROb3RpZnlPcHRpb25zKCk7CiAKICAgICBpZiAoc2FuZGJveF9hcHBseSgmcHJvZmlsZSkpIHsK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBzYW5kYm94
OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJv
Z25hbWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC02MjMsNyArNjI0LDcgQEAgc3RhdGljIGJvb2wgYXBwbHlTYW5kYm94
KGNvbnN0IEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXQK
ICAgICBzZXROb3RpZnlPcHRpb25zKCk7CiAgICAgCiAgICAgaWYgKHNhbmRib3hfYXBwbHkoc2Fu
ZGJveFByb2ZpbGUuZ2V0KCkpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5v
dCBhcHBseSBjb21waWxlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3Io
ZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNvbXBp
bGVkIHNhbmRib3g6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRh
dGEoKSk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYyBiL1NvdXJjZS9ibWFsbG9j
L2xpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdlX21hbGxvYy5jCmluZGV4IGYxNTE1YWY5OTBlOTJh
NzE1OGYzOWI0Y2E5NTU4MDI5NTEzMjgwZDYuLjA3NWJhOTliN2U2ODA4Y2Y4MDM1ZmRkODM2Yzlj
MWVhOTRlZDVmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFz
L3Bhc19wYWdlX21hbGxvYy5jCisrKyBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFz
L3Bhc19wYWdlX21hbGxvYy5jCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBwYXNfcGFnZV9tYWxs
b2NfY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiAgICAgaWYgKHBhc19wYWdlX21hbGxv
Y19tcHJvdGVjdF9kZWNvbW1pdHRlZCkgewogICAgICAgICByZXN1bHQgPSBtcHJvdGVjdCgodm9p
ZCopYmFzZV9hc19pbnQsIGVuZF9hc19pbnQgLSBiYXNlX2FzX2ludCwgUFJPVF9SRUFEIHwgUFJP
VF9XUklURSk7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHBhc19sb2coIkNv
dWxkIG5vdCBtcHJvdGVjdCBvbiBjb21taXQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworICAg
ICAgICAgICAgcGFzX2xvZygiQ291bGQgbm90IG1wcm90ZWN0IG9uIGNvbW1pdDogZXJyb3IgY29k
ZSAlZFxuIiwgcmVzdWx0KTsKICAgICAgICAgICAgIFBBU19BU1NFUlQoIXJlc3VsdCk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggY2YzZTA0ZWFhZDY1NTZkZTdiMzIyNjM1ODNiZmMzYTc5N2YwZTJhNy4uYzlmZjMw
Y2FkMjFkMjkwYzAzYWM0YzRmYjIxN2NhMjEzZjBiZmVjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTE5
ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERv
IG5vdCB1c2Ugc3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHA6IEFkZGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMTAtMTkgIEpvbmF0aGFuIEJlZGFyZCAgPGpi
ZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gT3ZlcnJpZGUgaHR0cCB1
cmwgd2l0aCBzc2ggdXJsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZWUzYWU3
MjQxNTkyNmRlZjAyNzdhYTQzZTVkNTg0YmYzMjhmZjRhLi5mZGRkNmFjMGUwODU0Y2U1OTg0MjEz
NWY0ZmU4YzhjZGQ0YWY0NWUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTgy
LDYgKzgyLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9Sb2Jpbkhvb2RI
YXNoU2V0LmNwcAogICAgIFRlc3RzL1dURi9SdW5Mb29wLmNwcAogICAgIFRlc3RzL1dURi9TSEEx
LmNwcAorICAgIFRlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwCiAgICAgVGVzdHMvV1RGL1NhdHVy
YXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgIFRlc3RzL1dURi9TY29wZS5jcHAKICAg
ICBUZXN0cy9XVEYvU2NvcGVkTGFtYmRhLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU2FmZVN0cmVycm9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1NhZmVTdHJlcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTFmMGVlOGFjZDhmY2ZlMjZjMTI2
ZWMwOWI1MjQxOWJjNmUyMGY1ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYv
U2FmZVN0cmVycm9yLmg+CisKKyNpbmNsdWRlIDxjc3RyaW5nPgorCituYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CisKK1RFU1QoV1RGX1NhZmVTdHJlcnJvciwgU3RyaW5nc0FyZUVxdWFsKQorewor
ICAgIC8vIFdlIHRlc3Qgb25seSBhIGZldyBrbm93biBlcnJvciBjb2RlcyBiZWNhdXNlIG91ciBl
cnJvciBtZXNzYWdlIHdoZW4gcGFzc2luZyBhbiB1bmtub3duIGVycm9yCisgICAgLy8gY29kZSB3
b24ndCBiZSBsb2NhbGl6ZWQgYW5kIG1pZ2h0IG5vdCBtYXRjaCB0aGUgc3lzdGVtIGxpYmMgYW55
d2F5LgorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICAgICAgRVhQRUNUX1NU
UkVRKHN0cmVycm9yX2woaSksIHNhZmVTdHJlcnJvcihpKS5kYXRhKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="commit-queue"
          id="466182"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441828</attachid>
            <date>2021-10-19 18:01:05 -0700</date>
            <delta_ts>2021-10-19 18:06:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211019200104.patch</filename>
            <type>text/plain</type>
            <size>36890</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2YxMzUwYTVhMjFlYjljNTUyZDMyM2MwYjczNTBmMjNiZWEzMTYyLi4yM2Q1N2Q4OThmNTdjMDE1
Y2IzZWM3NjgwNDg2NzNlMGE4YTZiNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2NsYW5n
IDEzXSBTdXBwcmVzcyBzaWduIGNvbXBhcmlzb24gd2FybmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOGMwMmFmYmQ1Yjdi
MjUzZDUzYjdkMDU3NzZkYzI5ZGY4MzM5OWUzYS4uN2ZjYzEwM2RjODM1MTZiYmFhNTJjODRmM2M5
ZmMyZmNhZjk1YWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0
cmVycm9yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBzYWZlU3RyZXJyb3IgZnVuY3Rpb24gdGhhdCB3ZSBjYW4gdXNlIHdpdGhvdXQg
c2FmZXR5IHdvcnJpZXMuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1NhZmVTdHJl
cnJvci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVj
b2RlQ2FjaGVFcnJvci5jcHAuCisgICAgICAgIChXVEY6OnNhZmVTdHJlcnJvcik6CisgICAgICAg
ICogd3RmL1NhZmVTdHJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvcGxheXN0YXRpb24v
RmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmRlbGV0ZUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAgICogd3Rm
L3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OmpzY1NpZ25hbEhhbmRsZXIpOgor
CiAyMDIxLTEwLTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIG9sZCBHQ0Mgd29ya2Fyb3VuZCBmb3IgQWxsb2NhdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE5
M2NjMTYzZWIyMWVlYjMwMzY0NWIwYTA3YTg4NjBhNTRjM2RlZjEuLmI2MmZhNWI0YTE2MmQyMDUy
YzAzYmE3NjQ4ZmUzMDYwNzgzYTdkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEt
MTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAg
ICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgICog
UGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjphbGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0Ojp0cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eVNhbmRib3gpOgorCiAyMDIxLTEwLTE5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NDA5OS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
ZwppbmRleCAxYzY1MmQxOWNlNmM0MDBiMWJmOWEyNDRhZTAwODU1MWQ5NjBhNzc1Li4zMWVkN2Ex
OTcxMDcwNTY2NzVmMjBiNDFhZmU2YzA0NDQzZmRlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5v
cmc+CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdl
X21hbGxvYy5jOgorICAgICAgICAocGFzX3BhZ2VfbWFsbG9jX2NvbW1pdCk6CisKIDIwMjEtMTAt
MTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJldmVydGluZyByMjg0MzA1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NC4uODUw
MzQ3YjdjZDcxMjYwYTBiZjY1OTA3NTBhOWE0NTBkYzMxMWMxYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxzeXMvc3RhdC5o
PgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9TSEExLmg+CisjaW1w
b3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJ
Lmg+CkBAIC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVycm9y
CiAgICAgY29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0aFN0cmluZyBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAgIGludCBmZCA9IG9wZW4o
Y2FjaGVGaWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExPQ0sgfCBPX05PTkJMT0NL
LCAwNjAwKTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5n
KCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxp
a2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2luZyBpdC4gRXJyb3I6ICIs
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90
IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQncyBsaWtlbHkgYW5vdGhl
ciBWTSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9yOiAiLCBzYWZlU3RyZXJy
b3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9CiAKQEAgLTMxNCw3
ICszMTUsNyBAQCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJyb3IKIAogICAgIGludCB0
ZW1wRkQgPSBvcGVuKHRlbXBGaWxlTmFtZSwgT19DUkVBVCB8IE9fUkRXUiB8IE9fRVhMT0NLIHwg
T19OT05CTE9DSywgMDYwMCk7CiAgICAgaWYgKHRlbXBGRCA9PSAtMSkgewotICAgICAgICBlcnJv
ciA9IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIG9yIGxvY2sgdGhlIGJ5dGVjb2RlIGNhY2hl
IHRlbXAgZmlsZS4gRXJyb3I6ICIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0g
bWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgdGVt
cCBmaWxlLiBFcnJvcjogIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0KaW5kZXggZjJlYzQyYmE4ODhhZjc0OWE2MDRjNzgwN2ZlM2Y1NTEzOTQ2NTRlYy4uM2Zj
M2E5ZTAyMzc0Nzc0MjcwMzE5MDQ2MDUyOWM5MGRlNWEwOWFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAi
SlNXcmFwcGVyTWFwVGVzdHMuaCIKICNpbXBvcnQgIlJlZ3Jlc3MxNDEyNzUuaCIKICNpbXBvcnQg
IlJlZ3Jlc3MxNDE4MDkuaCIKKyNpbXBvcnQgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQSS5oPgogCiAKQEAgLTI0NDgsNyArMjQ0OSw3IEBA
IHN0YXRpYyBOU1VSTCAqcmVzb2x2ZVBhdGhUb1NjcmlwdHMoKQogICAgICAgICBjb25zdCBzaXpl
X3QgbWF4TGVuZ3RoID0gMTAwMDA7CiAgICAgICAgIGNoYXIgY3dkW21heExlbmd0aF07CiAgICAg
ICAgIGlmICghZ2V0Y3dkKGN3ZCwgbWF4TGVuZ3RoKSkgewotICAgICAgICAgICAgTlNMb2coQCJn
ZXRjd2QgZXJyb3JlZCB3aXRoIGNvZGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
ICAgIE5TTG9nKEAiZ2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIsIHNhZmVTdHJlcnJvcihl
cnJubykuZGF0YSgpKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAg
TlNVUkwgKmN3ZFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlcyIsIGN3ZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0ZjRlMjVjM2Qy
Y2EzOWQ0YWNlMTY1MzZiOGMyZjdlNDlhNDJjNGQ2Li5mYjEwZDY2MzA1MTdlYTQwNjJhZDA3OGE0
OWMxYWZlMGM4MDljNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODgsNiArODgsNyBAQAog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3Rm
L1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4MTksNyArMTgy
MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk9wZW5GaWxlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBGSUxFKiBkZXNjcmlwdG9yID0g
Zm9wZW4oZmlsZVBhdGguZmlsZVN5c3RlbVBhdGgoKS5hc2NpaSgpLmRhdGEoKSwgInIiKTsKICAg
ICBpZiAoIWRlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygi
Q291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhh
ZCBlcnJvcjogIl9zLCBzdHJlcnJvcihlcnJubykpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVj
dCwgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmlu
ZygpLCAiIGZvcGVuIGhhZCBlcnJvcjogIl9zLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSkp
KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTRmls
ZURlc2NyaXB0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRlc2NyaXB0b3Ip
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNv
ZGVDYWNoZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2Rl
Q2FjaGVFcnJvci5jcHAKaW5kZXggNzZmMTAyZjkwMTA2NTkyYTA3MjI1OTkyNTE3ODRkMDI2N2I2
YTg2Yi4uYTlmY2IzZWYyNTQ5NjJlYzljMGQ4NDFmZjdhMmZmZjFjNjE4NmZlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3Bw
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVDYWNoZUVycm9yLmgiCiAKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CisKIG5hbWVz
cGFjZSBKU0MgewogCiBib29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcjo6aXNW
YWxpZCgpIGNvbnN0CkBAIC0zNSw3ICszNyw3IEBAIGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpT
dGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QKIAogU3RyaW5nIEJ5dGVjb2RlQ2FjaGVFcnJv
cjo6U3RhbmRhcmRFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cmVycm9y
KG1fZXJybm8pOworICAgIHJldHVybiBzYWZlU3RyZXJyb3IobV9lcnJubykuZGF0YSgpOwogfQog
CiBib29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6V3JpdGVFcnJvcjo6aXNWYWxpZCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcApp
bmRleCAwMDdiMjUzZTY0OWYxYTVmYTI2ZWU3MjZiMDA0MDgzNmQ5NTNiODkwLi4wNjBlNDY2YjZh
MzE3MzA4NTQ0MDRmMjUwZDcxNjljODU0YjJiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTQ1LDcgKzQ2LDcgQEAgRnVuY3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KGNv
bnN0IGNoYXIqIGZpbGVuYW1lKQogICAgICAgICAgICAgbV9oYXNBY3RpdmVBbGxvd2xpc3QgPSB0
cnVlOwogICAgICAgICAgICAgbV9lbnRyaWVzLmFkZChmaWxlbmFtZSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMuIERpZCB5b3Ug
YWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0byBXZWJQcm9jZXNzLnNiPyBFcnJv
ciBjb2RlOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBk
YXRhTG9nRigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcy4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVh
ZC1kYXRhIGVudGl0bGVtZW50IHRvIFdlYlByb2Nlc3Muc2I/IEVycm9yIGNvZGU6ICVzXG4iLCBm
aWxlbmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC03Myw3ICs3NCw3IEBAIEZ1bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93
bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkKIAogICAgIGludCByZXN1bHQgPSBmY2xvc2UoZik7
CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxl
ICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGRhdGFMb2dG
KCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3Io
ZXJybm8pLmRhdGEoKSk7CiB9CiAKIGJvb2wgRnVuY3Rpb25BbGxvd2xpc3Q6OmNvbnRhaW5zKENv
ZGVCbG9jayogY29kZUJsb2NrKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKaW5kZXggY2U5NGUyYmRjYjE4MGYzMzIyOWQ0ZGNi
NmU4YTFhOGU1OWFjN2ZjOS4uMzBmNWU3NmM5MTRlNjQ4ODFlNDE4ZTZlMzkzYjJiOTI1NDc3MWMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJp
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CkBAIC0yODMsNyArMjg0LDcgQEAgdm9pZCBGdW5jdGlvbk92ZXJyaWRlczo6cGFy
c2VPdmVycmlkZXNJbkZpbGUoY29uc3QgY2hhciogZmlsZU5hbWUpCiAgICAgCiAgICAgaW50IHJl
c3VsdCA9IGZjbG9zZShmaWxlKTsKICAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nRigi
RmFpbGVkIHRvIGNsb3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlTmFtZSwgc3RyZXJyb3IoZXJybm8p
KTsKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmls
ZU5hbWUsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCA1
MzI5NWI4YTAyZGY0MzQ0ZjRkZGE5YTg3Yjc4ZWM1NWI3ZThjYjk4Li40NDA3NTk1MmYwMDc2OWRi
MmI5MDE2MDBiMTAxYmYyYmRlNGI2ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+
CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTMwMSw3ICszMDIsNyBAQCBNZW1vcnlIYW5k
bGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICBj
YXNlIE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKICAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1v
cnksIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihl
cnJubyksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDog
Iiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
ZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KTsKQEAgLTMxMyw3ICszMTQsNyBA
QCBNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiB7CiAgICAgICAgICAg
ICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwg
UFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFp
bGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVHcm93
YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSk7CkBAIC00
MDYsNyArNDA3LDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50
IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGEKICAgICAKICAgICBpZiAoZmFz
dE1lbW9yeSkgewogICAgICAgICBpZiAobXByb3RlY3QoZmFzdE1lbW9yeSArIGluaXRpYWxCeXRl
cywgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkg
ewotICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJu
byksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZl
U3RyZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDMsNyBAQCBSZWZQdHI8
TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1h
eGltdW0sIE1lbW9yeVNoYQogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1wcm90ZWN0KHNsb3dN
ZW1vcnkgKyBpbml0aWFsQnl0ZXMsIG1heGltdW1CeXRlcyAtIGluaXRpYWxCeXRlcywgUFJPVF9O
T05FKSkgewotICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJv
cihlcnJubyksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAi
LCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTUxNiw3ICs1MTcsNyBAQCBF
eHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1No
YXJlZChQYWdlQ291bnQgZGVsdGEpCiAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1h
cmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJl
YWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3
UG9pbnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1w
cm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkp
IHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2Fm
ZVN0cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkBAIC02MDUsNyArNjA2LDcgQEAgRXhwZWN0
ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3coUGFnZUNv
dW50IGRlbHRhKQogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtp
bmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQr
d3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9p
bnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90
ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8p
LCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0
cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiMzE5ZmIzMTNiZTA2MzE4Y2I3M2I4ZDlmNGQ0Y2JhMmNmYTAyN2Vi
Li4zZWMwMzkxZjdjNzM3YTNhZjE2MjQ3MzZiYjg1MTJhNTJkN2IxZTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTczLDYgKzczLDcgQEAKIAkJMzM3QjJE
NkEyNjU0NkVCMzAwRERGRDNEIC8qIExpa2VseURlbnNlVW5zaWduZWRJbnRlZ2VyU2V0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzN0IyRDY4MjY1
NDZFQUEwMERERkQzRCAvKiBMaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5jcHAgKi87IH07
CiAJCTQ0MjdDNUFBMjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2
MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCAqLzsgfTsKIAkJNDZCRUI2RUIyMkZGRTI0OTAwMjY5ODY3
IC8qIFJlZkNvdW50ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovOyB9
OworCQk0NkU5MzA0OTI3MUYxMjA1MDA1QkE2RTUgLyogU2FmZVN0cmVycm9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTQzNjQ3MjcxRjEwQUEw
MEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovOyB9OwogCQk1MERFMzVGNTIxNUJCMDE1MDBC
OTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwREUzNUYzMjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5h
bFN0cmluZ0ltcGwuY3BwICovOyB9OwogCQk1MTVGNzk0RTFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1Rjc5NEIxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNw
cCAqLzsgfTsKIAkJNTE3RjgyRDcxRkQyMkYzMDAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hh
bmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3RjgyRDUxRkQyMkYyRjAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwICov
OyB9OwpAQCAtMzk3LDYgKzM5OCw4IEBACiAJCTQ2MjA5QTI3MjY2RDU0M0EwMDdGOEY0QSAvKiBD
YW5jZWxsYWJsZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FuY2VsbGFibGVUYXNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkE5RUFCMUY0Q0Q2MUUwMDlBMkJCQyAvKiBDb21w
bGV0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wbGV0
aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFOTIyRkZE
REQ1MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3Vu
dGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFNDM2NDYyNzFGMTBBQTAw
Qzg4QzkwIC8qIFNhZmVTdHJlcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlU3RyZXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8q
IFNhZmVTdHJlcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYWZlU3RyZXJyb3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJCMDE1MDBCOTc5QzcgLyog
RXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEV4dGVybmFsU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUwREUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJbXBsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5n
QWNjdW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZ0Fj
Y3VtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc3LDYgKzEyODAs
OCBAQAogCQkJCUUzMUNGMEE1MjYxMDU4NTgwMDM2RTY3MyAvKiBSb2Jpbkhvb2RIYXNoVGFibGUu
aCAqLywKIAkJCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi8sCiAJ
CQkJMkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLywKKwkJCQk0NkU0MzY0
NzI3MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmNwcCAqLywKKwkJCQk0NkU0MzY0NjI3
MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmggKi8sCiAJCQkJMTRGM0IwRjYxNUU0NUU0
NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLywKIAkJCQkxNDY5NDE5NDE2RUFB
RkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAw
MzE3MjlCIC8qIFNjb3BlLmggKi8sCkBAIC0xODIxLDYgKzE4MjYsNyBAQAogCQkJCTJDREVEMEYz
MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVE
MEVGMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUNBODVDQTkyNDFCMEIyNjAwNzFDMkY1IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ2RTkzMDQ5MjcxRjEyMDUwMDVCQTZFNSAvKiBTYWZl
U3RyZXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVDM0QyMUZGQUM3RDAwRkFCRDYx
IC8qIFNjaGVkdWxlUGFpckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU1QzQwMjFGRkFD
QTIwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjY2
QjI4RTFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKaW5kZXggZjEwYzgxYTU3NTk5YjBkMDZlMTM2MTMxOWQ0NjcwMzYzMTI0OGZh
NS4uNGUzOGFhYTkzMGQ0MTA3MjdlZDM3NDliMmM3NDEyMjM4ZDZhY2FiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKQEAgLTIzMCw2ICsyMzAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAg
Um9iaW5Ib29kSGFzaFRhYmxlLmgKICAgICBSdW5Mb29wLmgKICAgICBTSEExLmgKKyAgICBTYWZl
U3RyZXJyb3IuaAogICAgIFNhdHVyYXRlZEFyaXRobWV0aWMuaAogICAgIFNjaGVkdWxlUGFpci5o
CiAgICAgU2NvcGUuaApAQCAtNDU5LDYgKzQ2MCw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFJl
ZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCisg
ICAgU2FmZVN0cmVycm9yLmNwcAogICAgIFNlY29uZHMuY3BwCiAgICAgU2VnbWVudGVkVmVjdG9y
LmNwcAogICAgIFNpeENoYXJhY3Rlckhhc2guY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TYWZlU3RyZXJyb3IuY3BwIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZjdmMDZkNzYwMTEyZWM5OTVkNDg3MDM1ZmZlOThiNDk4MzE2MmZhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcApAQCAtMCwwICsxLDYz
IEBACisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KKworI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCisKK25hbWVzcGFjZSBXVEYgeworCitDU3RyaW5nIHNhZmVTdHJl
cnJvcihpbnQgZXJybnVtKQoreworICAgIGNvbnN0IHNpemVfdCBidWZmZXJMZW5ndGggPSAxMDI0
OworICAgIGNoYXIqIGNzdHJpbmdCdWZmZXIgPSBudWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0g
Q1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChidWZmZXJMZW5ndGgsIGNzdHJpbmdCdWZmZXIpOwor
I2lmIE9TKFdJTkRPV1MpCisgICAgc3RyZXJyb3Jfcyhjc3RyaW5nQnVmZmVyLCBidWZmZXJMZW5n
dGgsIGVycm51bSk7CisjZWxzZQorICAgIGF1dG8gcmV0ID0gc3RyZXJyb3JfcihlcnJudW0sIGNz
dHJpbmdCdWZmZXIsIGJ1ZmZlckxlbmd0aCk7CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3Nh
bWU8ZGVjbHR5cGUocmV0KSwgY2hhcio+Ojp2YWx1ZSkgeworICAgICAgICAvLyBXZSBoYXZlIEdO
VSBzdHJlcnJvcl9yKCksIHdoaWNoIHJldHVybnMgY2hhciouIFRoaXMgbWF5IG9yIG1heSBub3Qg
YmUgYSBwb2ludGVyIGludG8KKyAgICAgICAgLy8gY3N0cmluZ0J1ZmZlciwgc28gd2UgaGF2ZSB0
byBiZSBjYXJlZnVsIG5vdCB0byB1c2UgZnVuY3Rpb25zIGxpa2Ugc3RyY3B5KCkgb3IgbWVtY3B5
KCkKKyAgICAgICAgLy8gdGhhdCBkbyBub3QgaGFuZGxlIG92ZXJsYXBwaW5nIG1lbW9yeSByZWdp
b25zLiBXZSBhbHNvIGhhdmUgdG8gYmUgY2FyZWZ1bCBiZWNhdXNlIHRoaXMKKyAgICAgICAgLy8g
aGFzIHRvIGNvbXBpbGUgZXZlbiBpZiByZXQgaXMgYW4gaW50LCBoZW5jZSB0aGUgcmVpbnRlcnBy
ZXRfY2FzdHMuCisgICAgICAgIGludCByZXN1bHRMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4ocmV0KSk7CisgICAgICAgIG1lbW1vdmUoY3N0cmluZ0J1ZmZlciwgcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4ocmV0KSwgcmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgY3N0cmluZ0J1
ZmZlcltyZXN1bHRMZW5ndGhdID0gJ1wwJzsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBo
YXZlIFBPU0lYIHN0cmVycm9yX3IsIHdoaWNoIHJldHVybnMgaW50IGFuZCBtYXkgZmFpbC4KKyAg
ICAgICAgaWYgKHJldCkKKyAgICAgICAgICAgIHNucHJpbnRmKGNzdHJpbmdCdWZmZXIsIGJ1ZmZl
ckxlbmd0aCwgIiVzICVkIiwgIlVua25vd24gZXJyb3IiLCBlcnJudW0pOworICAgIH0KKyNlbmRp
ZiAvLyBPUyhXSU5ET1dTKQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9TYWZlU3RyZXJyb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2ZjNTdlMTUzMzk3YTYyYzFiMDk3
M2ZjNTNhOTc2YmUyNGY5ODFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU2Fm
ZVN0cmVycm9yLmgKQEAgLTAsMCArMSw0OCBAQAorLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
UmVkIEhhdCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKworLy8gVGhpcyBpcyBzdHJlcnJvciwgZXhjZXB0IGl0IGlzIHRocmVhZHNhZmUu
IFRoZSBwcm9ibGVtIHdpdGggbm9ybWFsIHN0cmVycm9yIGlzIGl0IHJldHVybnMgYQorLy8gcG9p
bnRlciB0byBzdGF0aWMgc3RvcmFnZSwgYW5kIGl0IG1heSBhY3R1YWxseSBtb2RpZnkgdGhhdCBz
dG9yYWdlLCBzbyBpdCBjYW4gbmV2ZXIgYmUgdXNlZCBpbgorLy8gYW55IG11bHRpdGhyZWFkZWQg
YXBwbGljYXRpb24sIG9yIGFueSBsaWJyYXJ5IHRoYXQgbWF5IGJlIGxpbmtlZCB0byBhIG11bHRp
dGhyZWFkZWQgYXBwbGljYXRpb24uCisvLyAoV2h5IGRvZXMgaXQgbW9kaWZ5IGl0cyBzdG9yYWdl
PyBTbyB0aGF0IGl0IGNhbiBhcHBlbmQgdGhlIGVycm9yIG51bWJlciB0byB0aGUgZXJyb3Igc3Ry
aW5nLCBhcworLy8gaW4gIlVua25vd24gZXJyb3Igbi4iIEFsc28sIGJlY2F1c2UgaXQgd2lsbCBs
b2NhbGl6ZSB0aGUgZXJyb3IgbWVzc2FnZS4pIFRoZSBzdGFuZGFyZAorLy8gYWx0ZXJuYXRpdmVz
IGFyZSBzdHJlcnJvcl9zIGFuZCBzdHJlcnJvcl9yLCBidXQgYm90aCBoYXZlIHByb2JsZW1zLiBz
dHJlcnJvcl9zIGlzIHNwZWNpZmllZCBieQorLy8gQzExLCBidXQgbm90IGJ5IEMrKyAoYXMgb2Yg
QysrMjApLCBhbmQgaXQgaXMgb3B0aW9uYWwgc28gZ2xpYmMgZGVjaWRlZCB0byBpZ25vcmUgaXQu
IFdlIGNhbiBvbmx5CisvLyByZWx5IG9uIGl0IHRvIGV4aXN0IG9uIFdpbmRvd3MuIFRoZW4gc3Ry
ZXJyb3JfciBpcyBldmVuIHdvcnNlLiBGaXJzdCwgaXQgZG9lc24ndCBleGlzdCBhdCBhbGwgb24K
Ky8vIFdpbmRvd3MuIFNlY29uZCwgdGhlIEdOVSB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRo
IHRoZSBQT1NJWCB2ZXJzaW9uLCBhbmQgaXQgaXMgaW1wb3NzaWJsZSB0bworLy8gdXNlIGNvcnJl
Y3RseSB1bmxlc3MgeW91IGtub3cgd2hpY2ggdmVyc2lvbiB5b3UgaGF2ZS4gQm90aCBzdHJlcnJv
cl9zIGFuZCBzdHJlcnJvcl9yIGFyZQorLy8gY3VtYmVyc29tZSBiZWNhdXNlIHRoZXkgZm9yY2Ug
eW91IHRvIGFsbG9jYXRlIHRoZSBidWZmZXIgZm9yIHRoZSByZXN1bHQgbWFudWFsbHkuIEl0J3Mg
YWxsIHN1Y2ggYQorLy8gbWVzcyB0aGF0IHdlIHNob3VsZCBkZWFsIHdpdGggdGhlIGNvbXBsZXhp
dHkgaGVyZSByYXRoZXIgdGhhbiBlbHNld2hlcmUgaW4gV2ViS2l0LgorV1RGX0VYUE9SVF9QUklW
QVRFIENTdHJpbmcgc2FmZVN0cmVycm9yKGludCBlcnJudW0pOworCit9CisKK3VzaW5nIFdURjo6
c2FmZVN0cmVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmls
ZVN5c3RlbVBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVT
eXN0ZW1QbGF5U3RhdGlvbi5jcHAKaW5kZXggY2RhNWU1ZTE2MzI1MjQxYTFlN2I5NzE3MzA3Y2Zh
ZWI2YmQ4YzM0Yy4uYjg4MGViNzdkYjBiOWU1MTczZmQ1MTNlOTcwMGEwMTRiYjc2NGVlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRp
b24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KICNpbmNs
dWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvU2Fm
ZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKQEAgLTg4LDcgKzg5LDcgQEAgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKICAgICAvLyB1bmxpbmsoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxl
dGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGlu
ZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQogICAgIGJvb2wgdW5s
aW5rZWQgPSAhdW5saW5rKGZzUmVwLmRhdGEoKSk7CiAgICAgaWYgKCF1bmxpbmtlZCAmJiBlcnJu
byAhPSBFTk9FTlQpCi0gICAgICAgIExPR19FUlJPUigiRmlsZSBmYWlsZWQgdG8gZGVsZXRlLiBF
cnJvciBtZXNzYWdlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIExPR19FUlJPUigi
RmlsZSBmYWlsZWQgdG8gZGVsZXRlLiBFcnJvciBtZXNzYWdlOiAlcyIsIHNhZmVTdHJlcnJvcihl
cnJubykuZGF0YSgpKTsKIAogICAgIHJldHVybiB1bmxpbmtlZDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IDc5NTY3MGZkNmQ4MDI3OGRmNmMxNzBiMjE2
MmM0OGI1MmU5Y2JiZWYuLmYxMjEyNTM4NzYzNDUzNTQxOTI0M2Q4MWVjNmM0ZmYwYjFiZjAzYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0yNjEsNyArMjYyLDcg
QEAgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyB1bmxpbmsoLi4u
KSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXpl
cm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5v
bi1leGlzdGVudCBmaWxlKQogICAgIGJvb2wgdW5saW5rZWQgPSAhdW5saW5rKGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghdW5saW5rZWQgJiYgZXJybm8g
IT0gRU5PRU5UKQotICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJy
b3IgbWVzc2FnZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBMT0dfRVJST1IoIkZp
bGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3RyZXJyb3IoZXJy
bm8pLmRhdGEoKSk7CiAKICAgICByZXR1cm4gdW5saW5rZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmNwcAppbmRleCA2NGI0Y2QxMjdmMzNhZTk2Yjc1MWRlNzY0NTRiZWM0NTE0MzAwOWJl
Li5jNTJkMjgyMmMwNjBmMjBiMzRiNjU4NTAzYmMzZTk5ZGQ4ZGVmZWM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Ro
cmVhZHMvU2lnbmFscy5jcHAKQEAgLTUzLDYgKzUzLDcgQEAgZXh0ZXJuICJDIiB7CiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUGxhdGZvcm1SZWdpc3RlcnMuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVy
cm9yLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZEdyb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KQEAgLTM4NCw3ICszODUsNyBAQCB2
b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiB1Y29u
dGV4dCkKICAgICAgICAgc2lnZmlsbHNldCgmZGVmYXVsdEFjdGlvbi5zYV9tYXNrKTsKICAgICAg
ICAgZGVmYXVsdEFjdGlvbi5zYV9mbGFncyA9IDA7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gc2ln
YWN0aW9uKHNpZywgJmRlZmF1bHRBY3Rpb24sIG51bGxwdHIpOwotICAgICAgICBkYXRhTG9nTG5J
ZihyZXN1bHQgPT0gLTEsICJVbmFibGUgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5kbGVyIHdo
aWxlIHByb2NjZXNzaW5nIHNpZ25hbCAiLCBzaWcsICIgdGhlIHByb2Nlc3MgaXMgcHJvYmFibHkg
ZGVhZGxvY2tlZC4gKGVycm5vOiAiLCBzdHJlcnJvcihlcnJubyksICIpIik7CisgICAgICAgIGRh
dGFMb2dMbklmKHJlc3VsdCA9PSAtMSwgIlVuYWJsZSB0byByZXN0b3JlIHRoZSBkZWZhdWx0IGhh
bmRsZXIgd2hpbGUgcHJvY2Nlc3Npbmcgc2lnbmFsICIsIHNpZywgIiB0aGUgcHJvY2VzcyBpcyBw
cm9iYWJseSBkZWFkbG9ja2VkLiAoZXJybm86ICIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgp
LCAiKSIpOwogICAgIH07CiAKICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gYnV0IHdlIG1p
Z2h0IGFzIHdlbGwgYmUgY2FyZWZ1bC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggNDkxMTEzMjE5MzIxY2RjYzRmMjRjYmMz
OWViN2E2NTE5NGM4MTc2MS4uZmEzNzQ1NWE5NWJlMWFmM2U3NThlMmNkNDgzZjZjMjUzOGM1NjU1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9u
VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9u
VW5peC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUg
PHBvbGwuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZl
U3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1VuaVN0ZEV4dHJhcy5oPgogCkBAIC0zNTIsNyArMzUzLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpy
ZWFkeVJlYWRIYW5kbGVyKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKG1faXND
b25uZWN0ZWQpIHsKLSAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHJlY2Vpdmlu
ZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQgaW4gcHJvY2VzcyAlZDogJXMiLCBtX3NvY2tldERl
c2NyaXB0b3IsIGdldHBpZCgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRXJyb3IgcmVjZWl2aW5nIElQQyBtZXNzYWdlIG9uIHNvY2tldCAlZCBpbiBw
cm9jZXNzICVkOiAlcyIsIG1fc29ja2V0RGVzY3JpcHRvciwgZ2V0cGlkKCksIHNhZmVTdHJlcnJv
cihlcnJubykuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uRGlkQ2xvc2UoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAppbmRleCA5OThhMmE3Njc5MzA1YTQz
NWZhMzVjYzFhZWViNzA4ZjM0Njc1NTViLi5mMzQ2NjZiYzhlMDA1MjJmNjQ1NGRhYjI0MmUwZDQw
NzUyZjEwMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVk
TWVtb3J5VW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1l
bW9yeVVuaXguY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+Cisj
aW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9VbmlTdGRFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC0xNjUsNyArMTY2LDcgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVk
TWVtb3J5OjphbGxvY2F0ZShzaXplX3Qgc2l6ZSkKIHsKICAgICBpbnQgZmlsZURlc2NyaXB0b3Ig
PSBjcmVhdGVTaGFyZWRNZW1vcnkoKTsKICAgICBpZiAoZmlsZURlc2NyaXB0b3IgPT0gLTEpIHsK
LSAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY3JlYXRlIHNoYXJlZCBtZW1vcnk6ICVz
Iiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY3Jl
YXRlIHNoYXJlZCBtZW1vcnk6ICVzIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KaW5kZXggZGQ1MGZiOWVhMzc3NGQ1Yjk0NDQ2MTEw
MWQ1YWQ5YmEwN2U1ZTkxMC4uZDgwZGFlMWIxYzhiMmQxZjZhYTQ2ZjIwYzk4NWRkNWU2NmUzNjcx
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMu
bW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgPHd0Zi9EYXRhTG9nLmg+CiAjaW1wb3J0IDx3
dGYvRmlsZVN5c3RlbS5oPgogI2ltcG9ydCA8d3RmL1JhbmRvbU51bWJlci5oPgorI2ltcG9ydCA8
d3RmL1NhZmVTdHJlcnJvci5oPgogI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBAIC0yNTEsNyAr
MjUyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gc2V0QW5kU2VyaWFsaXplU2Fu
ZGJveFBhcmFtZXRlcnMoY29uc3QgU2FuZGJveEluaXQKICAgICAgICAgY29uc3QgY2hhciogbmFt
ZSA9IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5uYW1lKGkpOwogICAgICAgICBjb25zdCBjaGFy
KiB2YWx1ZSA9IGluaXRpYWxpemF0aW9uUGFyYW1ldGVycy52YWx1ZShpKTsKICAgICAgICAgaWYg
KHNhbmRib3hfc2V0X3BhcmFtKHNhbmRib3hQYXJhbWV0ZXJzLmdldCgpLCBuYW1lLCB2YWx1ZSkp
IHsKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBzZXQgc2FuZGJveCBw
YXJhbWV0ZXI6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IHNldCBzYW5kYm94IHBhcmFtZXRlcjog
JXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKICAgICAg
ICAgICAgIENSQVNIKCk7CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci5hcHBlbmQobmFtZSwg
JzonLCB2YWx1ZSwgJzonKTsKQEAgLTI3MSwxMyArMjcyLDEzIEBAIHN0YXRpYyBTdHJpbmcgc2Fu
ZGJveERhdGFWYXVsdFBhcmVudERpcmVjdG9yeSgpCiAgICAgY2hhciB0ZW1wW1BBVEhfTUFYXTsK
ICAgICBzaXplX3QgbGVuZ3RoID0gY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSLCB0
ZW1wLCBzaXplb2YodGVtcCkpOwogICAgIGlmICghbGVuZ3RoKSB7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0
aDogJXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiJXM6IENvdWxkIG5vdCByZXRyaWV2ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3Rvcnkg
cGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsK
ICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVChsZW5n
dGggPD0gc2l6ZW9mKHRlbXApKTsKICAgICBjaGFyIHJlc29sdmVkUGF0aFtQQVRIX01BWF07CiAg
ICAgaWYgKCFyZWFscGF0aCh0ZW1wLCByZXNvbHZlZFBhdGgpKSB7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiJXM6IENvdWxkIG5vdCBjYW5vbmljYWxpemUgdXNlciB0ZW1wb3JhcnkgZGlyZWN0b3J5
IHBhdGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBX
VEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXplIHVzZXIgdGVtcG9yYXJ5IGRp
cmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKS5k
YXRhKCkpOwogICAgICAgICBleGl0KEVYX05PUEVSTSk7CiAgICAgfQogICAgIHJldHVybiByZXNv
bHZlZFBhdGg7CkBAIC0zNzMsNyArMzc0LDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlU2FuZGJveENh
Y2hlRGlyZWN0b3J5KGNvbnN0IFNhbmRib3hJbmZvJiBpbmZvKQogICAgICAgICBpZiAoIW1ha2VE
YXRhVmF1bHQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2UgewotICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzOiBTYW5kYm94IGRpcmVjdG9yeSBjb3VsZG4ndCBiZSBjcmVh
dGVkOiAiLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBXVEZMb2dB
bHdheXMoIiVzOiBTYW5kYm94IGRpcmVjdG9yeSBjb3VsZG4ndCBiZSBjcmVhdGVkOiAiLCBnZXRw
cm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAjZWxzZQpAQCAtNTIxLDcgKzUyMiw3IEBAIHN0YXRpYyBib29sIHRyeUFw
cGx5Q2FjaGVkU2FuZGJveChjb25zdCBTYW5kYm94SW5mbyYgaW5mbykKICAgICBzZXROb3RpZnlP
cHRpb25zKCk7CiAKICAgICBpZiAoc2FuZGJveF9hcHBseSgmcHJvZmlsZSkpIHsKLSAgICAgICAg
V1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBzYW5kYm94OiAlc1xuIiwg
Z2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIl
czogQ291bGQgbm90IGFwcGx5IGNhY2hlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwg
c2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCkBAIC02MjMsNyArNjI0LDcgQEAgc3RhdGljIGJvb2wgYXBwbHlTYW5kYm94KGNvbnN0IEF1
eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmIHBhcmFtZXQKICAgICBzZXRO
b3RpZnlPcHRpb25zKCk7CiAgICAgCiAgICAgaWYgKHNhbmRib3hfYXBwbHkoc2FuZGJveFByb2Zp
bGUuZ2V0KCkpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBhcHBseSBj
b21waWxlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGQgbm90IGFwcGx5IGNvbXBpbGVkIHNhbmRi
b3g6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAg
ICAgICAgIENSQVNIKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9saWJw
YXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYyBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9z
cmMvbGlicGFzL3Bhc19wYWdlX21hbGxvYy5jCmluZGV4IGYxNTE1YWY5OTBlOTJhNzE1OGYzOWI0
Y2E5NTU4MDI5NTEzMjgwZDYuLjA3NWJhOTliN2U2ODA4Y2Y4MDM1ZmRkODM2YzljMWVhOTRlZDVm
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdl
X21hbGxvYy5jCisrKyBiL1NvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdl
X21hbGxvYy5jCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBwYXNfcGFnZV9tYWxsb2NfY29tbWl0
KHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiAgICAgaWYgKHBhc19wYWdlX21hbGxvY19tcHJvdGVj
dF9kZWNvbW1pdHRlZCkgewogICAgICAgICByZXN1bHQgPSBtcHJvdGVjdCgodm9pZCopYmFzZV9h
c19pbnQsIGVuZF9hc19pbnQgLSBiYXNlX2FzX2ludCwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSk7
CiAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgIHBhc19sb2coIkNvdWxkIG5vdCBt
cHJvdGVjdCBvbiBjb21taXQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAg
cGFzX2xvZygiQ291bGQgbm90IG1wcm90ZWN0IG9uIGNvbW1pdDogZXJyb3IgY29kZSAlZFxuIiwg
cmVzdWx0KTsKICAgICAgICAgICAgIFBBU19BU1NFUlQoIXJlc3VsdCk7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
Y2YzZTA0ZWFhZDY1NTZkZTdiMzIyNjM1ODNiZmMzYTc5N2YwZTJhNy4uYzlmZjMwY2FkMjFkMjkw
YzAzYWM0YzRmYjIxN2NhMjEzZjBiZmVjNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTE5ICBNaWNoYWVs
IENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ug
c3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMjEtMTAtMTkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIFt3ZWJraXRzY21weV0gT3ZlcnJpZGUgaHR0cCB1cmwgd2l0aCBz
c2ggdXJsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZWUzYWU3MjQxNTkyNmRl
ZjAyNzdhYTQzZTVkNTg0YmYzMjhmZjRhLi5mZGRkNmFjMGUwODU0Y2U1OTg0MjEzNWY0ZmU4Yzhj
ZGQ0YWY0NWUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTgyLDYgKzgyLDcg
QEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9Sb2Jpbkhvb2RIYXNoU2V0LmNw
cAogICAgIFRlc3RzL1dURi9SdW5Mb29wLmNwcAogICAgIFRlc3RzL1dURi9TSEExLmNwcAorICAg
IFRlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwCiAgICAgVGVzdHMvV1RGL1NhdHVyYXRlZEFyaXRo
bWV0aWNPcGVyYXRpb25zLmNwcAogICAgIFRlc3RzL1dURi9TY29wZS5jcHAKICAgICBUZXN0cy9X
VEYvU2NvcGVkTGFtYmRhLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU2FmZVN0cmVycm9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Nh
ZmVTdHJlcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhkN2E4NGQyN2ZiNDRlM2YwNDhiMzY4MGIxOTA3
MDM0ZDdkYmUzOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1NhZmVTdHJlcnJvci5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVy
cm9yLmg+CisKKyNpbmNsdWRlIDxjc3RyaW5nPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK1RFU1QoV1RGX1NhZmVTdHJlcnJvciwgU3RyaW5nc0FyZUVxdWFsKQoreworICAgIC8vIFdl
IHRlc3Qgb25seSBhIGZldyBrbm93biBlcnJvciBjb2RlcyBiZWNhdXNlIG91ciBlcnJvciBtZXNz
YWdlIHdoZW4gcGFzc2luZyBhbiB1bmtub3duIGVycm9yCisgICAgLy8gY29kZSB3b24ndCBiZSBs
b2NhbGl6ZWQgYW5kIG1pZ2h0IG5vdCBtYXRjaCB0aGUgc3lzdGVtIGxpYmMgYW55d2F5LgorICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykKKyAgICAgICAgRVhQRUNUX1NUUkVRKHN0cmVy
cm9yKGkpLCBzYWZlU3RyZXJyb3IoaSkuZGF0YSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441829</attachid>
            <date>2021-10-19 18:06:23 -0700</date>
            <delta_ts>2021-10-20 06:47:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211019200622.patch</filename>
            <type>text/plain</type>
            <size>36888</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
N2YxMzUwYTVhMjFlYjljNTUyZDMyM2MwYjczNTBmMjNiZWEzMTYyLi4yM2Q1N2Q4OThmNTdjMDE1
Y2IzZWM3NjgwNDg2NzNlMGE4YTZiNDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2NsYW5n
IDEzXSBTdXBwcmVzcyBzaWduIGNvbXBhcmlzb24gd2FybmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOGMwMmFmYmQ1Yjdi
MjUzZDUzYjdkMDU3NzZkYzI5ZGY4MzM5OWUzYS4uN2ZjYzEwM2RjODM1MTZiYmFhNTJjODRmM2M5
ZmMyZmNhZjk1YWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0
cmVycm9yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBzYWZlU3RyZXJyb3IgZnVuY3Rpb24gdGhhdCB3ZSBjYW4gdXNlIHdpdGhvdXQg
c2FmZXR5IHdvcnJpZXMuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1NhZmVTdHJl
cnJvci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVj
b2RlQ2FjaGVFcnJvci5jcHAuCisgICAgICAgIChXVEY6OnNhZmVTdHJlcnJvcik6CisgICAgICAg
ICogd3RmL1NhZmVTdHJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvcGxheXN0YXRpb24v
RmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6
OmRlbGV0ZUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgor
ICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAgICogd3Rm
L3RocmVhZHMvU2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OmpzY1NpZ25hbEhhbmRsZXIpOgor
CiAyMDIxLTEwLTE5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIG9sZCBHQ0Mgd29ya2Fyb3VuZCBmb3IgQWxsb2NhdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE5
M2NjMTYzZWIyMWVlYjMwMzY0NWIwYTA3YTg4NjBhNTRjM2RlZjEuLmI2MmZhNWI0YTE2MmQyMDUy
YzAzYmE3NjQ4ZmUzMDYwNzgzYTdkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEt
MTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5vcmc+CisKKyAgICAg
ICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgICog
UGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjphbGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0Ojp0cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2ViS2l0OjphcHBs
eVNhbmRib3gpOgorCiAyMDIxLTEwLTE5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NDA5OS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
ZwppbmRleCAxYzY1MmQxOWNlNmM0MDBiMWJmOWEyNDRhZTAwODU1MWQ5NjBhNzc1Li4zMWVkN2Ex
OTcxMDcwNTY2NzVmMjBiNDFhZmU2YzA0NDQzZmRlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjEtMTAtMTkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bnbm9tZS5v
cmc+CisKKyAgICAgICAgRG8gbm90IHVzZSBzdHJlcnJvcigpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzE5MTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGxpYnBhcy9zcmMvbGlicGFzL3Bhc19wYWdl
X21hbGxvYy5jOgorICAgICAgICAocGFzX3BhZ2VfbWFsbG9jX2NvbW1pdCk6CisKIDIwMjEtMTAt
MTYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJldmVydGluZyByMjg0MzA1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1NjcmlwdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KaW5kZXggYjVmODRjM2YzOGYwOGNiOGFmOTFlMGI2ZGQ4MjQ0MWE4YjA5NjE5NC4uODUw
MzQ3YjdjZDcxMjYwYTBiZjY1OTA3NTBhOWE0NTBkYzMxMWMxYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0IDxzeXMvc3RhdC5o
PgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9TSEExLmg+CisjaW1w
b3J0IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvU2NvcGUuaD4KICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vRGF0YVZhdWx0U1BJ
Lmg+CkBAIC0zMDQsNyArMzA1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJpbmcmKWVycm9y
CiAgICAgY29uc3QgY2hhciogdGVtcEZpbGVOYW1lID0gW2NhY2hlUGF0aFN0cmluZyBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpAIi50bXAiXS5VVEY4U3RyaW5nOwogICAgIGludCBmZCA9IG9wZW4o
Y2FjaGVGaWxlTmFtZSwgT19DUkVBVCB8IE9fV1JPTkxZIHwgT19FWExPQ0sgfCBPX05PTkJMT0NL
LCAwNjAwKTsKICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5n
KCJDb3VsZCBub3Qgb3BlbiBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSBmaWxlLiBJdCdzIGxp
a2VseSBhbm90aGVyIFZNIG9yIHByb2Nlc3MgaXMgYWxyZWFkeSB1c2luZyBpdC4gRXJyb3I6ICIs
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90
IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQncyBsaWtlbHkgYW5vdGhl
ciBWTSBvciBwcm9jZXNzIGlzIGFscmVhZHkgdXNpbmcgaXQuIEVycm9yOiAiLCBzYWZlU3RyZXJy
b3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBOTzsKICAgICB9CiAKQEAgLTMxNCw3
ICszMTUsNyBAQCAtIChCT09MKXdyaXRlQ2FjaGU6KFN0cmluZyYpZXJyb3IKIAogICAgIGludCB0
ZW1wRkQgPSBvcGVuKHRlbXBGaWxlTmFtZSwgT19DUkVBVCB8IE9fUkRXUiB8IE9fRVhMT0NLIHwg
T19OT05CTE9DSywgMDYwMCk7CiAgICAgaWYgKHRlbXBGRCA9PSAtMSkgewotICAgICAgICBlcnJv
ciA9IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIG9yIGxvY2sgdGhlIGJ5dGVjb2RlIGNhY2hl
IHRlbXAgZmlsZS4gRXJyb3I6ICIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVycm9yID0g
bWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUgYnl0ZWNvZGUgY2FjaGUgdGVt
cCBmaWxlLiBFcnJvcjogIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL3Rlc3RhcGkubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0KaW5kZXggZjJlYzQyYmE4ODhhZjc0OWE2MDRjNzgwN2ZlM2Y1NTEzOTQ2NTRlYy4uM2Zj
M2E5ZTAyMzc0Nzc0MjcwMzE5MDQ2MDUyOWM5MGRlNWEwOWFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAi
SlNXcmFwcGVyTWFwVGVzdHMuaCIKICNpbXBvcnQgIlJlZ3Jlc3MxNDEyNzUuaCIKICNpbXBvcnQg
IlJlZ3Jlc3MxNDE4MDkuaCIKKyNpbXBvcnQgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQSS5oPgogCiAKQEAgLTI0NDgsNyArMjQ0OSw3IEBA
IHN0YXRpYyBOU1VSTCAqcmVzb2x2ZVBhdGhUb1NjcmlwdHMoKQogICAgICAgICBjb25zdCBzaXpl
X3QgbWF4TGVuZ3RoID0gMTAwMDA7CiAgICAgICAgIGNoYXIgY3dkW21heExlbmd0aF07CiAgICAg
ICAgIGlmICghZ2V0Y3dkKGN3ZCwgbWF4TGVuZ3RoKSkgewotICAgICAgICAgICAgTlNMb2coQCJn
ZXRjd2QgZXJyb3JlZCB3aXRoIGNvZGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
ICAgIE5TTG9nKEAiZ2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIsIHNhZmVTdHJlcnJvcihl
cnJubykuZGF0YSgpKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAg
TlNVUkwgKmN3ZFVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlcyIsIGN3ZF1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA0ZjRlMjVjM2Qy
Y2EzOWQ0YWNlMTY1MzZiOGMyZjdlNDlhNDJjNGQ2Li5mYjEwZDY2MzA1MTdlYTQwNjJhZDA3OGE0
OWMxYWZlMGM4MDljNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtODgsNiArODgsNyBAQAog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJl
SGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW5jbHVkZSA8d3Rm
L1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9T
dHJpbmdQcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTE4MTksNyArMTgy
MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk9wZW5GaWxlLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBGSUxFKiBkZXNjcmlwdG9yID0g
Zm9wZW4oZmlsZVBhdGguZmlsZVN5c3RlbVBhdGgoKS5hc2NpaSgpLmRhdGEoKSwgInIiKTsKICAg
ICBpZiAoIWRlc2NyaXB0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygi
Q291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmluZygpLCAiIGZvcGVuIGhh
ZCBlcnJvcjogIl9zLCBzdHJlcnJvcihlcnJubykpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVj
dCwgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSBhdCAiX3MsIGZpbGVQYXRoLnN0cmlu
ZygpLCAiIGZvcGVuIGhhZCBlcnJvcjogIl9zLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSkp
KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTRmls
ZURlc2NyaXB0b3I6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGRlc2NyaXB0b3Ip
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNv
ZGVDYWNoZUVycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2Rl
Q2FjaGVFcnJvci5jcHAKaW5kZXggNzZmMTAyZjkwMTA2NTkyYTA3MjI1OTkyNTE3ODRkMDI2N2I2
YTg2Yi4uYTlmY2IzZWYyNTQ5NjJlYzljMGQ4NDFmZjdhMmZmZjFjNjE4NmZlZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3Bw
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVDYWNoZUVycm9yLmgiCiAKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CisKIG5hbWVz
cGFjZSBKU0MgewogCiBib29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcjo6aXNW
YWxpZCgpIGNvbnN0CkBAIC0zNSw3ICszNyw3IEBAIGJvb2wgQnl0ZWNvZGVDYWNoZUVycm9yOjpT
dGFuZGFyZEVycm9yOjppc1ZhbGlkKCkgY29uc3QKIAogU3RyaW5nIEJ5dGVjb2RlQ2FjaGVFcnJv
cjo6U3RhbmRhcmRFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0cmVycm9y
KG1fZXJybm8pOworICAgIHJldHVybiBzYWZlU3RyZXJyb3IobV9lcnJubykuZGF0YSgpOwogfQog
CiBib29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6V3JpdGVFcnJvcjo6aXNWYWxpZCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcApp
bmRleCAwMDdiMjUzZTY0OWYxYTVmYTI2ZWU3MjZiMDA0MDgzNmQ5NTNiODkwLi4wNjBlNDY2YjZh
MzE3MzA4NTQ0MDRmMjUwZDcxNjljODU0YjJiMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xpc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAK
QEAgLTQ1LDcgKzQ2LDcgQEAgRnVuY3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KGNv
bnN0IGNoYXIqIGZpbGVuYW1lKQogICAgICAgICAgICAgbV9oYXNBY3RpdmVBbGxvd2xpc3QgPSB0
cnVlOwogICAgICAgICAgICAgbV9lbnRyaWVzLmFkZChmaWxlbmFtZSk7CiAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBvcGVuIGZpbGUgJXMuIERpZCB5b3Ug
YWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0byBXZWJQcm9jZXNzLnNiPyBFcnJv
ciBjb2RlOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBk
YXRhTG9nRigiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcy4gRGlkIHlvdSBhZGQgdGhlIGZpbGUtcmVh
ZC1kYXRhIGVudGl0bGVtZW50IHRvIFdlYlByb2Nlc3Muc2I/IEVycm9yIGNvZGU6ICVzXG4iLCBm
aWxlbmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC03Myw3ICs3NCw3IEBAIEZ1bmN0aW9uQWxsb3dsaXN0OjpGdW5jdGlvbkFsbG93
bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkKIAogICAgIGludCByZXN1bHQgPSBmY2xvc2UoZik7
CiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxl
ICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGRhdGFMb2dG
KCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzYWZlU3RyZXJyb3Io
ZXJybm8pLmRhdGEoKSk7CiB9CiAKIGJvb2wgRnVuY3Rpb25BbGxvd2xpc3Q6OmNvbnRhaW5zKENv
ZGVCbG9jayogY29kZUJsb2NrKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKaW5kZXggY2U5NGUyYmRjYjE4MGYzMzIyOWQ0ZGNi
NmU4YTFhOGU1OWFjN2ZjOS4uMzBmNWU3NmM5MTRlNjQ4ODFlNDE4ZTZlMzkzYjJiOTI1NDc3MWMz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJp
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlk
ZXMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvU2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CkBAIC0yODMsNyArMjg0LDcgQEAgdm9pZCBGdW5jdGlvbk92ZXJyaWRlczo6cGFy
c2VPdmVycmlkZXNJbkZpbGUoY29uc3QgY2hhciogZmlsZU5hbWUpCiAgICAgCiAgICAgaW50IHJl
c3VsdCA9IGZjbG9zZShmaWxlKTsKICAgICBpZiAocmVzdWx0KQotICAgICAgICBkYXRhTG9nRigi
RmFpbGVkIHRvIGNsb3NlIGZpbGUgJXM6ICVzXG4iLCBmaWxlTmFtZSwgc3RyZXJyb3IoZXJybm8p
KTsKKyAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xuIiwgZmls
ZU5hbWUsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKIH0KICAgICAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAppbmRleCA1
MzI5NWI4YTAyZGY0MzQ0ZjRkZGE5YTg3Yjc4ZWM1NWI3ZThjYjk4Li40NDA3NTk1MmYwMDc2OWRi
MmI5MDE2MDBiMTAxYmYyYmRlNGI2ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTWVtb3J5LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+
CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRTZXQuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTMwMSw3ICszMDIsNyBAQCBNZW1vcnlIYW5k
bGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICBj
YXNlIE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKICAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1v
cnksIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihl
cnJubyksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDog
Iiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBt
ZW1vcnlNYW5hZ2VyKCkuZnJlZUZhc3RNZW1vcnkobWVtb3J5KTsKQEAgLTMxMyw3ICszMTQsNyBA
QCBNZW1vcnlIYW5kbGU6On5NZW1vcnlIYW5kbGUoKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBNZW1vcnlTaGFyaW5nTW9kZTo6U2hhcmVkOiB7CiAgICAgICAgICAg
ICAgICAgaWYgKG1wcm90ZWN0KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSwgUFJPVF9SRUFEIHwg
UFJPVF9XUklURSkpIHsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFp
bGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOworICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpLCAiXG4i
KTsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVHcm93
YWJsZUJvdW5kc0NoZWNraW5nTWVtb3J5KG1lbW9yeSwgbV9tYXBwZWRDYXBhY2l0eSk7CkBAIC00
MDYsNyArNDA3LDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFnZUNvdW50
IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGEKICAgICAKICAgICBpZiAoZmFz
dE1lbW9yeSkgewogICAgICAgICBpZiAobXByb3RlY3QoZmFzdE1lbW9yeSArIGluaXRpYWxCeXRl
cywgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAtIGluaXRpYWxCeXRlcywgUFJPVF9OT05FKSkg
ewotICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJu
byksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZl
U3RyZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTQ0Miw3ICs0NDMsNyBAQCBSZWZQdHI8
TWVtb3J5PiBNZW1vcnk6OnRyeUNyZWF0ZShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1h
eGltdW0sIE1lbW9yeVNoYQogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1wcm90ZWN0KHNsb3dN
ZW1vcnkgKyBpbml0aWFsQnl0ZXMsIG1heGltdW1CeXRlcyAtIGluaXRpYWxCeXRlcywgUFJPVF9O
T05FKSkgewotICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJv
cihlcnJubyksICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAi
LCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAKQEAgLTUxNiw3ICs1MTcsNyBAQCBF
eHBlY3RlZDxQYWdlQ291bnQsIE1lbW9yeTo6R3Jvd0ZhaWxSZWFzb24+IE1lbW9yeTo6Z3Jvd1No
YXJlZChQYWdlQ291bnQgZGVsdGEpCiAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1h
cmtpbmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJl
YWQrd3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3
UG9pbnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1w
cm90ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkp
IHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJy
bm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2Fm
ZVN0cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCkBAIC02MDUsNyArNjA2LDcgQEAgRXhwZWN0
ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3coUGFnZUNv
dW50IGRlbHRhKQogICAgICAgICAKICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgIk1hcmtp
bmcgV2ViQXNzZW1ibHkgbWVtb3J5J3MgIiwgUmF3UG9pbnRlcihtZW1vcnkpLCAiIGFzIHJlYWQr
d3JpdGUgaW4gcmFuZ2UgWyIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSwgIiwgIiwgUmF3UG9p
bnRlcihzdGFydEFkZHJlc3MgKyBleHRyYUJ5dGVzKSwgIikiKTsKICAgICAgICAgaWYgKG1wcm90
ZWN0KHN0YXJ0QWRkcmVzcywgZXh0cmFCeXRlcywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8p
LCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0
cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiMzE5ZmIzMTNiZTA2MzE4Y2I3M2I4ZDlmNGQ0Y2JhMmNmYTAyN2Vi
Li4zZWMwMzkxZjdjNzM3YTNhZjE2MjQ3MzZiYjg1MTJhNTJkN2IxZTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTczLDYgKzczLDcgQEAKIAkJMzM3QjJE
NkEyNjU0NkVCMzAwRERGRDNEIC8qIExpa2VseURlbnNlVW5zaWduZWRJbnRlZ2VyU2V0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzN0IyRDY4MjY1
NDZFQUEwMERERkQzRCAvKiBMaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5jcHAgKi87IH07
CiAJCTQ0MjdDNUFBMjFGNkQ2QzMwMEE2MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjdDNUE5MjFGNkQ2QzMwMEE2
MTJBNCAvKiBBU0NJSUNUeXBlLmNwcCAqLzsgfTsKIAkJNDZCRUI2RUIyMkZGRTI0OTAwMjY5ODY3
IC8qIFJlZkNvdW50ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3BwICovOyB9
OworCQk0NkU5MzA0OTI3MUYxMjA1MDA1QkE2RTUgLyogU2FmZVN0cmVycm9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTQzNjQ3MjcxRjEwQUEw
MEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovOyB9OwogCQk1MERFMzVGNTIxNUJCMDE1MDBC
OTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUwREUzNUYzMjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5h
bFN0cmluZ0ltcGwuY3BwICovOyB9OwogCQk1MTVGNzk0RTFDRkM5RjRBMDBDQ0VEOTMgLyogQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1Rjc5NEIxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNw
cCAqLzsgfTsKIAkJNTE3RjgyRDcxRkQyMkYzMDAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hh
bmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3RjgyRDUxRkQyMkYyRjAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3BwICov
OyB9OwpAQCAtMzk3LDYgKzM5OCw4IEBACiAJCTQ2MjA5QTI3MjY2RDU0M0EwMDdGOEY0QSAvKiBD
YW5jZWxsYWJsZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FuY2VsbGFibGVUYXNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QkE5RUFCMUY0Q0Q2MUUwMDlBMkJCQyAvKiBDb21w
bGV0aW9uSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wbGV0
aW9uSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJFQjZFOTIyRkZE
REQ1MDAyNjk4NjcgLyogUmVmQ291bnRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3Vu
dGVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFNDM2NDYyNzFGMTBBQTAw
Qzg4QzkwIC8qIFNhZmVTdHJlcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYWZlU3RyZXJyb3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8q
IFNhZmVTdHJlcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYWZlU3RyZXJyb3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGMzIxNUJCMDE1MDBCOTc5QzcgLyog
RXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEV4dGVybmFsU3RyaW5nSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUwREUzNUY0MjE1QkIwMTUwMEI5NzlDNyAvKiBFeHRlcm5hbFN0cmluZ0ltcGwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZXJuYWxTdHJpbmdJbXBsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxM0UxNzBBMUNEN0Q1QkYwMEUzNjUwQiAvKiBMb2dnaW5n
QWNjdW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZ0Fj
Y3VtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjc3LDYgKzEyODAs
OCBAQAogCQkJCUUzMUNGMEE1MjYxMDU4NTgwMDM2RTY3MyAvKiBSb2Jpbkhvb2RIYXNoVGFibGUu
aCAqLywKIAkJCQkyQ0RFRDBGMTE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5jcHAgKi8sCiAJ
CQkJMkNERUQwRjIxODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuaCAqLywKKwkJCQk0NkU0MzY0
NzI3MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmNwcCAqLywKKwkJCQk0NkU0MzY0NjI3
MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmggKi8sCiAJCQkJMTRGM0IwRjYxNUU0NUU0
NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLywKIAkJCQkxNDY5NDE5NDE2RUFB
RkY4MDAyNEUxNDYgLyogU2NoZWR1bGVQYWlyLmggKi8sCiAJCQkJMUEzNTI0QUExRDYzQTJGRjAw
MzE3MjlCIC8qIFNjb3BlLmggKi8sCkBAIC0xODIxLDYgKzE4MjYsNyBAQAogCQkJCTJDREVEMEYz
MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVE
MEVGMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUNBODVDQTkyNDFCMEIyNjAwNzFDMkY1IC8qIFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29h
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ2RTkzMDQ5MjcxRjEyMDUwMDVCQTZFNSAvKiBTYWZl
U3RyZXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVDM0QyMUZGQUM3RDAwRkFCRDYx
IC8qIFNjaGVkdWxlUGFpckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU1QzQwMjFGRkFD
QTIwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjY2
QjI4RTFEQzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKaW5kZXggZjEwYzgxYTU3NTk5YjBkMDZlMTM2MTMxOWQ0NjcwMzYzMTI0OGZh
NS4uNGUzOGFhYTkzMGQ0MTA3MjdlZDM3NDliMmM3NDEyMjM4ZDZhY2FiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKQEAgLTIzMCw2ICsyMzAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAg
Um9iaW5Ib29kSGFzaFRhYmxlLmgKICAgICBSdW5Mb29wLmgKICAgICBTSEExLmgKKyAgICBTYWZl
U3RyZXJyb3IuaAogICAgIFNhdHVyYXRlZEFyaXRobWV0aWMuaAogICAgIFNjaGVkdWxlUGFpci5o
CiAgICAgU2NvcGUuaApAQCAtNDU5LDYgKzQ2MCw3IEBAIHNldChXVEZfU09VUkNFUwogICAgIFJl
ZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCisg
ICAgU2FmZVN0cmVycm9yLmNwcAogICAgIFNlY29uZHMuY3BwCiAgICAgU2VnbWVudGVkVmVjdG9y
LmNwcAogICAgIFNpeENoYXJhY3Rlckhhc2guY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TYWZlU3RyZXJyb3IuY3BwIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMzUxY2E5ZGJlZWNlYmU0MWE5MmM1NjNjZTMyNzAzZGM3ZjY2ZmFiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcApAQCAtMCwwICsxLDYy
IEBACisvKiAKKyAqIENvcHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KKworI2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVk
ZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworQ1N0cmluZyBzYWZlU3RyZXJy
b3IoaW50IGVycm51bSkKK3sKKyAgICBjb25zdCBzaXplX3QgYnVmZmVyTGVuZ3RoID0gMTAyNDsK
KyAgICBjaGFyKiBjc3RyaW5nQnVmZmVyID0gbnVsbHB0cjsKKyAgICBhdXRvIHJlc3VsdCA9IENT
dHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoYnVmZmVyTGVuZ3RoLCBjc3RyaW5nQnVmZmVyKTsKKyNp
ZiBPUyhXSU5ET1dTKQorICAgIHN0cmVycm9yX3MoY3N0cmluZ0J1ZmZlciwgYnVmZmVyTGVuZ3Ro
LCBlcnJudW0pOworI2Vsc2UKKyAgICBhdXRvIHJldCA9IHN0cmVycm9yX3IoZXJybnVtLCBjc3Ry
aW5nQnVmZmVyLCBidWZmZXJMZW5ndGgpOworICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19zYW1l
PGRlY2x0eXBlKHJldCksIGNoYXIqPjo6dmFsdWUpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSBHTlUg
c3RyZXJyb3JfcigpLCB3aGljaCByZXR1cm5zIGNoYXIqLiBUaGlzIG1heSBvciBtYXkgbm90IGJl
IGEgcG9pbnRlciBpbnRvCisgICAgICAgIC8vIGNzdHJpbmdCdWZmZXIsIHNvIHdlIGhhdmUgdG8g
YmUgY2FyZWZ1bCBub3QgdG8gdXNlIGZ1bmN0aW9ucyBsaWtlIHN0cmNweSgpIG9yIG1lbWNweSgp
CisgICAgICAgIC8vIHRoYXQgZG8gbm90IGhhbmRsZSBvdmVybGFwcGluZyBtZW1vcnkgcmVnaW9u
cy4gV2UgYWxzbyBoYXZlIHRvIGJlIGNhcmVmdWwgYmVjYXVzZSB0aGlzCisgICAgICAgIC8vIGhh
cyB0byBjb21waWxlIGV2ZW4gaWYgcmV0IGlzIGFuIGludCwgaGVuY2UgdGhlIHJlaW50ZXJwcmV0
X2Nhc3RzLgorICAgICAgICBpbnQgcmVzdWx0TGVuZ3RoID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KHJldCkpOworICAgICAgICBtZW1tb3ZlKGNzdHJpbmdCdWZmZXIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHJldCksIHJlc3VsdExlbmd0aCk7CisgICAgICAgIGNzdHJpbmdCdWZm
ZXJbcmVzdWx0TGVuZ3RoXSA9ICdcMCc7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gV2UgaGF2
ZSBQT1NJWCBzdHJlcnJvcl9yLCB3aGljaCByZXR1cm5zIGludCBhbmQgbWF5IGZhaWwuCisgICAg
ICAgIGlmIChyZXQpCisgICAgICAgICAgICBzbnByaW50Zihjc3RyaW5nQnVmZmVyLCBidWZmZXJM
ZW5ndGgsICIlcyAlZCIsICJVbmtub3duIGVycm9yIiwgZXJybnVtKTsKKyAgICB9CisjZW5kaWYg
Ly8gT1MoV0lORE9XUykKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NhZmVTdHJlcnJvci5oIGIvU291cmNlL1dU
Ri93dGYvU2FmZVN0cmVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjdmYzU3ZTE1MzM5N2E2MmMxYjA5NzNm
YzUzYTk3NmJlMjRmOTgxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NhZmVT
dHJlcnJvci5oCkBAIC0wLDAgKzEsNDggQEAKKy8qIAorICogQ29weXJpZ2h0IChDKSAyMDIxIFJl
ZCBIYXQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKKy8vIFRoaXMgaXMgc3RyZXJyb3IsIGV4Y2VwdCBpdCBpcyB0aHJlYWRzYWZlLiBU
aGUgcHJvYmxlbSB3aXRoIG5vcm1hbCBzdHJlcnJvciBpcyBpdCByZXR1cm5zIGEKKy8vIHBvaW50
ZXIgdG8gc3RhdGljIHN0b3JhZ2UsIGFuZCBpdCBtYXkgYWN0dWFsbHkgbW9kaWZ5IHRoYXQgc3Rv
cmFnZSwgc28gaXQgY2FuIG5ldmVyIGJlIHVzZWQgaW4KKy8vIGFueSBtdWx0aXRocmVhZGVkIGFw
cGxpY2F0aW9uLCBvciBhbnkgbGlicmFyeSB0aGF0IG1heSBiZSBsaW5rZWQgdG8gYSBtdWx0aXRo
cmVhZGVkIGFwcGxpY2F0aW9uLgorLy8gKFdoeSBkb2VzIGl0IG1vZGlmeSBpdHMgc3RvcmFnZT8g
U28gdGhhdCBpdCBjYW4gYXBwZW5kIHRoZSBlcnJvciBudW1iZXIgdG8gdGhlIGVycm9yIHN0cmlu
ZywgYXMKKy8vIGluICJVbmtub3duIGVycm9yIG4uIiBBbHNvLCBiZWNhdXNlIGl0IHdpbGwgbG9j
YWxpemUgdGhlIGVycm9yIG1lc3NhZ2UuKSBUaGUgc3RhbmRhcmQKKy8vIGFsdGVybmF0aXZlcyBh
cmUgc3RyZXJyb3JfcyBhbmQgc3RyZXJyb3JfciwgYnV0IGJvdGggaGF2ZSBwcm9ibGVtcy4gc3Ry
ZXJyb3JfcyBpcyBzcGVjaWZpZWQgYnkKKy8vIEMxMSwgYnV0IG5vdCBieSBDKysgKGFzIG9mIEMr
KzIwKSwgYW5kIGl0IGlzIG9wdGlvbmFsIHNvIGdsaWJjIGRlY2lkZWQgdG8gaWdub3JlIGl0LiBX
ZSBjYW4gb25seQorLy8gcmVseSBvbiBpdCB0byBleGlzdCBvbiBXaW5kb3dzLiBUaGVuIHN0cmVy
cm9yX3IgaXMgZXZlbiB3b3JzZS4gRmlyc3QsIGl0IGRvZXNuJ3QgZXhpc3QgYXQgYWxsIG9uCisv
LyBXaW5kb3dzLiBTZWNvbmQsIHRoZSBHTlUgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0
aGUgUE9TSVggdmVyc2lvbiwgYW5kIGl0IGlzIGltcG9zc2libGUgdG8KKy8vIHVzZSBjb3JyZWN0
bHkgdW5sZXNzIHlvdSBrbm93IHdoaWNoIHZlcnNpb24geW91IGhhdmUuIEJvdGggc3RyZXJyb3Jf
cyBhbmQgc3RyZXJyb3JfciBhcmUKKy8vIGN1bWJlcnNvbWUgYmVjYXVzZSB0aGV5IGZvcmNlIHlv
dSB0byBhbGxvY2F0ZSB0aGUgYnVmZmVyIGZvciB0aGUgcmVzdWx0IG1hbnVhbGx5LiBJdCdzIGFs
bCBzdWNoIGEKKy8vIG1lc3MgdGhhdCB3ZSBzaG91bGQgZGVhbCB3aXRoIHRoZSBjb21wbGV4aXR5
IGhlcmUgcmF0aGVyIHRoYW4gZWxzZXdoZXJlIGluIFdlYktpdC4KK1dURl9FWFBPUlRfUFJJVkFU
RSBDU3RyaW5nIHNhZmVTdHJlcnJvcihpbnQgZXJybnVtKTsKKworfQorCit1c2luZyBXVEY6OnNh
ZmVTdHJlcnJvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVT
eXN0ZW1QbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lz
dGVtUGxheVN0YXRpb24uY3BwCmluZGV4IGNkYTVlNWUxNjMyNTI0MWExZTdiOTcxNzMwN2NmYWVi
NmJkOGMzNGMuLmI4ODBlYjc3ZGIwYjllNTE3M2ZkNTEzZTk3MDBhMDE0YmI3NjRlZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9u
LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CiAjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVT
dHJlcnJvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNw
YWNlIFdURiB7CkBAIC04OCw3ICs4OSw3IEBAIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpCiAgICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRp
b24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcg
aW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKICAgICBib29sIHVubGlu
a2VkID0gIXVubGluayhmc1JlcC5kYXRhKCkpOwogICAgIGlmICghdW5saW5rZWQgJiYgZXJybm8g
IT0gRU5PRU5UKQotICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJy
b3IgbWVzc2FnZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBMT0dfRVJST1IoIkZp
bGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3RyZXJyb3IoZXJy
bm8pLmRhdGEoKSk7CiAKICAgICByZXR1cm4gdW5saW5rZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9z
aXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCA3OTU2NzBmZDZkODAyNzhkZjZjMTcwYjIxNjJj
NDhiNTJlOWNiYmVmLi5mMTIxMjUzODc2MzQ1MzU0MTkyNDNkODFlYzZjNGZmMGIxYmYwM2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRl
IDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjYxLDcgKzI2Miw3IEBA
IGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLy8gdW5saW5rKC4uLikg
cmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJv
IGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24t
ZXhpc3RlbnQgZmlsZSkKICAgICBib29sIHVubGlua2VkID0gIXVubGluayhmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoIXVubGlua2VkICYmIGVycm5vICE9
IEVOT0VOVCkKLSAgICAgICAgTE9HX0VSUk9SKCJGaWxlIGZhaWxlZCB0byBkZWxldGUuIEVycm9y
IG1lc3NhZ2U6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGaWxl
IGZhaWxlZCB0byBkZWxldGUuIEVycm9yIG1lc3NhZ2U6ICVzIiwgc2FmZVN0cmVycm9yKGVycm5v
KS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHVubGlua2VkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2ln
bmFscy5jcHAKaW5kZXggNjRiNGNkMTI3ZjMzYWU5NmI3NTFkZTc2NDU0YmVjNDUxNDMwMDliZS4u
YzUyZDI4MjJjMDYwZjIwYjM0YjY1ODUwM2JjM2U5OWRkOGRlZmVjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL1NpZ25hbHMuY3BwCkBAIC01Myw2ICs1Myw3IEBAIGV4dGVybiAiQyIgewogI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJv
ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRHcm91cC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDx3dGYvV1RGQ29uZmlnLmg+CkBAIC0zODQsNyArMzg1LDcgQEAgdm9p
ZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWNvbnRl
eHQpCiAgICAgICAgIHNpZ2ZpbGxzZXQoJmRlZmF1bHRBY3Rpb24uc2FfbWFzayk7CiAgICAgICAg
IGRlZmF1bHRBY3Rpb24uc2FfZmxhZ3MgPSAwOwogICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2Fj
dGlvbihzaWcsICZkZWZhdWx0QWN0aW9uLCBudWxscHRyKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYo
cmVzdWx0ID09IC0xLCAiVW5hYmxlIHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgaGFuZGxlciB3aGls
ZSBwcm9jY2Vzc2luZyBzaWduYWwgIiwgc2lnLCAiIHRoZSBwcm9jZXNzIGlzIHByb2JhYmx5IGRl
YWRsb2NrZWQuIChlcnJubzogIiwgc3RyZXJyb3IoZXJybm8pLCAiKSIpOworICAgICAgICBkYXRh
TG9nTG5JZihyZXN1bHQgPT0gLTEsICJVbmFibGUgdG8gcmVzdG9yZSB0aGUgZGVmYXVsdCBoYW5k
bGVyIHdoaWxlIHByb2NjZXNzaW5nIHNpZ25hbCAiLCBzaWcsICIgdGhlIHByb2Nlc3MgaXMgcHJv
YmFibHkgZGVhZGxvY2tlZC4gKGVycm5vOiAiLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSwg
IikiKTsKICAgICB9OwogCiAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJ1dCB3ZSBtaWdo
dCBhcyB3ZWxsIGJlIGNhcmVmdWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDQ5MTExMzIxOTMyMWNkY2M0ZjI0Y2JjMzll
YjdhNjUxOTRjODE3NjEuLmZhMzc0NTVhOTViZTFhZjNlNzU4ZTJjZDQ4M2Y2YzI1MzhjNTY1NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxw
b2xsLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0
cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9V
bmlTdGRFeHRyYXMuaD4KIApAQCAtMzUyLDcgKzM1Myw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6cmVh
ZHlSZWFkSGFuZGxlcigpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX2lzQ29u
bmVjdGVkKSB7Ci0gICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciByZWNlaXZpbmcg
SVBDIG1lc3NhZ2Ugb24gc29ja2V0ICVkIGluIHByb2Nlc3MgJWQ6ICVzIiwgbV9zb2NrZXREZXNj
cmlwdG9yLCBnZXRwaWQoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIkVycm9yIHJlY2VpdmluZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQgaW4gcHJv
Y2VzcyAlZDogJXMiLCBtX3NvY2tldERlc2NyaXB0b3IsIGdldHBpZCgpLCBzYWZlU3RyZXJyb3Io
ZXJybm8pLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3VuaXgvU2hhcmVkTWVtb3J5VW5peC5jcHAKaW5kZXggOTk4YTJhNzY3OTMwNWE0MzVm
YTM1Y2MxYWVlYjcwOGYzNDY3NTU1Yi4uZjM0NjY2YmM4ZTAwNTIyZjY0NTRkYWIyNDJlMGQ0MDc1
MmYxMDA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1l
bW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1v
cnlVbml4LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtMTY1LDcgKzE2Niw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1l
bW9yeTo6YWxsb2NhdGUoc2l6ZV90IHNpemUpCiB7CiAgICAgaW50IGZpbGVEZXNjcmlwdG9yID0g
Y3JlYXRlU2hhcmVkTWVtb3J5KCk7CiAgICAgaWYgKGZpbGVEZXNjcmlwdG9yID09IC0xKSB7Ci0g
ICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5OiAlcyIs
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNyZWF0
ZSBzaGFyZWQgbWVtb3J5OiAlcyIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCmluZGV4IGRkNTBmYjllYTM3NzRkNWI5NDQ0NjExMDFk
NWFkOWJhMDdlNWU5MTAuLmQ4MGRhZTFiMWM4YjJkMWY2YWE0NmYyMGM5ODVkZDVlNjZlMzY3MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1t
CkBAIC01MSw2ICs1MSw3IEBACiAjaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgogI2ltcG9ydCA8d3Rm
L0ZpbGVTeXN0ZW0uaD4KICNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KKyNpbXBvcnQgPHd0
Zi9TYWZlU3RyZXJyb3IuaD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtMjUxLDcgKzI1
Miw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IHNldEFuZFNlcmlhbGl6ZVNhbmRi
b3hQYXJhbWV0ZXJzKGNvbnN0IFNhbmRib3hJbml0CiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUg
PSBpbml0aWFsaXphdGlvblBhcmFtZXRlcnMubmFtZShpKTsKICAgICAgICAgY29uc3QgY2hhciog
dmFsdWUgPSBpbml0aWFsaXphdGlvblBhcmFtZXRlcnMudmFsdWUoaSk7CiAgICAgICAgIGlmIChz
YW5kYm94X3NldF9wYXJhbShzYW5kYm94UGFyYW1ldGVycy5nZXQoKSwgbmFtZSwgdmFsdWUpKSB7
Ci0gICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3Qgc2V0IHNhbmRib3ggcGFy
YW1ldGVyOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBzZXQgc2FuZGJveCBwYXJhbWV0ZXI6ICVz
XG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAg
ICAgICBDUkFTSCgpOwogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUsICc6
JywgdmFsdWUsICc6Jyk7CkBAIC0yNzEsMTMgKzI3MiwxMyBAQCBzdGF0aWMgU3RyaW5nIHNhbmRi
b3hEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkoKQogICAgIGNoYXIgdGVtcFtQQVRIX01BWF07CiAg
ICAgc2l6ZV90IGxlbmd0aCA9IGNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX0NBQ0hFX0RJUiwgdGVt
cCwgc2l6ZW9mKHRlbXApKTsKICAgICBpZiAoIWxlbmd0aCkgewotICAgICAgICBXVEZMb2dBbHdh
eXMoIiVzOiBDb3VsZCBub3QgcmV0cmlldmUgdXNlciB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6
ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBXVEZMb2dB
bHdheXMoIiVzOiBDb3VsZCBub3QgcmV0cmlldmUgdXNlciB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBh
dGg6ICVzXG4iLCBnZXRwcm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAg
ICAgICAgIGV4aXQoRVhfTk9QRVJNKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3Ro
IDw9IHNpemVvZih0ZW1wKSk7CiAgICAgY2hhciByZXNvbHZlZFBhdGhbUEFUSF9NQVhdOwogICAg
IGlmICghcmVhbHBhdGgodGVtcCwgcmVzb2x2ZWRQYXRoKSkgewotICAgICAgICBXVEZMb2dBbHdh
eXMoIiVzOiBDb3VsZCBub3QgY2Fub25pY2FsaXplIHVzZXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSBw
YXRoOiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCIlczogQ291bGQgbm90IGNhbm9uaWNhbGl6ZSB1c2VyIHRlbXBvcmFyeSBkaXJl
Y3RvcnkgcGF0aDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykuZGF0
YSgpKTsKICAgICAgICAgZXhpdChFWF9OT1BFUk0pOwogICAgIH0KICAgICByZXR1cm4gcmVzb2x2
ZWRQYXRoOwpAQCAtMzczLDcgKzM3NCw3IEBAIHN0YXRpYyBib29sIGVuc3VyZVNhbmRib3hDYWNo
ZURpcmVjdG9yeShjb25zdCBTYW5kYm94SW5mbyYgaW5mbykKICAgICAgICAgaWYgKCFtYWtlRGF0
YVZhdWx0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgV1RGTG9nQWx3YXlzKCIlczogU2FuZGJveCBkaXJlY3RvcnkgY291bGRuJ3QgYmUgY3JlYXRl
ZDogIiwgZ2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3
YXlzKCIlczogU2FuZGJveCBkaXJlY3RvcnkgY291bGRuJ3QgYmUgY3JlYXRlZDogIiwgZ2V0cHJv
Z25hbWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogI2Vsc2UKQEAgLTUyMSw3ICs1MjIsNyBAQCBzdGF0aWMgYm9vbCB0cnlBcHBs
eUNhY2hlZFNhbmRib3goY29uc3QgU2FuZGJveEluZm8mIGluZm8pCiAgICAgc2V0Tm90aWZ5T3B0
aW9ucygpOwogCiAgICAgaWYgKHNhbmRib3hfYXBwbHkoJnByb2ZpbGUpKSB7Ci0gICAgICAgIFdU
RkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBhcHBseSBjYWNoZWQgc2FuZGJveDogJXNcbiIsIGdl
dHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6
IENvdWxkIG5vdCBhcHBseSBjYWNoZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2duYW1lKCksIHNh
ZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtNjIzLDcgKzYyNCw3IEBAIHN0YXRpYyBib29sIGFwcGx5U2FuZGJveChjb25zdCBBdXhp
bGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0CiAgICAgc2V0Tm90
aWZ5T3B0aW9ucygpOwogICAgIAogICAgIGlmIChzYW5kYm94X2FwcGx5KHNhbmRib3hQcm9maWxl
LmdldCgpKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgYXBwbHkgY29t
cGlsZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBhcHBseSBjb21waWxlZCBzYW5kYm94
OiAlc1xuIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAg
ICAgICBDUkFTSCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGlicGFz
L3NyYy9saWJwYXMvcGFzX3BhZ2VfbWFsbG9jLmMgYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3Jj
L2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYwppbmRleCBmMTUxNWFmOTkwZTkyYTcxNThmMzliNGNh
OTU1ODAyOTUxMzI4MGQ2Li4wNzViYTk5YjdlNjgwOGNmODAzNWZkZDgzNmM5YzFlYTk0ZWQ1ZjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9t
YWxsb2MuYworKysgYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9t
YWxsb2MuYwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgcGFzX3BhZ2VfbWFsbG9jX2NvbW1pdCh2
b2lkKiBwdHIsIHNpemVfdCBzaXplKQogICAgIGlmIChwYXNfcGFnZV9tYWxsb2NfbXByb3RlY3Rf
ZGVjb21taXR0ZWQpIHsKICAgICAgICAgcmVzdWx0ID0gbXByb3RlY3QoKHZvaWQqKWJhc2VfYXNf
aW50LCBlbmRfYXNfaW50IC0gYmFzZV9hc19pbnQsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwog
ICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICBwYXNfbG9nKCJDb3VsZCBub3QgbXBy
b3RlY3Qgb24gY29tbWl0OiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgIHBh
c19sb2coIkNvdWxkIG5vdCBtcHJvdGVjdCBvbiBjb21taXQ6IGVycm9yIGNvZGUgJWRcbiIsIHJl
c3VsdCk7CiAgICAgICAgICAgICBQQVNfQVNTRVJUKCFyZXN1bHQpOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNm
M2UwNGVhYWQ2NTU2ZGU3YjMyMjYzNTgzYmZjM2E3OTdmMGUyYTcuLmM5ZmYzMGNhZDIxZDI5MGMw
M2FjNGM0ZmIyMTdjYTIxM2YwYmZlYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0xOSAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0
cmVycm9yKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMTkxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorCiAyMDIxLTEwLTE5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbd2Via2l0c2NtcHldIE92ZXJyaWRlIGh0dHAgdXJsIHdpdGggc3No
IHVybApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggZWVlM2FlNzI0MTU5MjZkZWYw
Mjc3YWE0M2U1ZDU4NGJmMzI4ZmY0YS4uZmRkZDZhYzBlMDg1NGNlNTk4NDIxMzVmNGZlOGM4Y2Rk
NGFmNDVlMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC04Miw2ICs4Miw3IEBA
IHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvUm9iaW5Ib29kSGFzaFNldC5jcHAK
ICAgICBUZXN0cy9XVEYvUnVuTG9vcC5jcHAKICAgICBUZXN0cy9XVEYvU0hBMS5jcHAKKyAgICBU
ZXN0cy9XVEYvU2FmZVN0cmVycm9yLmNwcAogICAgIFRlc3RzL1dURi9TYXR1cmF0ZWRBcml0aG1l
dGljT3BlcmF0aW9ucy5jcHAKICAgICBUZXN0cy9XVEYvU2NvcGUuY3BwCiAgICAgVGVzdHMvV1RG
L1Njb3BlZExhbWJkYS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1NhZmVTdHJlcnJvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TYWZl
U3RyZXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4ZDdhODRkMjdmYjQ0ZTNmMDQ4YjM2ODBiMTkwNzAz
NGQ3ZGJlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TYWZlU3RyZXJyb3IuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJv
ci5oPgorCisjaW5jbHVkZSA8Y3N0cmluZz4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitURVNUKFdURl9TYWZlU3RyZXJyb3IsIFN0cmluZ3NBcmVFcXVhbCkKK3sKKyAgICAvLyBXZSB0
ZXN0IG9ubHkgYSBmZXcga25vd24gZXJyb3IgY29kZXMgYmVjYXVzZSBvdXIgZXJyb3IgbWVzc2Fn
ZSB3aGVuIHBhc3NpbmcgYW4gdW5rbm93biBlcnJvcgorICAgIC8vIGNvZGUgd29uJ3QgYmUgbG9j
YWxpemVkIGFuZCBtaWdodCBub3QgbWF0Y2ggdGhlIHN5c3RlbSBsaWJjIGFueXdheS4KKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspCisgICAgICAgIEVYUEVDVF9TVFJFUShzdHJlcnJv
cihpKSwgc2FmZVN0cmVycm9yKGkpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441876</attachid>
            <date>2021-10-20 06:47:49 -0700</date>
            <delta_ts>2021-10-20 08:04:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231913-20211020084748.patch</filename>
            <type>text/plain</type>
            <size>38988</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NTI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NDhjMTE1NWFiMGM3MGNhNDg4NmU2NWY1MjExMjAyNGZlYmZkOTZmLi5jYTJmYmZmOGUzOTA3NzAw
ZDRiMDJkNzFlMjYzNzBiMGZiMWMxOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMS0xMC0yMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0Lm1tOgorICAg
ICAgICAoLVtKU1NjcmlwdCB3cml0ZUNhY2hlOl0pOgorICAgICAgICAqIEFQSS90ZXN0cy90ZXN0
YXBpLm1tOgorICAgICAgICAocmVzb2x2ZVBhdGhUb1NjcmlwdHMpOgorICAgICAgICAqIGpzYy5j
cHA6CisgICAgICAgICogcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UgY29uc3QpOgor
ICAgICAgICAqIHRvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25BbGxvd2xpc3Q6OkZ1bmN0aW9uQWxsb3dsaXN0KToKKyAgICAgICAgKiB0b29scy9GdW5j
dGlvbk92ZXJyaWRlcy5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uT3ZlcnJpZGVzOjpwYXJz
ZU92ZXJyaWRlc0luRmlsZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6TWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6TWVtb3J5Ojp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
Omdyb3dTaGFyZWQpOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorCiAyMDIx
LTEwLTE5ICBUYWRldSBaYWdhbGxvICA8dHphZ2FsbG9AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZHJlc3MgcG9zdC1sYW5kaW5nIGZlZWRiYWNrIHRvIHdhc20gZXhjZXB0aW9ucwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBjN2M3
NmY5NTgyNzk5NTUyZTU0OTY3MGIwNjhkZGMxYmExYmVhYjg0Li43ODJlM2UzMjUzZmM0ZDc2MzI4
ZGFkMGNjMjRjYWM5ZDc0MTYyZDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTEwLTIwICBN
aWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5v
dCB1c2Ugc3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbmV3IHNhZmVTdHJlcnJvciBmdW5jdGlvbiB0aGF0IHdlIGNhbiB1c2Ug
d2l0aG91dCB3b3JyeWluZyBhYm91dCB0aHJlYWQgc2FmZXR5LgorCisgICAgICAgICogV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIHd0Zi9TYWZlU3RyZXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6c2Fm
ZVN0cmVycm9yKToKKyAgICAgICAgKiB3dGYvU2FmZVN0cmVycm9yLmg6IEFkZGVkLgorICAgICAg
ICAqIHd0Zi9saW51eC9SZWFsVGltZVRocmVhZHMuY3BwOgorICAgICAgICAoV1RGOjpSZWFsVGlt
ZVRocmVhZHM6OnByb21vdGVUaHJlYWRUb1JlYWxUaW1lKToKKyAgICAgICAgKiB3dGYvcGxheXN0
YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3Rl
bUltcGw6OmRlbGV0ZUZpbGUpOgorICAgICAgICAqIHd0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6ZGVsZXRlRmlsZSk6CisgICAgICAg
ICogd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcDoKKyAgICAgICAgKFdURjo6VGhyZWFkOjpl
c3RhYmxpc2hIYW5kbGUpOgorICAgICAgICAqIHd0Zi90aHJlYWRzL1NpZ25hbHMuY3BwOgorICAg
ICAgICAoV1RGOjpqc2NTaWduYWxIYW5kbGVyKToKKwogMjAyMS0xMC0yMCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBVc2Vy
SW50ZXJhY3RpdmUgdGhyZWFkcyBhcmUgbm90IFJlYWwtdGltZSBpbiBMaW51eApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA1ODFhNjVkYjMzYTBkYTliNmU4Nzk1NWFjM2NlZTk2ODk5YzU2OGZmLi45NTJkZmM1OGQxMGJj
YjQwNmZjMDNlNDI5NzYwZGUxZGNhYTM0ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDIxLTEwLTIwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisg
ICAgICAgIERvIG5vdCB1c2Ugc3RyZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHA6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIpOgorICAgICAg
ICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZSk6CisgICAgICAgICogUGxhdGZv
cm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVt
b3J5OjphbGxvY2F0ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpzZXRBbmRTZXJpYWxpemVTYW5kYm94UGFyYW1ldGVycyk6
CisgICAgICAgIChXZWJLaXQ6OnNhbmRib3hEYXRhVmF1bHRQYXJlbnREaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjplbnN1cmVTYW5kYm94Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2Vi
S2l0Ojp0cnlBcHBseUNhY2hlZFNhbmRib3gpOgorICAgICAgICAoV2ViS2l0OjphcHBseVNhbmRi
b3gpOgorCiAyMDIxLTEwLTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFVzZXJJbnRlcmFjdGl2ZSB0aHJlYWRzIGFyZSBu
b3QgUmVhbC10aW1lIGluIExpbnV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMWM2NTJkMTljZTZjNDAwYjFiZjlh
MjQ0YWUwMDg1NTFkOTYwYTc3NS4uZDI1YjM5MDlhZTgwMjUzMzQ0ZjBiNDRhZjJkMzcyNmYwM2Rh
NjdmYyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEwLTIwICBNaWNoYWVsIENh
dGFuemFybyAgPG1jYXRhbnphcm9AZ25vbWUub3JnPgorCisgICAgICAgIERvIG5vdCB1c2Ugc3Ry
ZXJyb3IoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMxOTEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYzoKKyAgICAgICAgKHBhc19wYWdl
X21hbGxvY19jb21taXQpOgorCiAyMDIxLTEwLTE2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NDMwNS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IGI1Zjg0YzNmMzhmMDhjYjhh
ZjkxZTBiNmRkODI0NDFhOGIwOTYxOTQuLjg1MDM0N2I3Y2Q3MTI2MGEwYmY2NTkwNzUwYTlhNDUw
ZGMzMTFjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQu
bW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQpAQCAtNDAsNiAr
NDAsNyBAQAogI2ltcG9ydCA8c3lzL3N0YXQuaD4KICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+
CiAjaW1wb3J0IDx3dGYvU0hBMS5oPgorI2ltcG9ydCA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2lt
cG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQg
PHd0Zi9zcGkvZGFyd2luL0RhdGFWYXVsdFNQSS5oPgpAQCAtMzA0LDcgKzMwNSw3IEBAIC0gKEJP
T0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogICAgIGNvbnN0IGNoYXIqIHRlbXBGaWxlTmFt
ZSA9IFtjYWNoZVBhdGhTdHJpbmcgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6QCIudG1wIl0uVVRG
OFN0cmluZzsKICAgICBpbnQgZmQgPSBvcGVuKGNhY2hlRmlsZU5hbWUsIE9fQ1JFQVQgfCBPX1dS
T05MWSB8IE9fRVhMT0NLIHwgT19OT05CTE9DSywgMDYwMCk7CiAgICAgaWYgKGZkID09IC0xKSB7
Ci0gICAgICAgIGVycm9yID0gbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gb3IgbG9jayB0aGUg
Ynl0ZWNvZGUgY2FjaGUgZmlsZS4gSXQncyBsaWtlbHkgYW5vdGhlciBWTSBvciBwcm9jZXNzIGlz
IGFscmVhZHkgdXNpbmcgaXQuIEVycm9yOiAiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBl
cnJvciA9IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIG9yIGxvY2sgdGhlIGJ5dGVjb2RlIGNh
Y2hlIGZpbGUuIEl0J3MgbGlrZWx5IGFub3RoZXIgVk0gb3IgcHJvY2VzcyBpcyBhbHJlYWR5IHVz
aW5nIGl0LiBFcnJvcjogIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gTk87CiAgICAgfQogCkBAIC0zMTQsNyArMzE1LDcgQEAgLSAoQk9PTCl3cml0ZUNhY2hl
OihTdHJpbmcmKWVycm9yCiAKICAgICBpbnQgdGVtcEZEID0gb3Blbih0ZW1wRmlsZU5hbWUsIE9f
Q1JFQVQgfCBPX1JEV1IgfCBPX0VYTE9DSyB8IE9fTk9OQkxPQ0ssIDA2MDApOwogICAgIGlmICh0
ZW1wRkQgPT0gLTEpIHsKLSAgICAgICAgZXJyb3IgPSBtYWtlU3RyaW5nKCJDb3VsZCBub3Qgb3Bl
biBvciBsb2NrIHRoZSBieXRlY29kZSBjYWNoZSB0ZW1wIGZpbGUuIEVycm9yOiAiLCBzdHJlcnJv
cihlcnJubykpOworICAgICAgICBlcnJvciA9IG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIG9y
IGxvY2sgdGhlIGJ5dGVjb2RlIGNhY2hlIHRlbXAgZmlsZS4gRXJyb3I6ICIsIHNhZmVTdHJlcnJv
cihlcnJubykuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCmluZGV4IGYyZWM0MmJhODg4YWY3NDlh
NjA0Yzc4MDdmZTNmNTUxMzk0NjU0ZWMuLjNmYzNhOWUwMjM3NDc3NDI3MDMxOTA0NjA1MjljOTBk
ZTVhMDlhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVz
dGFwaS5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0K
QEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkpTV3JhcHBlck1hcFRlc3RzLmgiCiAjaW1wb3J0
ICJSZWdyZXNzMTQxMjc1LmgiCiAjaW1wb3J0ICJSZWdyZXNzMTQxODA5LmgiCisjaW1wb3J0IDx3
dGYvU2FmZVN0cmVycm9yLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9EYXRhVmF1bHRTUEku
aD4KIAogCkBAIC0yNDQ4LDcgKzI0NDksNyBAQCBzdGF0aWMgTlNVUkwgKnJlc29sdmVQYXRoVG9T
Y3JpcHRzKCkKICAgICAgICAgY29uc3Qgc2l6ZV90IG1heExlbmd0aCA9IDEwMDAwOwogICAgICAg
ICBjaGFyIGN3ZFttYXhMZW5ndGhdOwogICAgICAgICBpZiAoIWdldGN3ZChjd2QsIG1heExlbmd0
aCkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAiZ2V0Y3dkIGVycm9yZWQgd2l0aCBjb2RlOiAlcyIs
IHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICBOU0xvZyhAImdldGN3ZCBlcnJvcmVkIHdp
dGggY29kZTogJXMiLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgICAgICBl
eGl0KDEpOwogICAgICAgICB9CiAgICAgICAgIE5TVVJMICpjd2RVUkwgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMiLCBjd2RdXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKaW5kZXggNGY0ZTI1YzNkMmNhMzlkNGFjZTE2NTM2YjhjMmY3ZTQ5YTQyYzRk
Ni4uZmIxMGQ2NjMwNTE3ZWE0MDYyYWQwNzhhNDljMWFmZTBjODA5YzcxMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9u
b3RvbmljVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvVVJMLmg+CkBAIC0xODE5LDcgKzE4MjAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oZnVuY3Rpb25PcGVuRmlsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cgogCiAgICAgRklMRSogZGVzY3JpcHRvciA9IGZvcGVuKGZpbGVQYXRoLmZpbGVTeXN0ZW1QYXRo
KCkuYXNjaWkoKS5kYXRhKCksICJyIik7CiAgICAgaWYgKCFkZXNjcmlwdG9yKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTUV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVVUklFcnJv
cihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgYXQgIl9zLCBm
aWxlUGF0aC5zdHJpbmcoKSwgIiBmb3BlbiBoYWQgZXJyb3I6ICJfcywgc3RyZXJyb3IoZXJybm8p
KSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTUV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVVUklFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVu
IGZpbGUgYXQgIl9zLCBmaWxlUGF0aC5zdHJpbmcoKSwgIiBmb3BlbiBoYWQgZXJyb3I6ICJfcywg
c2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpKSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0ZpbGVEZXNjcmlwdG9yOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShkZXNjcmlwdG9yKSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CeXRlY29kZUNhY2hlRXJyb3IuY3BwCmluZGV4IDc2ZjEwMmY5
MDEwNjU5MmEwNzIyNTk5MjUxNzg0ZDAyNjdiNmE4NmIuLmE5ZmNiM2VmMjU0OTYyZWM5YzBkODQx
ZmY3YTJmZmYxYzYxODZmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0J5dGVjb2RlQ2FjaGVFcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQnl0ZWNvZGVDYWNoZUVycm9yLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlQ2FjaGVFcnJvci5oIgogCisjaW5jbHVkZSA8
d3RmL1NhZmVTdHJlcnJvci5oPgorCiBuYW1lc3BhY2UgSlNDIHsKIAogYm9vbCBCeXRlY29kZUNh
Y2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6OmlzVmFsaWQoKSBjb25zdApAQCAtMzUsNyArMzcsNyBA
QCBib29sIEJ5dGVjb2RlQ2FjaGVFcnJvcjo6U3RhbmRhcmRFcnJvcjo6aXNWYWxpZCgpIGNvbnN0
CiAKIFN0cmluZyBCeXRlY29kZUNhY2hlRXJyb3I6OlN0YW5kYXJkRXJyb3I6Om1lc3NhZ2UoKSBj
b25zdAogewotICAgIHJldHVybiBzdHJlcnJvcihtX2Vycm5vKTsKKyAgICByZXR1cm4gc2FmZVN0
cmVycm9yKG1fZXJybm8pLmRhdGEoKTsKIH0KIAogYm9vbCBCeXRlY29kZUNhY2hlRXJyb3I6Oldy
aXRlRXJyb3I6OmlzVmFsaWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3dsaXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbkFsbG93bGlzdC5jcHAKaW5kZXggMDA3YjI1M2U2NDlmMWE1ZmEyNmVlNzI2
YjAwNDA4MzZkOTUzYjg5MC4uMDYwZTQ2NmI2YTMxNzMwODU0NDA0ZjI1MGQ3MTY5Yzg1NGIyYjBi
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uQWxsb3ds
aXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25BbGxvd2xp
c3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVy
cm9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00NSw3ICs0Niw3IEBAIEZ1bmN0aW9uQWxs
b3dsaXN0OjpGdW5jdGlvbkFsbG93bGlzdChjb25zdCBjaGFyKiBmaWxlbmFtZSkKICAgICAgICAg
ICAgIG1faGFzQWN0aXZlQWxsb3dsaXN0ID0gdHJ1ZTsKICAgICAgICAgICAgIG1fZW50cmllcy5h
ZGQoZmlsZW5hbWUpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCJGYWls
ZWQgdG8gb3BlbiBmaWxlICVzLiBEaWQgeW91IGFkZCB0aGUgZmlsZS1yZWFkLWRhdGEgZW50aXRs
ZW1lbnQgdG8gV2ViUHJvY2Vzcy5zYj8gRXJyb3IgY29kZTogJXNcbiIsIGZpbGVuYW1lLCBzdHJl
cnJvcihlcnJubykpOworICAgICAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBvcGVuIGZpbGUg
JXMuIERpZCB5b3UgYWRkIHRoZSBmaWxlLXJlYWQtZGF0YSBlbnRpdGxlbWVudCB0byBXZWJQcm9j
ZXNzLnNiPyBFcnJvciBjb2RlOiAlc1xuIiwgZmlsZW5hbWUsIHNhZmVTdHJlcnJvcihlcnJubyku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzMsNyArNzQsNyBAQCBGdW5j
dGlvbkFsbG93bGlzdDo6RnVuY3Rpb25BbGxvd2xpc3QoY29uc3QgY2hhciogZmlsZW5hbWUpCiAK
ICAgICBpbnQgcmVzdWx0ID0gZmNsb3NlKGYpOwogICAgIGlmIChyZXN1bHQpCi0gICAgICAgIGRh
dGFMb2dGKCJGYWlsZWQgdG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVuYW1lLCBzdHJlcnJv
cihlcnJubykpOworICAgICAgICBkYXRhTG9nRigiRmFpbGVkIHRvIGNsb3NlIGZpbGUgJXM6ICVz
XG4iLCBmaWxlbmFtZSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogfQogCiBib29sIEZ1
bmN0aW9uQWxsb3dsaXN0Ojpjb250YWlucyhDb2RlQmxvY2sqIGNvZGVCbG9jaykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCmlu
ZGV4IGNlOTRlMmJkY2IxODBmMzMyMjlkNGRjYjZlOGExYThlNTlhYzdmYzkuLjMwZjVlNzZjOTE0
ZTY0ODgxZTQxOGU2ZTM5M2IyYjkyNTQ3NzFjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtMjgzLDcgKzI4NCw3IEBA
IHZvaWQgRnVuY3Rpb25PdmVycmlkZXM6OnBhcnNlT3ZlcnJpZGVzSW5GaWxlKGNvbnN0IGNoYXIq
IGZpbGVOYW1lKQogICAgIAogICAgIGludCByZXN1bHQgPSBmY2xvc2UoZmlsZSk7CiAgICAgaWYg
KHJlc3VsdCkKLSAgICAgICAgZGF0YUxvZ0YoIkZhaWxlZCB0byBjbG9zZSBmaWxlICVzOiAlc1xu
IiwgZmlsZU5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGRhdGFMb2dGKCJGYWlsZWQg
dG8gY2xvc2UgZmlsZSAlczogJXNcbiIsIGZpbGVOYW1lLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRh
dGEoKSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1lbW9yeS5jcHAKaW5kZXggNTMyOTViOGEwMmRmNDM0NGY0ZGRhOWE4N2I3OGVj
NTViN2U4Y2I5OC4uNDQwNzU5NTJmMDA3NjlkYjJiOTAxNjAwYjEwMWJmMmJkZTRiNmU1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0u
aD4KICNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3Iu
aD4KICNpbmNsdWRlIDx3dGYvU3RkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBA
IC0zMDEsNyArMzAyLDcgQEAgTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxlKCkKICAgICAgICAg
c3dpdGNoIChtX21vZGUpIHsKICAgICAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6CiAg
ICAgICAgICAgICBpZiAobXByb3RlY3QobWVtb3J5LCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygp
LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2coIm1w
cm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgp
LCAiXG4iKTsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtb3J5TWFuYWdlcigpLmZyZWVGYXN0TWVtb3J5
KG1lbW9yeSk7CkBAIC0zMTMsNyArMzE0LDcgQEAgTWVtb3J5SGFuZGxlOjp+TWVtb3J5SGFuZGxl
KCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgTWVtb3J5U2hhcmlu
Z01vZGU6OlNoYXJlZDogewogICAgICAgICAgICAgICAgIGlmIChtcHJvdGVjdChtZW1vcnksIG1f
bWFwcGVkQ2FwYWNpdHksIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzYWZl
U3RyZXJyb3IoZXJybm8pLmRhdGEoKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVlR3Jvd2FibGVCb3VuZHNDaGVja2luZ01lbW9yeShtZW1v
cnksIG1fbWFwcGVkQ2FwYWNpdHkpOwpAQCAtNDA2LDcgKzQwNyw3IEBAIFJlZlB0cjxNZW1vcnk+
IE1lbW9yeTo6dHJ5Q3JlYXRlKFBhZ2VDb3VudCBpbml0aWFsLCBQYWdlQ291bnQgbWF4aW11bSwg
TWVtb3J5U2hhCiAgICAgCiAgICAgaWYgKGZhc3RNZW1vcnkpIHsKICAgICAgICAgaWYgKG1wcm90
ZWN0KGZhc3RNZW1vcnkgKyBpbml0aWFsQnl0ZXMsIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCkg
LSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIm1wcm90
ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAgIGRhdGFM
b2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCksICJcbiIp
OwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQog
CkBAIC00NDIsNyArNDQzLDcgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5Ojp0cnlDcmVhdGUoUGFn
ZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhpbXVtLCBNZW1vcnlTaGEKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChtcHJvdGVjdChzbG93TWVtb3J5ICsgaW5pdGlhbEJ5dGVzLCBtYXhpbXVt
Qnl0ZXMgLSBpbml0aWFsQnl0ZXMsIFBST1RfTk9ORSkpIHsKLSAgICAgICAgICAgIGRhdGFMb2co
Im1wcm90ZWN0IGZhaWxlZDogIiwgc3RyZXJyb3IoZXJybm8pLCAiXG4iKTsKKyAgICAgICAgICAg
IGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCks
ICJcbiIpOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQogCkBAIC01MTYsNyArNTE3LDcgQEAgRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1vcnk6Okdy
b3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3dTaGFyZWQoUGFnZUNvdW50IGRlbHRhKQogCiAgICAg
ICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJNYXJraW5nIFdlYkFzc2VtYmx5IG1lbW9yeSdzICIs
IFJhd1BvaW50ZXIobWVtb3J5KSwgIiBhcyByZWFkK3dyaXRlIGluIHJhbmdlIFsiLCBSYXdQb2lu
dGVyKHN0YXJ0QWRkcmVzcyksICIsICIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzICsgZXh0cmFC
eXRlcyksICIpIik7CiAgICAgICAgIGlmIChtcHJvdGVjdChzdGFydEFkZHJlc3MsIGV4dHJhQnl0
ZXMsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJtcHJv
dGVjdCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwgIlxuIik7CisgICAgICAgICAgICBkYXRh
TG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpLCAiXG4i
KTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0K
IApAQCAtNjA1LDcgKzYwNiw3IEBAIEV4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFp
bFJlYXNvbj4gTWVtb3J5Ojpncm93KFBhZ2VDb3VudCBkZWx0YSkKICAgICAgICAgCiAgICAgICAg
IGRhdGFMb2dMbklmKHZlcmJvc2UsICJNYXJraW5nIFdlYkFzc2VtYmx5IG1lbW9yeSdzICIsIFJh
d1BvaW50ZXIobWVtb3J5KSwgIiBhcyByZWFkK3dyaXRlIGluIHJhbmdlIFsiLCBSYXdQb2ludGVy
KHN0YXJ0QWRkcmVzcyksICIsICIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzICsgZXh0cmFCeXRl
cyksICIpIik7CiAgICAgICAgIGlmIChtcHJvdGVjdChzdGFydEFkZHJlc3MsIGV4dHJhQnl0ZXMs
IFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVj
dCBmYWlsZWQ6ICIsIHN0cmVycm9yKGVycm5vKSwgIlxuIik7CisgICAgICAgICAgICBkYXRhTG9n
KCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpLCAiXG4iKTsK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjMxOWZiMzEzYmUw
NjMxOGNiNzNiOGQ5ZjRkNGNiYTJjZmEwMjdlYi4uM2VjMDM5MWY3YzczN2EzYWYxNjI0NzM2YmI4
NTEyYTUyZDdiMWU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC03Myw2ICs3Myw3IEBACiAJCTMzN0IyRDZBMjY1NDZFQjMwMERERkQzRCAvKiBMaWtlbHlE
ZW5zZVVuc2lnbmVkSW50ZWdlclNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMzdCMkQ2ODI2NTQ2RUFBMDBEREZEM0QgLyogTGlrZWx5RGVuc2VV
bnNpZ25lZEludGVnZXJTZXQuY3BwICovOyB9OwogCQk0NDI3QzVBQTIxRjZENkMzMDBBNjEyQTQg
LyogQVNDSUlDVHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NDI3QzVBOTIxRjZENkMzMDBBNjEyQTQgLyogQVNDSUlDVHlwZS5jcHAgKi87IH07
CiAJCTQ2QkVCNkVCMjJGRkUyNDkwMDI2OTg2NyAvKiBSZWZDb3VudGVkLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkU5MjJGRkRERDUwMDI2
OTg2NyAvKiBSZWZDb3VudGVkLmNwcCAqLzsgfTsKKwkJNDZFOTMwNDkyNzFGMTIwNTAwNUJBNkU1
IC8qIFNhZmVTdHJlcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkU0MzY0NzI3MUYxMEFBMDBDODhDOTAgLyogU2FmZVN0cmVycm9yLmNwcCAq
LzsgfTsKIAkJNTBERTM1RjUyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MERFMzVG
MzIxNUJCMDE1MDBCOTc5QzcgLyogRXh0ZXJuYWxTdHJpbmdJbXBsLmNwcCAqLzsgfTsKIAkJNTE1
Rjc5NEUxQ0ZDOUY0QTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkQ29waWVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTRCMUNGQzlGNEEwMEND
RUQ5MyAvKiBDcm9zc1RocmVhZENvcGllci5jcHAgKi87IH07CiAJCTUxN0Y4MkQ3MUZEMjJGMzAw
MERBM0RFQSAvKiBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0Y4MkQ1MUZEMjJGMkYwMERBM0RFQSAvKiBD
cm9zc1RocmVhZFRhc2tIYW5kbGVyLmNwcCAqLzsgfTsKQEAgLTM5Nyw2ICszOTgsOCBAQAogCQk0
NjIwOUEyNzI2NkQ1NDNBMDA3RjhGNEEgLyogQ2FuY2VsbGFibGVUYXNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhbmNlbGxhYmxlVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkJB
OUVBQjFGNENENjFFMDA5QTJCQkMgLyogQ29tcGxldGlvbkhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGxldGlvbkhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZCRUI2RTkyMkZGRERENTAwMjY5ODY3IC8qIFJlZkNvdW50ZWQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVmQ291bnRlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2RTQzNjQ2MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2FmZVN0cmVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2RTQzNjQ3MjcxRjEwQUEwMEM4OEM5MCAvKiBTYWZlU3RyZXJyb3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2FmZVN0cmVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTBERTM1RjMyMTVCQjAxNTAwQjk3OUM3IC8qIEV4dGVybmFsU3RyaW5nSW1wbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlcm5hbFN0cmluZ0ltcGwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MERFMzVGNDIxNUJCMDE1MDBCOTc5QzcgLyog
RXh0ZXJuYWxTdHJpbmdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
dGVybmFsU3RyaW5nSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTNFMTcw
QTFDRDdENUJGMDBFMzY1MEIgLyogTG9nZ2luZ0FjY3VtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2dpbmdBY2N1bXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTI3Nyw2ICsxMjgwLDggQEAKIAkJCQlFMzFDRjBBNTI2MTA1ODU4MDAz
NkU2NzMgLyogUm9iaW5Ib29kSGFzaFRhYmxlLmggKi8sCiAJCQkJMkNERUQwRjExODExNUM4NTAw
NERCQTcwIC8qIFJ1bkxvb3AuY3BwICovLAogCQkJCTJDREVEMEYyMTgxMTVDODUwMDREQkE3MCAv
KiBSdW5Mb29wLmggKi8sCisJCQkJNDZFNDM2NDcyNzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVTdHJl
cnJvci5jcHAgKi8sCisJCQkJNDZFNDM2NDYyNzFGMTBBQTAwQzg4QzkwIC8qIFNhZmVTdHJlcnJv
ci5oICovLAogCQkJCTE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1l
dGljLmggKi8sCiAJCQkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5o
ICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICovLApAQCAtMTgy
MSw2ICsxODI2LDcgQEAKIAkJCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAgLyogUnVuTG9v
cENGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQTg1Q0E5MjQxQjBCMjYwMDcxQzJGNSAvKiBS
dW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NkU5
MzA0OTI3MUYxMjA1MDA1QkE2RTUgLyogU2FmZVN0cmVycm9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUEzRUU1QzNEMjFGRkFDN0QwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29u
ZHMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGYxMGM4MWE1NzU5
OWIwZDA2ZTEzNjEzMTlkNDY3MDM2MzEyNDhmYTUuLjRlMzhhYWE5MzBkNDEwNzI3ZWQzNzQ5YjJj
NzQxMjIzOGQ2YWNhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMzAsNiArMjMwLDcgQEAg
c2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFJvYmluSG9vZEhhc2hUYWJsZS5oCiAgICAgUnVu
TG9vcC5oCiAgICAgU0hBMS5oCisgICAgU2FmZVN0cmVycm9yLmgKICAgICBTYXR1cmF0ZWRBcml0
aG1ldGljLmgKICAgICBTY2hlZHVsZVBhaXIuaAogICAgIFNjb3BlLmgKQEAgLTQ1OSw2ICs0NjAs
NyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCiAgICAg
UnVuTG9vcC5jcHAKICAgICBTSEExLmNwcAorICAgIFNhZmVTdHJlcnJvci5jcHAKICAgICBTZWNv
bmRzLmNwcAogICAgIFNlZ21lbnRlZFZlY3Rvci5jcHAKICAgICBTaXhDaGFyYWN0ZXJIYXNoLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1NhZmVTdHJlcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY1MjUxZmI5OWM4MGQ5YmEzZDE3
YWZjMDhiMGYyYmM1NzBhMDYwOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Nh
ZmVTdHJlcnJvci5jcHAKQEAgLTAsMCArMSw2MSBAQAorLyogCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgUmVkIEhhdCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvU2FmZVN0cmVycm9yLmg+CisK
KyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK0NTdHJpbmcgc2FmZVN0cmVycm9yKGludCBlcnJudW0pCit7CisgICAgY29uc3Rl
eHByIHNpemVfdCBidWZmZXJMZW5ndGggPSAxMDI0OworICAgIGNoYXIqIGNzdHJpbmdCdWZmZXIg
PSBudWxscHRyOworICAgIGF1dG8gcmVzdWx0ID0gQ1N0cmluZzo6bmV3VW5pbml0aWFsaXplZChi
dWZmZXJMZW5ndGgsIGNzdHJpbmdCdWZmZXIpOworI2lmIE9TKFdJTkRPV1MpCisgICAgc3RyZXJy
b3Jfcyhjc3RyaW5nQnVmZmVyLCBidWZmZXJMZW5ndGgsIGVycm51bSk7CisjZWxzZQorICAgIGF1
dG8gcmV0ID0gc3RyZXJyb3JfcihlcnJudW0sIGNzdHJpbmdCdWZmZXIsIGJ1ZmZlckxlbmd0aCk7
CisgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUocmV0KSwgY2hhcio+Ojp2
YWx1ZSkgeworICAgICAgICAvLyBXZSBoYXZlIEdOVSBzdHJlcnJvcl9yKCksIHdoaWNoIHJldHVy
bnMgY2hhciouIFRoaXMgbWF5IG9yIG1heSBub3QgYmUgYSBwb2ludGVyIGludG8KKyAgICAgICAg
Ly8gY3N0cmluZ0J1ZmZlci4gV2UgYWxzbyBoYXZlIHRvIGJlIGNhcmVmdWwgYmVjYXVzZSB0aGlz
IGhhcyB0byBjb21waWxlIGV2ZW4gaWYgcmV0IGlzCisgICAgICAgIC8vIGFuIGludCwgaGVuY2Ug
dGhlIHJlaW50ZXJwcmV0X2Nhc3RzLgorICAgICAgICBjaGFyKiBtZXNzYWdlID0gcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4ocmV0KTsKKyAgICAgICAgaWYgKG1lc3NhZ2UgIT0gY3N0cmluZ0J1ZmZl
cikKKyAgICAgICAgICAgIHN0cm5jcHkoY3N0cmluZ0J1ZmZlciwgbWVzc2FnZSwgYnVmZmVyTGVu
Z3RoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBXZSBoYXZlIFBPU0lYIHN0cmVycm9yX3Is
IHdoaWNoIHJldHVybnMgaW50IGFuZCBtYXkgZmFpbC4KKyAgICAgICAgaWYgKHJldCkKKyAgICAg
ICAgICAgIHNucHJpbnRmKGNzdHJpbmdCdWZmZXIsIGJ1ZmZlckxlbmd0aCwgIiVzICVkIiwgIlVu
a25vd24gZXJyb3IiLCBlcnJudW0pOworICAgIH0KKyNlbmRpZiAvLyBPUyhXSU5ET1dTKQorICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9TYWZlU3RyZXJyb3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYzcxOThjNjExYzk1NjFiMmZhZjY3ZjYzZDViYTJlYTg0ODFlNmRmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvU2FmZVN0cmVycm9yLmgKQEAgLTAsMCAr
MSw0OCBAQAorLyogCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUmVkIEhhdCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIFRoaXMgaXMgc3Ry
ZXJyb3IsIGV4Y2VwdCBpdCBpcyB0aHJlYWRzYWZlLiBUaGUgcHJvYmxlbSB3aXRoIG5vcm1hbCBz
dHJlcnJvciBpcyBpdCByZXR1cm5zIGEKKy8vIHBvaW50ZXIgdG8gc3RhdGljIHN0b3JhZ2UsIGFu
ZCBpdCBtYXkgYWN0dWFsbHkgbW9kaWZ5IHRoYXQgc3RvcmFnZSwgc28gaXQgY2FuIG5ldmVyIGJl
IHVzZWQgaW4KKy8vIGFueSBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9uLCBvciBhbnkgbGlicmFy
eSB0aGF0IG1heSBiZSBsaW5rZWQgdG8gYSBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9uLgorLy8g
KFdoeSBkb2VzIGl0IG1vZGlmeSBpdHMgc3RvcmFnZT8gU28gdGhhdCBpdCBjYW4gYXBwZW5kIHRo
ZSBlcnJvciBudW1iZXIgdG8gdGhlIGVycm9yIHN0cmluZywgYXMKKy8vIGluICJVbmtub3duIGVy
cm9yIG4uIiBBbHNvLCBiZWNhdXNlIGl0IHdpbGwgbG9jYWxpemUgdGhlIGVycm9yIG1lc3NhZ2Uu
KSBUaGUgc3RhbmRhcmQKKy8vIGFsdGVybmF0aXZlcyBhcmUgc3RyZXJyb3JfcyBhbmQgc3RyZXJy
b3JfciwgYnV0IGJvdGggaGF2ZSBwcm9ibGVtcy4gc3RyZXJyb3JfcyBpcyBzcGVjaWZpZWQgYnkK
Ky8vIEMxMSwgYnV0IG5vdCBieSBDKysgKGFzIG9mIEMrKzIwKSwgYW5kIGl0IGlzIG9wdGlvbmFs
IHNvIGdsaWJjIGRlY2lkZWQgdG8gaWdub3JlIGl0LiBXZSBjYW4gb25seQorLy8gcmVseSBvbiBp
dCB0byBleGlzdCBvbiBXaW5kb3dzLiBUaGVuIHN0cmVycm9yX3IgaXMgZXZlbiB3b3JzZS4gRmly
c3QsIGl0IGRvZXNuJ3QgZXhpc3QgYXQgYWxsIG9uCisvLyBXaW5kb3dzLiBTZWNvbmQsIHRoZSBH
TlUgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgUE9TSVggdmVyc2lvbiwgYW5kIGl0
IGlzIGltcG9zc2libGUgdG8KKy8vIHVzZSBjb3JyZWN0bHkgdW5sZXNzIHlvdSBrbm93IHdoaWNo
IHZlcnNpb24geW91IGhhdmUuIEJvdGggc3RyZXJyb3JfcyBhbmQgc3RyZXJyb3JfciBhcmUKKy8v
IGN1bWJlcnNvbWUgYmVjYXVzZSB0aGV5IGZvcmNlIHlvdSB0byBhbGxvY2F0ZSB0aGUgYnVmZmVy
IGZvciB0aGUgcmVzdWx0IG1hbnVhbGx5LiBJdCdzIGFsbCBzdWNoIGEKKy8vIG1lc3MgdGhhdCB3
ZSBzaG91bGQgZGVhbCB3aXRoIHRoZSBjb21wbGV4aXR5IGhlcmUgcmF0aGVyIHRoYW4gZWxzZXdo
ZXJlIGluIFdlYktpdC4KK1dURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nIHNhZmVTdHJlcnJvcihp
bnQgZXJybnVtKTsKKworfQorCit1c2luZyBXVEY6OnNhZmVTdHJlcnJvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9saW51eC9SZWFsVGltZVRocmVhZHMuY3BwCmluZGV4IDRjZGVjNjc2ZTkzNzVmZjkzZWU2N2Zi
MWY1OTEyNWM0NTM0ZWFmOWMuLjQ4ZTM4YjM1ZWE5NzRkMjU4ZGU1OTA0ZjI3NDNjOWM3NTJhMThm
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2xpbnV4L1JlYWxUaW1lVGhyZWFkcy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvbGludXgvUmVhbFRpbWVUaHJlYWRzLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogCiAj
aWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8Z2lvL2dpby5oPgpAQCAtMTI3LDcgKzEyOCw3IEBAIHZv
aWQgUmVhbFRpbWVUaHJlYWRzOjpwcm9tb3RlVGhyZWFkVG9SZWFsVGltZShjb25zdCBUaHJlYWQm
IHRocmVhZCkKICNpZiBVU0UoR0xJQikKICAgICAgICAgcmVhbFRpbWVLaXRNYWtlVGhyZWFkUmVh
bFRpbWUoZ2V0cGlkKCksIHRocmVhZC5pZCgpLCBwYXJhbS5zY2hlZF9wcmlvcml0eSk7CiAjZWxz
ZQotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgdGhyZWFkICVkIGFzIHJlYWwgdGlt
ZTogJXMiLCB0aHJlYWQuaWQoKSwgc3RyZXJyb3IoZXJyb3IpKTsKKyAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gc2V0IHRocmVhZCAlZCBhcyByZWFsIHRpbWU6ICVzIiwgdGhyZWFkLmlkKCks
IHNhZmVTdHJlcnJvcihlcnJvcikuZGF0YSgpKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9wbGF5c3RhdGlvbi9GaWxlU3lzdGVtUGxheVN0YXRpb24uY3BwCmlu
ZGV4IGNkYTVlNWUxNjMyNTI0MWExZTdiOTcxNzMwN2NmYWViNmJkOGMzNGMuLmI4ODBlYjc3ZGIw
YjllNTE3M2ZkNTEzZTk3MDBhMDE0YmI3NjRlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3BsYXlzdGF0aW9uL0ZpbGVTeXN0ZW1QbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvcGxheXN0YXRpb24vRmlsZVN5c3RlbVBsYXlTdGF0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5j
bHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC04OCw3ICs4
OSw3IEBAIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLy8gdW5saW5r
KC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5v
bi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBv
ciBub24tZXhpc3RlbnQgZmlsZSkKICAgICBib29sIHVubGlua2VkID0gIXVubGluayhmc1JlcC5k
YXRhKCkpOwogICAgIGlmICghdW5saW5rZWQgJiYgZXJybm8gIT0gRU5PRU5UKQotICAgICAgICBM
T0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4gRXJyb3IgbWVzc2FnZTogJXMiLCBzdHJl
cnJvcihlcnJubykpOworICAgICAgICBMT0dfRVJST1IoIkZpbGUgZmFpbGVkIHRvIGRlbGV0ZS4g
RXJyb3IgbWVzc2FnZTogJXMiLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAKICAgICBy
ZXR1cm4gdW5saW5rZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNw
cAppbmRleCA3OTU2NzBmZDZkODAyNzhkZjZjMTcwYjIxNjJjNDhiNTJlOWNiYmVmLi5mMTIxMjUz
ODc2MzQ1MzU0MTkyNDNkODFlYzZjNGZmMGIxYmYwM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgor
I2luY2x1ZGUgPHd0Zi9TYWZlU3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgpAQCAtMjYxLDcgKzI2Miw3IEBAIGJvb2wgZGVsZXRlRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgLy8gdW5saW5rKC4uLikgcmV0dXJucyAwIG9uIHN1Y2Nlc3Nm
dWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBvdGhlciBjYXNlIChp
bmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQgZmlsZSkKICAgICBi
b29sIHVubGlua2VkID0gIXVubGluayhmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpKTsKICAgICBpZiAoIXVubGlua2VkICYmIGVycm5vICE9IEVOT0VOVCkKLSAgICAgICAgTE9H
X0VSUk9SKCJGaWxlIGZhaWxlZCB0byBkZWxldGUuIEVycm9yIG1lc3NhZ2U6ICVzIiwgc3RyZXJy
b3IoZXJybm8pKTsKKyAgICAgICAgTE9HX0VSUk9SKCJGaWxlIGZhaWxlZCB0byBkZWxldGUuIEVy
cm9yIG1lc3NhZ2U6ICVzIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogCiAgICAgcmV0
dXJuIHVubGlua2VkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFk
aW5nUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCmlu
ZGV4IDk0NzQzOWFiNzdmNjdmNzQ4ZmE4Mjc1MTBkODNmMmQwYmFmNmZlNWMuLjdmYmE2Njc4Yzg0
YWRkOWRlNDFiODRjMGRhMmFkZjcxY2I5MDUxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJl
YWRpbmdQT1NJWC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgPGVycm5vLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL1NhZmVTdHJlcnJv
ci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
aW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KQEAgLTMwNSw3ICsz
MDYsNyBAQCBib29sIFRocmVhZDo6ZXN0YWJsaXNoSGFuZGxlKE5ld1RocmVhZENvbnRleHQqIGNv
bnRleHQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzdAogICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFy
YW0gcGFyYW0gPSB7IDAgfTsKICAgICAgICAgZXJyb3IgPSBwdGhyZWFkX3NldHNjaGVkcGFyYW0o
dGhyZWFkSGFuZGxlLCBwb2xpY3kgfCBTQ0hFRF9SRVNFVF9PTl9GT1JLLCAmcGFyYW0pOwogICAg
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgc2No
ZWQgcG9saWN5ICVkIGZvciB0aHJlYWQgJWQ6ICVzIiwgcG9saWN5LCB0aHJlYWRIYW5kbGUsIHN0
cmVycm9yKGVycm9yKSk7CisgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBzZXQgc2No
ZWQgcG9saWN5ICVkIGZvciB0aHJlYWQgJWQ6ICVzIiwgcG9saWN5LCB0aHJlYWRIYW5kbGUsIHNh
ZmVTdHJlcnJvcihlcnJvcikuZGF0YSgpKTsKICAgICB9CiAjZWxpZiAhSEFWRShRT1NfQ0xBU1NF
UykKICAgICBVTlVTRURfUEFSQU0ocW9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Ro
cmVhZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuY3BwCmlu
ZGV4IDY0YjRjZDEyN2YzM2FlOTZiNzUxZGU3NjQ1NGJlYzQ1MTQzMDA5YmUuLjZiOThjNmY4ZTAx
NmI4YmRhZGUyYjEzZWQyY2YzZGRhMTNkYWQ1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RocmVhZHMvU2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxz
LmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQganNjU2lnbmFsSGFuZGxlcihpbnQgc2lnLCBz
aWdpbmZvX3QqIGluZm8sIHZvaWQqIHVjb250ZXh0KQogICAgICAgICBzaWdmaWxsc2V0KCZkZWZh
dWx0QWN0aW9uLnNhX21hc2spOwogICAgICAgICBkZWZhdWx0QWN0aW9uLnNhX2ZsYWdzID0gMDsK
ICAgICAgICAgYXV0byByZXN1bHQgPSBzaWdhY3Rpb24oc2lnLCAmZGVmYXVsdEFjdGlvbiwgbnVs
bHB0cik7Ci0gICAgICAgIGRhdGFMb2dMbklmKHJlc3VsdCA9PSAtMSwgIlVuYWJsZSB0byByZXN0
b3JlIHRoZSBkZWZhdWx0IGhhbmRsZXIgd2hpbGUgcHJvY2Nlc3Npbmcgc2lnbmFsICIsIHNpZywg
IiB0aGUgcHJvY2VzcyBpcyBwcm9iYWJseSBkZWFkbG9ja2VkLiAoZXJybm86ICIsIHN0cmVycm9y
KGVycm5vKSwgIikiKTsKKyAgICAgICAgZGF0YUxvZ0xuSWYocmVzdWx0ID09IC0xLCAiVW5hYmxl
IHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgaGFuZGxlciB3aGlsZSBwcm9jZXNzaW5nIHNpZ25hbCAi
LCBzaWcsICIgdGhlIHByb2Nlc3MgaXMgcHJvYmFibHkgZGVhZGxvY2tlZC4gKGVycm5vOiAiLCBl
cnJubywgIikiKTsKICAgICB9OwogCiAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJ1dCB3
ZSBtaWdodCBhcyB3ZWxsIGJlIGNhcmVmdWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCmluZGV4IDQ5MTExMzIxOTMyMWNkY2M0ZjI0
Y2JjMzllYjdhNjUxOTRjODE3NjEuLmYyMjFmOTA5ZmU0ZTQ5MGNhZjZmZjBkNDg2Yjg5Zjc0MzAz
ZWIxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNs
dWRlIDxwb2xsLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYv
U2FmZVN0cmVycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlTdGRFeHRyYXMuaD4KIApAQCAtMzUyLDcgKzM1Myw3IEBAIHZvaWQgQ29ubmVjdGlv
bjo6cmVhZHlSZWFkSGFuZGxlcigpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICht
X2lzQ29ubmVjdGVkKSB7Ci0gICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciByZWNl
aXZpbmcgSVBDIG1lc3NhZ2Ugb24gc29ja2V0ICVkIGluIHByb2Nlc3MgJWQ6ICVzIiwgbV9zb2Nr
ZXREZXNjcmlwdG9yLCBnZXRwaWQoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIkVycm9yIHJlY2VpdmluZyBJUEMgbWVzc2FnZSBvbiBzb2NrZXQgJWQg
aW4gcHJvY2VzcyAlZDogJXMiLCBtX3NvY2tldERlc2NyaXB0b3IsIGdldHBpZCgpLCBzYWZlU3Ry
ZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgY29ubmVjdGlvbkRpZENsb3Nl
KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CkBAIC01ODksNyArNTkwLDcg
QEAgYm9vbCBDb25uZWN0aW9uOjpzZW5kT3V0cHV0TWVzc2FnZShVbml4TWVzc2FnZSYgb3V0cHV0
TWVzc2FnZSkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2lzQ29ubmVjdGVkKQotICAgICAg
ICAgICAgV1RGTG9nQWx3YXlzKCJFcnJvciBzZW5kaW5nIElQQyBtZXNzYWdlOiAlcyIsIHN0cmVy
cm9yKGVycm5vKSk7CisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVycm9yIHNlbmRpbmcgSVBD
IG1lc3NhZ2U6ICVzIiwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Vu
aXgvU2hhcmVkTWVtb3J5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3VuaXgvU2hh
cmVkTWVtb3J5VW5peC5jcHAKaW5kZXggOTk4YTJhNzY3OTMwNWE0MzVmYTM1Y2MxYWVlYjcwOGYz
NDY3NTU1Yi4uZjM0NjY2YmM4ZTAwNTIyZjY0NTRkYWIyNDJlMGQ0MDc1MmYxMDA5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9TYWZl
U3RyZXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvVW5pU3RkRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTY1
LDcgKzE2Niw3IEBAIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUo
c2l6ZV90IHNpemUpCiB7CiAgICAgaW50IGZpbGVEZXNjcmlwdG9yID0gY3JlYXRlU2hhcmVkTWVt
b3J5KCk7CiAgICAgaWYgKGZpbGVEZXNjcmlwdG9yID09IC0xKSB7Ci0gICAgICAgIFdURkxvZ0Fs
d2F5cygiRmFpbGVkIHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5OiAlcyIsIHN0cmVycm9yKGVycm5v
KSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNyZWF0ZSBzaGFyZWQgbWVtb3J5
OiAlcyIsIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQXV4aWxp
YXJ5UHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tCmluZGV4IGRkNTBmYjllYTM3NzRkNWI5NDQ0NjExMDFkNWFkOWJhMDdlNWU5MTAu
LmQ4MGRhZTFiMWM4YjJkMWY2YWE0NmYyMGM5ODVkZDVlNjZlMzY3MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCkBAIC01MSw2ICs1MSw3
IEBACiAjaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgogI2ltcG9ydCA8d3RmL0ZpbGVTeXN0ZW0uaD4K
ICNpbXBvcnQgPHd0Zi9SYW5kb21OdW1iZXIuaD4KKyNpbXBvcnQgPHd0Zi9TYWZlU3RyZXJyb3Iu
aD4KICNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAj
aW1wb3J0IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtMjUxLDcgKzI1Miw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENTdHJpbmc+IHNldEFuZFNlcmlhbGl6ZVNhbmRib3hQYXJhbWV0ZXJzKGNv
bnN0IFNhbmRib3hJbml0CiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBpbml0aWFsaXphdGlv
blBhcmFtZXRlcnMubmFtZShpKTsKICAgICAgICAgY29uc3QgY2hhciogdmFsdWUgPSBpbml0aWFs
aXphdGlvblBhcmFtZXRlcnMudmFsdWUoaSk7CiAgICAgICAgIGlmIChzYW5kYm94X3NldF9wYXJh
bShzYW5kYm94UGFyYW1ldGVycy5nZXQoKSwgbmFtZSwgdmFsdWUpKSB7Ci0gICAgICAgICAgICBX
VEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3Qgc2V0IHNhbmRib3ggcGFyYW1ldGVyOiAlc1xuIiwg
Z2V0cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5
cygiJXM6IENvdWxkIG5vdCBzZXQgc2FuZGJveCBwYXJhbWV0ZXI6ICVzXG4iLCBnZXRwcm9nbmFt
ZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgICAgICBDUkFTSCgpOwog
ICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUsICc6JywgdmFsdWUsICc6Jyk7
CkBAIC0yNzEsMTMgKzI3MiwxMyBAQCBzdGF0aWMgU3RyaW5nIHNhbmRib3hEYXRhVmF1bHRQYXJl
bnREaXJlY3RvcnkoKQogICAgIGNoYXIgdGVtcFtQQVRIX01BWF07CiAgICAgc2l6ZV90IGxlbmd0
aCA9IGNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX0NBQ0hFX0RJUiwgdGVtcCwgc2l6ZW9mKHRlbXAp
KTsKICAgICBpZiAoIWxlbmd0aCkgewotICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBu
b3QgcmV0cmlldmUgdXNlciB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRwcm9n
bmFtZSgpLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3Vs
ZCBub3QgcmV0cmlldmUgdXNlciB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVzXG4iLCBnZXRw
cm9nbmFtZSgpLCBzYWZlU3RyZXJyb3IoZXJybm8pLmRhdGEoKSk7CiAgICAgICAgIGV4aXQoRVhf
Tk9QRVJNKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDw9IHNpemVvZih0ZW1w
KSk7CiAgICAgY2hhciByZXNvbHZlZFBhdGhbUEFUSF9NQVhdOwogICAgIGlmICghcmVhbHBhdGgo
dGVtcCwgcmVzb2x2ZWRQYXRoKSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBu
b3QgY2Fub25pY2FsaXplIHVzZXIgdGVtcG9yYXJ5IGRpcmVjdG9yeSBwYXRoOiAlc1xuIiwgZ2V0
cHJvZ25hbWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczog
Q291bGQgbm90IGNhbm9uaWNhbGl6ZSB1c2VyIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0aDogJXNc
biIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJubykuZGF0YSgpKTsKICAgICAgICAg
ZXhpdChFWF9OT1BFUk0pOwogICAgIH0KICAgICByZXR1cm4gcmVzb2x2ZWRQYXRoOwpAQCAtMzcz
LDcgKzM3NCw3IEBAIHN0YXRpYyBib29sIGVuc3VyZVNhbmRib3hDYWNoZURpcmVjdG9yeShjb25z
dCBTYW5kYm94SW5mbyYgaW5mbykKICAgICAgICAgaWYgKCFtYWtlRGF0YVZhdWx0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCIlczogU2FuZGJveCBkaXJlY3RvcnkgY291bGRuJ3QgYmUgY3JlYXRlZDogIiwgZ2V0cHJvZ25h
bWUoKSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogU2FuZGJv
eCBkaXJlY3RvcnkgY291bGRuJ3QgYmUgY3JlYXRlZDogIiwgZ2V0cHJvZ25hbWUoKSwgc2FmZVN0
cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogI2Vs
c2UKQEAgLTUyMSw3ICs1MjIsNyBAQCBzdGF0aWMgYm9vbCB0cnlBcHBseUNhY2hlZFNhbmRib3go
Y29uc3QgU2FuZGJveEluZm8mIGluZm8pCiAgICAgc2V0Tm90aWZ5T3B0aW9ucygpOwogCiAgICAg
aWYgKHNhbmRib3hfYXBwbHkoJnByb2ZpbGUpKSB7Ci0gICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6
IENvdWxkIG5vdCBhcHBseSBjYWNoZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2duYW1lKCksIHN0
cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkIG5vdCBhcHBs
eSBjYWNoZWQgc2FuZGJveDogJXNcbiIsIGdldHByb2duYW1lKCksIHNhZmVTdHJlcnJvcihlcnJu
bykuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNjIzLDcgKzYy
NCw3IEBAIHN0YXRpYyBib29sIGFwcGx5U2FuZGJveChjb25zdCBBdXhpbGlhcnlQcm9jZXNzSW5p
dGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0CiAgICAgc2V0Tm90aWZ5T3B0aW9ucygpOwog
ICAgIAogICAgIGlmIChzYW5kYm94X2FwcGx5KHNhbmRib3hQcm9maWxlLmdldCgpKSkgewotICAg
ICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZCBub3QgYXBwbHkgY29tcGlsZWQgc2FuZGJveDog
JXNcbiIsIGdldHByb2duYW1lKCksIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIFdURkxvZ0Fs
d2F5cygiJXM6IENvdWxkIG5vdCBhcHBseSBjb21waWxlZCBzYW5kYm94OiAlc1xuIiwgZ2V0cHJv
Z25hbWUoKSwgc2FmZVN0cmVycm9yKGVycm5vKS5kYXRhKCkpOwogICAgICAgICBDUkFTSCgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFz
X3BhZ2VfbWFsbG9jLmMgYi9Tb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFn
ZV9tYWxsb2MuYwppbmRleCBmMTUxNWFmOTkwZTkyYTcxNThmMzliNGNhOTU1ODAyOTUxMzI4MGQ2
Li4wNzViYTk5YjdlNjgwOGNmODAzNWZkZDgzNmM5YzFlYTk0ZWQ1ZjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYworKysgYi9T
b3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfcGFnZV9tYWxsb2MuYwpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgcGFzX3BhZ2VfbWFsbG9jX2NvbW1pdCh2b2lkKiBwdHIsIHNpemVf
dCBzaXplKQogICAgIGlmIChwYXNfcGFnZV9tYWxsb2NfbXByb3RlY3RfZGVjb21taXR0ZWQpIHsK
ICAgICAgICAgcmVzdWx0ID0gbXByb3RlY3QoKHZvaWQqKWJhc2VfYXNfaW50LCBlbmRfYXNfaW50
IC0gYmFzZV9hc19pbnQsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwogICAgICAgICBpZiAocmVz
dWx0KSB7Ci0gICAgICAgICAgICBwYXNfbG9nKCJDb3VsZCBub3QgbXByb3RlY3Qgb24gY29tbWl0
OiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgIHBhc19sb2coIkNvdWxkIG5v
dCBtcHJvdGVjdCBvbiBjb21taXQ6IGVycm9yIGNvZGUgJWRcbiIsIHJlc3VsdCk7CiAgICAgICAg
ICAgICBQQVNfQVNTRVJUKCFyZXN1bHQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY2YWIzZmU4M2E5Zjk3ZWNk
ODlhOGYwMDM4MmRiYzBkMjk1N2M5NmUuLmNjYmVlYTc2ODEzMmM3NDNiMjRmMmFmMjQ0OGMyNDE2
MmE1MzliNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0yMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0
YW56YXJvQGdub21lLm9yZz4KKworICAgICAgICBEbyBub3QgdXNlIHN0cmVycm9yKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTkxMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TYWZl
U3RyZXJyb3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAy
MDIxLTEwLTIwICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGZvcm1hdCBDKysgY29kZSB0byBwcm9qZWN0IHN0
eWxlIHdpdGggV2ViS2l0IHRvb2xzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBl
ZWUzYWU3MjQxNTkyNmRlZjAyNzdhYTQzZTVkNTg0YmYzMjhmZjRhLi5mZGRkNmFjMGUwODU0Y2U1
OTg0MjEzNWY0ZmU4YzhjZGQ0YWY0NWUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
QEAgLTgyLDYgKzgyLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9Sb2Jp
bkhvb2RIYXNoU2V0LmNwcAogICAgIFRlc3RzL1dURi9SdW5Mb29wLmNwcAogICAgIFRlc3RzL1dU
Ri9TSEExLmNwcAorICAgIFRlc3RzL1dURi9TYWZlU3RyZXJyb3IuY3BwCiAgICAgVGVzdHMvV1RG
L1NhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgIFRlc3RzL1dURi9TY29wZS5j
cHAKICAgICBUZXN0cy9XVEYvU2NvcGVkTGFtYmRhLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU2FmZVN0cmVycm9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmFhNGZhYjIzODczNTIw
OGJiYjlhNGY2ZTljYjgzNDQ4YzY3MDhkMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1NhZmVTdHJlcnJvci5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBSZWQgSGF0IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
IDx3dGYvU2FmZVN0cmVycm9yLmg+CisKKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdU
Rl9TYWZlU3RyZXJyb3IsIFN0cmluZ3NBcmVFcXVhbCkKK3sKKyAgICAvLyBXZSB0ZXN0IG9ubHkg
YSBmZXcga25vd24gZXJyb3IgY29kZXMgYmVjYXVzZSBvdXIgZXJyb3IgbWVzc2FnZSB3aGVuIHBh
c3NpbmcgYW4gdW5rbm93biBlcnJvcgorICAgIC8vIGNvZGUgd29uJ3QgYmUgbG9jYWxpemVkIGFu
ZCBtaWdodCBub3QgbWF0Y2ggdGhlIHN5c3RlbSBsaWJjIGFueXdheS4KKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDEwOyBpKyspCisgICAgICAgIEVYUEVDVF9TVFJFUShzdHJlcnJvcihpKSwgc2Fm
ZVN0cmVycm9yKGkpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>