<?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>32828</bug_id>
          
          <creation_ts>2009-12-21 10:28:17 -0800</creation_ts>
          <short_desc>WTF should have an arraysize macro</short_desc>
          <delta_ts>2010-10-24 16:20:30 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>48208</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
    
    <cc>paroga</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174000</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2009-12-21 10:28:17 -0800</bug_when>
    <thetext>Makes for better readability and lower likelihood of accidental errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174001</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-12-21 10:34:21 -0800</bug_when>
    <thetext>Seems fine. I&apos;d prefer to use a function template rather than a macro. With a  function template I think you can make it a compile time error to accidentally use it on a pointer or on an argument of array type without a size. I&apos;d also suggest not using the name arraysize because that&apos;s all lower case and not our normal style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289031</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-04 11:42:02 -0700</bug_when>
    <thetext>*** Bug 36252 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298451</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-23 12:53:12 -0700</bug_when>
    <thetext>*** Bug 48191 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298464</commentid>
    <comment_count>4</comment_count>
      <attachid>71654</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-23 15:01:31 -0700</bug_when>
    <thetext>Created attachment 71654
Patch

It&apos;s a big patch, but should be easy to review.
Please let me know if I should split it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298466</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-23 15:04:23 -0700</bug_when>
    <thetext>Attachment 71654 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/plugins/win/PluginDatabaseWin.cpp:409:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
JavaScriptCore/wtf/StdLibExtras.h:91:  array_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/StdLibExtras.h:100:  bitwise_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 3 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298473</commentid>
    <comment_count>6</comment_count>
      <attachid>71656</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-23 15:53:58 -0700</bug_when>
    <thetext>Created attachment 71656
Patch

Now with &quot;all&quot; changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298474</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-23 15:57:39 -0700</bug_when>
    <thetext>Attachment 71656 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/plugins/win/PluginDatabaseWin.cpp:409:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
JavaScriptCore/wtf/StdLibExtras.h:91:  array_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/StdLibExtras.h:100:  bitwise_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
Total errors found: 3 in 81 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298475</commentid>
    <comment_count>8</comment_count>
      <attachid>71657</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-23 16:07:26 -0700</bug_when>
    <thetext>Created attachment 71657
Patch

Argh! But now, with style fix for PluginDatabaseWin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298476</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-23 16:11:29 -0700</bug_when>
    <thetext>Attachment 71657 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/StdLibExtras.h:91:  array_size is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
JavaScriptCore/wtf/StdLibExtras.h:100:  bitwise_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
Total errors found: 2 in 87 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298477</commentid>
    <comment_count>10</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-23 16:14:25 -0700</bug_when>
    <thetext>Attachment 71656 did not build on qt:
Build output: http://queues.webkit.org/results/4671051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298487</commentid>
    <comment_count>11</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-23 16:32:39 -0700</bug_when>
    <thetext>Attachment 71657 did not build on qt:
Build output: http://queues.webkit.org/results/4634040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298501</commentid>
    <comment_count>12</comment_count>
      <attachid>71663</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-23 18:18:17 -0700</bug_when>
    <thetext>Created attachment 71663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298502</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-23 18:23:51 -0700</bug_when>
    <thetext>Attachment 71663 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/StdLibExtras.h:94:  bitwise_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebpage.cpp&quot;
Total errors found: 1 in 83 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298504</commentid>
    <comment_count>14</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-23 18:47:20 -0700</bug_when>
    <thetext>Attachment 71663 did not build on qt:
Build output: http://queues.webkit.org/results/4616045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298535</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-24 00:12:48 -0700</bug_when>
    <thetext>Attachment 71663 did not build on mac:
Build output: http://queues.webkit.org/results/4709049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298564</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-24 06:30:47 -0700</bug_when>
    <thetext>Attachment 71663 did not build on chromium:
Build output: http://queues.webkit.org/results/4734034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298568</commentid>
    <comment_count>17</comment_count>
      <attachid>71663</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-10-24 07:22:14 -0700</bug_when>
    <thetext>Comment on attachment 71663
Patch

r- due to various build failures.

I&apos;m a little concerned about ARRAY_LENGTH() being too generic of a name.  What about WTF_ARRAY_LENGTH()?

Can you make the macro an inline template method instead, or does that make declarations like this unhappy?

    unsigned int toklen[ARRAY_LENGTH(tokens)];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298569</commentid>
    <comment_count>18</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-24 07:31:44 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 71663 [details])
&gt; r- due to various build failures.
I&apos;ll split it up into smaller patches, since the JavaScriptCore part builds already and there is no need to this all in one patch.

&gt; I&apos;m a little concerned about ARRAY_LENGTH() being too generic of a name.  What about WTF_ARRAY_LENGTH()?
I&apos;m not very happy with it too.

&gt; Can you make the macro an inline template method instead, or does that make declarations like this unhappy?
There are some problem, since we need the size at compile time:
E.g. the following won&apos;t work:
template &lt;typename T, size_t N&gt;
inline size_t array_size(const T (&amp;)[N])
{
    return N;
}
size_t s = array_size(tokens);

But this should work, if we like it more:
template &lt;typename T, size_t N&gt;
struct array_info&lt;T[N]&gt;
{
    enum { size = N };
};
size_t s = array_info&lt;tokens&gt;::size;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298570</commentid>
    <comment_count>19</comment_count>
      <attachid>71680</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-24 07:37:56 -0700</bug_when>
    <thetext>Created attachment 71680
JavaScriptCore part

Now only the JavaScriptCore part and renamed ARRAY_LEGTH to WTF_ARRAY_LENGTH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298571</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-24 07:39:26 -0700</bug_when>
    <thetext>Attachment 71680 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/StdLibExtras.h:94:  bitwise_cast is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298574</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-10-24 08:16:53 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; Can you make the macro an inline template method instead, or does that make declarations like this unhappy?
&gt; There are some problem, since we need the size at compile time:
&gt; E.g. the following won&apos;t work:
&gt; template &lt;typename T, size_t N&gt;
&gt; inline size_t array_size(const T (&amp;)[N])
&gt; {
&gt;     return N;
&gt; }
&gt; size_t s = array_size(tokens);
&gt; 
&gt; But this should work, if we like it more:
&gt; template &lt;typename T, size_t N&gt;
&gt; struct array_info&lt;T[N]&gt;
&gt; {
&gt;     enum { size = N };
&gt; };
&gt; size_t s = array_info&lt;tokens&gt;::size;

Does the struct consume any space when compiled?  Or is it acting like a class here and declaring a scoped enum within itself?  I tend to prefer type-safe code over macros as long as there aren&apos;t any bad side-effects to using it.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298578</commentid>
    <comment_count>22</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-24 08:26:48 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Does the struct consume any space when compiled? Or is it acting like a class here and declaring a scoped enum within itself?  
It only declares the value for the enum, so it shoudn&apos;t consume any space, but I&apos;m not 100% sure.

&gt; I tend to prefer type-safe code over macros as long as there aren&apos;t any bad side-effects to using it.  :)
Because the macro uses a template function it&apos;s typesafe too. It throws a compiler error when used with wrong type (e.g. char*).
IMHO ARRAY_LEGTH(tokens) is easier to read compared to array_info&lt;tokens&gt;::size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298594</commentid>
    <comment_count>23</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-10-24 08:53:35 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; I tend to prefer type-safe code over macros as long as there aren&apos;t any bad side-effects to using it.  :)
&gt; Because the macro uses a template function it&apos;s typesafe too. It throws a compiler error when used with wrong type (e.g. char*).
&gt; IMHO ARRAY_LEGTH(tokens) is easier to read compared to array_info&lt;tokens&gt;::size.

I agree.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298598</commentid>
    <comment_count>24</comment_count>
      <attachid>71680</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-10-24 09:02:31 -0700</bug_when>
    <thetext>Comment on attachment 71680
JavaScriptCore part

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

r- to address the _countof() issue and move style changes and &quot;inline&quot; change to a separate patch.

&gt; JavaScriptCore/wtf/Platform.h:-570
&gt; -/* _countof is only included in CE6; for CE5 we need to define it ourself */
&gt; -#ifndef _countof
&gt; -#define _countof(x) (sizeof(x) / sizeof((x)[0]))
&gt; -#endif
&gt; -

I still think this is needed for WebCore, right?

&gt; JavaScriptCore/wtf/StdLibExtras.h:94
&gt; +template&lt;typename TO, typename FROM&gt;
&gt; +inline TO bitwise_cast(FROM from)

I would prefer this change be made in a separate patch.  It has potential performance implications, so making it a separate patch will allow for better bisecting in the future in case it has some effect.

You can bundle it with the style indentation fixes as well.

&gt; JavaScriptCore/wtf/StdLibExtras.h:111
&gt; +// Returns a count of the number of bits set in &apos;bits&apos;.
&gt; +inline size_t bitCount(unsigned bits)
&gt; +{
&gt; +    bits = bits - ((bits &gt;&gt; 1) &amp; 0x55555555);
&gt; +    bits = (bits &amp; 0x33333333) + ((bits &gt;&gt; 2) &amp; 0x33333333);
&gt; +    return (((bits + (bits &gt;&gt; 4)) &amp; 0xF0F0F0F) * 0x1010101) &gt;&gt; 24;
&gt; +}

Please put the style changes in a different patch.  You can bundle it with the style change and &quot;inline&quot; change above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298603</commentid>
    <comment_count>25</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-24 09:14:24 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 71680 [details])
&gt; &gt; JavaScriptCore/wtf/Platform.h:-570
&gt; &gt; -/* _countof is only included in CE6; for CE5 we need to define it ourself */
&gt; &gt; -#ifndef _countof
&gt; &gt; -#define _countof(x) (sizeof(x) / sizeof((x)[0]))
&gt; &gt; -#endif
&gt; &gt; -
&gt; 
&gt; I still think this is needed for WebCore, right?
It&apos;s not really used at the moment, so it won&apos;t be a problem, but it&apos;s cleaner to remove it with the WebCore changes.

&gt; &gt; JavaScriptCore/wtf/StdLibExtras.h:94
&gt; &gt; +template&lt;typename TO, typename FROM&gt;
&gt; &gt; +inline TO bitwise_cast(FROM from)
&gt; 
&gt; I would prefer this change be made in a separate patch.  It has potential performance implications, so making it a separate patch will allow for better bisecting in the future in case it has some effect.
&gt; 
&gt; You can bundle it with the style indentation fixes as well.
&gt; 
&gt; &gt; JavaScriptCore/wtf/StdLibExtras.h:111
&gt; &gt; +// Returns a count of the number of bits set in &apos;bits&apos;.
&gt; &gt; +inline size_t bitCount(unsigned bits)
&gt; &gt; +{
&gt; &gt; +    bits = bits - ((bits &gt;&gt; 1) &amp; 0x55555555);
&gt; &gt; +    bits = (bits &amp; 0x33333333) + ((bits &gt;&gt; 2) &amp; 0x33333333);
&gt; &gt; +    return (((bits + (bits &gt;&gt; 4)) &amp; 0xF0F0F0F) * 0x1010101) &gt;&gt; 24;
&gt; &gt; +}
&gt; 
&gt; Please put the style changes in a different patch.  You can bundle it with the style change and &quot;inline&quot; change above.
Created bug 48208.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298606</commentid>
    <comment_count>26</comment_count>
      <attachid>71690</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-24 09:46:54 -0700</bug_when>
    <thetext>Created attachment 71690
JavaScriptCore part

Removed WinCE _countof changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298615</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-24 10:03:01 -0700</bug_when>
    <thetext>Attachment 71680 did not build on chromium:
Build output: http://queues.webkit.org/results/4620075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298662</commentid>
    <comment_count>28</comment_count>
      <attachid>71690</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-10-24 14:26:58 -0700</bug_when>
    <thetext>Comment on attachment 71690
JavaScriptCore part

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298664</commentid>
    <comment_count>29</comment_count>
      <attachid>71690</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-24 14:29:21 -0700</bug_when>
    <thetext>Comment on attachment 71690
JavaScriptCore part

Rejecting patch 71690 from commit-queue.

Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=abarth-cq-sl&apos;, &apos;apply-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, 71690]&quot; exit_code: 2
Last 500 characters of output:
preter.cpp
patching file JavaScriptCore/runtime/DatePrototype.cpp
patching file JavaScriptCore/runtime/JSGlobalObject.cpp
patching file JavaScriptCore/runtime/JSONObject.cpp
patching file JavaScriptCore/runtime/UString.cpp
patching file JavaScriptCore/wtf/DateMath.cpp
patching file JavaScriptCore/wtf/StdLibExtras.h
patch: **** malformed patch at line 15:  


Failed to run &quot;[u&apos;/Users/abarth/git/webkit-queue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;David Kilzer&apos;, u&apos;--force&apos;]&quot; exit_code: 2

Full output: http://queues.webkit.org/results/4727051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298666</commentid>
    <comment_count>30</comment_count>
      <attachid>71698</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-24 15:30:34 -0700</bug_when>
    <thetext>Created attachment 71698
JavaScriptCore part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298670</commentid>
    <comment_count>31</comment_count>
      <attachid>71698</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-24 16:20:21 -0700</bug_when>
    <thetext>Comment on attachment 71698
JavaScriptCore part

Clearing flags on attachment: 71698

Committed r70425: &lt;http://trac.webkit.org/changeset/70425&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298671</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-24 16:20:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71654</attachid>
            <date>2010-10-23 15:01:31 -0700</date>
            <delta_ts>2010-10-23 15:53:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32828.patch</filename>
            <type>text/plain</type>
            <size>22540</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1NzU3M2RhLi5kOTMxN2JmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURjo6
YXJyYXlfc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzI4MjgKKworICAgICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBh
bmQgdXNhZ2VzLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1N0
ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjphcnJheV9zaXplKToKKyAgICAgICAgKFdURjo6
Yml0d2lzZV9jYXN0KToKKyAgICAgICAgKFdURjo6Yml0Q291bnQpOgorCiAyMDEwLTEwLTIyICBB
ZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIFF1YXJ0
ekNvcmVQcmVzZW50LmggbWVjaGFuaXNtCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDk0NjE5MmIu
LmQ0MjlkZTIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCkBAIC01NjMsMTEgKzU2Myw2IEBACiAjZGVm
aW5lIF9JTkNfQVNTRVJUICAgIC8qIGRpc2FibGUgImFzc2VydC5oIiAqLwogI2RlZmluZSBhc3Nl
cnQoeCkKIAotLyogX2NvdW50b2YgaXMgb25seSBpbmNsdWRlZCBpbiBDRTY7IGZvciBDRTUgd2Ug
bmVlZCB0byBkZWZpbmUgaXQgb3Vyc2VsZiAqLwotI2lmbmRlZiBfY291bnRvZgotI2RlZmluZSBf
Y291bnRvZih4KSAoc2l6ZW9mKHgpIC8gc2l6ZW9mKCh4KVswXSkpCi0jZW5kaWYKLQogI2VuZGlm
ICAvKiBPUyhXSU5DRSkgJiYgIVBMQVRGT1JNKFFUKSAqLwogCiAjaWYgUExBVEZPUk0oUVQpCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmggYi9KYXZhU2NyaXB0
Q29yZS93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggZDU5NGMxNy4uNTU0ZWFmYSAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3d0Zi9TdGRMaWJFeHRyYXMuaApAQCAtODcsMjkgKzg3LDM3IEBAIFR5cGVQdHIgcmVpbnRlcnBy
ZXRfY2FzdF9wdHIoY29uc3Qgdm9pZCogcHRyKQogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIC8q
Ci0gICAgICogQysrJ3MgaWRlYSBvZiBhIHJlaW50ZXJwcmV0X2Nhc3QgbGFja3Mgc3VmZmljaWVu
dCBjb2pvbmVzLgotICAgICAqLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRPLCB0eXBlbmFtZSBG
Uk9NPgotICAgIFRPIGJpdHdpc2VfY2FzdChGUk9NIGZyb20pCi0gICAgewotICAgICAgICBDT01Q
SUxFX0FTU0VSVChzaXplb2YoVE8pID09IHNpemVvZihGUk9NKSwgV1RGX2JpdHdpc2VfY2FzdF9z
aXplb2ZfY2FzdGVkX3R5cGVzX2lzX2VxdWFsKTsKLSAgICAgICAgdW5pb24gewotICAgICAgICAg
ICAgRlJPTSBmcm9tOwotICAgICAgICAgICAgVE8gdG87Ci0gICAgICAgIH0gdTsKLSAgICAgICAg
dS5mcm9tID0gZnJvbTsKLSAgICAgICAgcmV0dXJuIHUudG87Ci0gICAgfQordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBOPgoraW5saW5lIHNpemVfdCBhcnJheV9zaXplKGNvbnN0IFQgKCYp
W05dKQoreworICAgIHJldHVybiBOOworfQorCisvKgorICogQysrJ3MgaWRlYSBvZiBhIHJlaW50
ZXJwcmV0X2Nhc3QgbGFja3Mgc3VmZmljaWVudCBjb2pvbmVzLgorICovCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUTywgdHlwZW5hbWUgRlJPTT4KK2lubGluZSBUTyBiaXR3aXNlX2Nhc3QoRlJPTSBmcm9t
KQoreworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihUTykgPT0gc2l6ZW9mKEZST00pLCBXVEZf
Yml0d2lzZV9jYXN0X3NpemVvZl9jYXN0ZWRfdHlwZXNfaXNfZXF1YWwpOworICAgIHVuaW9uIHsK
KyAgICAgICAgRlJPTSBmcm9tOworICAgICAgICBUTyB0bzsKKyAgICB9IHU7CisgICAgdS5mcm9t
ID0gZnJvbTsKKyAgICByZXR1cm4gdS50bzsKK30KIAotICAgIC8vIFJldHVybnMgYSBjb3VudCBv
ZiB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluICdiaXRzJy4KLSAgICBpbmxpbmUgc2l6ZV90IGJp
dENvdW50KHVuc2lnbmVkIGJpdHMpCi0gICAgewotICAgICAgICBiaXRzID0gYml0cyAtICgoYml0
cyA+PiAxKSAmIDB4NTU1NTU1NTUpOwotICAgICAgICBiaXRzID0gKGJpdHMgJiAweDMzMzMzMzMz
KSArICgoYml0cyA+PiAyKSAmIDB4MzMzMzMzMzMpOwotICAgICAgICByZXR1cm4gKCgoYml0cyAr
IChiaXRzID4+IDQpKSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+IDI0OwotICAgIH0KKy8v
IFJldHVybnMgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluICdiaXRzJy4KK2lu
bGluZSBzaXplX3QgYml0Q291bnQodW5zaWduZWQgYml0cykKK3sKKyAgICBiaXRzID0gYml0cyAt
ICgoYml0cyA+PiAxKSAmIDB4NTU1NTU1NTUpOworICAgIGJpdHMgPSAoYml0cyAmIDB4MzMzMzMz
MzMpICsgKChiaXRzID4+IDIpICYgMHgzMzMzMzMzMyk7CisgICAgcmV0dXJuICgoKGJpdHMgKyAo
Yml0cyA+PiA0KSkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+PiAyNDsKK30KIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKK3VzaW5nIFdURjo6YXJyYXlfc2l6ZTsKKwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVlYjQ5ODMu
LmVjMjgxMmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8
cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIFdURjo6YXJyYXlfc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAgICAgICBVbmlmeSB0aGUgZGlmZmVy
ZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vVVVJ
RC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNl
L0ZpbGVTeXN0ZW1XaW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisgICAgICAgICogcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6YWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6OmFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogc3RvcmFnZS9J
REJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGFibGVz
KToKKwogMjAxMC0xMC0yMiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9VVUlE
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAKaW5kZXggZmRiZjYwMS4uODcyZTEzZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL1VVSUQuY3BwCkBAIC0zOSw5ICszOSw2IEBACiAKICNpZiBPUyhXSU5ET1dTKQogI2luY2x1
ZGUgPG9iamJhc2UuaD4KLSNpZm5kZWYgQVJSQVlTSVpFCi0jZGVmaW5lIEFSUkFZU0laRShhKSAg
ICAgICAgICAgKHNpemVvZihhKSAvIHNpemVvZigoYSlbMF0pKQotI2VuZGlmCiAjZWxpZiBPUyhE
QVJXSU4pCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICNlbGlm
IE9TKExJTlVYKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdp
bi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA0Yjdh
NjkyLi5hYmZmZTkwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVt
V2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAt
MTkyLDggKzE5Miw4IEBAIENTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciosIFBs
YXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZB
TFVFOwogCiAgICAgY2hhciB0ZW1wUGF0aFtNQVhfUEFUSF07Ci0gICAgaW50IHRlbXBQYXRoTGVu
Z3RoID0gOjpHZXRUZW1wUGF0aEEoX2NvdW50b2YodGVtcFBhdGgpLCB0ZW1wUGF0aCk7Ci0gICAg
aWYgKHRlbXBQYXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBhdGhMZW5ndGggPiBfY291bnRvZih0ZW1w
UGF0aCkpCisgICAgaW50IHRlbXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aEEoYXJyYXlfc2l6
ZSh0ZW1wUGF0aCksIHRlbXBQYXRoKTsKKyAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0
ZW1wUGF0aExlbmd0aCA+IGFycmF5X3NpemUodGVtcFBhdGgpKQogICAgICAgICByZXR1cm4gQ1N0
cmluZygpOwogCiAgICAgSENSWVBUUFJPViBoQ3J5cHRQcm92ID0gMDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcAppbmRleCAyYTI3MDg5Li42ZWE5NzhmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwCkBAIC0xNzQsOCArMTc0
LDggQEAgQ1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBjaGFyKiwgUGxhdGZvcm1GaWxl
SGFuZGxlJiBoYW5kbGUpCiAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAKICAg
ICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKLSAgICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6
OkdldFRlbXBQYXRoKF9jb3VudG9mKHRlbXBQYXRoKSwgdGVtcFBhdGgpOwotICAgIGlmICh0ZW1w
UGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3RoID4gX2NvdW50b2YodGVtcFBhdGgpKQor
ICAgIGludCB0ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVtcFBhdGgoYXJyYXlfc2l6ZSh0ZW1wUGF0
aCksIHRlbXBQYXRoKTsKKyAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExl
bmd0aCA+IGFycmF5X3NpemUodGVtcFBhdGgpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwog
CiAgICAgSENSWVBUUFJPViBoQ3J5cHRQcm92ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1
Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwIGIvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVn
aW5EYXRhYmFzZVdpbi5jcHAKaW5kZXggNmNiY2RjOC4uZDkwZjUyNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbHVn
aW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVk
ZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHNobHdhcGkuaD4KIAotI2lmIENPTVBJTEVSKE1JTkdX
KQotI2RlZmluZSBfY291bnRvZih4KSAoc2l6ZW9mKHgpL3NpemVvZih4WzBdKSkKLSNlbmRpZgot
CiAjaWYgT1MoV0lOQ0UpCiAvLyBXSU5DRSBkb2Vzbid0IHN1cHBvcnQgUmVnaXN0cnkgS2V5IEFj
Y2VzcyBSaWdodHMuIFRoZSBwYXJhbWV0ZXIgc2hvdWxkIGFsd2F5cyBiZSAwCiAjaWZuZGVmIEtF
WV9FTlVNRVJBVEVfU1VCX0tFWVMKQEAgLTk2LDcgKzkyLDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IGFkZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KEhLRVkgcm9vdEtleSwgSGFzaFNldDxTdHJpbmc+
JiBwYXQKIAogICAgIC8vIEVudW1lcmF0ZSBzdWJrZXlzCiAgICAgZm9yIChpbnQgaSA9IDA7OyBp
KyspIHsKLSAgICAgICAgRFdPUkQgbmFtZUxlbiA9IF9jb3VudG9mKG5hbWUpOworICAgICAgICBE
V09SRCBuYW1lTGVuID0gYXJyYXlfc2l6ZShuYW1lKTsKICAgICAgICAgcmVzdWx0ID0gUmVnRW51
bUtleUV4VyhrZXksIGksIG5hbWUsICZuYW1lTGVuLCAwLCAwLCAwLCAmbGFzdE1vZGlmaWVkKTsK
IAogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCkBAIC0yNTcsOSArMjUzLDkg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9y
eShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICNpZiAhT1MoV0lOQ0UpCiAgICAgLy8gVGhlIG5l
dyBXTVAgRmlyZWZveCBwbHVnaW4gaXMgaW5zdGFsbGVkIGluIFxQRmlsZXNcUGx1Z2lucyBpZiBp
dCBjYW4ndCBmaW5kIGFueSBGaXJlZm94IGluc3RhbGxzCiAgICAgV0NIQVIgcGx1Z2luRGlyZWN0
b3J5U3RyW19NQVhfUEFUSCArIDFdOwotICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6
OkV4cGFuZEVudmlyb25tZW50U3RyaW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQ
bHVnaW5zIiksIHBsdWdpbkRpcmVjdG9yeVN0ciwgX2NvdW50b2YocGx1Z2luRGlyZWN0b3J5U3Ry
KSk7CisgICAgRFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6ZSA9IDo6RXhwYW5kRW52aXJvbm1lbnRT
dHJpbmdzVyhURVhUKCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiKSwgcGx1Z2luRGly
ZWN0b3J5U3RyLCBhcnJheV9zaXplKHBsdWdpbkRpcmVjdG9yeVN0cikpOwogCi0gICAgaWYgKHBs
dWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBsdWdpbkRpcmVjdG9yeVNpemUgPD0gX2NvdW50b2Yo
cGx1Z2luRGlyZWN0b3J5U3RyKSkKKyAgICBpZiAocGx1Z2luRGlyZWN0b3J5U2l6ZSA+IDAgJiYg
cGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBhcnJheV9zaXplKHBsdWdpbkRpcmVjdG9yeVN0cikpCiAg
ICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luRGlyZWN0b3J5U3RyLCBwbHVn
aW5EaXJlY3RvcnlTaXplIC0gMSkpOwogI2VuZGlmCiAKQEAgLTQxMCw3ICs0MDYsNyBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgYWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJp
bmc+JiBkaXJlY3RvcmllcykKICNpZiAhT1MoV0lOQ0UpCiAgICAgV0NIQVIgc3lzdGVtRGlyZWN0
b3J5U3RyW01BWF9QQVRIXTsKIAotICAgIGlmIChHZXRTeXN0ZW1EaXJlY3Rvcnkoc3lzdGVtRGly
ZWN0b3J5U3RyLCBfY291bnRvZihzeXN0ZW1EaXJlY3RvcnlTdHIpKSA9PSAwKQorICAgIGlmIChH
ZXRTeXN0ZW1EaXJlY3Rvcnkoc3lzdGVtRGlyZWN0b3J5U3RyLCBhcnJheV9zaXplKHN5c3RlbURp
cmVjdG9yeVN0cikpID09IDApCiAgICAgICAgIHJldHVybjsKIAogICAgIFdDSEFSIG1hY3JvbWVk
aWFEaXJlY3RvcnlTdHJbTUFYX1BBVEhdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcAppbmRleCBjMTgyOTRkLi4yNGQ0NzFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0
b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBib29sIGNy
ZWF0ZVRhYmxlcyhTUUxpdGVEYXRhYmFzZSogc3FsaXRlRGF0YWJhc2UpCiAgICAgICAgICJDUkVB
VEUgSU5ERVggSUYgTk9UIEVYSVNUUyBJbmRleERhdGFfaW5kZXhJZCBPTiBJbmRleERhdGEoaW5k
ZXhJZCkiCiAgICAgICAgIH07CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6
ZShjb21tYW5kcyk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6
ZShjb21tYW5kcyk7ICsraSkgewogICAgICAgICBpZiAoIXNxbGl0ZURhdGFiYXNlLT5leGVjdXRl
Q29tbWFuZChjb21tYW5kc1tpXSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
dHJ5IHRvIHJlY292ZXIgZnJvbSB0aGlzIHNpdHVhdGlvbi4gTWF5YmUgbnVrZSB0aGUgZGF0YWJh
c2UgYW5kIHN0YXJ0IG92ZXI/CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBydW4g
dGhlIGZvbGxvd2luZyBjb21tYW5kIGZvciBJbmRleGVkREI6ICVzIiwgY29tbWFuZHNbaV0pOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggYTBkZjFmZC4uM2YyYTZkZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdU
Rjo6YXJyYXlfc2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzI4MjgKKworICAgICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9u
cyBhbmQgdXNhZ2VzLgorCisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjppbnRlcnByZXRLZXlFdmVudCk6CisgICAg
ICAgICogdGVzdHMvS1VSTFRlc3QuY3BwOgorICAgICAgICAoQ29tcG9uZW50Q2FzZTo6VEVTVCk6
CisKIDIwMTAtMTAtMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0VkaXRvckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmNwcAppbmRleCAxMTk3N2I2Li5jMzIwMzgwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTUxNiwxMiArNTE2LDEyIEBAIGNvbnN0IGNoYXIqIEVk
aXRvckNsaWVudEltcGw6OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2
dCkKICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBj
aGFyKj47CiAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNv
bnN0IGNoYXIqPjsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlzaXpl
KGtleURvd25FbnRyaWVzKTsgaSsrKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBhcnJheV9zaXplKGtleURvd25FbnRyaWVzKTsgaSsrKSB7CiAgICAgICAgICAgICBrZXlEb3du
Q29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlE
b3duRW50cmllc1tpXS52aXJ0dWFsS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlzaXplKGtleVByZXNzRW50cmllcyk7IGkrKykgewor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShrZXlQcmVzc0VudHJp
ZXMpOyBpKyspIHsKICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVz
c0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleVByZXNzRW50cmllc1tp
XS5uYW1lKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tV
UkxUZXN0LmNwcCBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LVVJMVGVzdC5jcHAKaW5kZXggMTUy
ZGQzMS4uNDBlNDI5NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tVUkxUZXN0
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvS1VSTFRlc3QuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgVEVTVChLVVJMVGVzdCwgRGlmZmVyZW50R2V0dGVycykKICAgICAgICAgeyJodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vZm9vL2JsYWg/YmFyPWJheiNceGNlXHhiMVx4Y2VceGIyIiwgImh0
dHAiLCAid3d3Lmdvb2dsZS5jb20iLCAwLCAiIiwgMCwgIi9mb28vYmxhaC8iLCAiYmxhaCIsICJi
YXI9YmF6IiwgIlx4Y2VceGIxXHhjZVx4YjIifSwKICAgICB9OwogCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcnJheXNpemUoY2FzZXMpOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFycmF5X3NpemUoY2FzZXMpOyBpKyspIHsKICAgICAgICAgV2ViQ29yZTo6S1VSTCBr
dXJsKFdlYkNvcmU6OlBhcnNlZFVSTFN0cmluZywgY2FzZXNbaV0udXJsKTsKIAogICAgICAgICBF
WFBFQ1RfRVEoY2FzZXNbaV0ucHJvdG9jb2wsIGt1cmwucHJvdG9jb2woKSk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDQ2YTgw
ZGYuLmJhNzE1ZmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fu
c3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURjo6YXJyYXlfc2l6ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAgICAgICBVbmlmeSB0
aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
ckNsaWVudEVmbDo6aW50ZXJwcmV0S2V5RXZlbnQpOgorCiAyMDEwLTEwLTIyICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
Y3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCmluZGV4
IGE2M2I3MTIuLjZmODIxYzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHAKQEAgLTI5Miw4ICsyOTIsNiBAQCBzdGF0aWMgY29uc3QgS2V5UHJlc3NF
bnRyeSBrZXlQcmVzc0VudHJpZXNbXSA9IHsKICAgICB7ICdccicsICAgQWx0S2V5IHwgU2hpZnRL
ZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKIH07
CiAKLSNkZWZpbmUgQVJSQVlTSVpFKGFycmF5KSAoc2l6ZW9mKGFycmF5KSAvIHNpemVvZigoYXJy
YXkpWzBdKSkKLQogY29uc3QgY2hhciogRWRpdG9yQ2xpZW50RWZsOjppbnRlcnByZXRLZXlFdmVu
dChjb25zdCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBBU1NFUlQoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmtleXByZXNzRXZlbnQpOwpAQCAtMzA1LDEwICszMDMsMTAgQEAgY29uc3QgY2hhciog
RWRpdG9yQ2xpZW50RWZsOjppbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50KiBl
dmVudCkKICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25z
dCBjaGFyKj47CiAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQs
IGNvbnN0IGNoYXIqPjsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlT
SVpFKGtleURvd25FbnRyaWVzKTsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYXJyYXlfc2l6ZShrZXlEb3duRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtleURvd25D
b21tYW5kc01hcC0+c2V0KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleURv
d25FbnRyaWVzW2ldLnZpcnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOwogCi0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBUlJBWVNJWkUoa2V5UHJlc3NFbnRyaWVzKTsg
aSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShrZXlQcmVz
c0VudHJpZXMpOyBpKyspCiAgICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLT5zZXQoa2V5
UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFy
Q29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBlMThmZGE3Li4y
MjYzYmRmIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2lu
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTEwLTIzICBQYXRyaWNrIEdhbnN0ZXJl
ciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBXVEY6OmFycmF5X3NpemUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODI4CisKKyAgICAgICAgVW5pZnkgdGhlIGRp
ZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzYWdlcy4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKGlzUHJlSW5zcGVjdEVs
ZW1lbnRUYWdTYWZhcmkpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6aW50ZXJwcmV0S2V5RXZlbnQpOgorCiAyMDEwLTEwLTIyICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRml4IHdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IGFiMWY3OWUu
LjZlYWYzZmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBib29sIGlzUHJlSW5zcGVj
dEVsZW1lbnRUYWdTYWZhcmkoSVdlYlVJRGVsZWdhdGUqIHVpRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFRDSEFSIG1vZHVsZVBhdGhbTUFYX1BBVEhdOwotICAgIERXT1JE
IGxlbmd0aCA9IDo6R2V0TW9kdWxlRmlsZU5hbWUoMCwgbW9kdWxlUGF0aCwgX2NvdW50b2YobW9k
dWxlUGF0aCkpOworICAgIERXT1JEIGxlbmd0aCA9IDo6R2V0TW9kdWxlRmlsZU5hbWUoMCwgbW9k
dWxlUGF0aCwgYXJyYXlfc2l6ZShtb2R1bGVQYXRoKSk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBi
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggYjU3ZTA2YS4uNzcyYjQ5OSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBA
IC0xODMzLDEwICsxODMzLDEwIEBAIGNvbnN0IGNoYXIqIFdlYlZpZXc6OmludGVycHJldEtleUV2
ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2dCkKICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFw
ID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CiAgICAgICAgIGtleVByZXNzQ29tbWFu
ZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKIAotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgX2NvdW50b2Yoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleURvd25FbnRyaWVzKTsgaSsr
KQogICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0u
bW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVu
dHJpZXNbaV0ubmFtZSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9jb3Vu
dG9mKGtleVByZXNzRW50cmllcyk7IGkrKykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGFycmF5X3NpemUoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQogICAgICAgICAgICAga2V5UHJl
c3NDb21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBr
ZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tpXS5uYW1lKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luY2Uv
Q2hhbmdlTG9nCmluZGV4IDJlMDU4NWQuLmU0ZjZhODYgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW5j
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDEwLTEwLTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXVEY6OmFy
cmF5X3NpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMyODI4CisKKyAgICAgICAgVW5pZnkgdGhlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYW5k
IHVzYWdlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50V2luQ0U6OmludGVycHJldEtleUV2ZW50
KToKKwogMjAxMC0xMC0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAgYi9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCmluZGV4IGI5ZTZmYjEuLmNkZDY2NDggMTAw
NjQ0Ci0tLSBhL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5j
cHAKKysrIGIvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNw
cApAQCAtMzEzLDEwICszMTMsMTAgQEAgY29uc3QgY2hhciogRWRpdG9yQ2xpZW50V2luQ0U6Omlu
dGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBrZXlE
b3duQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKICAgICAgICAg
a2V5UHJlc3NDb21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwogCi0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBfY291bnRvZihrZXlEb3duRW50cmllcyk7
IGkrKykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5X3NpemUoa2V5RG93
bkVudHJpZXMpOyBpKyspCiAgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlE
b3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFs
S2V5LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgX2NvdW50b2Yoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShrZXlQcmVzc0VudHJpZXMpOyBpKyspCiAgICAg
ICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLT5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlm
aWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVz
W2ldLm5hbWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBiZGQ4OWFmLi5mMmI3Yjk5IDEwMDY0NAotLS0gYS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEw
LTEwLTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXVEY6OmFycmF5X3Np
emUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODI4
CisKKyAgICAgICAgVW5pZnkgdGhlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzYWdl
cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6c2FmYXJpUGx1Z2luc0RpcmVjdG9yeSk6CisgICAgICAgIChXZWJL
aXQ6OmFkZE1vemlsbGFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJLaXQ6OmFkZFdp
bmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OmFkZEFk
b2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OmFkZE1hY3JvbWVk
aWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgIChXZWJLaXQ6OmFkZFBsdWdpblBhdGhzRnJv
bVJlZ2lzdHJ5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnRlcnByZXRLZXlFdmVudCk6CisKIDIw
MTAtMTAtMjIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlci93aW4vUHJvY2Vzc0xhdW5jaGVyV2luLmNwcAppbmRleCBhMWM5YWFmLi44MmY2MjAz
IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xhdW5j
aGVyV2luLmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci93aW4vUHJvY2Vzc0xh
dW5jaGVyV2luLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1
bmNoUHJvY2VzcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdDSEFSIHBhdGhTdHJbTUFYX1BB
VEhdOwotICAgIGlmICghOjpHZXRNb2R1bGVGaWxlTmFtZVcod2ViS2l0TW9kdWxlLCBwYXRoU3Ry
LCBfY291bnRvZihwYXRoU3RyKSkpCisgICAgaWYgKCE6OkdldE1vZHVsZUZpbGVOYW1lVyh3ZWJL
aXRNb2R1bGUsIHBhdGhTdHIsIGFycmF5X3NpemUocGF0aFN0cikpKQogICAgICAgICByZXR1cm47
CiAKICAgICA6OlBhdGhSZW1vdmVGaWxlU3BlY1cocGF0aFN0cik7CmRpZmYgLS1naXQgYS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4uY3BwIGIvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcAppbmRleCA2NDVi
NGMwLi5mMTBiYzg4IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9Q
bHVnaW5JbmZvU3RvcmVXaW4uY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvd2lu
L1BsdWdpbkluZm9TdG9yZVdpbi5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgc3RhdGljIGlubGluZSBT
dHJpbmcgc2FmYXJpUGx1Z2luc0RpcmVjdG9yeSgpCiAgICAgICAgIGNhY2hlZFBsdWdpbkRpcmVj
dG9yeSA9IHRydWU7CiAKICAgICAgICAgV0NIQVIgbW9kdWxlRmlsZU5hbWVTdHJbTUFYX1BBVEhd
OwotICAgICAgICBpbnQgbW9kdWxlRmlsZU5hbWVMZW4gPSA6OkdldE1vZHVsZUZpbGVOYW1lVygw
LCBtb2R1bGVGaWxlTmFtZVN0ciwgX2NvdW50b2YobW9kdWxlRmlsZU5hbWVTdHIpKTsKKyAgICAg
ICAgaW50IG1vZHVsZUZpbGVOYW1lTGVuID0gOjpHZXRNb2R1bGVGaWxlTmFtZVcoMCwgbW9kdWxl
RmlsZU5hbWVTdHIsIGFycmF5X3NpemUobW9kdWxlRmlsZU5hbWVTdHIpKTsKIAotICAgICAgICBp
ZiAoIW1vZHVsZUZpbGVOYW1lTGVuIHx8IG1vZHVsZUZpbGVOYW1lTGVuID09IF9jb3VudG9mKG1v
ZHVsZUZpbGVOYW1lU3RyKSkKKyAgICAgICAgaWYgKCFtb2R1bGVGaWxlTmFtZUxlbiB8fCBtb2R1
bGVGaWxlTmFtZUxlbiA9PSBhcnJheV9zaXplKG1vZHVsZUZpbGVOYW1lU3RyKSkKICAgICAgICAg
ICAgIHJldHVybiBwbHVnaW5zRGlyZWN0b3J5OwogCiAgICAgICAgIGlmICghOjpQYXRoUmVtb3Zl
RmlsZVNwZWNXKG1vZHVsZUZpbGVOYW1lU3RyKSkKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMg
aW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBk
aXJlY3RvcmllcykKIAogICAgIC8vIEVudW1lcmF0ZSBzdWJrZXlzCiAgICAgZm9yIChpbnQgaSA9
IDA7OyBpKyspIHsKLSAgICAgICAgRFdPUkQgbmFtZUxlbiA9IF9jb3VudG9mKG5hbWUpOworICAg
ICAgICBEV09SRCBuYW1lTGVuID0gYXJyYXlfc2l6ZShuYW1lKTsKICAgICAgICAgcmVzdWx0ID0g
OjpSZWdFbnVtS2V5RXhXKGtleSwgaSwgbmFtZSwgJm5hbWVMZW4sIDAsIDAsIDAsICZsYXN0TW9k
aWZpZWQpOwogCiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKQEAgLTE0Myw5
ICsxNDMsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2lu
RGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcgogewogICAgIC8vIFRoZSBuZXcgV01Q
IEZpcmVmb3ggcGx1Z2luIGlzIGluc3RhbGxlZCBpbiBcUEZpbGVzXFBsdWdpbnMgaWYgaXQgY2Fu
J3QgZmluZCBhbnkgRmlyZWZveCBpbnN0YWxscwogICAgIFdDSEFSIHBsdWdpbkRpcmVjdG9yeVN0
cltNQVhfUEFUSCArIDFdOwotICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4cGFu
ZEVudmlyb25tZW50U3RyaW5nc1coTCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiLCBw
bHVnaW5EaXJlY3RvcnlTdHIsIF9jb3VudG9mKHBsdWdpbkRpcmVjdG9yeVN0cikpOworICAgIERX
T1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4cGFuZEVudmlyb25tZW50U3RyaW5nc1coTCIl
U1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiLCBwbHVnaW5EaXJlY3RvcnlTdHIsIGFycmF5
X3NpemUocGx1Z2luRGlyZWN0b3J5U3RyKSk7CiAKLSAgICBpZiAocGx1Z2luRGlyZWN0b3J5U2l6
ZSA+IDAgJiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBfY291bnRvZihwbHVnaW5EaXJlY3RvcnlT
dHIpKQorICAgIGlmIChwbHVnaW5EaXJlY3RvcnlTaXplID4gMCAmJiBwbHVnaW5EaXJlY3RvcnlT
aXplIDw9IGFycmF5X3NpemUocGx1Z2luRGlyZWN0b3J5U3RyKSkKICAgICAgICAgZGlyZWN0b3Jp
ZXMuYXBwZW5kKFN0cmluZyhwbHVnaW5EaXJlY3RvcnlTdHIsIHBsdWdpbkRpcmVjdG9yeVNpemUg
LSAxKSk7CiAKICAgICBEV09SRCB0eXBlOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRp
cmVjdG9yaWVzKQogCiAgICAgLy8gRW51bWVyYXRlIHN1YmtleXMKICAgICBmb3IgKGludCBpID0g
MDs7IGkrKykgewotICAgICAgICBEV09SRCBuYW1lTGVuID0gX2NvdW50b2YobmFtZSk7CisgICAg
ICAgIERXT1JEIG5hbWVMZW4gPSBhcnJheV9zaXplKG5hbWUpOwogICAgICAgICByZXN1bHQgPSA6
OlJlZ0VudW1LZXlFeFcoa2V5LCBpLCBuYW1lLCAmbmFtZUxlbiwgMCwgMCwgMCwgJmxhc3RNb2Rp
ZmllZCk7CiAKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQpAQCAtMjIyLDcg
KzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3Jp
ZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogI2lmICFPUyhXSU5DRSkKICAgICBXQ0hB
UiBzeXN0ZW1EaXJlY3RvcnlTdHJbTUFYX1BBVEhdOwogCi0gICAgaWYgKCE6OkdldFN5c3RlbURp
cmVjdG9yeVcoc3lzdGVtRGlyZWN0b3J5U3RyLCBfY291bnRvZihzeXN0ZW1EaXJlY3RvcnlTdHIp
KSkKKyAgICBpZiAoITo6R2V0U3lzdGVtRGlyZWN0b3J5VyhzeXN0ZW1EaXJlY3RvcnlTdHIsIGFy
cmF5X3NpemUoc3lzdGVtRGlyZWN0b3J5U3RyKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdD
SEFSIG1hY3JvbWVkaWFEaXJlY3RvcnlTdHJbTUFYX1BBVEhdOwpAQCAtMzEyLDcgKzMxMiw3IEBA
IHN0YXRpYyB2b2lkIGFkZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KEhLRVkgcm9vdEtleSwgVmVj
dG9yPFN0cmluZz4mIHBhdGhzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyA7ICsraSkgewogICAg
ICAgICAvLyBNU0ROIHNheXMgdGhhdCBrZXkgbmFtZXMgaGF2ZSBhIG1heGltdW0gbGVuZ3RoIG9m
IDI1NSBjaGFyYWN0ZXJzLgogICAgICAgICB3Y2hhcl90IG5hbWVbMjU2XTsKLSAgICAgICAgRFdP
UkQgbmFtZUxlbiA9IF9jb3VudG9mKG5hbWUpOworICAgICAgICBEV09SRCBuYW1lTGVuID0gYXJy
YXlfc2l6ZShuYW1lKTsKICAgICAgICAgaWYgKDo6UmVnRW51bUtleUV4VyhrZXksIGksIG5hbWUs
ICZuYW1lTGVuLCAwLCAwLCAwLCAwKSAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICAgICAgYnJl
YWs7CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdl
V2luLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApp
bmRleCBiYmUyMTg2Li4wZGJlODgzIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2luL1dlYlBhZ2VXaW4uY3BwCkBAIC0xNTcsMTAgKzE1NywxMCBAQCBjb25zdCBjaGFyKiBXZWJQ
YWdlOjppbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50KiBldnQpCiAgICAgICAg
IGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwogICAg
ICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47
CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9jb3VudG9mKGtleURvd25FbnRy
aWVzKTsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShr
ZXlEb3duRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtleURvd25Db21tYW5kc01hcC0+c2V0
KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVzW2ldLnZp
cnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOwogCi0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBfY291bnRvZihrZXlQcmVzc0VudHJpZXMpOyBpKyspCisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleVByZXNzRW50cmllcyk7IGkrKykK
ICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0u
bW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0Vu
dHJpZXNbaV0ubmFtZSk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71656</attachid>
            <date>2010-10-23 15:53:58 -0700</date>
            <delta_ts>2010-10-23 16:07:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32828b.patch</filename>
            <type>text/plain</type>
            <size>94120</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMgYi9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDFlY2ZjN2UuLjU3ZDEwODYgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwpAQCAtMTI3NSw3ICsxMjc1LDcgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBBU1NFUlQoY291bnQgPT0gMSk7IC8vIGpzQ0ZT
dHJpbmcgc2hvdWxkIG5vdCBiZSBlbnVtZXJhdGVkCiAKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50
c0FycmF5VmFsdWVzW10gPSB7IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDEwKSwgSlNWYWx1
ZU1ha2VOdW1iZXIoY29udGV4dCwgMjApIH07Ci0gICAgbyA9IEpTT2JqZWN0TWFrZUFycmF5KGNv
bnRleHQsIHNpemVvZihhcmd1bWVudHNBcnJheVZhbHVlcykgLyBzaXplb2YoSlNWYWx1ZVJlZiks
IGFyZ3VtZW50c0FycmF5VmFsdWVzLCBOVUxMKTsKKyAgICBvID0gSlNPYmplY3RNYWtlQXJyYXko
Y29udGV4dCwgYXJyYXlfc2l6ZShhcmd1bWVudHNBcnJheVZhbHVlcyksIGFyZ3VtZW50c0FycmF5
VmFsdWVzLCBOVUxMKTsKICAgICBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygibGVuZ3RoIik7CiAgICAgdiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbywgc3Ry
aW5nLCBOVUxMKTsKICAgICBhc3NlcnRFcXVhbHNBc051bWJlcih2LCAyKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCAyMmNkODU0Li4yOWY4MGNjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMTAt
MjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURjo6YXJyYXlfc2l6ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKwor
ICAgICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgor
CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBwY3JlL3BjcmVfZXhlYy5jcHA6CisgICAg
ICAgIChNYXRjaFN0YWNrOjpNYXRjaFN0YWNrKToKKyAgICAgICAgKiBwY3JlL3BjcmVfdWNwX3Nl
YXJjaGZ1bmNzLmNwcDoKKyAgICAgICAgKGpzY19wY3JlX3VjcF9vdGhlcmNhc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdExvY2Fs
ZURhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRRdW90ZWRTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6dG9KU09OKToKKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxT
dHJpbmdzLmNwcDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjpTbWFsbFN0cmluZ3MpOgor
ICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5jcHA6CisgICAgICAgIChKU0M6OlVTdHJpbmc6Om51
bWJlcik6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VE
YXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjphcnJheV9z
aXplKToKKyAgICAgICAgKFdURjo6Yml0d2lzZV9jYXN0KToKKyAgICAgICAgKFdURjo6Yml0Q291
bnQpOgorCiAyMDEwLTEwLTIzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcwMzY5LgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDFjYWRlZjguLjQ2ZDQyOTAg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE0Mzcs
NyArMTQzNyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlv
bkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgICNkZWZpbmUgTElTVF9PUENP
REVfTEFCRUwoaWQsIGxlbmd0aCkgJiZpZCwKICAgICAgICAgICAgICAgICBzdGF0aWMgT3Bjb2Rl
IGxhYmVsc1tdID0geyBGT1JfRUFDSF9PUENPREVfSUQoTElTVF9PUENPREVfTEFCRUwpIH07Ci0g
ICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YobGFiZWxzKSAvIHNp
emVvZihPcGNvZGUpOyArK2kpCisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcnJheV9zaXplKGxhYmVscyk7ICsraSkKICAgICAgICAgICAgICAgICAgICAgbV9vcGNvZGVU
YWJsZVtpXSA9IGxhYmVsc1tpXTsKICAgICAgICAgICAgICN1bmRlZiBMSVNUX09QQ09ERV9MQUJF
TAogICAgICAgICAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAKaW5kZXggZjQ4OTlmMi4uYjIzZTU3YiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3BjcmUvcGNyZV9leGVjLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHN0cnVjdCBNYXRjaFN0YWNr
IHsKICAgICAgICAgLCBjdXJyZW50RnJhbWUoZnJhbWVzKQogICAgICAgICAsIHNpemUoMSkgLy8g
bWF0Y2goKSBjcmVhdGVzIGFjY2Vzc2VzIHRoZSBmaXJzdCBmcmFtZSB3L28gY2FsbGluZyBwdXNo
TmV3RnJhbWUKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoc2l6ZW9mKGZyYW1lcykgLyBzaXplb2Yo
ZnJhbWVzWzBdKSkgPT0gbnVtRnJhbWVzT25TdGFjayk7CisgICAgICAgIEFTU0VSVChhcnJheV9z
aXplKGZyYW1lcykgPT0gbnVtRnJhbWVzT25TdGFjayk7CiAgICAgfQogICAgIAogICAgIE1hdGNo
RnJhbWUgZnJhbWVzW251bUZyYW1lc09uU3RhY2tdOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcGNyZS9wY3JlX3VjcF9zZWFyY2hmdW5jcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wY3JlL3Bj
cmVfdWNwX3NlYXJjaGZ1bmNzLmNwcAppbmRleCA1NTkyODY1Li41N2JiZGQ4IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfdWNwX3NlYXJjaGZ1bmNzLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9wY3JlL3BjcmVfdWNwX3NlYXJjaGZ1bmNzLmNwcApAQCAtNjMsNyArNjMsNyBA
QCBSZXR1cm5zOiAgICAgIHRoZSBvdGhlciBjYXNlIG9yIC0xIGlmIG5vbmUKIGludCBqc2NfcGNy
ZV91Y3Bfb3RoZXJjYXNlKHVuc2lnbmVkIGMpCiB7CiAgICAgaW50IGJvdCA9IDA7Ci0gICAgaW50
IHRvcCA9IHNpemVvZih1Y3BfdGFibGUpIC8gc2l6ZW9mKGNub2RlKTsKKyAgICBpbnQgdG9wID0g
YXJyYXlfc2l6ZSh1Y3BfdGFibGUpOwogICAgIGludCBtaWQ7CiAgICAgCiAgICAgLyogVGhlIHRh
YmxlIGlzIHNlYXJjaGVkIHVzaW5nIGEgYmluYXJ5IGNob3AuIFlvdSBtaWdodCB0aGluayB0aGF0
IHVzaW5nCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCA0OTgz
ZjI5Li44YzA4MjFkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAK
QEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNT
dGF0ZSogZXhlYywgRGF0ZUluc3RhbmNlKiwgZG91YmxlIHRpbWVJbk1pbAogICAgIC8vIFdlIHRy
dW5jYXRlIHRoZSBzdHJpbmcgcmV0dXJuZWQgZnJvbSBDRkRhdGVGb3JtYXR0ZXIgaWYgaXQncyBh
YnN1cmRseSBsb25nICg+IDIwMCBjaGFyYWN0ZXJzKS4KICAgICAvLyBUaGF0J3Mgbm90IGdyZWF0
IGVycm9yIGhhbmRsaW5nLCBidXQgaXQganVzdCB3b24ndCBoYXBwZW4gc28gaXQgZG9lc24ndCBt
YXR0ZXIuCiAgICAgVUNoYXIgYnVmZmVyWzIwMF07Ci0gICAgY29uc3Qgc2l6ZV90IGJ1ZmZlckxl
bmd0aCA9IHNpemVvZihidWZmZXIpIC8gc2l6ZW9mKGJ1ZmZlclswXSk7CisgICAgY29uc3Qgc2l6
ZV90IGJ1ZmZlckxlbmd0aCA9IGFycmF5X3NpemUoYnVmZmVyKTsKICAgICBzaXplX3QgbGVuZ3Ro
ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKICAgICBBU1NFUlQobGVuZ3RoIDw9IGJ1ZmZl
ckxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IGJ1ZmZlckxlbmd0aCkKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOTAzZTU3My4uZGEwNmQ4MyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwNyw3ICszMDcsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIkpTT04iKSwgbmV3IChleGVjKSBK
U09OT2JqZWN0KHRoaXMsIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFBy
b3RvdHlwZSkpLCBEb250RW51bSB8IERvbnREZWxldGUpCiAgICAgfTsKIAotICAgIGFkZFN0YXRp
Y0dsb2JhbHMoc3RhdGljR2xvYmFscywgc2l6ZW9mKHN0YXRpY0dsb2JhbHMpIC8gc2l6ZW9mKEds
b2JhbFByb3BlcnR5SW5mbykpOworICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywg
YXJyYXlfc2l6ZShzdGF0aWNHbG9iYWxzKSk7CiAKICAgICAvLyBTZXQgZ2xvYmFsIGZ1bmN0aW9u
cy4KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMDc5NDE4OS4uYzQ5
NWM0ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zMjksNyArMzI5
LDcgQEAgdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBjb25zdCBVU3RyaW5nJiB2YWwKICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciBoZXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKICAgICAgICAgICAgICAg
ICBVQ2hhciBjaCA9IGRhdGFbaV07CiAgICAgICAgICAgICAgICAgVUNoYXIgaGV4W10gPSB7ICdc
XCcsICd1JywgaGV4RGlnaXRzWyhjaCA+PiAxMikgJiAweEZdLCBoZXhEaWdpdHNbKGNoID4+IDgp
ICYgMHhGXSwgaGV4RGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0sIGhleERpZ2l0c1tjaCAmIDB4Rl0g
fTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgsIHNpemVvZihoZXgpIC8gc2l6
ZW9mKFVDaGFyKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4LCBhcnJheV9z
aXplKGhleCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAt
MzU3LDcgKzM1Nyw3IEBAIGlubGluZSBKU1ZhbHVlIFN0cmluZ2lmaWVyOjp0b0pTT04oSlNWYWx1
ZSB2YWx1ZSwgY29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DCiAgICAgICAgIHJldHVybiB2
YWx1ZTsKIAogICAgIEpTVmFsdWUgbGlzdFtdID0geyBwcm9wZXJ0eU5hbWUudmFsdWUobV9leGVj
KSB9OwotICAgIEFyZ0xpc3QgYXJncyhsaXN0LCBzaXplb2YobGlzdCkgLyBzaXplb2YoSlNWYWx1
ZSkpOworICAgIEFyZ0xpc3QgYXJncyhsaXN0LCBhcnJheV9zaXplKGxpc3QpKTsKICAgICByZXR1
cm4gY2FsbChtX2V4ZWMsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB2YWx1ZSwgYXJncyk7
CiB9CiAKQEAgLTM3MSw3ICszNzEsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0
cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJgogICAgIC8v
IENhbGwgdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLgogICAgIGlmIChtX3JlcGxhY2VyQ2FsbFR5cGUg
IT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgIEpTVmFsdWUgbGlzdFtdID0geyBwcm9wZXJ0eU5h
bWUudmFsdWUobV9leGVjKSwgdmFsdWUgfTsKLSAgICAgICAgQXJnTGlzdCBhcmdzKGxpc3QsIHNp
emVvZihsaXN0KSAvIHNpemVvZihKU1ZhbHVlKSk7CisgICAgICAgIEFyZ0xpc3QgYXJncyhsaXN0
LCBhcnJheV9zaXplKGxpc3QpKTsKICAgICAgICAgdmFsdWUgPSBjYWxsKG1fZXhlYywgbV9yZXBs
YWNlciwgbV9yZXBsYWNlckNhbGxUeXBlLCBtX3JlcGxhY2VyQ2FsbERhdGEsIGhvbGRlciwgYXJn
cyk7CiAgICAgICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZ2lmeUZhaWxlZDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U21hbGxTdHJpbmdzLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNw
cAppbmRleCBmMzU4NzI3Li5iZjRiZjcyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNtYWxsU3RyaW5nc1N0b3JhZ2U6OlNtYWxsU3Ry
aW5nc1N0b3JhZ2UoKQogCiBTbWFsbFN0cmluZ3M6OlNtYWxsU3RyaW5ncygpCiB7Ci0gICAgQ09N
UElMRV9BU1NFUlQobnVtQ2hhcmFjdGVyc1RvU3RvcmUgPT0gc2l6ZW9mKG1fc2luZ2xlQ2hhcmFj
dGVyU3RyaW5ncykgLyBzaXplb2YobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzBdKSwgSXNOdW1D
aGFyYWN0ZXJzQ29uc3RJblN5bmNXaXRoQ2xhc3NVc2FnZSk7CisgICAgQ09NUElMRV9BU1NFUlQo
bnVtQ2hhcmFjdGVyc1RvU3RvcmUgPT0gYXJyYXlfc2l6ZShtX3NpbmdsZUNoYXJhY3RlclN0cmlu
Z3MpLCBJc051bUNoYXJhY3RlcnNDb25zdEluU3luY1dpdGhDbGFzc1VzYWdlKTsKICAgICBjbGVh
cigpOwogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAppbmRleCAxN2NkOWI2Li45MWQz
ODM3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgVVN0
cmluZzo6VVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogVVN0cmluZyBVU3RyaW5nOjpu
dW1iZXIoaW50IGkpCiB7CiAgICAgVUNoYXIgYnVmWzEgKyBzaXplb2YoaSkgKiAzXTsKLSAgICBV
Q2hhciogZW5kID0gYnVmICsgc2l6ZW9mKGJ1ZikgLyBzaXplb2YoVUNoYXIpOworICAgIFVDaGFy
KiBlbmQgPSBidWYgKyBhcnJheV9zaXplKGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAg
ICBpZiAoaSA9PSAwKQpAQCAtMTE5LDcgKzExOSw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVy
KGludCBpKQogVVN0cmluZyBVU3RyaW5nOjpudW1iZXIobG9uZyBsb25nIGkpCiB7CiAgICAgVUNo
YXIgYnVmWzEgKyBzaXplb2YoaSkgKiAzXTsKLSAgICBVQ2hhciogZW5kID0gYnVmICsgc2l6ZW9m
KGJ1ZikgLyBzaXplb2YoVUNoYXIpOworICAgIFVDaGFyKiBlbmQgPSBidWYgKyBhcnJheV9zaXpl
KGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAgICBpZiAoaSA9PSAwKQpAQCAtMTUyLDcg
KzE1Miw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKGxvbmcgbG9uZyBpKQogVVN0cmluZyBV
U3RyaW5nOjpudW1iZXIodW5zaWduZWQgdSkKIHsKICAgICBVQ2hhciBidWZbc2l6ZW9mKHUpICog
M107Ci0gICAgVUNoYXIqIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsK
KyAgICBVQ2hhciogZW5kID0gYnVmICsgYXJyYXlfc2l6ZShidWYpOwogICAgIFVDaGFyKiBwID0g
ZW5kOwogCiAgICAgaWYgKHUgPT0gMCkKQEAgLTE3MCw3ICsxNzAsNyBAQCBVU3RyaW5nIFVTdHJp
bmc6Om51bWJlcih1bnNpZ25lZCB1KQogVVN0cmluZyBVU3RyaW5nOjpudW1iZXIobG9uZyBsKQog
ewogICAgIFVDaGFyIGJ1ZlsxICsgc2l6ZW9mKGwpICogM107Ci0gICAgVUNoYXIqIGVuZCA9IGJ1
ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBVQ2hhciogZW5kID0gYnVmICsg
YXJyYXlfc2l6ZShidWYpOwogICAgIFVDaGFyKiBwID0gZW5kOwogCiAgICAgaWYgKGwgPT0gMCkK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAgYi9KYXZhU2NyaXB0
Q29yZS93dGYvRGF0ZU1hdGguY3BwCmluZGV4IGQwMDU4NTkuLjU3M2JmMDkgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L0RhdGVNYXRoLmNwcApAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VEYXRl
RnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29s
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBoYXZlVFogPSB0cnVlOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnQoc2l6ZW9mKGtub3duX3pv
bmVzKSAvIHNpemVvZihLbm93blpvbmUpKTsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFycmF5X3NpemUoa25vd25fem9uZXMpOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBpZiAoMCA9PSBzdHJuY2FzZWNtcChkYXRlU3RyaW5nLCBrbm93bl96b25lc1tpXS50ek5h
bWUsIHN0cmxlbihrbm93bl96b25lc1tpXS50ek5hbWUpKSkgewogICAgICAgICAgICAgICAgICAg
ICBvZmZzZXQgPSBrbm93bl96b25lc1tpXS50ek9mZnNldDsKICAgICAgICAgICAgICAgICAgICAg
ZGF0ZVN0cmluZyArPSBzdHJsZW4oa25vd25fem9uZXNbaV0udHpOYW1lKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgKaW5kZXggOTQ2MTkyYi4uZDQyOWRlMiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTU2
MywxMSArNTYzLDYgQEAKICNkZWZpbmUgX0lOQ19BU1NFUlQgICAgLyogZGlzYWJsZSAiYXNzZXJ0
LmgiICovCiAjZGVmaW5lIGFzc2VydCh4KQogCi0vKiBfY291bnRvZiBpcyBvbmx5IGluY2x1ZGVk
IGluIENFNjsgZm9yIENFNSB3ZSBuZWVkIHRvIGRlZmluZSBpdCBvdXJzZWxmICovCi0jaWZuZGVm
IF9jb3VudG9mCi0jZGVmaW5lIF9jb3VudG9mKHgpIChzaXplb2YoeCkgLyBzaXplb2YoKHgpWzBd
KSkKLSNlbmRpZgotCiAjZW5kaWYgIC8qIE9TKFdJTkNFKSAmJiAhUExBVEZPUk0oUVQpICovCiAK
ICNpZiBQTEFURk9STShRVCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJF
eHRyYXMuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBkNTk0YzE3
Li41NTRlYWZhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC04NywyOSArODcsMzcg
QEAgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25zdCB2b2lkKiBwdHIpCiAKIG5hbWVz
cGFjZSBXVEYgewogCi0gICAgLyoKLSAgICAgKiBDKysncyBpZGVhIG9mIGEgcmVpbnRlcnByZXRf
Y2FzdCBsYWNrcyBzdWZmaWNpZW50IGNvam9uZXMuCi0gICAgICovCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVE8sIHR5cGVuYW1lIEZST00+Ci0gICAgVE8gYml0d2lzZV9jYXN0KEZST00gZnJvbSkK
LSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihUTykgPT0gc2l6ZW9mKEZST00p
LCBXVEZfYml0d2lzZV9jYXN0X3NpemVvZl9jYXN0ZWRfdHlwZXNfaXNfZXF1YWwpOwotICAgICAg
ICB1bmlvbiB7Ci0gICAgICAgICAgICBGUk9NIGZyb207Ci0gICAgICAgICAgICBUTyB0bzsKLSAg
ICAgICAgfSB1OwotICAgICAgICB1LmZyb20gPSBmcm9tOwotICAgICAgICByZXR1cm4gdS50bzsK
LSAgICB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitpbmxpbmUgc2l6ZV90IGFy
cmF5X3NpemUoY29uc3QgVCAoJilbTl0pCit7CisgICAgcmV0dXJuIE47Cit9CisKKy8qCisgKiBD
KysncyBpZGVhIG9mIGEgcmVpbnRlcnByZXRfY2FzdCBsYWNrcyBzdWZmaWNpZW50IGNvam9uZXMu
CisgKi8KK3RlbXBsYXRlPHR5cGVuYW1lIFRPLCB0eXBlbmFtZSBGUk9NPgoraW5saW5lIFRPIGJp
dHdpc2VfY2FzdChGUk9NIGZyb20pCit7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRPKSA9
PSBzaXplb2YoRlJPTSksIFdURl9iaXR3aXNlX2Nhc3Rfc2l6ZW9mX2Nhc3RlZF90eXBlc19pc19l
cXVhbCk7CisgICAgdW5pb24geworICAgICAgICBGUk9NIGZyb207CisgICAgICAgIFRPIHRvOwor
ICAgIH0gdTsKKyAgICB1LmZyb20gPSBmcm9tOworICAgIHJldHVybiB1LnRvOworfQogCi0gICAg
Ly8gUmV0dXJucyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYml0cyBzZXQgaW4gJ2JpdHMnLgot
ICAgIGlubGluZSBzaXplX3QgYml0Q291bnQodW5zaWduZWQgYml0cykKLSAgICB7Ci0gICAgICAg
IGJpdHMgPSBiaXRzIC0gKChiaXRzID4+IDEpICYgMHg1NTU1NTU1NSk7Ci0gICAgICAgIGJpdHMg
PSAoYml0cyAmIDB4MzMzMzMzMzMpICsgKChiaXRzID4+IDIpICYgMHgzMzMzMzMzMyk7Ci0gICAg
ICAgIHJldHVybiAoKChiaXRzICsgKGJpdHMgPj4gNCkpICYgMHhGMEYwRjBGKSAqIDB4MTAxMDEw
MSkgPj4gMjQ7Ci0gICAgfQorLy8gUmV0dXJucyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYml0
cyBzZXQgaW4gJ2JpdHMnLgoraW5saW5lIHNpemVfdCBiaXRDb3VudCh1bnNpZ25lZCBiaXRzKQor
eworICAgIGJpdHMgPSBiaXRzIC0gKChiaXRzID4+IDEpICYgMHg1NTU1NTU1NSk7CisgICAgYml0
cyA9IChiaXRzICYgMHgzMzMzMzMzMykgKyAoKGJpdHMgPj4gMikgJiAweDMzMzMzMzMzKTsKKyAg
ICByZXR1cm4gKCgoYml0cyArIChiaXRzID4+IDQpKSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEp
ID4+IDI0OworfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjphcnJheV9zaXpl
OworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNjE2NzZhYy4uYTcxZjRkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDkgQEAKKzIwMTAtMTAtMjQg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURjo6YXJyYXlfc2l6ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAg
ICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUFSSUFSb2xlTWFwKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpK
U0RPTVdpbmRvd0Jhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgorICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAqIGNzcy9D
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9u
U2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9u
U2hvcnRoYW5kKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppbml0U2hvcnRoYW5kTWFwKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbkNvZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVOb25FZGl0aW5nUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW1w
bGljaXRseVN0eWxlZEVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRyaVN0YXRlT2ZTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAg
ICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6Z2V0Q2Fj
aGVkTWF4SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OnNldENhY2hlZE1h
eEluZGV4KToKKyAgICAgICAgKiBsb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlT25lRlRQTGluZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9y
Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcnRBbGxvd2Vk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBvcnRBbGxvd2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyk6
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL1VVSUQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9S
ZW5kZXJUaGVtZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YXBw
bHlFZGplU3RhdGVGcm9tRm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6
ZWRqZUdyb3VwRnJvbUZvcm1UeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
Q2FjaGVDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q29kZXBhZ2U6Omlm
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1
bVdpbi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnNDb3JlVGV4dCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZUNvbXBvbmVudHNPbmNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFBVFNVSS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlNpbXBsZUZvbnREYXRhOjpjaGVja1NoYXBlc0FyYWJpYyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2ltcGxlRm9udERhdGE6OmdldENGU3RyaW5nQXR0cmlidXRlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0Q2hlY2tpbmcpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVW
aXN1YWxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpc2FibGVDb21wb25lbnRzT25j
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWUuY3BwOgorICAgICAg
ICAoUVRNb3ZpZTo6bG9hZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGU6OmNyZWF0ZVN0cmVhbXMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5n
UmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJ1bmVCbGFja2xpc3RlZENvZGVjcyk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnRUcmFuc2NvZGVyOjpGb250VHJhbnNjb2Rlcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
b3BlblRlbXBvcmFyeUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1X
aW5DRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAg
ICogcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0cnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkV2luZG93
c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1hY3Jv
bWVkaWFQbHVnaW5EaXJlY3Rvcmllcyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpoYXNWYWxp
ZEF2Z0NoYXJXaWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcDoKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVUYWJsZXMpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQW5kU2tpcFR5cGUpOgorICAgICAgICAqIHN2Zy9TVkdW
aWV3U3BlYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cGFyc2VWaWV3U3Bl
Yyk6CisgICAgICAgICogc3ZnL1NWR1pvb21BbmRQYW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHWm9vbUFuZFBhbjo6cGFyc2Vab29tQW5kUGFuKToKKyAgICAgICAgKiB4bWwvWFBhdGhGdW5j
dGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OmNyZWF0ZUZ1bmN0aW9uTWFwKToK
KyAgICAgICAgKiB4bWwvWFBhdGhQYXJzZXIuY3BwOgorCiAyMDEwLTEwLTIzICBQYXRyaWNrIEdh
bnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlk
IEtpbHplci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAppbmRleCAzZGRjZGM1Li5kZjcxNWYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC05MzcsOSArOTM3LDggQEAgc3RhdGljIEFSSUFSb2xl
TWFwKiBjcmVhdGVBUklBUm9sZU1hcCgpCiAgICAgICAgIHsgInRyZWVpdGVtIiwgVHJlZUl0ZW1S
b2xlIH0KICAgICB9OwogICAgIEFSSUFSb2xlTWFwKiByb2xlTWFwID0gbmV3IEFSSUFSb2xlTWFw
OwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIG51bVJvbGVzID0gc2l6ZW9mKHJvbGVzKSAvIHNp
emVvZihyb2xlc1swXSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVJvbGVzOyAr
K2kpCisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUocm9sZXMpOyArK2kp
CiAgICAgICAgIHJvbGVNYXAtPnNldChyb2xlc1tpXS5hcmlhUm9sZSwgcm9sZXNbaV0ud2ViY29y
ZVJvbGUpOwogICAgIHJldHVybiByb2xlTWFwOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBiL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KaW5kZXggZTRiN2Q4
ZS4uODY5Yjg0ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5tbQorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCkBAIC0xMTc5LDkgKzExNzksOCBAQCBzdGF0aWMg
Y29uc3QgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIGNyZWF0ZUFjY2Vzc2liaWxpdHlSb2xlTWFwKCkK
ICAgICAgICAgeyBMaXN0SXRlbVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9CiAgICAg
fTsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9ICpuZXcgQWNjZXNzaWJpbGl0
eVJvbGVNYXA7Ci0gICAgCi0gICAgY29uc3QgdW5zaWduZWQgbnVtUm9sZXMgPSBzaXplb2Yocm9s
ZXMpIC8gc2l6ZW9mKHJvbGVzWzBdKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
Um9sZXM7ICsraSkKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShyb2xl
cyk7ICsraSkKICAgICAgICAgcm9sZU1hcC5zZXQocm9sZXNbaV0udmFsdWUsIHJvbGVzW2ldLnN0
cmluZyk7CiAgICAgcmV0dXJuIHJvbGVNYXA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKaW5kZXggZTJiNTBkMC4uN2ZlNzExYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBKU0RPTVdpbmRvd0Jhc2U6OkpT
RE9NV2luZG93QmFzZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUGFz
c1JlZgogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihnbG9iYWxFeGVjKCks
ICJ3aW5kb3ciKSwgZCgpLT5zaGVsbCwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQogICAgIH07CiAg
ICAgCi0gICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBzaXplb2Yoc3RhdGljR2xv
YmFscykgLyBzaXplb2YoR2xvYmFsUHJvcGVydHlJbmZvKSk7CisgICAgYWRkU3RhdGljR2xvYmFs
cyhzdGF0aWNHbG9iYWxzLCBhcnJheV9zaXplKHN0YXRpY0dsb2JhbHMpKTsKIH0KIAogdm9pZCBK
U0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3VtZW50KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDc1MWUzNTAuLmExZGY4ZDIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMTk2Niw3ICsxOTY2LDcg
QEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBDb25maWd1cmVTaGFkb3dPYmplY3RUZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IHRlbXBsKQogewotICAgIGJhdGNo
Q29uZmlndXJlQXR0cmlidXRlcyh0ZW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+
KCksIHNoYWRvd0F0dHJzLCBzaXplb2Yoc2hhZG93QXR0cnMpIC8gc2l6ZW9mKCpzaGFkb3dBdHRy
cykpOworICAgIGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh0ZW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0VGVtcGxhdGU+KCksIHNoYWRvd0F0dHJzLCBhcnJheV9zaXplKHNoYWRvd0F0dHJzKSk7
CiAKICAgICAvLyBJbnN0YWxsIGEgc2VjdXJpdHkgaGFuZGxlciB3aXRoIFY4LgogICAgIHRlbXBs
LT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNr
LCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpFeHRlcm5hbDo6V3JhcCgm
VjhET01XaW5kb3c6OmluZm8pKTsKQEAgLTE5OTgsNyArMTk5OCw3IEBAIEVORAogICAgICMgU2V0
IHVwIG91ciBhdHRyaWJ1dGVzIGlmIHdlIGhhdmUgdGhlbQogICAgIGlmICgkaGFzX2F0dHJpYnV0
ZXMpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgJHtpbnRl
cmZhY2VOYW1lfUF0dHJzLCBzaXplb2YoJHtpbnRlcmZhY2VOYW1lfUF0dHJzKSAvIHNpemVvZigq
JHtpbnRlcmZhY2VOYW1lfUF0dHJzKSwKKyAgICAgICAgJHtpbnRlcmZhY2VOYW1lfUF0dHJzLCBh
cnJheV9zaXplKCR7aW50ZXJmYWNlTmFtZX1BdHRycyksCiBFTkQKICAgICB9IGVsc2UgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwpAQCAtMjAwOCw3ICsyMDA4LDcgQEAgRU5E
CiAKICAgICBpZiAoJGhhc19jYWxsYmFja3MpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKLSAgICAgICAgJHtpbnRlcmZhY2VOYW1lfUNhbGxiYWNrcywgc2l6ZW9mKCR7aW50
ZXJmYWNlTmFtZX1DYWxsYmFja3MpIC8gc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9Q2FsbGJhY2tz
KSk7CisgICAgICAgICR7aW50ZXJmYWNlTmFtZX1DYWxsYmFja3MsIGFycmF5X3NpemUoJHtpbnRl
cmZhY2VOYW1lfUNhbGxiYWNrcykpOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKQEAgLTIxNDYsNyArMjE0Niw3IEBAIEVORAogCiAgICAgaWYg
KCRoYXNfY29uc3RhbnRzKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0g
ICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sICR7aW50ZXJmYWNlTmFtZX1D
b25zdHMsIHNpemVvZigke2ludGVyZmFjZU5hbWV9Q29uc3RzKSAvIHNpemVvZigqJHtpbnRlcmZh
Y2VOYW1lfUNvbnN0cykpOworICAgIGJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3Rv
LCAke2ludGVyZmFjZU5hbWV9Q29uc3RzLCBhcnJheV9zaXplKCR7aW50ZXJmYWNlTmFtZX1Db25z
dHMpKTsKIEVORAogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKaW5kZXggNDRmMGQzZS4uMzI3ZmNiNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0xMjAzLDggKzEyMDMsOCBA
QCBDT01QSUxFX0FTU0VSVCgweDFhYmMgPT0gVGVzdE9iajo6Q09OU1RfVkFMVUVfMTQsIFRlc3RP
YmpFbnVtQ09OU1RfVkFMVUVfMTRJc1dybwogc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKIHsKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVy
ZT4gZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0T2JqIiwg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6aW50ZXJu
YWxGaWVsZENvdW50LAotICAgICAgICBUZXN0T2JqQXR0cnMsIHNpemVvZihUZXN0T2JqQXR0cnMp
IC8gc2l6ZW9mKCpUZXN0T2JqQXR0cnMpLAotICAgICAgICBUZXN0T2JqQ2FsbGJhY2tzLCBzaXpl
b2YoVGVzdE9iakNhbGxiYWNrcykgLyBzaXplb2YoKlRlc3RPYmpDYWxsYmFja3MpKTsKKyAgICAg
ICAgVGVzdE9iakF0dHJzLCBhcnJheV9zaXplKFRlc3RPYmpBdHRycyksCisgICAgICAgIFRlc3RP
YmpDYWxsYmFja3MsIGFycmF5X3NpemUoVGVzdE9iakNhbGxiYWNrcykpOwogICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgp
OwogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvID0gZGVzYy0+UHJvdG90
eXBlVGVtcGxhdGUoKTsKICAgICAKQEAgLTEyNjIsNyArMTI2Miw3IEBAIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUo
djg6OlBlcnNpCiAgICAgICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJlbmFibGVkQXRS
dW50aW1lTWV0aG9kMSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpJbnRlcm5h
bDo6ZW5hYmxlZEF0UnVudGltZU1ldGhvZDFDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCksIGRlZmF1bHRTaWduYXR1cmUpKTsKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
ZmVhdHVyZU5hbWVFbmFibGVkKCkpCiAgICAgICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3
KCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RPYmpJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZU1ldGhvZDJDYWxsYmFjaywgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCksIGRlZmF1bHRTaWduYXR1cmUpKTsKLSAgICBiYXRjaENvbmZpZ3VyZUNv
bnN0YW50cyhkZXNjLCBwcm90bywgVGVzdE9iakNvbnN0cywgc2l6ZW9mKFRlc3RPYmpDb25zdHMp
IC8gc2l6ZW9mKCpUZXN0T2JqQ29uc3RzKSk7CisgICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMo
ZGVzYywgcHJvdG8sIFRlc3RPYmpDb25zdHMsIGFycmF5X3NpemUoVGVzdE9iakNvbnN0cykpOwog
CiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KGdldFRvU3Ry
aW5nTmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBsYXRlKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZmRjYWIyOC4uNTVkNjM4YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yNzEsNyArMjcxLDcg
QEAgc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICNlbmRpZgogfTsK
IAotY29uc3QgdW5zaWduZWQgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzID0gc2l6ZW9mKGNvbXB1dGVk
UHJvcGVydGllcykgLyBzaXplb2YoY29tcHV0ZWRQcm9wZXJ0aWVzWzBdKTsKK2NvbnN0IHVuc2ln
bmVkIG51bUNvbXB1dGVkUHJvcGVydGllcyA9IGFycmF5X3NpemUoY29tcHV0ZWRQcm9wZXJ0aWVz
KTsKIAogc3RhdGljIGludCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW50IHJ1bGUpCiB7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3Jl
L2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOWIxZGQ3MS4uM2M0NTkz
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTQ4
LDggKzE0OCw3IEBAIFN0cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3IgfX07CiAgICAgICAgICAgICBTdHJpbmcgcmVzOwotICAgICAgICAgICAgY29uc3QgaW50
IG5ycHJvcHMgPSBzaXplb2YocHJvcGVydGllcykgLyBzaXplb2YocHJvcGVydGllc1swXSk7Ci0g
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5ycHJvcHM7ICsraSkgeworICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKHByb3BlcnRpZXMpOyArK2kpIHsK
ICAgICAgICAgICAgICAgICBTdHJpbmcgdmFsdWUgPSBnZXRDb21tb25WYWx1ZShwcm9wZXJ0aWVz
W2ldLCA0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghcmVzLmlzTnVsbCgpKQpAQCAtNzY3LDcgKzc2Niw3IEBAIHN0YXRp
YyBjb25zdCBpbnQgYmxvY2tQcm9wZXJ0aWVzW10gPSB7CiAgICAgQ1NTUHJvcGVydHlXaWRvd3MK
IH07CiAKLWNvbnN0IHVuc2lnbmVkIG51bUJsb2NrUHJvcGVydGllcyA9IHNpemVvZihibG9ja1By
b3BlcnRpZXMpIC8gc2l6ZW9mKGJsb2NrUHJvcGVydGllc1swXSk7Citjb25zdCB1bnNpZ25lZCBu
dW1CbG9ja1Byb3BlcnRpZXMgPSBhcnJheV9zaXplKGJsb2NrUHJvcGVydGllcyk7CiAKIFBhc3NS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpjb3B5QmxvY2tQcm9wZXJ0aWVzKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDI2YzM4
NzYuLjRjZWVhM2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMjAwOSwxNCArMjAwOSwxNCBAQCBib29sIENT
U1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0
aW9uQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlIH07Ci0gICAgY29uc3QgaW50IG51bVBy
b3BlcnRpZXMgPSBzaXplb2YocHJvcGVydGllcykgLyBzaXplb2YocHJvcGVydGllc1swXSk7Cisg
ICAgY29uc3Qgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBhcnJheV9zaXplKHByb3BlcnRpZXMpOwog
CiAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b24pOwogCiAgICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtudW1Qcm9wZXJ0aWVzXSA9IHsgZmFsc2Ug
fTsgLy8gY29tcGlsZXIgd2lsbCByZXBlYXQgZmFsc2UgYXMgbmVjZXNzYXJ5CiAgICAgUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZXNbbnVtUHJvcGVydGllc107CiAKLSAgICBpbnQgaTsKKyAgICBzaXpl
X3QgaTsKICAgICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewogICAgICAgICBDU1NQ
YXJzZXJWYWx1ZSogdmFsID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICAgICAgaWYgKHZh
bC0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywn
KSB7CkBAIC0yMDY3LDE0ICsyMDY3LDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRp
b25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0
aW9uRGVsYXkgfTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IHNpemVvZihwcm9wZXJ0
aWVzKSAvIHNpemVvZihwcm9wZXJ0aWVzWzBdKTsKKyAgICBjb25zdCBzaXplX3QgbnVtUHJvcGVy
dGllcyA9IGFycmF5X3NpemUocHJvcGVydGllcyk7CiAKICAgICBTaG9ydGhhbmRTY29wZSBzY29w
ZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pOwogCiAgICAgYm9vbCBwYXJzZWRQ
cm9wZXJ0eVtudW1Qcm9wZXJ0aWVzXSA9IHsgZmFsc2UgfTsgLy8gY29tcGlsZXIgd2lsbCByZXBl
YXQgZmFsc2UgYXMgbmVjZXNzYXJ5CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbbnVtUHJv
cGVydGllc107CiAKLSAgICBpbnQgaTsKKyAgICBzaXplX3QgaTsKICAgICB3aGlsZSAobV92YWx1
ZUxpc3QtPmN1cnJlbnQoKSkgewogICAgICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsID0gbV92YWx1
ZUxpc3QtPmN1cnJlbnQoKTsKICAgICAgICAgaWYgKHZhbC0+dW5pdCA9PSBDU1NQYXJzZXJWYWx1
ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9u
Z2hhbmQuY3BwCmluZGV4IGFjY2EwMzYuLjFiYmMzNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9u
Z2hhbmQuY3BwCkBAIC0zMiw3ICszMiw3IEBAIHR5cGVkZWYgSGFzaE1hcDxpbnQsIENTU1Byb3Bl
cnR5TG9uZ2hhbmQ+IFNob3J0aGFuZE1hcDsKIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAo
U2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiB7CiAgICAgI2RlZmluZSBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShtYXAsIHByb3BJRCwgYXJyYXkpIFwKLSAgICAgICAgbWFwLnNldChwcm9wSUQs
IENTU1Byb3BlcnR5TG9uZ2hhbmQoYXJyYXksIHNpemVvZihhcnJheSkgLyBzaXplb2YoYXJyYXlb
MF0pKSkKKyAgICAgICAgbWFwLnNldChwcm9wSUQsIENTU1Byb3BlcnR5TG9uZ2hhbmQoYXJyYXks
IGFycmF5X3NpemUoYXJyYXkpKSkKIAogICAgIC8vIEZJWE1FOiBUaGUgJ2ZvbnQnIHByb3BlcnR5
IGhhcyAic2hvcnRoYW5kIG5hdHVyZSIgYnV0IGlzIG5vdCBwYXJzZWQgYXMgYSBzaG9ydGhhbmQu
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCAwOTE2ZTY5Li5mMmZhMTc5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NTYsOSAr
NTU2LDggQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgY2xlYXJBWE9iamVjdENhY2hlKCk7
CiAKICAgICBtX2RlY29kZXIgPSAwOwotICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0gc2l6ZW9m
KG1fbmFtZUNvbGxlY3Rpb25JbmZvKSAvIHNpemVvZihtX25hbWVDb2xsZWN0aW9uSW5mb1swXSk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUobV9uYW1lQ29sbGVjdGlvbkluZm8pOyArK2kpCiAg
ICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX25hbWVDb2xsZWN0aW9uSW5mb1tpXSk7CiAKICAgICBp
ZiAobV9zdHlsZVNoZWV0cykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUu
Y3BwIGIvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKaW5kZXggOTMwM2Y5ZTAuLjdjZGQ0
OWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCisrKyBiL1dlYkNv
cmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBnZXRFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURlc2Ny
aXB0aW9uJiBkZXMKICAgICAgICAgY29kZSAtPSBSYW5nZUV4Y2VwdGlvbjo6UmFuZ2VFeGNlcHRp
b25PZmZzZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IHJhbmdlRXhjZXB0aW9uTmFtZXM7CiAgICAg
ICAgIGRlc2NyaXB0aW9uVGFibGUgPSByYW5nZUV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAgICAg
ICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihyYW5nZUV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZihy
YW5nZUV4Y2VwdGlvbk5hbWVzWzBdKTsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IGFycmF5X3Np
emUocmFuZ2VFeGNlcHRpb25OYW1lcyk7CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IFJhbmdl
RXhjZXB0aW9uOjpCQURfQk9VTkRBUllQT0lOVFNfRVJSOwogICAgIH0gZWxzZSBpZiAoY29kZSA+
PSBFdmVudEV4Y2VwdGlvbjo6RXZlbnRFeGNlcHRpb25PZmZzZXQgJiYgY29kZSA8PSBFdmVudEV4
Y2VwdGlvbjo6RXZlbnRFeGNlcHRpb25NYXgpIHsKICAgICAgICAgdHlwZSA9IEV2ZW50RXhjZXB0
aW9uVHlwZTsKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbihFeGNlcHRpb25Db2RlIGVjLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlcwogICAg
ICAgICBjb2RlIC09IEV2ZW50RXhjZXB0aW9uOjpFdmVudEV4Y2VwdGlvbk9mZnNldDsKICAgICAg
ICAgbmFtZVRhYmxlID0gZXZlbnRFeGNlcHRpb25OYW1lczsKICAgICAgICAgZGVzY3JpcHRpb25U
YWJsZSA9IGV2ZW50RXhjZXB0aW9uRGVzY3JpcHRpb25zOwotICAgICAgICBuYW1lVGFibGVTaXpl
ID0gc2l6ZW9mKGV2ZW50RXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKGV2ZW50RXhjZXB0aW9uTmFt
ZXNbMF0pOworICAgICAgICBuYW1lVGFibGVTaXplID0gYXJyYXlfc2l6ZShldmVudEV4Y2VwdGlv
bk5hbWVzKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gRXZlbnRFeGNlcHRpb246OlVOU1BF
Q0lGSUVEX0VWRU5UX1RZUEVfRVJSOwogICAgIH0gZWxzZSBpZiAoY29kZSA+PSBYTUxIdHRwUmVx
dWVzdEV4Y2VwdGlvbjo6WE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQgJiYgY29kZSA8PSBY
TUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6WE1MSHR0cFJlcXVlc3RFeGNlcHRpb25NYXgpIHsKICAg
ICAgICAgdHlwZSA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uVHlwZTsKQEAgLTIwNyw3ICsyMDcs
NyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlIGVjLCBF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlcwogICAgICAgICBjb2RlIC09IFhNTEh0dHBSZXF1
ZXN0RXhjZXB0aW9uOjpYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldDsKICAgICAgICAgbmFt
ZVRhYmxlID0geG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lczsKICAgICAgICAgZGVzY3JpcHRp
b25UYWJsZSA9IHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uRGVzY3JpcHRpb25zOwotICAgICAgICBu
YW1lVGFibGVTaXplID0gc2l6ZW9mKHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXMpIC8gc2l6
ZW9mKHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXNbMF0pOworICAgICAgICBuYW1lVGFibGVT
aXplID0gYXJyYXlfc2l6ZSh4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzKTsKICAgICAgICAg
Ly8gWE1MSHR0cFJlcXVlc3QgZXhjZXB0aW9uIGNvZGVzIHN0YXJ0IHdpdGggMTAxIGFuZCB3ZSBk
b24ndCB3YW50IDEwMCBlbXB0eSBlbGVtZW50cyBpbiB0aGUgbmFtZSBhcnJheQogICAgICAgICBu
YW1lVGFibGVPZmZzZXQgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19FUlI7CiAj
aWYgRU5BQkxFKFhQQVRIKQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYg
ZGVzCiAgICAgICAgIGNvZGUgLT0gWFBhdGhFeGNlcHRpb246OlhQYXRoRXhjZXB0aW9uT2Zmc2V0
OwogICAgICAgICBuYW1lVGFibGUgPSB4cGF0aEV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBkZXNj
cmlwdGlvblRhYmxlID0geHBhdGhFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVU
YWJsZVNpemUgPSBzaXplb2YoeHBhdGhFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeHBhdGhFeGNl
cHRpb25OYW1lc1swXSk7CisgICAgICAgIG5hbWVUYWJsZVNpemUgPSBhcnJheV9zaXplKHhwYXRo
RXhjZXB0aW9uTmFtZXMpOwogICAgICAgICAvLyBYUGF0aCBleGNlcHRpb24gY29kZXMgc3RhcnQg
d2l0aCA1MSBhbmQgd2UgZG9uJ3Qgd2FudCA1MSBlbXB0eSBlbGVtZW50cyBpbiB0aGUgbmFtZSBh
cnJheQogICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBYUGF0aEV4Y2VwdGlvbjo6SU5WQUxJRF9F
WFBSRVNTSU9OX0VSUjsKICNlbmRpZgpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgZ2V0RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlw
dGlvbiYgZGVzCiAgICAgICAgIGNvZGUgLT0gU1ZHRXhjZXB0aW9uOjpTVkdFeGNlcHRpb25PZmZz
ZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IHN2Z0V4Y2VwdGlvbk5hbWVzOwogICAgICAgICBkZXNj
cmlwdGlvblRhYmxlID0gc3ZnRXhjZXB0aW9uRGVzY3JpcHRpb25zOwotICAgICAgICBuYW1lVGFi
bGVTaXplID0gc2l6ZW9mKHN2Z0V4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZihzdmdFeGNlcHRpb25O
YW1lc1swXSk7CisgICAgICAgIG5hbWVUYWJsZVNpemUgPSBhcnJheV9zaXplKHN2Z0V4Y2VwdGlv
bk5hbWVzKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gU1ZHRXhjZXB0aW9uOjpTVkdfV1JP
TkdfVFlQRV9FUlI7CiAjZW5kaWYKICNpZiBFTkFCTEUoREFUQUJBU0UpCkBAIC0yMzgsNyArMjM4
LDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywg
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXMKICAgICAgICAgY29kZSAtPSBTUUxFeGNlcHRp
b246OlNRTEV4Y2VwdGlvbk9mZnNldDsKICAgICAgICAgbmFtZVRhYmxlID0gc3FsRXhjZXB0aW9u
TmFtZXM7CiAgICAgICAgIGRlc2NyaXB0aW9uVGFibGUgPSBzcWxFeGNlcHRpb25EZXNjcmlwdGlv
bnM7Ci0gICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2Yoc3FsRXhjZXB0aW9uTmFtZXMpIC8g
c2l6ZW9mKHNxbEV4Y2VwdGlvbk5hbWVzWzBdKTsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IGFy
cmF5X3NpemUoc3FsRXhjZXB0aW9uTmFtZXMpOwogICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBT
UUxFeGNlcHRpb246OlVOS05PV05fRVJSOwogI2VuZGlmCiAgICAgfSBlbHNlIHsKQEAgLTI0Niw3
ICsyNDYsNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2Rl
IGVjLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlcwogICAgICAgICB0eXBlTmFtZSA9ICJE
T00iOwogICAgICAgICBuYW1lVGFibGUgPSBleGNlcHRpb25OYW1lczsKICAgICAgICAgZGVzY3Jp
cHRpb25UYWJsZSA9IGV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAgICAgICAgbmFtZVRhYmxlU2l6
ZSA9IHNpemVvZihleGNlcHRpb25OYW1lcykgLyBzaXplb2YoZXhjZXB0aW9uTmFtZXNbMF0pOwor
ICAgICAgICBuYW1lVGFibGVTaXplID0gYXJyYXlfc2l6ZShleGNlcHRpb25OYW1lcyk7CiAgICAg
ICAgIG5hbWVUYWJsZU9mZnNldCA9IElOREVYX1NJWkVfRVJSOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKaW5kZXggMjczZWRiNC4uNmQxOTVhMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC00NTksMTEgKzQ1OSwxMCBAQCBzdGF0aWMg
Y29uc3QgaW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTdHJva2VDb2xvciwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0
aCwKIH07Ci1zaXplX3QgbnVtRWRpdGluZ1N0eWxlUHJvcGVydGllcyA9IHNpemVvZihlZGl0aW5n
U3R5bGVQcm9wZXJ0aWVzKS9zaXplb2YoZWRpdGluZ1N0eWxlUHJvcGVydGllc1swXSk7CiAKIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92
ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQogewotICAg
IHJldHVybiBzdHlsZS0+Y29weVByb3BlcnRpZXNJblNldChlZGl0aW5nU3R5bGVQcm9wZXJ0aWVz
LCBudW1FZGl0aW5nU3R5bGVQcm9wZXJ0aWVzKTsKKyAgICByZXR1cm4gc3R5bGUtPmNvcHlQcm9w
ZXJ0aWVzSW5TZXQoZWRpdGluZ1N0eWxlUHJvcGVydGllcywgYXJyYXlfc2l6ZShlZGl0aW5nU3R5
bGVQcm9wZXJ0aWVzKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IEFwcGx5U3R5bGVDb21tYW5kOjplZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uIHBv
cywgU2hvdWxkSW5jbHVkZVR5cGluZ1N0eWxlIHNob3VsZEluY2x1ZGVUeXBpbmdTdHlsZSkKQEAg
LTEzMzYsNyArMTMzNSw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUltcGxpY2l0
bHlTdHlsZWRFbGVtZW50KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uCiAgICAgLy8gQ3VycmVu
dCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHN0eWxlUHVzaGVkRG93biB3aGVuIG1v
ZGUgPT0gUmVtb3ZlTm9uZSBiZWNhdXNlIG9mIGVhcmx5IGV4aXQuCiAgICAgQVNTRVJUKCFleHRy
YWN0ZWRTdHlsZSB8fCBtb2RlICE9IFJlbW92ZU5vbmUpOwogICAgIGJvb2wgcmVtb3ZlZCA9IGZh
bHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKEhUTUxFcXVpdmFsZW50cykg
LyBzaXplb2YoSFRNTEVxdWl2YWxlbnQpOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFycmF5X3NpemUoSFRNTEVxdWl2YWxlbnRzKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IEhU
TUxFcXVpdmFsZW50JiBlcXVpdmFsZW50ID0gSFRNTEVxdWl2YWxlbnRzW2ldOwogICAgICAgICBB
U1NFUlQoZXF1aXZhbGVudC5lbGVtZW50IHx8IGVxdWl2YWxlbnQuYXR0cmlidXRlKTsKICAgICAg
ICAgaWYgKChleHRyYWN0ZWRTdHlsZSAmJiBlcXVpdmFsZW50LnB1c2hEb3duVHlwZSA9PSBTaG91
bGROb3RCZVB1c2hlZERvd24pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDRkNmQyNTguLmVhNzg3M2UgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC04NzEsNyArODcxLDcgQEAgc3RhdGljIFRyaVN0YXRlIHRyaVN0YXRl
T2ZTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBkZXNpcmVkU3R5bGUsIENTU1N0eWxlRGVjbGEK
ICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRpZmYgPSBnZXRQcm9wZXJ0
aWVzTm90SW4oZGVzaXJlZFN0eWxlLCBzdHlsZVRvQ29tcGFyZSk7CiAKICAgICBpZiAoaWdub3Jl
VGV4dE9ubHlQcm9wZXJ0aWVzKQotICAgICAgICBkaWZmLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQo
dGV4dE9ubHlQcm9wZXJ0aWVzLCBzaXplb2YodGV4dE9ubHlQcm9wZXJ0aWVzKSAvIHNpemVvZih0
ZXh0T25seVByb3BlcnRpZXNbMF0pKTsKKyAgICAgICAgZGlmZi0+cmVtb3ZlUHJvcGVydGllc0lu
U2V0KHRleHRPbmx5UHJvcGVydGllcywgYXJyYXlfc2l6ZSh0ZXh0T25seVByb3BlcnRpZXMpKTsK
IAogICAgIGlmICghZGlmZi0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggMjNmYmEzOS4uNjc5MzVhOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTU2MCw4ICsxNTYwLDcgQEAgc3RhdGljIGNvbnN0
IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYXAoKQogCiAgICAgQ29tbWFuZE1hcCYgY29tbWFu
ZE1hcCA9ICpuZXcgQ29tbWFuZE1hcDsKIAotICAgIGNvbnN0IHVuc2lnbmVkIG51bUNvbW1hbmRz
ID0gc2l6ZW9mKGNvbW1hbmRzKSAvIHNpemVvZihjb21tYW5kc1swXSk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG51bUNvbW1hbmRzOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGFycmF5X3NpemUoY29tbWFuZHMpOyArK2kpIHsKICAgICAgICAgQVNTRVJUKCFjb21t
YW5kTWFwLmdldChjb21tYW5kc1tpXS5uYW1lKSk7CiAgICAgICAgIGNvbW1hbmRNYXAuc2V0KGNv
bW1hbmRzW2ldLm5hbWUsICZjb21tYW5kc1tpXS5jb21tYW5kKTsKICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCBhNzAxMTg5Li44NThmMTdmIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBhcHBlbmRD
aGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoVmVjdG9yPFVDaGFyPiYgb3V0LCBjb25zdCBVQ2hh
ciogY29udGVudCwKIAogICAgIHNpemVfdCBwb3NpdGlvbkFmdGVyTGFzdEVudGl0eSA9IDA7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBmb3IgKHNp
emVfdCBtID0gMDsgbSA8IHNpemVvZihlbnRpdHlNYXBzKSAvIHNpemVvZihFbnRpdHlEZXNjcmlw
dGlvbik7IG0rKykgeworICAgICAgICBmb3IgKHNpemVfdCBtID0gMDsgbSA8IGFycmF5X3NpemUo
ZW50aXR5TWFwcyk7IG0rKykgewogICAgICAgICAgICAgaWYgKGNvbnRlbnRbaV0gPT0gZW50aXR5
TWFwc1ttXS5lbnRpdHkgJiYgZW50aXR5TWFwc1ttXS5tYXNrICYgZW50aXR5TWFzaykgewogICAg
ICAgICAgICAgICAgIG91dC5hcHBlbmQoY29udGVudCArIHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5
LCBpIC0gcG9zaXRpb25BZnRlckxhc3RFbnRpdHkpOwogICAgICAgICAgICAgICAgIGFwcGVuZChv
dXQsIGVudGl0eU1hcHNbbV0ucmVmZXJlbmNlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5j
cHAKaW5kZXggOTlkOWNhZC4uYTRmN2IxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5j
cHAKQEAgLTE3MCw4ICsxNzAsNyBAQCB1bnNpZ25lZCBXZWJHTEJ1ZmZlcjo6Ynl0ZUxlbmd0aCgp
IGNvbnN0CiAKIGxvbmcgV2ViR0xCdWZmZXI6OmdldENhY2hlZE1heEluZGV4KHVuc2lnbmVkIGxv
bmcgdHlwZSkKIHsKLSAgICBzaXplX3QgbnVtRW50cmllcyA9IHNpemVvZihtX21heEluZGV4Q2Fj
aGUpIC8gc2l6ZW9mKE1heEluZGV4Q2FjaGVFbnRyeSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1FbnRyaWVzOyBpKyspCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9z
aXplKG1fbWF4SW5kZXhDYWNoZSk7ICsraSkKICAgICAgICAgaWYgKG1fbWF4SW5kZXhDYWNoZVtp
XS50eXBlID09IHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gbV9tYXhJbmRleENhY2hlW2ldLm1h
eEluZGV4OwogICAgIHJldHVybiAtMTsKQEAgLTE3OSw4ICsxNzgsOCBAQCBsb25nIFdlYkdMQnVm
ZmVyOjpnZXRDYWNoZWRNYXhJbmRleCh1bnNpZ25lZCBsb25nIHR5cGUpCiAKIHZvaWQgV2ViR0xC
dWZmZXI6OnNldENhY2hlZE1heEluZGV4KHVuc2lnbmVkIGxvbmcgdHlwZSwgbG9uZyB2YWx1ZSkK
IHsKLSAgICBpbnQgbnVtRW50cmllcyA9IHNpemVvZihtX21heEluZGV4Q2FjaGUpIC8gc2l6ZW9m
KE1heEluZGV4Q2FjaGVFbnRyeSk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1FbnRyaWVz
OyBpKyspCisgICAgc2l6ZV90IG51bUVudHJpZXMgPSBhcnJheV9zaXplKG1fbWF4SW5kZXhDYWNo
ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FbnRyaWVzOyArK2kpCiAgICAgICAg
IGlmIChtX21heEluZGV4Q2FjaGVbaV0udHlwZSA9PSB0eXBlKSB7CiAgICAgICAgICAgICBtX21h
eEluZGV4Q2FjaGVbaV0ubWF4SW5kZXggPSB2YWx1ZTsKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAgYi9XZWJDb3Jl
L2xvYWRlci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCmluZGV4IGY2YTc0ZGUuLjg4MGViZGYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5jcHAKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIEZU
UEVudHJ5VHlwZSBwYXJzZU9uZUZUUExpbmUoY29uc3QgY2hhciogbGluZSwgTGlzdFN0YXRlJiBz
dGF0ZSwgTGlzdFJlc3VsdCYgcmVzCiAgIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciAqbW9udGhf
bmFtZXMgPSAiSmFuRmViTWFyQXByTWF5SnVuSnVsQXVnU2VwT2N0Tm92RGVjIjsKICAgICBjb25z
dCBjaGFyICp0b2tlbnNbMTZdOyAvKiAxNiBpcyBtb3JlIHRoYW4gZW5vdWdoICovCi0gICAgdW5z
aWduZWQgaW50IHRva2xlblsoc2l6ZW9mKHRva2Vucykvc2l6ZW9mKHRva2Vuc1swXSkpXTsKKyAg
ICB1bnNpZ25lZCBpbnQgdG9rbGVuW2FycmF5X3NpemUodG9rZW5zKV07CiAgICAgdW5zaWduZWQg
aW50IGxpbmVsZW5fc2Fuc193c3A7ICAvLyBsaW5lIGxlbmd0aCBzYW5zIHdoaXRlc3BhY2UKICAg
ICB1bnNpZ25lZCBpbnQgbnVtdG9rcyA9IDA7CiAgICAgdW5zaWduZWQgaW50IHRva21hcmtlciA9
IDA7IC8qIGV4dHJhIGluZm8gZm9yIGxzdHlsZSBoYW5kbGVyICovCkBAIC0xMzMsNyArMTMzLDcg
QEAgRlRQRW50cnlUeXBlIHBhcnNlT25lRlRQTGluZShjb25zdCBjaGFyKiBsaW5lLCBMaXN0U3Rh
dGUmIHN0YXRlLCBMaXN0UmVzdWx0JiByZXMKICAgICB9CiAKICAgICB1bnNpZ25lZCBpbnQgcG9z
ID0gMDsKLSAgICB3aGlsZSAocG9zIDwgbGluZWxlbiAmJiBudW10b2tzIDwgKHNpemVvZih0b2tl
bnMpL3NpemVvZih0b2tlbnNbMF0pKSApCisgICAgd2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgbnVt
dG9rcyA8IGFycmF5X3NpemUodG9rZW5zKSkKICAgICB7CiAgICAgICB3aGlsZSAocG9zIDwgbGlu
ZWxlbiAmJiAKICAgICAgICAgICAgIChsaW5lW3Bvc10gPT0gJyAnIHx8IGxpbmVbcG9zXSA9PSAn
XHQnIHx8IGxpbmVbcG9zXSA9PSAnXHInKSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBGVFBFbnRyeVR5
cGUgcGFyc2VPbmVGVFBMaW5lKGNvbnN0IGNoYXIqIGxpbmUsIExpc3RTdGF0ZSYgc3RhdGUsIExp
c3RSZXN1bHQmIHJlcwogICAgICAgcmV0dXJuIFBhcnNpbmdGYWlsZWQoc3RhdGUpOwogCiAgICAg
bGluZWxlbl9zYW5zX3dzcCA9ICYodG9rZW5zW251bXRva3MtMV1bdG9rbGVuW251bXRva3MtMV1d
KSAtIHRva2Vuc1swXTsKLSAgICBpZiAobnVtdG9rcyA9PSAoc2l6ZW9mKHRva2Vucykvc2l6ZW9m
KHRva2Vuc1swXSkpICkKKyAgICBpZiAobnVtdG9rcyA9PSBhcnJheV9zaXplKHRva2VucykpCiAg
ICAgewogICAgICAgcG9zID0gbGluZWxlbjsKICAgICAgIHdoaWxlIChwb3MgPiAwICYmIChsaW5l
W3Bvcy0xXSA9PSAnICcgfHwgbGluZVtwb3MtMV0gPT0gJ1x0JykpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgYi9XZWJDb3JlL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggOWYzNTQ4MC4uZmE1NDM1ZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApAQCAtMTYyLDggKzE2Miw3IEBAIHZvaWQgUmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAKICAgICAvLyBDaGVj
ayBmb3IgYSBzdHJldGNoYWJsZSBjaGFyYWN0ZXIuCiAgICAgaWYgKCFzdHJldGNoRGlzYWJsZWQg
JiYgZmlyc3RDaGFyKSB7Ci0gICAgICAgIGNvbnN0IGludCBtYXhJbmRleCA9IHNpemVvZihzdHJl
dGNoeUNoYXJhY3RlcnMpIC8gc2l6ZW9mKHN0cmV0Y2h5Q2hhcmFjdGVyc1swXSk7Ci0gICAgICAg
IGZvciAoaW5kZXgrKzsgaW5kZXggPCBtYXhJbmRleDsgaW5kZXgrKykgeworICAgICAgICBmb3Ig
KGluZGV4Kys7IGluZGV4IDwgYXJyYXlfc2l6ZShzdHJldGNoeUNoYXJhY3RlcnMpOyBpbmRleCsr
KSB7CiAgICAgICAgICAgICBpZiAoc3RyZXRjaHlDaGFyYWN0ZXJzW2luZGV4XS5jaGFyYWN0ZXIg
PT0gZmlyc3RDaGFyKSB7CiAgICAgICAgICAgICAgICAgaXNTdHJldGNoeSA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAppbmRleCBhZGU2OGI1Li44ZTQ2N2UyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5jcHAKQEAgLTc0NCw3ICs3NDQsNyBAQCBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQ
cm9wZXJ0aWVzKCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4KICAg
ICB9OwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihhbmltYXRhYmxlU2hv
cnRoYW5kUHJvcGVydGllcykgLyBzaXplb2YoYW5pbWF0YWJsZVNob3J0aGFuZFByb3BlcnRpZXNb
MF0pOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUoYW5pbWF0
YWJsZVNob3J0aGFuZFByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgaW50IHByb3BlcnR5SUQg
PSBhbmltYXRhYmxlU2hvcnRoYW5kUHJvcGVydGllc1tpXTsKICAgICAgICAgQ1NTUHJvcGVydHlM
b25naGFuZCBsb25naGFuZCA9IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CiAgICAg
ICAgIGlmIChsb25naGFuZC5sZW5ndGgoKSA+IDApCkBAIC03NTcsNyArNzU3LDcgQEAgc3RhdGlj
IHZvaWQgYWRkU2hvcnRoYW5kUHJvcGVydGllcygpCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdl
aWdodAogICAgIH07CiAKLSAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGZvbnRMb25naGFuZChhbmlt
YXRhYmxlRm9udFByb3BlcnRpZXMsIHNpemVvZihhbmltYXRhYmxlRm9udFByb3BlcnRpZXMpIC8g
c2l6ZW9mKGFuaW1hdGFibGVGb250UHJvcGVydGllc1swXSkpOworICAgIENTU1Byb3BlcnR5TG9u
Z2hhbmQgZm9udExvbmdoYW5kKGFuaW1hdGFibGVGb250UHJvcGVydGllcywgYXJyYXlfc2l6ZShh
bmltYXRhYmxlRm9udFByb3BlcnRpZXMpKTsKICAgICBhZGRQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJv
cGVydHlGb250LCBuZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5Rm9udCwg
Zm9udExvbmdoYW5kKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwCmluZGV4IDNhYzVkODYuLmExZGYwOWIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmNwcApAQCAtMTc5Niw3ICsxNzk2LDcgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBL
VVJMJiB1cmwpCiAgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9u
XQogICAgICAgICBpbnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxp
ZCBwb3J0IG51bWJlcnMKICAgICB9OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25zdCBi
bG9ja2VkUG9ydExpc3RFbmQgPSBibG9ja2VkUG9ydExpc3QgKyBzaXplb2YoYmxvY2tlZFBvcnRM
aXN0KSAvIHNpemVvZihibG9ja2VkUG9ydExpc3RbMF0pOworICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0KiBjb25zdCBibG9ja2VkUG9ydExpc3RFbmQgPSBibG9ja2VkUG9ydExpc3QgKyBhcnJheV9z
aXplKGJsb2NrZWRQb3J0TGlzdCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gVGhlIHBvcnQg
bGlzdCBtdXN0IGJlIHNvcnRlZCBmb3IgYmluYXJ5X3NlYXJjaCB0byB3b3JrLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vS1VS
TEdvb2dsZS5jcHAKaW5kZXggNzI2YmM1Ny4uMjU2YWVkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMR29vZ2xlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUu
Y3BwCkBAIC04OTMsNyArODkzLDcgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBLVVJMJiB1cmwp
CiAgICAgICAgIDY2NjksIC8vIEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQogICAgICAg
ICBpbnZhbGlkUG9ydE51bWJlciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51
bWJlcnMKICAgICB9OwotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25zdCBibG9ja2VkUG9y
dExpc3RFbmQgPSBibG9ja2VkUG9ydExpc3QgKyBzaXplb2YoYmxvY2tlZFBvcnRMaXN0KSAvIHNp
emVvZihibG9ja2VkUG9ydExpc3RbMF0pOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25z
dCBibG9ja2VkUG9ydExpc3RFbmQgPSBibG9ja2VkUG9ydExpc3QgKyBhcnJheV9zaXplKGJsb2Nr
ZWRQb3J0TGlzdCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gVGhlIHBvcnQgbGlzdCBtdXN0
IGJlIHNvcnRlZCBmb3IgYmluYXJ5X3NlYXJjaCB0byB3b3JrLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHAKaW5kZXggMjAwMjAxOC4uNDM5ZTU1MiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKICAgICAgICAgImltYWdlL3gtaWNvbiIsICAg
IC8vIGljbwogICAgICAgICAiaW1hZ2UveC14Yml0bWFwIiAgLy8geGJtCiAgICAgfTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZih0eXBlcykgLyBzaXplb2YodHlwZXNbMF0pOyAr
K2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUodHlwZXMpOyArK2kp
IHsKICAgICAgICAgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMtPmFkZCh0eXBlc1tpXSk7CiAgICAg
ICAgIHN1cHBvcnRlZEltYWdlUmVzb3VyY2VNSU1FVHlwZXMtPmFkZCh0eXBlc1tpXSk7CiAgICAg
fQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGVzKCkKICAgICAgICAgInRleHQvanNjcmlwdCIsCiAgICAgICAgICJ0ZXh0
L2xpdmVzY3JpcHQiLAogICAgIH07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2Yo
dHlwZXMpIC8gc2l6ZW9mKHR5cGVzWzBdKTsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXJyYXlfc2l6ZSh0eXBlcyk7ICsraSkKICAgICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1F
VHlwZXMtPmFkZCh0eXBlc1tpXSk7CiB9CiAKQEAgLTIxOSwxMCArMjE5LDkgQEAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCkKICAgICAgICAgLy8gTm90
ZTogQURESU5HIGEgbmV3IHR5cGUgaGVyZSB3aWxsIHByb2JhYmx5IHJlbmRlciBpdCBhcyBIVE1M
LiBUaGlzIGNhbgogICAgICAgICAvLyByZXN1bHQgaW4gY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcuCiAg
ICAgfTsKLSAgICBDT01QSUxFX0FTU0VSVChzaXplb2YodHlwZXMpIC8gc2l6ZW9mKHR5cGVzWzBd
KSA8PSAxNiwKLSAgICAgICAgICAgICAgICAgICBub25pbWFnZV9taW1lX3R5cGVzX211c3RfYmVf
bGVzc190aGFuX29yX2VxdWFsX3RvXzE2KTsKKyAgICBDT01QSUxFX0FTU0VSVChhcnJheV9zaXpl
KHR5cGVzKSA8PSAxNiwgbm9uaW1hZ2VfbWltZV90eXBlc19tdXN0X2JlX2xlc3NfdGhhbl9vcl9l
cXVhbF90b18xNik7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZih0eXBlcykv
c2l6ZW9mKHR5cGVzWzBdKTsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlf
c2l6ZSh0eXBlcyk7ICsraSkKICAgICAgICAgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMtPmFk
ZCh0eXBlc1tpXSk7CiAKICAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVN
SU1FVHlwZXMoKTsKQEAgLTMxOSwyMSArMzE4LDE5IEBAIHN0YXRpYyBNZWRpYU1JTUVUeXBlTWFw
JiBtZWRpYU1JTUVUeXBlTWFwKCkKICAgICBpZiAoIW1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25N
YXAuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1h
cDsKIAotICAgIGNvbnN0IHVuc2lnbmVkIG51bVBhaXJzID0gc2l6ZW9mKHBhaXJzKSAvIHNpemVv
ZihwYWlyc1swXSk7Ci0gICAgZm9yICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBudW1QYWlyczsg
KytuZHgpIHsKLQotICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5jb250
YWlucyhwYWlyc1tuZHhdLmV4dGVuc2lvbikpCi0gICAgICAgICAgICBtZWRpYU1JTUVUeXBlRm9y
RXh0ZW5zaW9uTWFwLmdldChwYWlyc1tuZHhdLmV4dGVuc2lvbiktPmFwcGVuZChwYWlyc1tuZHhd
LnR5cGUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShwYWlycyk7ICsr
aSkgeworICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5jb250YWlucyhw
YWlyc1tpXS5leHRlbnNpb24pKQorICAgICAgICAgICAgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lv
bk1hcC5nZXQocGFpcnNbaV0uZXh0ZW5zaW9uKS0+YXBwZW5kKHBhaXJzW2ldLnR5cGUpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KiBzeW5vbnltcyA9IG5ldyBW
ZWN0b3I8U3RyaW5nPjsKIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBzeXN0ZW0gc3Bl
Y2lmaWMgdHlwZSBmb3IgdGhpcyBleHRlbnNpb24sIGFkZCBpdCBhcyB0aGUgZmlyc3QgdHlwZSBz
bwogICAgICAgICAgICAgLy8gZ2V0TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbiB3aWxsIGFsd2F5
cyByZXR1cm4gaXQuCi0gICAgICAgICAgICBTdHJpbmcgc3lzdGVtVHlwZSA9IE1JTUVUeXBlUmVn
aXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKHBhaXJzW25keF0udHlwZSk7Ci0gICAgICAg
ICAgICBpZiAoIXN5c3RlbVR5cGUuaXNFbXB0eSgpICYmIHBhaXJzW25keF0udHlwZSAhPSBzeXN0
ZW1UeXBlKQorICAgICAgICAgICAgU3RyaW5nIHN5c3RlbVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihwYWlyc1tpXS50eXBlKTsKKyAgICAgICAgICAgIGlm
ICghc3lzdGVtVHlwZS5pc0VtcHR5KCkgJiYgcGFpcnNbaV0udHlwZSAhPSBzeXN0ZW1UeXBlKQog
ICAgICAgICAgICAgICAgIHN5bm9ueW1zLT5hcHBlbmQoc3lzdGVtVHlwZSk7Ci0gICAgICAgICAg
ICBzeW5vbnltcy0+YXBwZW5kKHBhaXJzW25keF0udHlwZSk7Ci0gICAgICAgICAgICBtZWRpYU1J
TUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmFkZChwYWlyc1tuZHhdLmV4dGVuc2lvbiwgc3lub255bXMp
OworICAgICAgICAgICAgc3lub255bXMtPmFwcGVuZChwYWlyc1tpXS50eXBlKTsKKyAgICAgICAg
ICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuYWRkKHBhaXJzW2ldLmV4dGVuc2lvbiwg
c3lub255bXMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL1VVSUQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcAppbmRleCBmZGJmNjAxLi44
NzJlMTNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vVVVJRC5jcHAKQEAgLTM5LDkgKzM5LDYgQEAKIAogI2lmIE9TKFdJTkRPV1Mp
CiAjaW5jbHVkZSA8b2JqYmFzZS5oPgotI2lmbmRlZiBBUlJBWVNJWkUKLSNkZWZpbmUgQVJSQVlT
SVpFKGEpICAgICAgICAgICAoc2l6ZW9mKGEpIC8gc2l6ZW9mKChhKVswXSkpCi0jZW5kaWYKICNl
bGlmIE9TKERBUldJTikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgogI2VsaWYgT1MoTElOVVgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5k
ZXJUaGVtZUVmbC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAK
aW5kZXggNjA3Njc0Ny4uZWM4OTBjYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
UmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1l
RWZsLmNwcApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5RWRq
ZVN0YXRlRnJvbUZvcm0oRXZhc19PYmplY3QqIG8sIENvbnRyb2xTdGF0ZXMgc3RhdGVzCiAgICAg
ICAgICJ3aW5kb3ctaW5hY3RpdmUiLAogICAgICAgICAiaW5kZXRlcm1pbmF0ZSIKICAgICB9Owot
ICAgIHNpemVfdCBpLCBsYXN0ID0gc2l6ZW9mKHNpZ25hbHMpIC8gc2l6ZW9mKHNpZ25hbHNbMF0p
OworICAgIHNpemVfdCBpLCBsYXN0ID0gYXJyYXlfc2l6ZShzaWduYWxzKTsKIAogICAgIGVkamVf
b2JqZWN0X3NpZ25hbF9lbWl0KG8sICJyZXNldCIsICIiKTsKIApAQCAtNTk2LDcgKzU5Niw3IEBA
IGNvbnN0IGNoYXIqIFJlbmRlclRoZW1lRWZsOjplZGplR3JvdXBGcm9tRm9ybVR5cGUoRm9ybVR5
cGUgdHlwZSkgY29uc3QKICAgICAgICAgMAogICAgIH07CiAgICAgQVNTRVJUKHR5cGUgPj0gMCk7
Ci0gICAgQVNTRVJUKChzaXplX3QpdHlwZSA8IHNpemVvZihncm91cHMpIC8gc2l6ZW9mKGdyb3Vw
c1swXSkpOyAvLyBvdXQgb2Ygc3luYz8KKyAgICBBU1NFUlQoKHNpemVfdCl0eXBlIDwgYXJyYXlf
c2l6ZShncm91cHMpKTsgLy8gb3V0IG9mIHN5bmM/CiAgICAgcmV0dXJuIGdyb3Vwc1t0eXBlXTsK
IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVz
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKaW5kZXgg
NzYxYmY0MC4uYWViZjEwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
VHlwZXMuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjb21w
b3NpdGVPcGVyYXRvck5hbWVzW10gPSB7CiAgICAgImhpZ2hsaWdodCIsCiAgICAgImxpZ2h0ZXIi
CiB9OwotY29uc3QgaW50IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMgPSBzaXplb2YoY29tcG9z
aXRlT3BlcmF0b3JOYW1lcykgLyBzaXplb2YoY29tcG9zaXRlT3BlcmF0b3JOYW1lc1swXSk7Citj
b25zdCBpbnQgbnVtQ29tcG9zaXRlT3BlcmF0b3JOYW1lcyA9IGFycmF5X3NpemUoY29tcG9zaXRl
T3BlcmF0b3JOYW1lcyk7CiAKIGJvb2wgcGFyc2VDb21wb3NpdGVPcGVyYXRvcihjb25zdCBTdHJp
bmcmIHMsIENvbXBvc2l0ZU9wZXJhdG9yJiBvcCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENhY2hlQ2hyb21pdW1XaW4uY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAKaW5k
ZXggN2MzZTQ1MC4uMTFlNTliYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAKQEAgLTIxMSw5ICsy
MTEsOCBAQCBzdGF0aWMgYm9vbCBMb29rdXBBbHROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgU3Ry
aW5nJiBhbHROYW1lKQogICAgIHN0YXRpYyBOYW1lTWFwKiBmb250TmFtZU1hcCA9IDA7CiAKICAg
ICBpZiAoIWZvbnROYW1lTWFwKSB7Ci0gICAgICAgIHNpemVfdCBudW1FbGVtZW50cyA9IHNpemVv
ZihuYW1lUGFpcnMpIC8gc2l6ZW9mKE5hbWVQYWlyKTsKICAgICAgICAgZm9udE5hbWVNYXAgPSBu
ZXcgTmFtZU1hcDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FbGVtZW50czsg
KytpKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUobmFtZVBhaXJz
KTsgKytpKQogICAgICAgICAgICAgZm9udE5hbWVNYXAtPnNldChTdHJpbmcobmFtZVBhaXJzW2ld
Lm5hbWUpLCAmKG5hbWVQYWlyc1tpXS5hbHROYW1lQ29kZXBhZ2UpKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udFV0aWxzQ2hyb21p
dW1XaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHND
aHJvbWl1bVdpbi5jcHAKaW5kZXggZTcyNWM1MC4uMThmODAyNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdp
bi5jcHAKQEAgLTE1MCwxNCArMTUwLDE0IEBAIHZvaWQgaW5pdGlhbGl6ZVNjcmlwdEZvbnRNYXAo
U2NyaXB0VG9Gb250TWFwJiBzY3JpcHRGb250TWFwKQogICAgICAgICB7VVNDUklQVF9NWUFOTUFS
LCBteWFubWFyRm9udHN9LAogICAgIH07CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVv
Zihmb250TWFwKSAvIHNpemVvZihmb250TWFwWzBdKTsgKytpKQorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJyYXlfc2l6ZShmb250TWFwKTsgKytpKQogICAgICAgICBzY3JpcHRGb250TWFw
W2ZvbnRNYXBbaV0uc2NyaXB0XSA9IGZvbnRNYXBbaV0uZmFtaWx5OwogCiAgICAgLy8gRklYTUU6
IEluc3RlYWQgb2Ygc2Nhbm5pbmcgdGhlIGhhcmQtY29kZWQgbGlzdCwgd2UgaGF2ZSB0byAKICAg
ICAvLyB1c2UgRW51bUZvbnQqIHRvICdpbnNwZWN0JyBmb250cyB0byBwaWNrIHVwIGZvbnRzIGNv
dmVyaW5nIHNjcmlwdHMKICAgICAvLyB3aGVuIGl0J3MgcG9zc2libGUgKGUuZy4gdXNpbmcgT1Mv
MiB0YWJsZSkuIElmIHdlIGRvIHRoYXQsIHRoaXMgCiAgICAgLy8gaGFkIGJldHRlciBiZSBwdWxs
ZWQgb3V0IG9mIGhlcmUuCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2Yoc2NyaXB0VG9G
b250RmFtaWxpZXMpIC8gc2l6ZW9mKHNjcmlwdFRvRm9udEZhbWlsaWVzWzBdKTsgKytpKSB7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKHNjcmlwdFRvRm9udEZhbWlsaWVz
KTsgKytpKSB7CiAgICAgICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHNjcmlwdFRvRm9udEZhbWls
aWVzW2ldLnNjcmlwdDsKICAgICAgICAgc2NyaXB0Rm9udE1hcFtzY3JpcHRdID0gMDsKICAgICAg
ICAgY29uc3QgVUNoYXIqKiBmYW1pbHlQdHIgPSBzY3JpcHRUb0ZvbnRGYW1pbGllc1tpXS5mYW1p
bGllczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhU
ZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcAppbmRleCA3NDRlNmQ0Li5iZmQ4YTAx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXJDb3JlVGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCkBAIC0xMjQsOCArMTI0LDggQEAgdm9p
ZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0
ZXJzQ29yZVRleHQoY29uc3QgVUMKICAgICAgICAgY29uc3Qgc2hvcnQgcnRsRm9yY2VkRW1iZWRk
aW5nTGV2ZWxWYWx1ZSA9IDE7CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBsdHJPcHRpb25W
YWx1ZXNbXSA9IHsgQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVy
U2hvcnRUeXBlLCAmbHRyRm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKICAgICAgICAgc3Rh
dGljIGNvbnN0IHZvaWQqIHJ0bE9wdGlvblZhbHVlc1tdID0geyBDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZydGxGb3JjZWRFbWJlZGRpbmdM
ZXZlbFZhbHVlKSB9OwotICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGx0clR5cGVzZXR0
ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlv
bktleXMsIGx0ck9wdGlvblZhbHVlcywgc2l6ZW9mKG9wdGlvbktleXMpIC8gc2l6ZW9mKCpvcHRp
b25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYg
cnRsVHlwZXNldHRlck9wdGlvbnMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgb3B0aW9uS2V5cywgcnRsT3B0aW9uVmFsdWVzLCBzaXplb2Yob3B0aW9uS2V5cykgLyBz
aXplb2YoKm9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICAgICAgc3RhdGljIENGRGlj
dGlvbmFyeVJlZiBsdHJUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIGFycmF5X3NpemUo
b3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5
UmVmIHJ0bFR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIG9wdGlvbktleXMsIHJ0bE9wdGlvblZhbHVlcywgYXJyYXlfc2l6ZShvcHRpb25L
ZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcyk7CiAgICAgICAgIFJldGFpblB0cjxDVFR5cGVzZXR0ZXJSZWY+
IHR5cGVzZXR0ZXIoQWRvcHRDRiwgQ1RUeXBlc2V0dGVyQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJp
bmdBbmRPcHRpb25zKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCksIG1fcnVuLmx0cigpID8gbHRyVHlw
ZXNldHRlck9wdGlvbnMgOiBydGxUeXBlc2V0dGVyT3B0aW9ucykpOwogCiAgICAgICAgIGxpbmUu
YWRvcHRDRihDVFR5cGVzZXR0ZXJDcmVhdGVMaW5lKHR5cGVzZXR0ZXIuZ2V0KCksIENGUmFuZ2VN
YWtlKDAsIDApKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IDdiMGU3YWYuLjY4NDNjZDIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Lm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0Lm1tCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIHZvaWQgZGlzYWJsZUNvbXBv
bmVudHNPbmNlKCkKICAgICAgICAgeydpbWRjJywgJ3BkZiAnLCAnYXBwbCcsIDAsIDB9LCAgCiAg
ICAgfTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGNvbXBvbmVudHNUb0Rp
c2FibGUpL3NpemVvZihjb21wb25lbnRzVG9EaXNhYmxlWzBdKTsgKytpKSAKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUoY29tcG9uZW50c1RvRGlzYWJsZSk7ICsraSkgCiAg
ICAgICAgIHdrUVRNb3ZpZURpc2FibGVDb21wb25lbnQoY29tcG9uZW50c1RvRGlzYWJsZVtpXSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZv
bnREYXRhQVRTVUkubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250
RGF0YUFUU1VJLm1tCmluZGV4IGJlZWEwMTguLmQzMDA5NTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQVRTVUkubW0KKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFBVFNVSS5tbQpAQCAtNTksNyAr
NTksNyBAQCB2b2lkIFNpbXBsZUZvbnREYXRhOjpjaGVja1NoYXBlc0FyYWJpYygpIGNvbnN0CiAg
ICAgLy8gaGV1cmlzdGljIGlzIHRoYXQgaWYgc3VjaCBhIGZvbnQgaGFzIGEgZ2x5cGggbWV0YW1v
cnBob3NpcyB0YWJsZSwgdGhlbgogICAgIC8vIGl0IGluY2x1ZGVzIHNoYXBpbmcgaW5mb3JtYXRp
b24gZm9yIEFyYWJpYy4KICAgICBGb3VyQ2hhckNvZGUgdGFibGVzW10gPSB7ICdtb3J4JywgJ21v
cnQnIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZih0YWJsZXMpIC8gc2l6
ZW9mKHRhYmxlc1swXSk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlf
c2l6ZSh0YWJsZXMpOyArK2kpIHsKICAgICAgICAgQnl0ZUNvdW50IHRhYmxlU2l6ZTsKICAgICAg
ICAgT1NTdGF0dXMgc3RhdHVzID0gQVRTRm9udEdldFRhYmxlKGZvbnRJRCwgdGFibGVzW2ldLCAw
LCAwLCAwLCAmdGFibGVTaXplKTsKICAgICAgICAgaWYgKHN0YXR1cyA9PSBub0VycikgewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3Jl
VGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNv
cmVUZXh0LmNwcAppbmRleCAwMWQ3NWVlLi4zMWU5YzNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcApAQCAt
NjIsMTUgKzYyLDEzIEBAIENGRGljdGlvbmFyeVJlZiBTaW1wbGVGb250RGF0YTo6Z2V0Q0ZTdHJp
bmdBdHRyaWJ1dGVzKFR5cGVzZXR0aW5nRmVhdHVyZXMgdHlwZXNlCiAgICAgICAgIGNvbnN0IHZv
aWQqIHZhbHVlc1dpdGhLZXJuaW5nRGlzYWJsZWRbXSA9IHsgcGxhdGZvcm1EYXRhKCkuY3RGb250
KCksIGtlcm5pbmdBZGp1c3RtZW50LCBhbGxvd0xpZ2F0dXJlcwogICAgICAgICAgICAgPyBsaWdh
dHVyZXNBbGxvd2VkIDogbGlnYXR1cmVzTm90QWxsb3dlZCwgcGxhdGZvcm1EYXRhKCkub3JpZW50
YXRpb24oKSA9PSBWZXJ0aWNhbCA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9vbGVhbkZhbHNlIH07
CiAgICAgICAgIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KDAsIGtleXNXaXRoS2VybmluZ0Rpc2FibGVkLCB2YWx1ZXNXaXRoS2VybmluZ0Rpc2FibGVkLAot
ICAgICAgICAgICAgc2l6ZW9mKGtleXNXaXRoS2VybmluZ0Rpc2FibGVkKSAvIHNpemVvZigqa2V5
c1dpdGhLZXJuaW5nRGlzYWJsZWQpLAotICAgICAgICAgICAgJmtDRkNvcHlTdHJpbmdEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAg
ICAgICAgICAgYXJyYXlfc2l6ZShrZXlzV2l0aEtlcm5pbmdEaXNhYmxlZCksICZrQ0ZDb3B5U3Ry
aW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBCeSBvbWl0dGluZyB0aGUga0NUS2VybkF0
dHJpYnV0ZU5hbWUgYXR0cmlidXRlLCB3ZSBnZXQgQ29yZSBUZXh0J3Mgc3RhbmRhcmQga2Vybmlu
Zy4KICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQqIGtleXNXaXRoS2VybmluZ0VuYWJsZWRbXSA9
IHsga0NURm9udEF0dHJpYnV0ZU5hbWUsIGtDVExpZ2F0dXJlQXR0cmlidXRlTmFtZSwga0NUVmVy
dGljYWxGb3Jtc0F0dHJpYnV0ZU5hbWUgfTsKICAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzV2l0
aEtlcm5pbmdFbmFibGVkW10gPSB7IHBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCBhbGxvd0xpZ2F0
dXJlcyA/IGxpZ2F0dXJlc0FsbG93ZWQgOiBsaWdhdHVyZXNOb3RBbGxvd2VkLCBwbGF0Zm9ybURh
dGEoKS5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29s
ZWFuRmFsc2UgfTsKICAgICAgICAgYXR0cmlidXRlc0RpY3Rpb25hcnkuYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGUoMCwga2V5c1dpdGhLZXJuaW5nRW5hYmxlZCwgdmFsdWVzV2l0aEtlcm5pbmdF
bmFibGVkLAotICAgICAgICAgICAgc2l6ZW9mKGtleXNXaXRoS2VybmluZ0VuYWJsZWQpIC8gc2l6
ZW9mKCprZXlzV2l0aEtlcm5pbmdFbmFibGVkKSwKLSAgICAgICAgICAgICZrQ0ZDb3B5U3RyaW5n
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
KTsKKyAgICAgICAgICAgIGFycmF5X3NpemUoa2V5c1dpdGhLZXJuaW5nRW5hYmxlZCksICZrQ0ZD
b3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpKTsKICAgICB9CiAKICAgICByZXR1cm4gYXR0cmlidXRlc0RpY3Rpb25hcnkuZ2V0
KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0Nv
bnRleHRDR1dpbi5jcHAKaW5kZXggYzkyODhlNS4uY2I2MTFlZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcApAQCAt
MjI4LDIwICsyMjgsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dENo
ZWNraW5nKGNvbnN0IEludFBvaW50JiBwb2ludCwgaW50IHdpZHRoLAogICAgIGNvbnN0IGZsb2F0
IGxvd2VyT3BhY2l0eSA9IDAuODhmOwogCiAgICAgLy9Ub3AgbGluZQotICAgIENHQ29udGV4dFNl
dExpbmVEYXNoKGNvbnRleHQsIGVkZ2Vfb2Zmc2V0LCBlZGdlX2Rhc2hfbGVuZ3RocywgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVkZ2VfZGFzaF9sZW5ndGhzKSAvIHNpemVvZihl
ZGdlX2Rhc2hfbGVuZ3Roc1swXSkpOworICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQs
IGVkZ2Vfb2Zmc2V0LCBlZGdlX2Rhc2hfbGVuZ3RocywgYXJyYXlfc2l6ZShlZGdlX2Rhc2hfbGVu
Z3RocykpOwogICAgIENHQ29udGV4dFNldEFscGhhKGNvbnRleHQsIHVwcGVyT3BhY2l0eSk7CiAg
ICAgQ0dDb250ZXh0U3Ryb2tlTGluZVNlZ21lbnRzKGNvbnRleHQsIHVwcGVyUG9pbnRzLCAyKTsK
ICAKICAgICAvLyBNaWRkbGUgbGluZQotICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQs
IG1pZGRsZV9vZmZzZXQsIG1pZGRsZV9kYXNoX2xlbmd0aHMsIAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVvZihtaWRkbGVfZGFzaF9sZW5ndGhzKSAvIHNpemVvZihtaWRkbGVfZGFzaF9s
ZW5ndGhzWzBdKSk7CisgICAgQ0dDb250ZXh0U2V0TGluZURhc2goY29udGV4dCwgbWlkZGxlX29m
ZnNldCwgbWlkZGxlX2Rhc2hfbGVuZ3RocywgYXJyYXlfc2l6ZShtaWRkbGVfZGFzaF9sZW5ndGhz
KSk7CiAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgbWlkZGxlT3BhY2l0eSk7CiAgICAg
Q0dDb250ZXh0U3Ryb2tlTGluZVNlZ21lbnRzKGNvbnRleHQsIG1pZGRsZVBvaW50cywgMik7CiAg
ICAgCiAgICAgLy8gQm90dG9tIGxpbmUKLSAgICBDR0NvbnRleHRTZXRMaW5lRGFzaChjb250ZXh0
LCBlZGdlX29mZnNldCwgZWRnZV9kYXNoX2xlbmd0aHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mKGVkZ2VfZGFzaF9sZW5ndGhzKSAvIHNpemVvZihlZGdlX2Rhc2hfbGVuZ3Roc1sw
XSkpOworICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIGVkZ2Vfb2Zmc2V0LCBlZGdl
X2Rhc2hfbGVuZ3RocywgYXJyYXlfc2l6ZShlZGdlX2Rhc2hfbGVuZ3RocykpOwogICAgIENHQ29u
dGV4dFNldEFscGhhKGNvbnRleHQsIGxvd2VyT3BhY2l0eSk7CiAgICAgQ0dDb250ZXh0U3Ryb2tl
TGluZVNlZ21lbnRzKGNvbnRleHQsIGxvd2VyUG9pbnRzLCAyKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlz
dWFsQ29udGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXll
clByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAppbmRleCA5MjI2M2I2Li45Y2ZhMDY4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApA
QCAtMzE1LDcgKzMxNSw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVDb21wb25lbnRzT25jZSgpCiAg
ICAgICAgIHsnZWF0ICcsICdURVhUJywgJ3R4M2cnLCAwLCAwfSwgIAogICAgIH07CiAKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihjb21wb25lbnRzVG9EaXNhYmxlKSAvIHNpemVv
Zihjb21wb25lbnRzVG9EaXNhYmxlWzBdKTsgKytpKSAKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFycmF5X3NpemUoY29tcG9uZW50c1RvRGlzYWJsZSk7ICsraSkgCiAgICAgICAgIFFUTW92
aWU6OmRpc2FibGVDb21wb25lbnQoY29tcG9uZW50c1RvRGlzYWJsZVtpXSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWUuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZS5jcHAKaW5kZXggMzc1ZDhjMi4uZTg3YzNh
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZS5jcHAKQEAgLTU0OCw3
ICs1NDgsNyBAQCB2b2lkIFFUTW92aWU6OmxvYWQoQ0ZVUkxSZWYgdXJsLCBib29sIHByZXNlcnZl
c1BpdGNoKQogICAgIG1vdmllUHJvcHNbbW92aWVQcm9wQ291bnRdLnByb3BTdGF0dXMgPSAwOyAK
ICAgICBtb3ZpZVByb3BDb3VudCsrOyAKIAotICAgIEFTU0VSVChtb3ZpZVByb3BDb3VudCA8PSBz
aXplb2YobW92aWVQcm9wcykgLyBzaXplb2YobW92aWVQcm9wc1swXSkpOworICAgIEFTU0VSVCht
b3ZpZVByb3BDb3VudCA8PSBhcnJheV9zaXplKG1vdmllUHJvcHMpKTsKICAgICBtX3ByaXZhdGUt
Pm1fbG9hZEVycm9yID0gTmV3TW92aWVGcm9tUHJvcGVydGllcyhtb3ZpZVByb3BDb3VudCwgbW92
aWVQcm9wcywgMCwgMCwgJm1fcHJpdmF0ZS0+bV9tb3ZpZSk7CiAKIGVuZDoKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3Bw
CmluZGV4IDgwMDMwMWEuLjIyNzNkMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApAQCAtMzMyLDcgKzMzMiw3
IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKCkKICAgICAgICAgLy8g
QnV0IFNPQ0tTNSBjcmVkZW50aWFscyBkb24ndCB3b3JrIGF0IHRoZSB0aW1lIG9mIHRoaXMgd3Jp
dGluZyBhbnl3YXksIHNlZSA8cmRhcjovLzY3NzY2OTg+LgogICAgICAgICBjb25zdCB2b2lkKiBw
cm94eUtleXNbXSA9IHsga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5SG9zdCwga0NGU3RyZWFt
UHJvcGVydHlTT0NLU1Byb3h5UG9ydCB9OwogICAgICAgICBjb25zdCB2b2lkKiBwcm94eVZhbHVl
c1tdID0geyBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkgfTsKLSAgICAgICAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdERpY3Rpb25hcnkoQWRvcHRDRiwgQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKDAsIHByb3h5S2V5cywgcHJveHlWYWx1ZXMsIHNpemVvZihwcm94eUtl
eXMpIC8gc2l6ZW9mKCpwcm94eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNvbm5lY3REaWN0aW9uYXJ5KEFkb3B0Q0YsIENGRGljdGlvbmFyeUNy
ZWF0ZSgwLCBwcm94eUtleXMsIHByb3h5VmFsdWVzLCBhcnJheV9zaXplKHByb3h5S2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKICAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkobV9yZWFkU3RyZWFtLmdl
dCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNPQ0tTUHJveHksIGNvbm5lY3REaWN0aW9uYXJ5LmdldCgp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcygpCiAgICAgaWYgKHNob3VsZFVzZVNTTCgp
KSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleXNbXSA9IHsga0NGU3RyZWFtU1NMUGVlck5hbWUs
IGtDRlN0cmVhbVNTTExldmVsIH07CiAgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tdID0geyBo
b3N0LmdldCgpLCBrQ0ZTdHJlYW1Tb2NrZXRTZWN1cml0eUxldmVsTmVnb3RpYXRlZFNTTCB9Owot
ICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBzZXR0aW5ncyhBZG9wdENGLCBDRkRp
Y3Rpb25hcnlDcmVhdGUoMCwga2V5cywgdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBzaXplb2YoKmtl
eXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHNldHRp
bmdzKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIGFycmF5X3Np
emUoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkobV9y
ZWFkU3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFNldHRpbmdzLCBzZXR0aW5ncy5n
ZXQoKSk7CiAgICAgICAgIENGV3JpdGVTdHJlYW1TZXRQcm9wZXJ0eShtX3dyaXRlU3RyZWFtLmdl
dCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFNldHRpbmdzLCBzZXR0aW5ncy5nZXQoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKaW5k
ZXggZmJlNTgyNi4uMDBhOWMwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVu
Y29kaW5nUmVnaXN0cnkuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIHZvaWQgYWRkVG9U
ZXh0Q29kZWNNYXAoY29uc3QgY2hhciogbmFtZSwgTmV3VGV4dENvZGVjRnVuY3Rpb24gZnVuY3Rp
b24sIGMKIAogc3RhdGljIHZvaWQgcHJ1bmVCbGFja2xpc3RlZENvZGVjcygpCiB7Ci0gICAgc2l6
ZV90IGJsYWNrbGlzdGVkQ29kZWNMaXN0TGVuZ3RoID0gc2l6ZW9mKHRleHRFbmNvZGluZ05hbWVC
bGFja2xpc3QpIC8gc2l6ZW9mKHRleHRFbmNvZGluZ05hbWVCbGFja2xpc3RbMF0pOworICAgIHNp
emVfdCBibGFja2xpc3RlZENvZGVjTGlzdExlbmd0aCA9IGFycmF5X3NpemUodGV4dEVuY29kaW5n
TmFtZUJsYWNrbGlzdCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBibGFja2xpc3RlZENv
ZGVjTGlzdExlbmd0aDsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGF0b21pY05hbWUgPSB0
ZXh0RW5jb2RpbmdOYW1lTWFwLT5nZXQodGV4dEVuY29kaW5nTmFtZUJsYWNrbGlzdFtpXSk7CiAg
ICAgICAgIGlmICghYXRvbWljTmFtZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90
cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcAppbmRleCA4ZTJmMzNmLi43MDJlOTI5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNjb2Rlci9Gb250VHJhbnNjb2Rlci5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIu
Y3BwCkBAIC00MSwyMyArNDEsMjMgQEAgRm9udFRyYW5zY29kZXI6OkZvbnRUcmFuc2NvZGVyKCkK
IHsKICAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgUEdvdGhpYyIsIEJhY2tzbGFzaFRvWWVu
U2lnbik7CiAgICAgVUNoYXIgdW5pY29kZU5hbWVNU1BHb3RoaWNbXSA9IHsweEZGMkQsIDB4RkYz
MywgMHgwMDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMwQzMsIDB4MzBBRn07Ci0gICAg
bV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQR290aGljLCBz
aXplb2YodW5pY29kZU5hbWVNU1BHb3RoaWMpIC8gc2l6ZW9mKFVDaGFyKSksIEJhY2tzbGFzaFRv
WWVuU2lnbik7CisgICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVO
YW1lTVNQR290aGljLCBhcnJheV9zaXplKHVuaWNvZGVOYW1lTVNQR290aGljKSksIEJhY2tzbGFz
aFRvWWVuU2lnbik7CiAKICAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgUE1pbmNobyIsIEJh
Y2tzbGFzaFRvWWVuU2lnbik7CiAgICAgVUNoYXIgdW5pY29kZU5hbWVNU1BNaW5jaG9bXSA9IHsw
eEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYwRSwgMHg2NzFEfTsKLSAgICBtX2Nv
bnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU1BNaW5jaG8sIHNpemVv
Zih1bmljb2RlTmFtZU1TUE1pbmNobykgLyBzaXplb2YoVUNoYXIpKSwgQmFja3NsYXNoVG9ZZW5T
aWduKTsKKyAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVN
U1BNaW5jaG8sIGFycmF5X3NpemUodW5pY29kZU5hbWVNU1BNaW5jaG8pKSwgQmFja3NsYXNoVG9Z
ZW5TaWduKTsKIAogICAgIG1fY29udmVydGVyVHlwZXMuYWRkKCJNUyBHb3RoaWMiLCBCYWNrc2xh
c2hUb1llblNpZ24pOwogICAgIFVDaGFyIHVuaWNvZGVOYW1lTVNHb3RoaWNbXSA9IHsweEZGMkQs
IDB4RkYzMywgMHgwMDIwLCAweDMwQjQsIDB4MzBCNywgMHgzMEMzLCAweDMwQUZ9OwotICAgIG1f
Y29udmVydGVyVHlwZXMuYWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TR290aGljLCBzaXpl
b2YodW5pY29kZU5hbWVNU0dvdGhpYykgLyBzaXplb2YoVUNoYXIpKSwgQmFja3NsYXNoVG9ZZW5T
aWduKTsKKyAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVN
U0dvdGhpYywgYXJyYXlfc2l6ZSh1bmljb2RlTmFtZU1TR290aGljKSksIEJhY2tzbGFzaFRvWWVu
U2lnbik7CiAKICAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgTWluY2hvIiwgQmFja3NsYXNo
VG9ZZW5TaWduKTsKICAgICBVQ2hhciB1bmljb2RlTmFtZU1TTWluY2hvW10gPSB7MHhGRjJELCAw
eEZGMzMsIDB4MDAyMCwgMHg2NjBFLCAweDY3MUR9OwotICAgIG1fY29udmVydGVyVHlwZXMuYWRk
KEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TTWluY2hvLCBzaXplb2YodW5pY29kZU5hbWVNU01p
bmNobykgLyBzaXplb2YoVUNoYXIpKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKKyAgICBtX2NvbnZl
cnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNU01pbmNobywgYXJyYXlfc2l6
ZSh1bmljb2RlTmFtZU1TTWluY2hvKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CiAKICAgICBtX2Nv
bnZlcnRlclR5cGVzLmFkZCgiTWVpcnlvIiwgQmFja3NsYXNoVG9ZZW5TaWduKTsKICAgICBVQ2hh
ciB1bmljb2RlTmFtZU1laXJ5b1tdID0gezB4MzBFMSwgMHgzMEE0LCAweDMwRUEsIDB4MzBBQX07
Ci0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTWVpcnlv
LCBzaXplb2YodW5pY29kZU5hbWVNZWlyeW8pIC8gc2l6ZW9mKFVDaGFyKSksIEJhY2tzbGFzaFRv
WWVuU2lnbik7CisgICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNvZGVO
YW1lTWVpcnlvLCBhcnJheV9zaXplKHVuaWNvZGVOYW1lTWVpcnlvKSksIEJhY2tzbGFzaFRvWWVu
U2lnbik7CiB9CiAKIEZvbnRUcmFuc2NvZGVyOjpDb252ZXJ0ZXJUeXBlIEZvbnRUcmFuc2NvZGVy
Ojpjb252ZXJ0ZXJUeXBlKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBj
b25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxl
U3lzdGVtV2luLmNwcAppbmRleCA0YjdhNjkyLi5kMTk2OWRjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTkyLDggKzE5Miw4IEBAIENTdHJpbmcgb3BlblRlbXBv
cmFyeUZpbGUoY29uc3QgY2hhciosIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogICAgIGhh
bmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogCiAgICAgY2hhciB0ZW1wUGF0aFtNQVhfUEFU
SF07Ci0gICAgaW50IHRlbXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aEEoX2NvdW50b2YodGVt
cFBhdGgpLCB0ZW1wUGF0aCk7Ci0gICAgaWYgKHRlbXBQYXRoTGVuZ3RoIDw9IDAgfHwgdGVtcFBh
dGhMZW5ndGggPiBfY291bnRvZih0ZW1wUGF0aCkpCisgICAgaW50IHRlbXBQYXRoTGVuZ3RoID0g
OjpHZXRUZW1wUGF0aEEoYXJyYXlfc2l6ZSh0ZW1wUGF0aCksIHRlbXBQYXRoKTsKKyAgICBpZiAo
dGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExlbmd0aCA+IGFycmF5X3NpemUodGVtcFBh
dGgpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwogCiAgICAgSENSWVBUUFJPViBoQ3J5cHRQ
cm92ID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdp
bkNFLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcAppbmRl
eCAyYTI3MDg5Li5kZGFhOTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0Zp
bGVTeXN0ZW1XaW5DRS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVt
V2luQ0UuY3BwCkBAIC0xNzQsOCArMTc0LDggQEAgQ1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShj
b25zdCBjaGFyKiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiAgICAgaGFuZGxlID0gSU5W
QUxJRF9IQU5ETEVfVkFMVUU7CiAKICAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRIXTsKLSAg
ICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoKF9jb3VudG9mKHRlbXBQYXRoKSwg
dGVtcFBhdGgpOwotICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3Ro
ID4gX2NvdW50b2YodGVtcFBhdGgpKQorICAgIGludCB0ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVt
cFBhdGgoYXJyYXlfc2l6ZSh0ZW1wUGF0aCksIHRlbXBQYXRoKTsKKyAgICBpZiAodGVtcFBhdGhM
ZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExlbmd0aCA+IGFycmF5X3NpemUodGVtcFBhdGgpKQogICAg
ICAgICByZXR1cm4gQ1N0cmluZygpOwogCiAgICAgSENSWVBUUFJPViBoQ3J5cHRQcm92ID0gMDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwIGIv
V2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKaW5kZXggNmNiY2RjOC4u
YjcxOWExYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdp
bi5jcHAKKysrIGIvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHAKQEAg
LTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHNobHdhcGku
aD4KIAotI2lmIENPTVBJTEVSKE1JTkdXKQotI2RlZmluZSBfY291bnRvZih4KSAoc2l6ZW9mKHgp
L3NpemVvZih4WzBdKSkKLSNlbmRpZgotCiAjaWYgT1MoV0lOQ0UpCiAvLyBXSU5DRSBkb2Vzbid0
IHN1cHBvcnQgUmVnaXN0cnkgS2V5IEFjY2VzcyBSaWdodHMuIFRoZSBwYXJhbWV0ZXIgc2hvdWxk
IGFsd2F5cyBiZSAwCiAjaWZuZGVmIEtFWV9FTlVNRVJBVEVfU1VCX0tFWVMKQEAgLTk2LDcgKzky
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFBsdWdpblBhdGhzRnJvbVJlZ2lzdHJ5KEhLRVkg
cm9vdEtleSwgSGFzaFNldDxTdHJpbmc+JiBwYXQKIAogICAgIC8vIEVudW1lcmF0ZSBzdWJrZXlz
CiAgICAgZm9yIChpbnQgaSA9IDA7OyBpKyspIHsKLSAgICAgICAgRFdPUkQgbmFtZUxlbiA9IF9j
b3VudG9mKG5hbWUpOworICAgICAgICBEV09SRCBuYW1lTGVuID0gYXJyYXlfc2l6ZShuYW1lKTsK
ICAgICAgICAgcmVzdWx0ID0gUmVnRW51bUtleUV4VyhrZXksIGksIG5hbWUsICZuYW1lTGVuLCAw
LCAwLCAwLCAmbGFzdE1vZGlmaWVkKTsKIAogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NV
Q0NFU1MpCkBAIC0yNTcsOSArMjUzLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NN
ZWRpYVBsYXllclBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICNpZiAh
T1MoV0lOQ0UpCiAgICAgLy8gVGhlIG5ldyBXTVAgRmlyZWZveCBwbHVnaW4gaXMgaW5zdGFsbGVk
IGluIFxQRmlsZXNcUGx1Z2lucyBpZiBpdCBjYW4ndCBmaW5kIGFueSBGaXJlZm94IGluc3RhbGxz
CiAgICAgV0NIQVIgcGx1Z2luRGlyZWN0b3J5U3RyW19NQVhfUEFUSCArIDFdOwotICAgIERXT1JE
IHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4cGFuZEVudmlyb25tZW50U3RyaW5nc1coVEVYVCgi
JVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQbHVnaW5zIiksIHBsdWdpbkRpcmVjdG9yeVN0ciwgX2Nv
dW50b2YocGx1Z2luRGlyZWN0b3J5U3RyKSk7CisgICAgRFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6
ZSA9IDo6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhURVhUKCIlU1lTVEVNRFJJVkUlXFxQRmls
ZXNcXFBsdWdpbnMiKSwgcGx1Z2luRGlyZWN0b3J5U3RyLCBhcnJheV9zaXplKHBsdWdpbkRpcmVj
dG9yeVN0cikpOwogCi0gICAgaWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBsdWdpbkRp
cmVjdG9yeVNpemUgPD0gX2NvdW50b2YocGx1Z2luRGlyZWN0b3J5U3RyKSkKKyAgICBpZiAocGx1
Z2luRGlyZWN0b3J5U2l6ZSA+IDAgJiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBhcnJheV9zaXpl
KHBsdWdpbkRpcmVjdG9yeVN0cikpCiAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmco
cGx1Z2luRGlyZWN0b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOwogI2VuZGlmCiAK
QEAgLTQxMCw3ICs0MDYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTWFjcm9tZWRpYVBsdWdp
bkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICNpZiAhT1MoV0lOQ0Up
CiAgICAgV0NIQVIgc3lzdGVtRGlyZWN0b3J5U3RyW01BWF9QQVRIXTsKIAotICAgIGlmIChHZXRT
eXN0ZW1EaXJlY3Rvcnkoc3lzdGVtRGlyZWN0b3J5U3RyLCBfY291bnRvZihzeXN0ZW1EaXJlY3Rv
cnlTdHIpKSA9PSAwKQorICAgIGlmIChHZXRTeXN0ZW1EaXJlY3Rvcnkoc3lzdGVtRGlyZWN0b3J5
U3RyLCBhcnJheV9zaXplKHN5c3RlbURpcmVjdG9yeVN0cikpID09IDApCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFdDSEFSIG1hY3JvbWVkaWFEaXJlY3RvcnlTdHJbTUFYX1BBVEhdOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDQ4NTViYWIuLmQyMjIxZmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTQ3OSwxMSArNDc5LDEx
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBmb250RmFtaWxpZXNXaXRoSW52YWxpZENoYXJXaWR0aFtd
ID0gewogYm9vbCBSZW5kZXJUZXh0Q29udHJvbDo6aGFzVmFsaWRBdmdDaGFyV2lkdGgoQXRvbWlj
U3RyaW5nIGZhbWlseSkKIHsKICAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+KiBmb250
RmFtaWxpZXNXaXRoSW52YWxpZENoYXJXaWR0aE1hcCA9IDA7Ci0gICAgCisKICAgICBpZiAoIWZv
bnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoTWFwKSB7CiAgICAgICAgIGZvbnRGYW1pbGll
c1dpdGhJbnZhbGlkQ2hhcldpZHRoTWFwID0gbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nPjsKLSAg
ICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoZm9udEZhbWls
aWVzV2l0aEludmFsaWRDaGFyV2lkdGgpIC8gc2l6ZW9mKGZvbnRGYW1pbGllc1dpdGhJbnZhbGlk
Q2hhcldpZHRoWzBdKTsgaSsrKQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJy
YXlfc2l6ZShmb250RmFtaWxpZXNXaXRoSW52YWxpZENoYXJXaWR0aCk7IGkrKykKICAgICAgICAg
ICAgIGZvbnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoTWFwLT5hZGQoQXRvbWljU3RyaW5n
KGZvbnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoW2ldKSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9icmVha19saW5lcy5jcHAKaW5kZXggYzZjMWRkZC4uNmNkYjYyMSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL2Jy
ZWFrX2xpbmVzLmNwcApAQCAtMTE0LDggKzExNCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBj
aGFyIGFzY2lpTGluZUJyZWFrVGFibGVbXVsoYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyIC0K
ICN1bmRlZiBESQogI3VuZGVmIEFMCiAKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihhc2NpaUxpbmVC
cmVha1RhYmxlKSAvIHNpemVvZihhc2NpaUxpbmVCcmVha1RhYmxlWzBdKSA9PSBhc2NpaUxpbmVC
cmVha1RhYmxlTGFzdENoYXIgLSBhc2NpaUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyICsgMSwKLSAg
ICAgICAgVGVzdExpbmVCcmVha1RhYmxlQ29uc2lzdGVuY3kpOworQ09NUElMRV9BU1NFUlQoYXJy
YXlfc2l6ZShhc2NpaUxpbmVCcmVha1RhYmxlKSA9PSBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENo
YXIgLSBhc2NpaUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyICsgMSwgVGVzdExpbmVCcmVha1RhYmxl
Q29uc2lzdGVuY3kpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQnJlYWtBZnRlcihVQ2hh
ciBjaCwgVUNoYXIgbmV4dENoKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcAppbmRleCBjMTgyOTRkLi5hZjE4YTg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBib29sIGNyZWF0
ZVRhYmxlcyhTUUxpdGVEYXRhYmFzZSogc3FsaXRlRGF0YWJhc2UpCiAgICAgICAgICJDUkVBVEUg
SU5ERVggSUYgTk9UIEVYSVNUUyBJbmRleERhdGFfaW5kZXhJZCBPTiBJbmRleERhdGEoaW5kZXhJ
ZCkiCiAgICAgICAgIH07CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShj
b21tYW5kcyk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShj
b21tYW5kcyk7ICsraSkgewogICAgICAgICBpZiAoIXNxbGl0ZURhdGFiYXNlLT5leGVjdXRlQ29t
bWFuZChjb21tYW5kc1tpXSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5
IHRvIHJlY292ZXIgZnJvbSB0aGlzIHNpdHVhdGlvbi4gTWF5YmUgbnVrZSB0aGUgZGF0YWJhc2Ug
YW5kIHN0YXJ0IG92ZXI/CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBydW4gdGhl
IGZvbGxvd2luZyBjb21tYW5kIGZvciBJbmRleGVkREI6ICVzIiwgY29tbWFuZHNbaV0pOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAgYi9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm1hYmxlLmNwcAppbmRleCBhMjVlMDg2Li45OWZlN2UyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1hYmxlLmNwcApAQCAtMTQ1LDE5ICsxNDUsMTkgQEAgc3RhdGljIGlubGluZSBib29sIHBh
cnNlQW5kU2tpcFR5cGUoY29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciog
ZW4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICgqY3VyclRyYW5zZm9ybSA9
PSAncycpIHsKLSAgICAgICAgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBza2V3
WERlc2MsIHNpemVvZihza2V3WERlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgIGlmIChz
a2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgc2tld1hEZXNjLCBhcnJheV9zaXplKHNrZXdY
RGVzYykpKQogICAgICAgICAgICAgdHlwZSA9IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9T
S0VXWDsKLSAgICAgICAgZWxzZSBpZiAoc2tpcFN0cmluZyhjdXJyVHJhbnNmb3JtLCBlbmQsIHNr
ZXdZRGVzYywgc2l6ZW9mKHNrZXdZRGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgZWxz
ZSBpZiAoc2tpcFN0cmluZyhjdXJyVHJhbnNmb3JtLCBlbmQsIHNrZXdZRGVzYywgYXJyYXlfc2l6
ZShza2V3WURlc2MpKSkKICAgICAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFO
U0ZPUk1fU0tFV1k7Ci0gICAgICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwg
ZW5kLCBzY2FsZURlc2MsIHNpemVvZihzY2FsZURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAg
ICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBzY2FsZURlc2MsIGFy
cmF5X3NpemUoc2NhbGVEZXNjKSkpCiAgICAgICAgICAgICB0eXBlID0gU1ZHVHJhbnNmb3JtOjpT
VkdfVFJBTlNGT1JNX1NDQUxFOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfSBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgdHJhbnNs
YXRlRGVzYywgc2l6ZW9mKHRyYW5zbGF0ZURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgfSBl
bHNlIGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgdHJhbnNsYXRlRGVzYywgYXJy
YXlfc2l6ZSh0cmFuc2xhdGVEZXNjKSkpCiAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNW
R19UUkFOU0ZPUk1fVFJBTlNMQVRFOwotICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5z
Zm9ybSwgZW5kLCByb3RhdGVEZXNjLCBzaXplb2Yocm90YXRlRGVzYykgLyBzaXplb2YoVUNoYXIp
KSkKKyAgICBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgcm90YXRlRGVz
YywgYXJyYXlfc2l6ZShyb3RhdGVEZXNjKSkpCiAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06
OlNWR19UUkFOU0ZPUk1fUk9UQVRFOwotICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5z
Zm9ybSwgZW5kLCBtYXRyaXhEZXNjLCBzaXplb2YobWF0cml4RGVzYykgLyBzaXplb2YoVUNoYXIp
KSkKKyAgICBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgbWF0cml4RGVz
YywgYXJyYXlfc2l6ZShtYXRyaXhEZXNjKSkpCiAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06
OlNWR19UUkFOU0ZPUk1fTUFUUklYOwogICAgIGVsc2UgCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcCBiL1dlYkNvcmUvc3ZnL1NW
R1ZpZXdTcGVjLmNwcAppbmRleCAyMGM1OGFjLi43ZjJhNzJiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3U3BlYy5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCkBA
IC04Miw3ICs4Miw3IEBAIGJvb2wgU1ZHVmlld1NwZWM6OnBhcnNlVmlld1NwZWMoY29uc3QgU3Ry
aW5nJiB2aWV3U3BlYykKICAgICBpZiAoY3VyclZpZXdTcGVjID49IGVuZCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKCFza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCBzdmdW
aWV3U3BlYywgc2l6ZW9mKHN2Z1ZpZXdTcGVjKSAvIHNpemVvZihVQ2hhcikpKQorICAgIGlmICgh
c2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgc3ZnVmlld1NwZWMsIGFycmF5X3NpemUoc3Zn
Vmlld1NwZWMpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGN1cnJWaWV3U3Bl
YyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKCcgKQpAQCAtOTEsNyArOTEsNyBAQCBib29s
IFNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAKICAg
ICB3aGlsZSAoY3VyclZpZXdTcGVjIDwgZW5kICYmICpjdXJyVmlld1NwZWMgIT0gJyknKSB7CiAg
ICAgICAgIGlmICgqY3VyclZpZXdTcGVjID09ICd2JykgewotICAgICAgICAgICAgaWYgKHNraXBT
dHJpbmcoY3VyclZpZXdTcGVjLCBlbmQsIHZpZXdCb3hTcGVjLCBzaXplb2Yodmlld0JveFNwZWMp
IC8gc2l6ZW9mKFVDaGFyKSkpIHsKKyAgICAgICAgICAgIGlmIChza2lwU3RyaW5nKGN1cnJWaWV3
U3BlYywgZW5kLCB2aWV3Qm94U3BlYywgYXJyYXlfc2l6ZSh2aWV3Qm94U3BlYykpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAn
KCcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBj
dXJyVmlld1NwZWMrKzsKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIFNWR1ZpZXdTcGVjOjpwYXJz
ZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAgICAgICAgICAgICAgICAgaWYgKGN1
cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKScpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBjdXJyVmlld1NwZWMrKzsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgdmlld1Rh
cmdldFNwZWMsIHNpemVvZih2aWV3VGFyZ2V0U3BlYykgLyBzaXplb2YoVUNoYXIpKSkgeworICAg
ICAgICAgICAgfSBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCB2aWV3VGFy
Z2V0U3BlYywgYXJyYXlfc2l6ZSh2aWV3VGFyZ2V0U3BlYykpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKCcpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciog
dmlld1RhcmdldFN0YXJ0ID0gKytjdXJyVmlld1NwZWM7CkBAIC0xMTUsNyArMTE1LDcgQEAgYm9v
bCBTVkdWaWV3U3BlYzo6cGFyc2VWaWV3U3BlYyhjb25zdCBTdHJpbmcmIHZpZXdTcGVjKQogICAg
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
IGVsc2UgaWYgKCpjdXJyVmlld1NwZWMgPT0gJ3onKSB7Ci0gICAgICAgICAgICBpZiAoIXNraXBT
dHJpbmcoY3VyclZpZXdTcGVjLCBlbmQsIHpvb21BbmRQYW5TcGVjLCBzaXplb2Yoem9vbUFuZFBh
blNwZWMpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgICAgICBpZiAoIXNraXBTdHJpbmcoY3Vy
clZpZXdTcGVjLCBlbmQsIHpvb21BbmRQYW5TcGVjLCBhcnJheV9zaXplKHpvb21BbmRQYW5TcGVj
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKGN1cnJW
aWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKCcpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgU1ZHVmlld1NwZWM6OnBhcnNl
Vmlld1NwZWMoY29uc3QgU3RyaW5nJiB2aWV3U3BlYykKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICBjdXJyVmlld1NwZWMrKzsKICAgICAgICAgfSBlbHNlIGlmICgq
Y3VyclZpZXdTcGVjID09ICdwJykgewotICAgICAgICAgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJW
aWV3U3BlYywgZW5kLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3BlYywgc2l6ZW9mKHByZXNlcnZlQXNw
ZWN0UmF0aW9TcGVjKSAvIHNpemVvZihVQ2hhcikpKQorICAgICAgICAgICAgaWYgKCFza2lwU3Ry
aW5nKGN1cnJWaWV3U3BlYywgZW5kLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3BlYywgYXJyYXlfc2l6
ZShwcmVzZXJ2ZUFzcGVjdFJhdGlvU3BlYykpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIGlmIChjdXJyVmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMg
IT0gJygnKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzOSw3ICsxMzksNyBA
QCBib29sIFNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY3VyclZpZXdTcGVj
Kys7CiAgICAgICAgIH0gZWxzZSBpZiAoKmN1cnJWaWV3U3BlYyA9PSAndCcpIHsKLSAgICAgICAg
ICAgIGlmICghc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgdHJhbnNmb3JtU3BlYywgc2l6
ZW9mKHRyYW5zZm9ybVNwZWMpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgICAgICBpZiAoIXNr
aXBTdHJpbmcoY3VyclZpZXdTcGVjLCBlbmQsIHRyYW5zZm9ybVNwZWMsIGFycmF5X3NpemUodHJh
bnNmb3JtU3BlYykpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IGlmIChjdXJyVmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1pvb21B
bmRQYW4uY3BwIGIvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKaW5kZXggOTNhYjNhZC4u
Zjg1ZTdiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKKysrIGIv
V2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgc3RhdGljIGNv
bnN0IFVDaGFyIG1hZ25pZnlbXSA9ICB7J20nLCAnYScsICdnJywgJ24nLCAnaScsICdmJywgJ3kn
fTsKIAogYm9vbCBTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oY29uc3QgVUNoYXIqJiBz
dGFydCwgY29uc3QgVUNoYXIqIGVuZCkKIHsKLSAgICBpZiAoc2tpcFN0cmluZyhzdGFydCwgZW5k
LCBkaXNhYmxlLCBzaXplb2YoZGlzYWJsZSkgLyBzaXplb2YoVUNoYXIpKSkKKyAgICBpZiAoc2tp
cFN0cmluZyhzdGFydCwgZW5kLCBkaXNhYmxlLCBhcnJheV9zaXplKGRpc2FibGUpKSkKICAgICAg
ICAgc2V0Wm9vbUFuZFBhbihTVkdfWk9PTUFORFBBTl9ESVNBQkxFKTsKLSAgICBlbHNlIGlmIChz
a2lwU3RyaW5nKHN0YXJ0LCBlbmQsIG1hZ25pZnksIHNpemVvZihtYWduaWZ5KSAvIHNpemVvZihV
Q2hhcikpKQorICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoc3RhcnQsIGVuZCwgbWFnbmlmeSwgYXJy
YXlfc2l6ZShtYWduaWZ5KSkpCiAgICAgICAgIHNldFpvb21BbmRQYW4oU1ZHX1pPT01BTkRQQU5f
TUFHTklGWSk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9u
cy5jcHAKaW5kZXggOGI0ZTcyMC4uOWQ1MGE0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFBh
dGhGdW5jdGlvbnMuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAt
NzA4LDEwICs3MDgsOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcCgpCiAgICAgICAg
IHsgInRyYW5zbGF0ZSIsIHsgJmNyZWF0ZUZ1blRyYW5zbGF0ZSwgMyB9IH0sCiAgICAgICAgIHsg
InRydWUiLCB7ICZjcmVhdGVGdW5UcnVlLCAwIH0gfSwKICAgICB9OwotICAgIGNvbnN0IHVuc2ln
bmVkIGludCBudW1GdW5jdGlvbnMgPSBzaXplb2YoZnVuY3Rpb25zKSAvIHNpemVvZihmdW5jdGlv
bnNbMF0pOwogCiAgICAgZnVuY3Rpb25NYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIEZ1bmN0aW9u
UmVjPjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnVuY3Rpb25zOyArK2kpCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKGZ1bmN0aW9ucyk7ICsraSkKICAg
ICAgICAgZnVuY3Rpb25NYXAtPnNldChmdW5jdGlvbnNbaV0ubmFtZSwgZnVuY3Rpb25zW2ldLmZ1
bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwIGIv
V2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4IGMyNDJhNWMuLmE1YjFjYzEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL3htbC9YUGF0
aFBhcnNlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBBeGlzTmFtZXNN
YXAoQXhpc05hbWVzTWFwJiBheGlzTmFtZXMpCiAgICAgICAgIHsgInByZWNlZGluZy1zaWJsaW5n
IiwgU3RlcDo6UHJlY2VkaW5nU2libGluZ0F4aXMgfSwKICAgICAgICAgeyAic2VsZiIsIFN0ZXA6
OlNlbGZBeGlzIH0KICAgICB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2Yo
YXhpc05hbWVMaXN0KSAvIHNpemVvZihheGlzTmFtZUxpc3RbMF0pOyArK2kpCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKGF4aXNOYW1lTGlzdCk7ICsraSkKICAgICAgICAg
YXhpc05hbWVzLnNldChheGlzTmFtZUxpc3RbaV0ubmFtZSwgYXhpc05hbWVMaXN0W2ldLmF4aXMp
OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBmMGZjZDU2Li4zYjAyZjczIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgV1RGOjphcnJheV9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJlbnQgaW1wbGVt
ZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmludGVycHJldEtleUV2ZW50
KToKKyAgICAgICAgKiBzcmMvZ3RrL1dlYklucHV0RXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6Z2RrRXZlbnRUb1dpbmRvd3NLZXlDb2RlKToKKyAgICAgICAgKiB0ZXN0cy9LVVJM
VGVzdC5jcHA6CisgICAgICAgIChDb21wb25lbnRDYXNlOjpURVNUKToKKwogMjAxMC0xMC0yMiAg
SmF5IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApp
bmRleCAxMTk3N2I2Li5iNDhmMTJlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Vk
aXRvckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50
SW1wbC5jcHAKQEAgLTUxNiwxMiArNTE2LDEyIEBAIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudElt
cGw6OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2dCkKICAgICAgICAg
a2V5RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CiAgICAg
ICAgIGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsK
IAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlzaXplKGtleURvd25FbnRy
aWVzKTsgaSsrKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXpl
KGtleURvd25FbnRyaWVzKTsgaSsrKSB7CiAgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAt
PnNldChrZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tp
XS52aXJ0dWFsS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5RG93
bkVudHJpZXNbaV0ubmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJyYXlzaXplKGtleVByZXNzRW50cmllcyk7IGkrKykgeworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShrZXlQcmVzc0VudHJpZXMpOyBpKyspIHsK
ICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0u
bW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleVByZXNzRW50cmllc1tpXS5uYW1lKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVu
dEZhY3RvcnkuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVudEZhY3Rv
cnkuY3BwCmluZGV4IDcxZDFiMzkuLmZmODhiZDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvZ3RrL1dlYklucHV0RXZlbnRGYWN0b3J5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL2d0ay9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAKQEAgLTIzMyw4ICsyMzMsNyBAQCBzdGF0
aWMgaW50IGdka0V2ZW50VG9XaW5kb3dzS2V5Q29kZShjb25zdCBHZGtFdmVudEtleSogZXZlbnQp
CiAgICAgaWYgKHdpbmRvd3NLZXlDb2RlKQogICAgICAgICByZXR1cm4gd2luZG93c0tleUNvZGU7
CiAKLSAgICBjb25zdCBpbnQgdGFibGVTaXplID0gc2l6ZW9mKGhhcmR3YXJlQ29kZVRvR0RLS2V5
dmFsKSAvIHNpemVvZihoYXJkd2FyZUNvZGVUb0dES0tleXZhbFswXSk7Ci0gICAgaWYgKGV2ZW50
LT5oYXJkd2FyZV9rZXljb2RlIDwgdGFibGVTaXplKSB7CisgICAgaWYgKGV2ZW50LT5oYXJkd2Fy
ZV9rZXljb2RlIDwgYXJyYXlfc2l6ZShoYXJkd2FyZUNvZGVUb0dES0tleXZhbCkpIHsKICAgICAg
ICAgaW50IGtleXZhbCA9IGhhcmR3YXJlQ29kZVRvR0RLS2V5dmFsW2V2ZW50LT5oYXJkd2FyZV9r
ZXljb2RlXTsKICAgICAgICAgaWYgKGtleXZhbCkKICAgICAgICAgICAgIHJldHVybiBXZWJDb3Jl
Ojp3aW5kb3dzS2V5Q29kZUZvcktleUV2ZW50KGtleXZhbCk7CmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvS1VSTFRlc3QuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tVUkxU
ZXN0LmNwcAppbmRleCAxNTJkZDMxLi5jNjU1ZjY0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvS1VSTFRlc3QuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LVVJMVGVz
dC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBURVNUKEtVUkxUZXN0LCBEaWZmZXJlbnRHZXR0ZXJz
KQogICAgICAgICB7Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9mb28vYmxhaD9iYXI9YmF6I1x4Y2Vc
eGIxXHhjZVx4YjIiLCAiaHR0cCIsICJ3d3cuZ29vZ2xlLmNvbSIsIDAsICIiLCAwLCAiL2Zvby9i
bGFoLyIsICJibGFoIiwgImJhcj1iYXoiLCAiXHhjZVx4YjFceGNlXHhiMiJ9LAogICAgIH07CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShjYXNlcyk7IGkrKykgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShjYXNlcyk7IGkrKykgewogICAgICAg
ICBXZWJDb3JlOjpLVVJMIGt1cmwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBjYXNlc1tpXS51
cmwpOwogCiAgICAgICAgIEVYUEVDVF9FUShjYXNlc1tpXS5wcm90b2NvbCwga3VybC5wcm90b2Nv
bCgpKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKaW5kZXggNDZhODBkZi4uYTNkODliMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0x
MC0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV1RGOjphcnJheV9zaXpl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyOAor
CisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGFuZCB1c2FnZXMu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjppbnRlcnByZXRLZXlFdmVudCk6CisKIDIwMTAt
MTAtMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5jcHAKaW5kZXggYTYzYjcxMi4uNmY4MjFjOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcApAQCAtMjkyLDggKzI5Miw2IEBAIHN0YXRp
YyBjb25zdCBLZXlQcmVzc0VudHJ5IGtleVByZXNzRW50cmllc1tdID0gewogICAgIHsgJ1xyJywg
ICBBbHRLZXkgfCBTaGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAogfTsKIAotI2RlZmluZSBBUlJBWVNJWkUoYXJyYXkpIChzaXplb2YoYXJy
YXkpIC8gc2l6ZW9mKChhcnJheSlbMF0pKQotCiBjb25zdCBjaGFyKiBFZGl0b3JDbGllbnRFZmw6
OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIEFT
U0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCk7CkBAIC0zMDUsMTAgKzMwMywx
MCBAQCBjb25zdCBjaGFyKiBFZGl0b3JDbGllbnRFZmw6OmludGVycHJldEtleUV2ZW50KGNvbnN0
IEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAgPSBuZXcg
SGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcCA9
IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwogCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBBUlJBWVNJWkUoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleURvd25FbnRyaWVzKTsgaSsrKQogICAg
ICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZp
ZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNb
aV0ubmFtZSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZU0laRShr
ZXlQcmVzc0VudHJpZXMpOyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBh
cnJheV9zaXplKGtleVByZXNzRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtleVByZXNzQ29t
bWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJl
c3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CmluZGV4IGFmNDVhNjMuLjczZThmNDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMjMg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURjo6YXJyYXlfc2l6ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAg
ICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisg
ICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKGNhY2hlTW9kZWxG
b3JNYWluQnVuZGxlKToKKwogMjAxMC0xMC0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQppbmRleCBjY2ZiNjMyLi41MmM0YjliIDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCkBAIC0xMTcsMTEgKzExNywxMSBAQCBzdGF0aWMgV2ViQ2FjaGVN
b2RlbCBjYWNoZU1vZGVsRm9yTWFpbkJ1bmRsZSh2b2lkKQogICAgIFdlYkNhY2hlTW9kZWwgY2Fj
aGVNb2RlbDsKIAogICAgIGNvbnN0IGNoYXIqIGJ1bmRsZUlEID0gW1tbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0gVVRGOFN0cmluZ107Ci0gICAgaWYgKGNvbnRhaW5zKGRv
Y3VtZW50Vmlld2VySURzLCBzaXplb2YoZG9jdW1lbnRWaWV3ZXJJRHMpIC8gc2l6ZW9mKGRvY3Vt
ZW50Vmlld2VySURzWzBdKSwgYnVuZGxlSUQpKQorICAgIGlmIChjb250YWlucyhkb2N1bWVudFZp
ZXdlcklEcywgYXJyYXlfc2l6ZShkb2N1bWVudFZpZXdlcklEcyksIGJ1bmRsZUlEKSkKICAgICAg
ICAgY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKLSAgICBlbHNlIGlm
IChjb250YWlucyhkb2N1bWVudEJyb3dzZXJJRHMsIHNpemVvZihkb2N1bWVudEJyb3dzZXJJRHMp
IC8gc2l6ZW9mKGRvY3VtZW50QnJvd3NlcklEc1swXSksIGJ1bmRsZUlEKSkKKyAgICBlbHNlIGlm
IChjb250YWlucyhkb2N1bWVudEJyb3dzZXJJRHMsIGFycmF5X3NpemUoZG9jdW1lbnRCcm93c2Vy
SURzKSwgYnVuZGxlSUQpKQogICAgICAgICBjYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3Vt
ZW50QnJvd3NlcjsKLSAgICBlbHNlIGlmIChjb250YWlucyhwcmltYXJ5V2ViQnJvd3NlcklEcywg
c2l6ZW9mKHByaW1hcnlXZWJCcm93c2VySURzKSAvIHNpemVvZihwcmltYXJ5V2ViQnJvd3NlcklE
c1swXSksIGJ1bmRsZUlEKSkKKyAgICBlbHNlIGlmIChjb250YWlucyhwcmltYXJ5V2ViQnJvd3Nl
cklEcywgYXJyYXlfc2l6ZShwcmltYXJ5V2ViQnJvd3NlcklEcyksIGJ1bmRsZUlEKSkKICAgICAg
ICAgY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjsKICAgICBlbHNl
IHsKICAgICAgICAgYm9vbCBpc0xlZ2FjeUFwcCA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VC
S0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9DQUNIRV9NT0RFTF9BUEkpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRl
eCAyMTc3YjQxLi5mNzQ3NTAxIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTEyNyw4ICsxMTI3LDggQEAg
dm9pZCBRV2ViUGFnZVByaXZhdGU6OmR5bmFtaWNQcm9wZXJ0eUNoYW5nZUV2ZW50KFFEeW5hbWlj
UHJvcGVydHlDaGFuZ2VFdmVudCogZXYKICAgICAgICAgfTsKIAogICAgICAgICBRU3RyaW5nIHAg
PSBxLT5wcm9wZXJ0eSgiX3FfUmVwYWludFRocm90dGxpbmdQcmVzZXQiKS50b1N0cmluZygpOwot
ICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZW9mKHByZXNldHMpIC8gc2l6ZW9mKHByZXNl
dHNbMF0pOyBpKyspIHsKLSAgICAgICAgICAgIGlmKHAgPT0gcHJlc2V0c1tpXS5uYW1lKSB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShwcmVzZXRzKTsgKytpKSB7
CisgICAgICAgICAgICBpZiAocCA9PSBwcmVzZXRzW2ldLm5hbWUpIHsKICAgICAgICAgICAgICAg
ICBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nRGVmZXJyZWRSZXBhaW50RGVsYXkoCiAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXRzW2ldLmRlZmVycmVkUmVwYWludERlbGF5KTsK
ICAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nbkluaXRpYWxE
ZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcoCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5NzBiMDlkLi4zMjVmNjNmIDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgV1RGOjphcnJheV9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJlbnQgaW1w
bGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpkeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCiAyMDEwLTEw
LTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwCmluZGV4IGEwYjIzMzAuLmMwYzhkZjggMTAwNjQ0Ci0tLSBhL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTEzMDYsOCArMTMw
Niw2IEBAIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHFzdHlsZVNoZWV0UHJvcGVydGllc1td
ID0gewogICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodAogfTsKIAotY29uc3QgdW5zaWduZWQgbnVt
cVN0eWxlU2hlZXRQcm9wZXJ0aWVzID0gc2l6ZW9mKHFzdHlsZVNoZWV0UHJvcGVydGllcykgLyBz
aXplb2YocXN0eWxlU2hlZXRQcm9wZXJ0aWVzWzBdKTsKLQogY2xhc3MgUXRQbHVnaW5XaWRnZXQ6
IHB1YmxpYyBXaWRnZXQKIHsKIHB1YmxpYzoKQEAgLTE0NDcsNyArMTQ0NSw3IEBAIFBhc3NSZWZQ
dHI8V2lkZ2V0PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6
ZSYgcGx1Z2luU2l6ZSwKICAgICAgICAgICAgIGlmICghc3R5bGVTaGVldC5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgc3R5bGVTaGVldCArPSBRTGF0aW4xQ2hhcignOycpOwogCi0gICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtcVN0eWxlU2hlZXRQcm9wZXJ0aWVzOyAr
K2kpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShxc3R5
bGVTaGVldFByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5ID0gcXN0eWxlU2hlZXRQcm9wZXJ0aWVzW2ldOwogCiAgICAgICAgICAgICAgICAg
c3R5bGVTaGVldCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKGdldFByb3BlcnR5TmFtZShwcm9wZXJ0
eSkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCBlOTI3ZDE1Li5hYmUzZGMyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTEw
LTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXVEY6OmFycmF5X3NpemUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODI4CisK
KyAgICAgICAgVW5pZnkgdGhlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzYWdlcy4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAg
ICAgICAgKGlzUHJlSW5zcGVjdEVsZW1lbnRUYWdTYWZhcmkpOgorICAgICAgICAqIFdlYlVSTFJl
c3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpzdWdnZXN0ZWRGaWxlRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmludGVycHJl
dEtleUV2ZW50KToKKwogMjAxMC0xMC0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IHRoZSBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBhYjFmNzllLi5jNzg1
NzgzIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51
Q2xpZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgYm9vbCBpc1ByZUluc3BlY3RFbGVt
ZW50VGFnU2FmYXJpKElXZWJVSURlbGVnYXRlKiB1aURlbGVnYXRlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBUQ0hBUiBtb2R1bGVQYXRoW01BWF9QQVRIXTsKLSAgICBEV09SRCBsZW5n
dGggPSA6OkdldE1vZHVsZUZpbGVOYW1lKDAsIG1vZHVsZVBhdGgsIF9jb3VudG9mKG1vZHVsZVBh
dGgpKTsKKyAgICBEV09SRCBsZW5ndGggPSA6OkdldE1vZHVsZUZpbGVOYW1lKDAsIG1vZHVsZVBh
dGgsIGFycmF5X3NpemUobW9kdWxlUGF0aCkpOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3Bw
IGIvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggNjQ0ZTFkOC4uNWQwNzg3MSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKKysrIGIvV2ViS2l0L3dp
bi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTQ0MCw3ICs0NDAsNyBAQCBIUkVTVUxUIFdlYlVSTFJl
c3BvbnNlOjpzdWdnZXN0ZWRGaWxlRXh0ZW5zaW9uKEJTVFIgKnJlc3VsdCkKICAgICAgICAgaWYg
KCFlcnIpIHsKICAgICAgICAgICAgIERXT1JEIGtleVR5cGUgPSBSRUdfU1o7CiAgICAgICAgICAg
ICBUQ0hBUiBleHRlbnNpb25bTUFYX1BBVEhdOwotICAgICAgICAgICAgRFdPUkQga2V5U2l6ZSA9
IHNpemVvZihleHRlbnNpb24pL3NpemVvZihleHRlbnNpb25bMF0pOworICAgICAgICAgICAgRFdP
UkQga2V5U2l6ZSA9IGFycmF5X3NpemUoZXh0ZW5zaW9uKTsKICAgICAgICAgICAgIGVyciA9IFJl
Z1F1ZXJ5VmFsdWVFeChzdWJLZXksIFRFWFQoIkV4dGVuc2lvbiIpLCAwLCAma2V5VHlwZSwgKExQ
QllURSlleHRlbnNpb24sICZrZXlTaXplKTsKICAgICAgICAgICAgIGlmICghZXJyICYmIGtleVR5
cGUgIT0gUkVHX1NaKQogICAgICAgICAgICAgICAgIGVyciA9IEVSUk9SX0lOVkFMSURfREFUQTsK
ZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCmluZGV4IGE2YzNjYjQuLjQ5M2Y3MDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMTgzMywxMCArMTgzMywxMCBA
QCBjb25zdCBjaGFyKiBXZWJWaWV3OjppbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2
ZW50KiBldnQpCiAgICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwg
Y29uc3QgY2hhcio+OwogICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8
aW50LCBjb25zdCBjaGFyKj47CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9j
b3VudG9mKGtleURvd25FbnRyaWVzKTsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXJyYXlfc2l6ZShrZXlEb3duRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtleURv
d25Db21tYW5kc01hcC0+c2V0KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtl
eURvd25FbnRyaWVzW2ldLnZpcnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOwogCi0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBfY291bnRvZihrZXlQcmVzc0VudHJpZXMp
OyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleVBy
ZXNzRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChr
ZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNo
YXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luY2UvQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCAyZTA1
ODVkLi5jYjk0NmZhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMC0yMyAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV1RGOjphcnJheV9zaXplCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVu
aWZ5IHRoZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkVkaXRvckNsaWVudFdpbkNFOjppbnRlcnByZXRLZXlFdmVudCk6CisKIDIwMTAtMTAtMjIgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMg
Q2FybHNzb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50V2luQ0UuY3BwIGIvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFdpbkNFLmNwcAppbmRleCBiOWU2ZmIxLi5lZDFhZTJjIDEwMDY0NAotLS0gYS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCisrKyBiL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKQEAgLTMxMywxMCArMzEzLDEw
IEBAIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudFdpbkNFOjppbnRlcnByZXRLZXlFdmVudChjb25z
dCBLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwID0gbmV3
IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CiAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAg
PSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKIAotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgX2NvdW50b2Yoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleURvd25FbnRyaWVzKTsgaSsrKQogICAg
ICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZp
ZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNb
aV0ubmFtZSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9jb3VudG9mKGtl
eVByZXNzRW50cmllcyk7IGkrKykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFy
cmF5X3NpemUoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQogICAgICAgICAgICAga2V5UHJlc3NDb21t
YW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlQcmVz
c0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tpXS5uYW1lKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NGY3N2UwOC4uNTBmNjU2OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgV1RGOjphcnJheV9zaXplCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRo
ZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvd2luL1BsdWdpbkluZm9TdG9yZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNh
ZmFyaVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRNb3ppbGxhUGx1Z2lu
RGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViS2l0OjphZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVn
aW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3JpZXMp
OgorICAgICAgICAoV2ViS2l0OjphZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOgorCiAyMDEwLTEwLTIxICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBTdHViIG91dCBXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC4KZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVy
L3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIv
d2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAKaW5kZXggYTFjOWFhZi4uOWU2YzgzOCAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5j
cHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldp
bi5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nl
c3MoKQogICAgICAgICByZXR1cm47CiAKICAgICBXQ0hBUiBwYXRoU3RyW01BWF9QQVRIXTsKLSAg
ICBpZiAoITo6R2V0TW9kdWxlRmlsZU5hbWVXKHdlYktpdE1vZHVsZSwgcGF0aFN0ciwgX2NvdW50
b2YocGF0aFN0cikpKQorICAgIGlmICghOjpHZXRNb2R1bGVGaWxlTmFtZVcod2ViS2l0TW9kdWxl
LCBwYXRoU3RyLCBhcnJheV9zaXplKHBhdGhTdHIpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
OjpQYXRoUmVtb3ZlRmlsZVNwZWNXKHBhdGhTdHIpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcCBiL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvd2luL1BsdWdpbkluZm9TdG9yZVdpbi5jcHAKaW5kZXggNjQ1YjRjMC4uMTI3
NTkwYSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5m
b1N0b3JlV2luLmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5J
bmZvU3RvcmVXaW4uY3BwCkBAIC04Miw5ICs4Miw5IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHNh
ZmFyaVBsdWdpbnNEaXJlY3RvcnkoKQogICAgICAgICBjYWNoZWRQbHVnaW5EaXJlY3RvcnkgPSB0
cnVlOwogCiAgICAgICAgIFdDSEFSIG1vZHVsZUZpbGVOYW1lU3RyW01BWF9QQVRIXTsKLSAgICAg
ICAgaW50IG1vZHVsZUZpbGVOYW1lTGVuID0gOjpHZXRNb2R1bGVGaWxlTmFtZVcoMCwgbW9kdWxl
RmlsZU5hbWVTdHIsIF9jb3VudG9mKG1vZHVsZUZpbGVOYW1lU3RyKSk7CisgICAgICAgIGludCBt
b2R1bGVGaWxlTmFtZUxlbiA9IDo6R2V0TW9kdWxlRmlsZU5hbWVXKDAsIG1vZHVsZUZpbGVOYW1l
U3RyLCBhcnJheV9zaXplKG1vZHVsZUZpbGVOYW1lU3RyKSk7CiAKLSAgICAgICAgaWYgKCFtb2R1
bGVGaWxlTmFtZUxlbiB8fCBtb2R1bGVGaWxlTmFtZUxlbiA9PSBfY291bnRvZihtb2R1bGVGaWxl
TmFtZVN0cikpCisgICAgICAgIGlmICghbW9kdWxlRmlsZU5hbWVMZW4gfHwgbW9kdWxlRmlsZU5h
bWVMZW4gPT0gYXJyYXlfc2l6ZShtb2R1bGVGaWxlTmFtZVN0cikpCiAgICAgICAgICAgICByZXR1
cm4gcGx1Z2luc0RpcmVjdG9yeTsKIAogICAgICAgICBpZiAoITo6UGF0aFJlbW92ZUZpbGVTcGVj
Vyhtb2R1bGVGaWxlTmFtZVN0cikpCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3Jp
ZXMpCiAKICAgICAvLyBFbnVtZXJhdGUgc3Via2V5cwogICAgIGZvciAoaW50IGkgPSAwOzsgaSsr
KSB7Ci0gICAgICAgIERXT1JEIG5hbWVMZW4gPSBfY291bnRvZihuYW1lKTsKKyAgICAgICAgRFdP
UkQgbmFtZUxlbiA9IGFycmF5X3NpemUobmFtZSk7CiAgICAgICAgIHJlc3VsdCA9IDo6UmVnRW51
bUtleUV4VyhrZXksIGksIG5hbWUsICZuYW1lTGVuLCAwLCAwLCAwLCAmbGFzdE1vZGlmaWVkKTsK
IAogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCkBAIC0xNDMsOSArMTQzLDkg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9y
eShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKIHsKICAgICAvLyBUaGUgbmV3IFdNUCBGaXJlZm94
IHBsdWdpbiBpcyBpbnN0YWxsZWQgaW4gXFBGaWxlc1xQbHVnaW5zIGlmIGl0IGNhbid0IGZpbmQg
YW55IEZpcmVmb3ggaW5zdGFsbHMKICAgICBXQ0hBUiBwbHVnaW5EaXJlY3RvcnlTdHJbTUFYX1BB
VEggKyAxXTsKLSAgICBEV09SRCBwbHVnaW5EaXJlY3RvcnlTaXplID0gOjpFeHBhbmRFbnZpcm9u
bWVudFN0cmluZ3NXKEwiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQbHVnaW5zIiwgcGx1Z2luRGly
ZWN0b3J5U3RyLCBfY291bnRvZihwbHVnaW5EaXJlY3RvcnlTdHIpKTsKKyAgICBEV09SRCBwbHVn
aW5EaXJlY3RvcnlTaXplID0gOjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKEwiJVNZU1RFTURS
SVZFJVxcUEZpbGVzXFxQbHVnaW5zIiwgcGx1Z2luRGlyZWN0b3J5U3RyLCBhcnJheV9zaXplKHBs
dWdpbkRpcmVjdG9yeVN0cikpOwogCi0gICAgaWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYm
IHBsdWdpbkRpcmVjdG9yeVNpemUgPD0gX2NvdW50b2YocGx1Z2luRGlyZWN0b3J5U3RyKSkKKyAg
ICBpZiAocGx1Z2luRGlyZWN0b3J5U2l6ZSA+IDAgJiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBh
cnJheV9zaXplKHBsdWdpbkRpcmVjdG9yeVN0cikpCiAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVu
ZChTdHJpbmcocGx1Z2luRGlyZWN0b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOwog
CiAgICAgRFdPUkQgdHlwZTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
YWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3Rvcmll
cykKIAogICAgIC8vIEVudW1lcmF0ZSBzdWJrZXlzCiAgICAgZm9yIChpbnQgaSA9IDA7OyBpKysp
IHsKLSAgICAgICAgRFdPUkQgbmFtZUxlbiA9IF9jb3VudG9mKG5hbWUpOworICAgICAgICBEV09S
RCBuYW1lTGVuID0gYXJyYXlfc2l6ZShuYW1lKTsKICAgICAgICAgcmVzdWx0ID0gOjpSZWdFbnVt
S2V5RXhXKGtleSwgaSwgbmFtZSwgJm5hbWVMZW4sIDAsIDAsIDAsICZsYXN0TW9kaWZpZWQpOwog
CiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKQEAgLTIyMiw3ICsyMjIsNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3Rv
cjxTdHJpbmc+JiBkaXJlY3RvcmllcykKICNpZiAhT1MoV0lOQ0UpCiAgICAgV0NIQVIgc3lzdGVt
RGlyZWN0b3J5U3RyW01BWF9QQVRIXTsKIAotICAgIGlmICghOjpHZXRTeXN0ZW1EaXJlY3RvcnlX
KHN5c3RlbURpcmVjdG9yeVN0ciwgX2NvdW50b2Yoc3lzdGVtRGlyZWN0b3J5U3RyKSkpCisgICAg
aWYgKCE6OkdldFN5c3RlbURpcmVjdG9yeVcoc3lzdGVtRGlyZWN0b3J5U3RyLCBhcnJheV9zaXpl
KHN5c3RlbURpcmVjdG9yeVN0cikpKQogICAgICAgICByZXR1cm47CiAKICAgICBXQ0hBUiBtYWNy
b21lZGlhRGlyZWN0b3J5U3RyW01BWF9QQVRIXTsKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMg
dm9pZCBhZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeShIS0VZIHJvb3RLZXksIFZlY3RvcjxTdHJp
bmc+JiBwYXRocykKICAgICBmb3IgKHNpemVfdCBpID0gMDsgOyArK2kpIHsKICAgICAgICAgLy8g
TVNETiBzYXlzIHRoYXQga2V5IG5hbWVzIGhhdmUgYSBtYXhpbXVtIGxlbmd0aCBvZiAyNTUgY2hh
cmFjdGVycy4KICAgICAgICAgd2NoYXJfdCBuYW1lWzI1Nl07Ci0gICAgICAgIERXT1JEIG5hbWVM
ZW4gPSBfY291bnRvZihuYW1lKTsKKyAgICAgICAgRFdPUkQgbmFtZUxlbiA9IGFycmF5X3NpemUo
bmFtZSk7CiAgICAgICAgIGlmICg6OlJlZ0VudW1LZXlFeFcoa2V5LCBpLCBuYW1lLCAmbmFtZUxl
biwgMCwgMCwgMCwgMCkgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFrOwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAg
Yi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXggYmJl
MjE4Ni4uNDI1ZmIyMyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L1dlYlBhZ2VXaW4uY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQ
YWdlV2luLmNwcApAQCAtMTU3LDEwICsxNTcsMTAgQEAgY29uc3QgY2hhciogV2ViUGFnZTo6aW50
ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZ0KQogICAgICAgICBrZXlEb3du
Q29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKICAgICAgICAga2V5
UHJlc3NDb21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwogCi0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBfY291bnRvZihrZXlEb3duRW50cmllcyk7IGkr
KykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleURvd25FbnRy
aWVzKTsgKytpKQogICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVu
dHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwg
a2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IF9jb3VudG9mKGtleVByZXNzRW50cmllcyk7IGkrKykKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcnJheV9zaXplKGtleVByZXNzRW50cmllcyk7ICsraSkKICAgICAgICAgICAg
IGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8
IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0ubmFt
ZSk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71657</attachid>
            <date>2010-10-23 16:07:26 -0700</date>
            <delta_ts>2010-10-23 18:18:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32828c.patch</filename>
            <type>text/plain</type>
            <size>102487</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMgYi9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDFlY2ZjN2UuLjU3ZDEwODYgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwpAQCAtMTI3NSw3ICsxMjc1LDcgQEAgaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBBU1NFUlQoY291bnQgPT0gMSk7IC8vIGpzQ0ZT
dHJpbmcgc2hvdWxkIG5vdCBiZSBlbnVtZXJhdGVkCiAKICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50
c0FycmF5VmFsdWVzW10gPSB7IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIDEwKSwgSlNWYWx1
ZU1ha2VOdW1iZXIoY29udGV4dCwgMjApIH07Ci0gICAgbyA9IEpTT2JqZWN0TWFrZUFycmF5KGNv
bnRleHQsIHNpemVvZihhcmd1bWVudHNBcnJheVZhbHVlcykgLyBzaXplb2YoSlNWYWx1ZVJlZiks
IGFyZ3VtZW50c0FycmF5VmFsdWVzLCBOVUxMKTsKKyAgICBvID0gSlNPYmplY3RNYWtlQXJyYXko
Y29udGV4dCwgYXJyYXlfc2l6ZShhcmd1bWVudHNBcnJheVZhbHVlcyksIGFyZ3VtZW50c0FycmF5
VmFsdWVzLCBOVUxMKTsKICAgICBzdHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygibGVuZ3RoIik7CiAgICAgdiA9IEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwgbywgc3Ry
aW5nLCBOVUxMKTsKICAgICBhc3NlcnRFcXVhbHNBc051bWJlcih2LCAyKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCAyMmNkODU0Li4yOWY4MGNjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
KysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMTAt
MjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURjo6YXJyYXlfc2l6ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKwor
ICAgICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgor
CisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKiBwY3JlL3BjcmVfZXhlYy5jcHA6CisgICAg
ICAgIChNYXRjaFN0YWNrOjpNYXRjaFN0YWNrKToKKyAgICAgICAgKiBwY3JlL3BjcmVfdWNwX3Nl
YXJjaGZ1bmNzLmNwcDoKKyAgICAgICAgKGpzY19wY3JlX3VjcF9vdGhlcmNhc2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdExvY2Fs
ZURhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRRdW90ZWRTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6dG9KU09OKToKKyAgICAgICAgKEpTQzo6U3RyaW5n
aWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvU21hbGxT
dHJpbmdzLmNwcDoKKyAgICAgICAgKEpTQzo6U21hbGxTdHJpbmdzOjpTbWFsbFN0cmluZ3MpOgor
ICAgICAgICAqIHJ1bnRpbWUvVVN0cmluZy5jcHA6CisgICAgICAgIChKU0M6OlVTdHJpbmc6Om51
bWJlcik6CisgICAgICAgICogd3RmL0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VE
YXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorICAgICAgICAoV1RGOjphcnJheV9z
aXplKToKKyAgICAgICAgKFdURjo6Yml0d2lzZV9jYXN0KToKKyAgICAgICAgKFdURjo6Yml0Q291
bnQpOgorCiAyMDEwLTEwLTIzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcwMzY5LgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDFjYWRlZjguLjQ2ZDQyOTAg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE0Mzcs
NyArMTQzNyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlv
bkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgICNkZWZpbmUgTElTVF9PUENP
REVfTEFCRUwoaWQsIGxlbmd0aCkgJiZpZCwKICAgICAgICAgICAgICAgICBzdGF0aWMgT3Bjb2Rl
IGxhYmVsc1tdID0geyBGT1JfRUFDSF9PUENPREVfSUQoTElTVF9PUENPREVfTEFCRUwpIH07Ci0g
ICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YobGFiZWxzKSAvIHNp
emVvZihPcGNvZGUpOyArK2kpCisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcnJheV9zaXplKGxhYmVscyk7ICsraSkKICAgICAgICAgICAgICAgICAgICAgbV9vcGNvZGVU
YWJsZVtpXSA9IGxhYmVsc1tpXTsKICAgICAgICAgICAgICN1bmRlZiBMSVNUX09QQ09ERV9MQUJF
TAogICAgICAgICAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAKaW5kZXggZjQ4OTlmMi4uYjIzZTU3YiAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4ZWMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3BjcmUvcGNyZV9leGVjLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHN0cnVjdCBNYXRjaFN0YWNr
IHsKICAgICAgICAgLCBjdXJyZW50RnJhbWUoZnJhbWVzKQogICAgICAgICAsIHNpemUoMSkgLy8g
bWF0Y2goKSBjcmVhdGVzIGFjY2Vzc2VzIHRoZSBmaXJzdCBmcmFtZSB3L28gY2FsbGluZyBwdXNo
TmV3RnJhbWUKICAgICB7Ci0gICAgICAgIEFTU0VSVCgoc2l6ZW9mKGZyYW1lcykgLyBzaXplb2Yo
ZnJhbWVzWzBdKSkgPT0gbnVtRnJhbWVzT25TdGFjayk7CisgICAgICAgIEFTU0VSVChhcnJheV9z
aXplKGZyYW1lcykgPT0gbnVtRnJhbWVzT25TdGFjayk7CiAgICAgfQogICAgIAogICAgIE1hdGNo
RnJhbWUgZnJhbWVzW251bUZyYW1lc09uU3RhY2tdOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcGNyZS9wY3JlX3VjcF9zZWFyY2hmdW5jcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wY3JlL3Bj
cmVfdWNwX3NlYXJjaGZ1bmNzLmNwcAppbmRleCA1NTkyODY1Li41N2JiZGQ4IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfdWNwX3NlYXJjaGZ1bmNzLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9wY3JlL3BjcmVfdWNwX3NlYXJjaGZ1bmNzLmNwcApAQCAtNjMsNyArNjMsNyBA
QCBSZXR1cm5zOiAgICAgIHRoZSBvdGhlciBjYXNlIG9yIC0xIGlmIG5vbmUKIGludCBqc2NfcGNy
ZV91Y3Bfb3RoZXJjYXNlKHVuc2lnbmVkIGMpCiB7CiAgICAgaW50IGJvdCA9IDA7Ci0gICAgaW50
IHRvcCA9IHNpemVvZih1Y3BfdGFibGUpIC8gc2l6ZW9mKGNub2RlKTsKKyAgICBpbnQgdG9wID0g
YXJyYXlfc2l6ZSh1Y3BfdGFibGUpOwogICAgIGludCBtaWQ7CiAgICAgCiAgICAgLyogVGhlIHRh
YmxlIGlzIHNlYXJjaGVkIHVzaW5nIGEgYmluYXJ5IGNob3AuIFlvdSBtaWdodCB0aGluayB0aGF0
IHVzaW5nCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCA0OTgz
ZjI5Li44YzA4MjFkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90
b3R5cGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAK
QEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNT
dGF0ZSogZXhlYywgRGF0ZUluc3RhbmNlKiwgZG91YmxlIHRpbWVJbk1pbAogICAgIC8vIFdlIHRy
dW5jYXRlIHRoZSBzdHJpbmcgcmV0dXJuZWQgZnJvbSBDRkRhdGVGb3JtYXR0ZXIgaWYgaXQncyBh
YnN1cmRseSBsb25nICg+IDIwMCBjaGFyYWN0ZXJzKS4KICAgICAvLyBUaGF0J3Mgbm90IGdyZWF0
IGVycm9yIGhhbmRsaW5nLCBidXQgaXQganVzdCB3b24ndCBoYXBwZW4gc28gaXQgZG9lc24ndCBt
YXR0ZXIuCiAgICAgVUNoYXIgYnVmZmVyWzIwMF07Ci0gICAgY29uc3Qgc2l6ZV90IGJ1ZmZlckxl
bmd0aCA9IHNpemVvZihidWZmZXIpIC8gc2l6ZW9mKGJ1ZmZlclswXSk7CisgICAgY29uc3Qgc2l6
ZV90IGJ1ZmZlckxlbmd0aCA9IGFycmF5X3NpemUoYnVmZmVyKTsKICAgICBzaXplX3QgbGVuZ3Ro
ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKICAgICBBU1NFUlQobGVuZ3RoIDw9IGJ1ZmZl
ckxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCA+IGJ1ZmZlckxlbmd0aCkKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggOTAzZTU3My4uZGEwNmQ4MyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwNyw3ICszMDcsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIkpTT04iKSwgbmV3IChleGVjKSBK
U09OT2JqZWN0KHRoaXMsIEpTT05PYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFBy
b3RvdHlwZSkpLCBEb250RW51bSB8IERvbnREZWxldGUpCiAgICAgfTsKIAotICAgIGFkZFN0YXRp
Y0dsb2JhbHMoc3RhdGljR2xvYmFscywgc2l6ZW9mKHN0YXRpY0dsb2JhbHMpIC8gc2l6ZW9mKEds
b2JhbFByb3BlcnR5SW5mbykpOworICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywg
YXJyYXlfc2l6ZShzdGF0aWNHbG9iYWxzKSk7CiAKICAgICAvLyBTZXQgZ2xvYmFsIGZ1bmN0aW9u
cy4KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMDc5NDE4OS4uYzQ5
NWM0ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zMjksNyArMzI5
LDcgQEAgdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBjb25zdCBVU3RyaW5nJiB2YWwKICAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciBoZXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKICAgICAgICAgICAgICAg
ICBVQ2hhciBjaCA9IGRhdGFbaV07CiAgICAgICAgICAgICAgICAgVUNoYXIgaGV4W10gPSB7ICdc
XCcsICd1JywgaGV4RGlnaXRzWyhjaCA+PiAxMikgJiAweEZdLCBoZXhEaWdpdHNbKGNoID4+IDgp
ICYgMHhGXSwgaGV4RGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0sIGhleERpZ2l0c1tjaCAmIDB4Rl0g
fTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgsIHNpemVvZihoZXgpIC8gc2l6
ZW9mKFVDaGFyKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4LCBhcnJheV9z
aXplKGhleCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAt
MzU3LDcgKzM1Nyw3IEBAIGlubGluZSBKU1ZhbHVlIFN0cmluZ2lmaWVyOjp0b0pTT04oSlNWYWx1
ZSB2YWx1ZSwgY29uc3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DCiAgICAgICAgIHJldHVybiB2
YWx1ZTsKIAogICAgIEpTVmFsdWUgbGlzdFtdID0geyBwcm9wZXJ0eU5hbWUudmFsdWUobV9leGVj
KSB9OwotICAgIEFyZ0xpc3QgYXJncyhsaXN0LCBzaXplb2YobGlzdCkgLyBzaXplb2YoSlNWYWx1
ZSkpOworICAgIEFyZ0xpc3QgYXJncyhsaXN0LCBhcnJheV9zaXplKGxpc3QpKTsKICAgICByZXR1
cm4gY2FsbChtX2V4ZWMsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB2YWx1ZSwgYXJncyk7
CiB9CiAKQEAgLTM3MSw3ICszNzEsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0
cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJgogICAgIC8v
IENhbGwgdGhlIHJlcGxhY2VyIGZ1bmN0aW9uLgogICAgIGlmIChtX3JlcGxhY2VyQ2FsbFR5cGUg
IT0gQ2FsbFR5cGVOb25lKSB7CiAgICAgICAgIEpTVmFsdWUgbGlzdFtdID0geyBwcm9wZXJ0eU5h
bWUudmFsdWUobV9leGVjKSwgdmFsdWUgfTsKLSAgICAgICAgQXJnTGlzdCBhcmdzKGxpc3QsIHNp
emVvZihsaXN0KSAvIHNpemVvZihKU1ZhbHVlKSk7CisgICAgICAgIEFyZ0xpc3QgYXJncyhsaXN0
LCBhcnJheV9zaXplKGxpc3QpKTsKICAgICAgICAgdmFsdWUgPSBjYWxsKG1fZXhlYywgbV9yZXBs
YWNlciwgbV9yZXBsYWNlckNhbGxUeXBlLCBtX3JlcGxhY2VyQ2FsbERhdGEsIGhvbGRlciwgYXJn
cyk7CiAgICAgICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZ2lmeUZhaWxlZDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U21hbGxTdHJpbmdzLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmNw
cAppbmRleCBmMzU4NzI3Li5iZjRiZjcyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0
cmluZ3MuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNtYWxsU3RyaW5nc1N0b3JhZ2U6OlNtYWxsU3Ry
aW5nc1N0b3JhZ2UoKQogCiBTbWFsbFN0cmluZ3M6OlNtYWxsU3RyaW5ncygpCiB7Ci0gICAgQ09N
UElMRV9BU1NFUlQobnVtQ2hhcmFjdGVyc1RvU3RvcmUgPT0gc2l6ZW9mKG1fc2luZ2xlQ2hhcmFj
dGVyU3RyaW5ncykgLyBzaXplb2YobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzWzBdKSwgSXNOdW1D
aGFyYWN0ZXJzQ29uc3RJblN5bmNXaXRoQ2xhc3NVc2FnZSk7CisgICAgQ09NUElMRV9BU1NFUlQo
bnVtQ2hhcmFjdGVyc1RvU3RvcmUgPT0gYXJyYXlfc2l6ZShtX3NpbmdsZUNoYXJhY3RlclN0cmlu
Z3MpLCBJc051bUNoYXJhY3RlcnNDb25zdEluU3luY1dpdGhDbGFzc1VzYWdlKTsKICAgICBjbGVh
cigpOwogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAppbmRleCAxN2NkOWI2Li45MWQz
ODM3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgVVN0
cmluZzo6VVN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogVVN0cmluZyBVU3RyaW5nOjpu
dW1iZXIoaW50IGkpCiB7CiAgICAgVUNoYXIgYnVmWzEgKyBzaXplb2YoaSkgKiAzXTsKLSAgICBV
Q2hhciogZW5kID0gYnVmICsgc2l6ZW9mKGJ1ZikgLyBzaXplb2YoVUNoYXIpOworICAgIFVDaGFy
KiBlbmQgPSBidWYgKyBhcnJheV9zaXplKGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAg
ICBpZiAoaSA9PSAwKQpAQCAtMTE5LDcgKzExOSw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVy
KGludCBpKQogVVN0cmluZyBVU3RyaW5nOjpudW1iZXIobG9uZyBsb25nIGkpCiB7CiAgICAgVUNo
YXIgYnVmWzEgKyBzaXplb2YoaSkgKiAzXTsKLSAgICBVQ2hhciogZW5kID0gYnVmICsgc2l6ZW9m
KGJ1ZikgLyBzaXplb2YoVUNoYXIpOworICAgIFVDaGFyKiBlbmQgPSBidWYgKyBhcnJheV9zaXpl
KGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAgICBpZiAoaSA9PSAwKQpAQCAtMTUyLDcg
KzE1Miw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKGxvbmcgbG9uZyBpKQogVVN0cmluZyBV
U3RyaW5nOjpudW1iZXIodW5zaWduZWQgdSkKIHsKICAgICBVQ2hhciBidWZbc2l6ZW9mKHUpICog
M107Ci0gICAgVUNoYXIqIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsK
KyAgICBVQ2hhciogZW5kID0gYnVmICsgYXJyYXlfc2l6ZShidWYpOwogICAgIFVDaGFyKiBwID0g
ZW5kOwogCiAgICAgaWYgKHUgPT0gMCkKQEAgLTE3MCw3ICsxNzAsNyBAQCBVU3RyaW5nIFVTdHJp
bmc6Om51bWJlcih1bnNpZ25lZCB1KQogVVN0cmluZyBVU3RyaW5nOjpudW1iZXIobG9uZyBsKQog
ewogICAgIFVDaGFyIGJ1ZlsxICsgc2l6ZW9mKGwpICogM107Ci0gICAgVUNoYXIqIGVuZCA9IGJ1
ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBVQ2hhciogZW5kID0gYnVmICsg
YXJyYXlfc2l6ZShidWYpOwogICAgIFVDaGFyKiBwID0gZW5kOwogCiAgICAgaWYgKGwgPT0gMCkK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAgYi9KYXZhU2NyaXB0
Q29yZS93dGYvRGF0ZU1hdGguY3BwCmluZGV4IGQwMDU4NTkuLjU3M2JmMDkgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvd3Rm
L0RhdGVNYXRoLmNwcApAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VEYXRl
RnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBkYXRlU3RyaW5nLCBib29s
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBoYXZlVFogPSB0cnVlOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnQoc2l6ZW9mKGtub3duX3pv
bmVzKSAvIHNpemVvZihLbm93blpvbmUpKTsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGFycmF5X3NpemUoa25vd25fem9uZXMpOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBpZiAoMCA9PSBzdHJuY2FzZWNtcChkYXRlU3RyaW5nLCBrbm93bl96b25lc1tpXS50ek5h
bWUsIHN0cmxlbihrbm93bl96b25lc1tpXS50ek5hbWUpKSkgewogICAgICAgICAgICAgICAgICAg
ICBvZmZzZXQgPSBrbm93bl96b25lc1tpXS50ek9mZnNldDsKICAgICAgICAgICAgICAgICAgICAg
ZGF0ZVN0cmluZyArPSBzdHJsZW4oa25vd25fem9uZXNbaV0udHpOYW1lKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgKaW5kZXggOTQ2MTkyYi4uZDQyOWRlMiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTU2
MywxMSArNTYzLDYgQEAKICNkZWZpbmUgX0lOQ19BU1NFUlQgICAgLyogZGlzYWJsZSAiYXNzZXJ0
LmgiICovCiAjZGVmaW5lIGFzc2VydCh4KQogCi0vKiBfY291bnRvZiBpcyBvbmx5IGluY2x1ZGVk
IGluIENFNjsgZm9yIENFNSB3ZSBuZWVkIHRvIGRlZmluZSBpdCBvdXJzZWxmICovCi0jaWZuZGVm
IF9jb3VudG9mCi0jZGVmaW5lIF9jb3VudG9mKHgpIChzaXplb2YoeCkgLyBzaXplb2YoKHgpWzBd
KSkKLSNlbmRpZgotCiAjZW5kaWYgIC8qIE9TKFdJTkNFKSAmJiAhUExBVEZPUk0oUVQpICovCiAK
ICNpZiBQTEFURk9STShRVCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJF
eHRyYXMuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBkNTk0YzE3
Li41NTRlYWZhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC04NywyOSArODcsMzcg
QEAgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25zdCB2b2lkKiBwdHIpCiAKIG5hbWVz
cGFjZSBXVEYgewogCi0gICAgLyoKLSAgICAgKiBDKysncyBpZGVhIG9mIGEgcmVpbnRlcnByZXRf
Y2FzdCBsYWNrcyBzdWZmaWNpZW50IGNvam9uZXMuCi0gICAgICovCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVE8sIHR5cGVuYW1lIEZST00+Ci0gICAgVE8gYml0d2lzZV9jYXN0KEZST00gZnJvbSkK
LSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihUTykgPT0gc2l6ZW9mKEZST00p
LCBXVEZfYml0d2lzZV9jYXN0X3NpemVvZl9jYXN0ZWRfdHlwZXNfaXNfZXF1YWwpOwotICAgICAg
ICB1bmlvbiB7Ci0gICAgICAgICAgICBGUk9NIGZyb207Ci0gICAgICAgICAgICBUTyB0bzsKLSAg
ICAgICAgfSB1OwotICAgICAgICB1LmZyb20gPSBmcm9tOwotICAgICAgICByZXR1cm4gdS50bzsK
LSAgICB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4+CitpbmxpbmUgc2l6ZV90IGFy
cmF5X3NpemUoY29uc3QgVCAoJilbTl0pCit7CisgICAgcmV0dXJuIE47Cit9CisKKy8qCisgKiBD
KysncyBpZGVhIG9mIGEgcmVpbnRlcnByZXRfY2FzdCBsYWNrcyBzdWZmaWNpZW50IGNvam9uZXMu
CisgKi8KK3RlbXBsYXRlPHR5cGVuYW1lIFRPLCB0eXBlbmFtZSBGUk9NPgoraW5saW5lIFRPIGJp
dHdpc2VfY2FzdChGUk9NIGZyb20pCit7CisgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFRPKSA9
PSBzaXplb2YoRlJPTSksIFdURl9iaXR3aXNlX2Nhc3Rfc2l6ZW9mX2Nhc3RlZF90eXBlc19pc19l
cXVhbCk7CisgICAgdW5pb24geworICAgICAgICBGUk9NIGZyb207CisgICAgICAgIFRPIHRvOwor
ICAgIH0gdTsKKyAgICB1LmZyb20gPSBmcm9tOworICAgIHJldHVybiB1LnRvOworfQogCi0gICAg
Ly8gUmV0dXJucyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYml0cyBzZXQgaW4gJ2JpdHMnLgot
ICAgIGlubGluZSBzaXplX3QgYml0Q291bnQodW5zaWduZWQgYml0cykKLSAgICB7Ci0gICAgICAg
IGJpdHMgPSBiaXRzIC0gKChiaXRzID4+IDEpICYgMHg1NTU1NTU1NSk7Ci0gICAgICAgIGJpdHMg
PSAoYml0cyAmIDB4MzMzMzMzMzMpICsgKChiaXRzID4+IDIpICYgMHgzMzMzMzMzMyk7Ci0gICAg
ICAgIHJldHVybiAoKChiaXRzICsgKGJpdHMgPj4gNCkpICYgMHhGMEYwRjBGKSAqIDB4MTAxMDEw
MSkgPj4gMjQ7Ci0gICAgfQorLy8gUmV0dXJucyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYml0
cyBzZXQgaW4gJ2JpdHMnLgoraW5saW5lIHNpemVfdCBiaXRDb3VudCh1bnNpZ25lZCBiaXRzKQor
eworICAgIGJpdHMgPSBiaXRzIC0gKChiaXRzID4+IDEpICYgMHg1NTU1NTU1NSk7CisgICAgYml0
cyA9IChiaXRzICYgMHgzMzMzMzMzMykgKyAoKGJpdHMgPj4gMikgJiAweDMzMzMzMzMzKTsKKyAg
ICByZXR1cm4gKCgoYml0cyArIChiaXRzID4+IDQpKSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEp
ID4+IDI0OworfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAordXNpbmcgV1RGOjphcnJheV9zaXpl
OworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNjE2NzZhYy4uOGZiMWIyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjYgQEAKKzIwMTAtMTAtMjQg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURjo6YXJyYXlfc2l6ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAg
ICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUFSSUFSb2xlTWFwKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21h
Yy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpK
U0RPTVdpbmRvd0Jhc2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgorICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAqIGNzcy9D
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9u
U2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9u
U2hvcnRoYW5kKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppbml0U2hvcnRoYW5kTWFwKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgICog
ZG9tL0V4Y2VwdGlvbkNvZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RXhjZXB0aW9uQ29k
ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVOb25FZGl0aW5nUHJv
cGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW1w
bGljaXRseVN0eWxlZEVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRyaVN0YXRlT2ZTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAg
ICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6Z2V0Q2Fj
aGVkTWF4SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OnNldENhY2hlZE1h
eEluZGV4KToKKyAgICAgICAgKiBsb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnBhcnNlT25lRlRQTGluZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9y
Ojp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcnRBbGxvd2Vk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMR29vZ2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnBvcnRBbGxvd2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyk6
CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL1VVSUQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1l
RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0
ZUZyb21Gb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjplZGplR3JvdXBG
cm9tRm9ybVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9t
aXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDb2RlcGFnZTo6aWYpOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29y
ZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xs
ZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVyc0NvcmVUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChX
ZWJDb3JlOjpkaXNhYmxlQ29tcG9uZW50c09uY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL21hYy9TaW1wbGVGb250RGF0YUFUU1VJLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
Rm9udERhdGE6OmNoZWNrU2hhcGVzQXJhYmljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVGb250RGF0YTo6Z2V0Q0ZTdHJpbmdBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNo
ZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9udCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0Q2hlY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0
ZUljb25Gb3JGaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxh
eWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGlzYWJsZUNvbXBvbmVudHNPbmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
UVRNb3ZpZS5jcHA6CisgICAgICAgIChRVE1vdmllOjpsb2FkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcnVu
ZUJsYWNrbGlzdGVkQ29kZWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIv
Rm9udFRyYW5zY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFRyYW5zY29kZXI6OkZv
bnRUcmFuc2NvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVz
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFdlYkxvY0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xv
YmFsVVJMQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsVXJsRmlsZURlc2NyaXB0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46OmZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5h
bWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpzYWZlQ3Jl
YXRlRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBwbHVnaW5z
L3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRQbHVnaW5Q
YXRoc0Zyb21SZWdpc3RyeSk6CisgICAgICAgIChXZWJDb3JlOjphZGRXaW5kb3dzTWVkaWFQbGF5
ZXJQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWFjcm9tZWRpYVBsdWdp
bkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6Omhhc1ZhbGlkQXZnQ2hhcldp
ZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwOgorICAgICAgICAqIHN0
b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVRhYmxlcyk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGFyc2VBbmRTa2lwVHlwZSk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKToKKyAgICAg
ICAgKiBzdmcvU1ZHWm9vbUFuZFBhbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5k
UGFuOjpwYXJzZVpvb21BbmRQYW4pOgorICAgICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Y3JlYXRlRnVuY3Rpb25NYXApOgorICAgICAgICAq
IHhtbC9YUGF0aFBhcnNlci5jcHA6CisKIDIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8
cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
IGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDNk
ZGNkYzUuLmRmNzE1ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcAorKysgYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKQEAgLTkzNyw5ICs5MzcsOCBAQCBzdGF0aWMgQVJJQVJvbGVNYXAqIGNyZWF0
ZUFSSUFSb2xlTWFwKCkKICAgICAgICAgeyAidHJlZWl0ZW0iLCBUcmVlSXRlbVJvbGUgfQogICAg
IH07CiAgICAgQVJJQVJvbGVNYXAqIHJvbGVNYXAgPSBuZXcgQVJJQVJvbGVNYXA7Ci0gICAgCi0g
ICAgY29uc3QgdW5zaWduZWQgbnVtUm9sZXMgPSBzaXplb2Yocm9sZXMpIC8gc2l6ZW9mKHJvbGVz
WzBdKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUm9sZXM7ICsraSkKKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShyb2xlcyk7ICsraSkKICAgICAgICAg
cm9sZU1hcC0+c2V0KHJvbGVzW2ldLmFyaWFSb2xlLCByb2xlc1tpXS53ZWJjb3JlUm9sZSk7CiAg
ICAgcmV0dXJuIHJvbGVNYXA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCBlNGI3ZDhlLi44NjliODRk
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyLm1tCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0KQEAgLTExNzksOSArMTE3OSw4IEBAIHN0YXRpYyBjb25zdCBBY2Nl
c3NpYmlsaXR5Um9sZU1hcCYgY3JlYXRlQWNjZXNzaWJpbGl0eVJvbGVNYXAoKQogICAgICAgICB7
IExpc3RJdGVtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0KICAgICB9OwogICAgIEFj
Y2Vzc2liaWxpdHlSb2xlTWFwJiByb2xlTWFwID0gKm5ldyBBY2Nlc3NpYmlsaXR5Um9sZU1hcDsK
LSAgICAKLSAgICBjb25zdCB1bnNpZ25lZCBudW1Sb2xlcyA9IHNpemVvZihyb2xlcykgLyBzaXpl
b2Yocm9sZXNbMF0pOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Sb2xlczsgKytp
KQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKHJvbGVzKTsgKytpKQog
ICAgICAgICByb2xlTWFwLnNldChyb2xlc1tpXS52YWx1ZSwgcm9sZXNbaV0uc3RyaW5nKTsKICAg
ICByZXR1cm4gcm9sZU1hcDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAppbmRleCBlMmI1MGQwLi43ZmU3MTFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwCkBAIC02MCw3ICs2MCw3IEBAIEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dC
YXNlKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlLCBQYXNzUmVmCiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgIndpbmRvdyIp
LCBkKCktPnNoZWxsLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpCiAgICAgfTsKICAgICAKLSAgICBh
ZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIHNpemVvZihzdGF0aWNHbG9iYWxzKSAvIHNp
emVvZihHbG9iYWxQcm9wZXJ0eUluZm8pKTsKKyAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0ds
b2JhbHMsIGFycmF5X3NpemUoc3RhdGljR2xvYmFscykpOwogfQogCiB2b2lkIEpTRE9NV2luZG93
QmFzZTo6dXBkYXRlRG9jdW1lbnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KaW5kZXggNzUxZTM1MC4uYTFkZjhkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0xOTY2LDcgKzE5NjYsNyBAQCBFTkQKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0VGVtcGxhdGU+IENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gdGVtcGwpCiB7Ci0gICAgYmF0Y2hDb25maWd1cmVB
dHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93
QXR0cnMsIHNpemVvZihzaGFkb3dBdHRycykgLyBzaXplb2YoKnNoYWRvd0F0dHJzKSk7CisgICAg
YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1w
bGF0ZT4oKSwgc2hhZG93QXR0cnMsIGFycmF5X3NpemUoc2hhZG93QXR0cnMpKTsKIAogICAgIC8v
IEluc3RhbGwgYSBzZWN1cml0eSBoYW5kbGVyIHdpdGggVjguCiAgICAgdGVtcGwtPlNldEFjY2Vz
c0NoZWNrQ2FsbGJhY2tzKFY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2ssIFY4RE9NV2lu
ZG93OjppbmRleGVkU2VjdXJpdHlDaGVjaywgdjg6OkV4dGVybmFsOjpXcmFwKCZWOERPTVdpbmRv
dzo6aW5mbykpOwpAQCAtMTk5OCw3ICsxOTk4LDcgQEAgRU5ECiAgICAgIyBTZXQgdXAgb3VyIGF0
dHJpYnV0ZXMgaWYgd2UgaGF2ZSB0aGVtCiAgICAgaWYgKCRoYXNfYXR0cmlidXRlcykgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgICAke2ludGVyZmFjZU5hbWV9
QXR0cnMsIHNpemVvZigke2ludGVyZmFjZU5hbWV9QXR0cnMpIC8gc2l6ZW9mKCoke2ludGVyZmFj
ZU5hbWV9QXR0cnMpLAorICAgICAgICAke2ludGVyZmFjZU5hbWV9QXR0cnMsIGFycmF5X3NpemUo
JHtpbnRlcmZhY2VOYW1lfUF0dHJzKSwKIEVORAogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCA8PEVORCk7CkBAIC0yMDA4LDcgKzIwMDgsNyBAQCBFTkQKIAogICAgIGlm
ICgkaGFzX2NhbGxiYWNrcykgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwot
ICAgICAgICAke2ludGVyZmFjZU5hbWV9Q2FsbGJhY2tzLCBzaXplb2YoJHtpbnRlcmZhY2VOYW1l
fUNhbGxiYWNrcykgLyBzaXplb2YoKiR7aW50ZXJmYWNlTmFtZX1DYWxsYmFja3MpKTsKKyAgICAg
ICAgJHtpbnRlcmZhY2VOYW1lfUNhbGxiYWNrcywgYXJyYXlfc2l6ZSgke2ludGVyZmFjZU5hbWV9
Q2FsbGJhY2tzKSk7CiBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgPDxFTkQpOwpAQCAtMjE0Niw3ICsyMTQ2LDcgQEAgRU5ECiAKICAgICBpZiAoJGhhc19jb25z
dGFudHMpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICBiYXRjaENv
bmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgJHtpbnRlcmZhY2VOYW1lfUNvbnN0cywgc2l6
ZW9mKCR7aW50ZXJmYWNlTmFtZX1Db25zdHMpIC8gc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9Q29u
c3RzKSk7CisgICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sICR7aW50ZXJm
YWNlTmFtZX1Db25zdHMsIGFycmF5X3NpemUoJHtpbnRlcmZhY2VOYW1lfUNvbnN0cykpOwogRU5E
CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcAppbmRleCA0NGYwZDNlLi4zMjdmY2I3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTEyMDMsOCArMTIwMyw4IEBAIENPTVBJTEVf
QVNTRVJUKDB4MWFiYyA9PSBUZXN0T2JqOjpDT05TVF9WQUxVRV8xNCwgVGVzdE9iakVudW1DT05T
VF9WQUxVRV8xNElzV3JvCiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkZXNjKQogewogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0
U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RPYmoiLCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjppbnRlcm5hbEZpZWxkQ291
bnQsCi0gICAgICAgIFRlc3RPYmpBdHRycywgc2l6ZW9mKFRlc3RPYmpBdHRycykgLyBzaXplb2Yo
KlRlc3RPYmpBdHRycyksCi0gICAgICAgIFRlc3RPYmpDYWxsYmFja3MsIHNpemVvZihUZXN0T2Jq
Q2FsbGJhY2tzKSAvIHNpemVvZigqVGVzdE9iakNhbGxiYWNrcykpOworICAgICAgICBUZXN0T2Jq
QXR0cnMsIGFycmF5X3NpemUoVGVzdE9iakF0dHJzKSwKKyAgICAgICAgVGVzdE9iakNhbGxiYWNr
cywgYXJyYXlfc2l6ZShUZXN0T2JqQ2FsbGJhY2tzKSk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmpl
Y3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgdjg6
OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0
ZSgpOwogICAgIApAQCAtMTI2Miw3ICsxMjYyLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kK
ICAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoImVuYWJsZWRBdFJ1bnRpbWVNZXRo
b2QxIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjplbmFibGVk
QXRSdW50aW1lTWV0aG9kMUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgZGVmYXVs
dFNpZ25hdHVyZSkpOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmZWF0dXJlTmFt
ZUVuYWJsZWQoKSkKICAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoImVuYWJsZWRB
dFJ1bnRpbWVNZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVy
bmFsOjplbmFibGVkQXRSdW50aW1lTWV0aG9kMkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKSwgZGVmYXVsdFNpZ25hdHVyZSkpOwotICAgIGJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRl
c2MsIHByb3RvLCBUZXN0T2JqQ29uc3RzLCBzaXplb2YoVGVzdE9iakNvbnN0cykgLyBzaXplb2Yo
KlRlc3RPYmpDb25zdHMpKTsKKyAgICBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90
bywgVGVzdE9iakNvbnN0cywgYXJyYXlfc2l6ZShUZXN0T2JqQ29uc3RzKSk7CiAKICAgICAvLyBD
dXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCks
IGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcAppbmRleCBmZGNhYjI4Li41NWQ2MzhhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMg
Y29uc3QgaW50IGNvbXB1dGVkUHJvcGVydGllc1tdID0gewogI2VuZGlmCiB9OwogCi1jb25zdCB1
bnNpZ25lZCBudW1Db21wdXRlZFByb3BlcnRpZXMgPSBzaXplb2YoY29tcHV0ZWRQcm9wZXJ0aWVz
KSAvIHNpemVvZihjb21wdXRlZFByb3BlcnRpZXNbMF0pOworY29uc3QgdW5zaWduZWQgbnVtQ29t
cHV0ZWRQcm9wZXJ0aWVzID0gYXJyYXlfc2l6ZShjb21wdXRlZFByb3BlcnRpZXMpOwogCiBzdGF0
aWMgaW50IHZhbHVlRm9yUmVwZWF0UnVsZShpbnQgcnVsZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1dlYkNvcmUvY3NzL0NTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA5YjFkZDcxLi4zYzQ1OTNhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNDgsOCArMTQ4LDcg
QEAgU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKGlu
dCBwcm9wZXJ0eUlEKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciB9fTsK
ICAgICAgICAgICAgIFN0cmluZyByZXM7Ci0gICAgICAgICAgICBjb25zdCBpbnQgbnJwcm9wcyA9
IHNpemVvZihwcm9wZXJ0aWVzKSAvIHNpemVvZihwcm9wZXJ0aWVzWzBdKTsKLSAgICAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnJwcm9wczsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUocHJvcGVydGllcyk7ICsraSkgewogICAgICAgICAg
ICAgICAgIFN0cmluZyB2YWx1ZSA9IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0sIDQpOwog
ICAgICAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFyZXMuaXNOdWxsKCkpCkBAIC03NjcsNyArNzY2LDcgQEAgc3RhdGljIGNvbnN0IGlu
dCBibG9ja1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVdpZG93cwogfTsKIAotY29u
c3QgdW5zaWduZWQgbnVtQmxvY2tQcm9wZXJ0aWVzID0gc2l6ZW9mKGJsb2NrUHJvcGVydGllcykg
LyBzaXplb2YoYmxvY2tQcm9wZXJ0aWVzWzBdKTsKK2NvbnN0IHVuc2lnbmVkIG51bUJsb2NrUHJv
cGVydGllcyA9IGFycmF5X3NpemUoYmxvY2tQcm9wZXJ0aWVzKTsKIAogUGFzc1JlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvcHlC
bG9ja1Byb3BlcnRpZXMoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMjZjMzg3Ni4uNGNlZWEz
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCkBAIC0yMDA5LDE0ICsyMDA5LDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EaXJlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUgfTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9
IHNpemVvZihwcm9wZXJ0aWVzKSAvIHNpemVvZihwcm9wZXJ0aWVzWzBdKTsKKyAgICBjb25zdCBz
aXplX3QgbnVtUHJvcGVydGllcyA9IGFycmF5X3NpemUocHJvcGVydGllcyk7CiAKICAgICBTaG9y
dGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbik7CiAKICAg
ICBib29sIHBhcnNlZFByb3BlcnR5W251bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21w
aWxlciB3aWxsIHJlcGVhdCBmYWxzZSBhcyBuZWNlc3NhcnkKICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbHVlc1tudW1Qcm9wZXJ0aWVzXTsKIAotICAgIGludCBpOworICAgIHNpemVfdCBpOwogICAg
IHdoaWxlIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CiAgICAgICAgIENTU1BhcnNlclZhbHVl
KiB2YWwgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgICAgICBpZiAodmFsLT51bml0ID09
IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWwtPmlWYWx1ZSA9PSAnLCcpIHsKQEAgLTIw
NjcsMTQgKzIwNjcsMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFu
ZChib29sIGltcG9ydGFudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSB9
OwotICAgIGNvbnN0IGludCBudW1Qcm9wZXJ0aWVzID0gc2l6ZW9mKHByb3BlcnRpZXMpIC8gc2l6
ZW9mKHByb3BlcnRpZXNbMF0pOworICAgIGNvbnN0IHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gYXJy
YXlfc2l6ZShwcm9wZXJ0aWVzKTsKIAogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbik7CiAKICAgICBib29sIHBhcnNlZFByb3BlcnR5W251
bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJlcGVhdCBmYWxzZSBh
cyBuZWNlc3NhcnkKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlc1tudW1Qcm9wZXJ0aWVzXTsK
IAotICAgIGludCBpOworICAgIHNpemVfdCBpOwogICAgIHdoaWxlIChtX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpKSB7CiAgICAgICAgIENTU1BhcnNlclZhbHVlKiB2YWwgPSBtX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpOwogICAgICAgICBpZiAodmFsLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRv
ciAmJiB2YWwtPmlWYWx1ZSA9PSAnLCcpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5TG9uZ2hhbmQuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAK
aW5kZXggYWNjYTAzNi4uMWJiYzM3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlMb25naGFuZC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPGludCwgQ1NTUHJvcGVydHlMb25naGFu
ZD4gU2hvcnRoYW5kTWFwOwogc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRN
YXAmIHNob3J0aGFuZE1hcCkKIHsKICAgICAjZGVmaW5lIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KG1hcCwgcHJvcElELCBhcnJheSkgXAotICAgICAgICBtYXAuc2V0KHByb3BJRCwgQ1NTUHJvcGVy
dHlMb25naGFuZChhcnJheSwgc2l6ZW9mKGFycmF5KSAvIHNpemVvZihhcnJheVswXSkpKQorICAg
ICAgICBtYXAuc2V0KHByb3BJRCwgQ1NTUHJvcGVydHlMb25naGFuZChhcnJheSwgYXJyYXlfc2l6
ZShhcnJheSkpKQogCiAgICAgLy8gRklYTUU6IFRoZSAnZm9udCcgcHJvcGVydHkgaGFzICJzaG9y
dGhhbmQgbmF0dXJlIiBidXQgaXMgbm90IHBhcnNlZCBhcyBhIHNob3J0aGFuZC4KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IDA5MTZlNjkuLmYyZmExNzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU1Niw5ICs1NTYsOCBAQCBE
b2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAogICAgIG1f
ZGVjb2RlciA9IDA7Ci0gICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBzaXplb2YobV9uYW1lQ29s
bGVjdGlvbkluZm8pIC8gc2l6ZW9mKG1fbmFtZUNvbGxlY3Rpb25JbmZvWzBdKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXJyYXlfc2l6ZShtX25hbWVDb2xsZWN0aW9uSW5mbyk7ICsraSkKICAgICAgICAgZGVs
ZXRlQWxsVmFsdWVzKG1fbmFtZUNvbGxlY3Rpb25JbmZvW2ldKTsKIAogICAgIGlmIChtX3N0eWxl
U2hlZXRzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAgYi9XZWJD
b3JlL2RvbS9FeGNlcHRpb25Db2RlLmNwcAppbmRleCA5MzAzZjllMC4uN2NkZDQ5ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vRXhj
ZXB0aW9uQ29kZS5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVE
ZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlIGVjLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRl
cwogICAgICAgICBjb2RlIC09IFJhbmdlRXhjZXB0aW9uOjpSYW5nZUV4Y2VwdGlvbk9mZnNldDsK
ICAgICAgICAgbmFtZVRhYmxlID0gcmFuZ2VFeGNlcHRpb25OYW1lczsKICAgICAgICAgZGVzY3Jp
cHRpb25UYWJsZSA9IHJhbmdlRXhjZXB0aW9uRGVzY3JpcHRpb25zOwotICAgICAgICBuYW1lVGFi
bGVTaXplID0gc2l6ZW9mKHJhbmdlRXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHJhbmdlRXhjZXB0
aW9uTmFtZXNbMF0pOworICAgICAgICBuYW1lVGFibGVTaXplID0gYXJyYXlfc2l6ZShyYW5nZUV4
Y2VwdGlvbk5hbWVzKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gUmFuZ2VFeGNlcHRpb246
OkJBRF9CT1VOREFSWVBPSU5UU19FUlI7CiAgICAgfSBlbHNlIGlmIChjb2RlID49IEV2ZW50RXhj
ZXB0aW9uOjpFdmVudEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IEV2ZW50RXhjZXB0aW9uOjpF
dmVudEV4Y2VwdGlvbk1heCkgewogICAgICAgICB0eXBlID0gRXZlbnRFeGNlcHRpb25UeXBlOwpA
QCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2Vw
dGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzCiAgICAgICAgIGNvZGUg
LT0gRXZlbnRFeGNlcHRpb246OkV2ZW50RXhjZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFi
bGUgPSBldmVudEV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0gZXZl
bnRFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVUYWJsZVNpemUgPSBzaXplb2Yo
ZXZlbnRFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoZXZlbnRFeGNlcHRpb25OYW1lc1swXSk7Cisg
ICAgICAgIG5hbWVUYWJsZVNpemUgPSBhcnJheV9zaXplKGV2ZW50RXhjZXB0aW9uTmFtZXMpOwog
ICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBFdmVudEV4Y2VwdGlvbjo6VU5TUEVDSUZJRURfRVZF
TlRfVFlQRV9FUlI7CiAgICAgfSBlbHNlIGlmIChjb2RlID49IFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uOjpYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IFhNTEh0dHBSZXF1
ZXN0RXhjZXB0aW9uOjpYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbk1heCkgewogICAgICAgICB0eXBl
ID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb25UeXBlOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQg
Z2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiYgZGVzCiAgICAgICAgIGNvZGUgLT0gWE1MSHR0cFJlcXVlc3RFeGNlcHRp
b246OlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFibGUgPSB4
bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0g
eG1sSHR0cFJlcXVlc3RFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVUYWJsZVNp
emUgPSBzaXplb2YoeG1sSHR0cFJlcXVlc3RFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeG1sSHR0
cFJlcXVlc3RFeGNlcHRpb25OYW1lc1swXSk7CisgICAgICAgIG5hbWVUYWJsZVNpemUgPSBhcnJh
eV9zaXplKHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXMpOwogICAgICAgICAvLyBYTUxIdHRw
UmVxdWVzdCBleGNlcHRpb24gY29kZXMgc3RhcnQgd2l0aCAxMDEgYW5kIHdlIGRvbid0IHdhbnQg
MTAwIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBuYW1lIGFycmF5CiAgICAgICAgIG5hbWVUYWJsZU9m
ZnNldCA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRXT1JLX0VSUjsKICNpZiBFTkFCTEUo
WFBBVEgpCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24oRXhjZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXMKICAgICAg
ICAgY29kZSAtPSBYUGF0aEV4Y2VwdGlvbjo6WFBhdGhFeGNlcHRpb25PZmZzZXQ7CiAgICAgICAg
IG5hbWVUYWJsZSA9IHhwYXRoRXhjZXB0aW9uTmFtZXM7CiAgICAgICAgIGRlc2NyaXB0aW9uVGFi
bGUgPSB4cGF0aEV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAgICAgICAgbmFtZVRhYmxlU2l6ZSA9
IHNpemVvZih4cGF0aEV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZih4cGF0aEV4Y2VwdGlvbk5hbWVz
WzBdKTsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IGFycmF5X3NpemUoeHBhdGhFeGNlcHRpb25O
YW1lcyk7CiAgICAgICAgIC8vIFhQYXRoIGV4Y2VwdGlvbiBjb2RlcyBzdGFydCB3aXRoIDUxIGFu
ZCB3ZSBkb24ndCB3YW50IDUxIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBuYW1lIGFycmF5CiAgICAg
ICAgIG5hbWVUYWJsZU9mZnNldCA9IFhQYXRoRXhjZXB0aW9uOjpJTlZBTElEX0VYUFJFU1NJT05f
RVJSOwogI2VuZGlmCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXMK
ICAgICAgICAgY29kZSAtPSBTVkdFeGNlcHRpb246OlNWR0V4Y2VwdGlvbk9mZnNldDsKICAgICAg
ICAgbmFtZVRhYmxlID0gc3ZnRXhjZXB0aW9uTmFtZXM7CiAgICAgICAgIGRlc2NyaXB0aW9uVGFi
bGUgPSBzdmdFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVUYWJsZVNpemUgPSBz
aXplb2Yoc3ZnRXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHN2Z0V4Y2VwdGlvbk5hbWVzWzBdKTsK
KyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IGFycmF5X3NpemUoc3ZnRXhjZXB0aW9uTmFtZXMpOwog
ICAgICAgICBuYW1lVGFibGVPZmZzZXQgPSBTVkdFeGNlcHRpb246OlNWR19XUk9OR19UWVBFX0VS
UjsKICNlbmRpZgogI2lmIEVOQUJMRShEQVRBQkFTRSkKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lk
IGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNlcHRpb25Db2RlIGVjLCBFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24mIGRlcwogICAgICAgICBjb2RlIC09IFNRTEV4Y2VwdGlvbjo6U1FMRXhj
ZXB0aW9uT2Zmc2V0OwogICAgICAgICBuYW1lVGFibGUgPSBzcWxFeGNlcHRpb25OYW1lczsKICAg
ICAgICAgZGVzY3JpcHRpb25UYWJsZSA9IHNxbEV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAgICAg
ICAgbmFtZVRhYmxlU2l6ZSA9IHNpemVvZihzcWxFeGNlcHRpb25OYW1lcykgLyBzaXplb2Yoc3Fs
RXhjZXB0aW9uTmFtZXNbMF0pOworICAgICAgICBuYW1lVGFibGVTaXplID0gYXJyYXlfc2l6ZShz
cWxFeGNlcHRpb25OYW1lcyk7CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IFNRTEV4Y2VwdGlv
bjo6VU5LTk9XTl9FUlI7CiAjZW5kaWYKICAgICB9IGVsc2UgewpAQCAtMjQ2LDcgKzI0Niw3IEBA
IHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzCiAgICAgICAgIHR5cGVOYW1lID0gIkRPTSI7CiAgICAg
ICAgIG5hbWVUYWJsZSA9IGV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBkZXNjcmlwdGlvblRhYmxl
ID0gZXhjZXB0aW9uRGVzY3JpcHRpb25zOwotICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9m
KGV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZihleGNlcHRpb25OYW1lc1swXSk7CisgICAgICAgIG5h
bWVUYWJsZVNpemUgPSBhcnJheV9zaXplKGV4Y2VwdGlvbk5hbWVzKTsKICAgICAgICAgbmFtZVRh
YmxlT2Zmc2V0ID0gSU5ERVhfU0laRV9FUlI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcAppbmRleCAyNzNlZGI0Li42ZDE5NWEyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAKQEAgLTQ1OSwxMSArNDU5LDEwIEBAIHN0YXRpYyBjb25zdCBpbnQg
ZWRpdGluZ1N0eWxlUHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLAogfTsKLXNp
emVfdCBudW1FZGl0aW5nU3R5bGVQcm9wZXJ0aWVzID0gc2l6ZW9mKGVkaXRpbmdTdHlsZVByb3Bl
cnRpZXMpL3NpemVvZihlZGl0aW5nU3R5bGVQcm9wZXJ0aWVzWzBdKTsKIAogUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlTm9uRWRpdGlu
Z1Byb3BlcnRpZXMoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiB7Ci0gICAgcmV0dXJuIHN0
eWxlLT5jb3B5UHJvcGVydGllc0luU2V0KGVkaXRpbmdTdHlsZVByb3BlcnRpZXMsIG51bUVkaXRp
bmdTdHlsZVByb3BlcnRpZXMpOworICAgIHJldHVybiBzdHlsZS0+Y29weVByb3BlcnRpZXNJblNl
dChlZGl0aW5nU3R5bGVQcm9wZXJ0aWVzLCBhcnJheV9zaXplKGVkaXRpbmdTdHlsZVByb3BlcnRp
ZXMpKTsKIH0KIAogUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gQXBwbHlT
dHlsZUNvbW1hbmQ6OmVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24gcG9zLCBTaG91bGRJ
bmNsdWRlVHlwaW5nU3R5bGUgc2hvdWxkSW5jbHVkZVR5cGluZ1N0eWxlKQpAQCAtMTMzNiw3ICsx
MzM1LDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW1wbGljaXRseVN0eWxlZEVs
ZW1lbnQoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24KICAgICAvLyBDdXJyZW50IGltcGxlbWVu
dGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgc3R5bGVQdXNoZWREb3duIHdoZW4gbW9kZSA9PSBSZW1v
dmVOb25lIGJlY2F1c2Ugb2YgZWFybHkgZXhpdC4KICAgICBBU1NFUlQoIWV4dHJhY3RlZFN0eWxl
IHx8IG1vZGUgIT0gUmVtb3ZlTm9uZSk7CiAgICAgYm9vbCByZW1vdmVkID0gZmFsc2U7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YoSFRNTEVxdWl2YWxlbnRzKSAvIHNpemVvZihI
VE1MRXF1aXZhbGVudCk7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlf
c2l6ZShIVE1MRXF1aXZhbGVudHMpOyBpKyspIHsKICAgICAgICAgY29uc3QgSFRNTEVxdWl2YWxl
bnQmIGVxdWl2YWxlbnQgPSBIVE1MRXF1aXZhbGVudHNbaV07CiAgICAgICAgIEFTU0VSVChlcXVp
dmFsZW50LmVsZW1lbnQgfHwgZXF1aXZhbGVudC5hdHRyaWJ1dGUpOwogICAgICAgICBpZiAoKGV4
dHJhY3RlZFN0eWxlICYmIGVxdWl2YWxlbnQucHVzaERvd25UeXBlID09IFNob3VsZE5vdEJlUHVz
aGVkRG93bikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNGQ2ZDI1OC4uZWE3ODczZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKQEAgLTg3MSw3ICs4NzEsNyBAQCBzdGF0aWMgVHJpU3RhdGUgdHJpU3RhdGVPZlN0eWxlKENT
U1N0eWxlRGVjbGFyYXRpb24qIGRlc2lyZWRTdHlsZSwgQ1NTU3R5bGVEZWNsYQogICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGlmZiA9IGdldFByb3BlcnRpZXNOb3RJbihk
ZXNpcmVkU3R5bGUsIHN0eWxlVG9Db21wYXJlKTsKIAogICAgIGlmIChpZ25vcmVUZXh0T25seVBy
b3BlcnRpZXMpCi0gICAgICAgIGRpZmYtPnJlbW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25seVBy
b3BlcnRpZXMsIHNpemVvZih0ZXh0T25seVByb3BlcnRpZXMpIC8gc2l6ZW9mKHRleHRPbmx5UHJv
cGVydGllc1swXSkpOworICAgICAgICBkaWZmLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQodGV4dE9u
bHlQcm9wZXJ0aWVzLCBhcnJheV9zaXplKHRleHRPbmx5UHJvcGVydGllcykpOwogCiAgICAgaWYg
KCFkaWZmLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcAppbmRleCAyM2ZiYTM5Li42NzkzNWE5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCkBAIC0xNTYwLDggKzE1NjAsNyBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1h
cCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAKICAgICBDb21tYW5kTWFwJiBjb21tYW5kTWFwID0gKm5l
dyBDb21tYW5kTWFwOwogCi0gICAgY29uc3QgdW5zaWduZWQgbnVtQ29tbWFuZHMgPSBzaXplb2Yo
Y29tbWFuZHMpIC8gc2l6ZW9mKGNvbW1hbmRzWzBdKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtQ29tbWFuZHM7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJy
YXlfc2l6ZShjb21tYW5kcyk7ICsraSkgewogICAgICAgICBBU1NFUlQoIWNvbW1hbmRNYXAuZ2V0
KGNvbW1hbmRzW2ldLm5hbWUpKTsKICAgICAgICAgY29tbWFuZE1hcC5zZXQoY29tbWFuZHNbaV0u
bmFtZSwgJmNvbW1hbmRzW2ldLmNvbW1hbmQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwCmluZGV4IGE3MDExODkuLjg1OGYxN2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL01hcmt1
cEFjY3VtdWxhdG9yLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIGFwcGVuZENoYXJhY3RlcnNS
ZXBsYWNpbmdFbnRpdGllcyhWZWN0b3I8VUNoYXI+JiBvdXQsIGNvbnN0IFVDaGFyKiBjb250ZW50
LAogCiAgICAgc2l6ZV90IHBvc2l0aW9uQWZ0ZXJMYXN0RW50aXR5ID0gMDsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IG0gPSAw
OyBtIDwgc2l6ZW9mKGVudGl0eU1hcHMpIC8gc2l6ZW9mKEVudGl0eURlc2NyaXB0aW9uKTsgbSsr
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IG0gPSAwOyBtIDwgYXJyYXlfc2l6ZShlbnRpdHlNYXBz
KTsgbSsrKSB7CiAgICAgICAgICAgICBpZiAoY29udGVudFtpXSA9PSBlbnRpdHlNYXBzW21dLmVu
dGl0eSAmJiBlbnRpdHlNYXBzW21dLm1hc2sgJiBlbnRpdHlNYXNrKSB7CiAgICAgICAgICAgICAg
ICAgb3V0LmFwcGVuZChjb250ZW50ICsgcG9zaXRpb25BZnRlckxhc3RFbnRpdHksIGkgLSBwb3Np
dGlvbkFmdGVyTGFzdEVudGl0eSk7CiAgICAgICAgICAgICAgICAgYXBwZW5kKG91dCwgZW50aXR5
TWFwc1ttXS5yZWZlcmVuY2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAppbmRleCA5
OWQ5Y2FkLi5hNGY3YjE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcApAQCAtMTcw
LDggKzE3MCw3IEBAIHVuc2lnbmVkIFdlYkdMQnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKIAog
bG9uZyBXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4SW5kZXgodW5zaWduZWQgbG9uZyB0eXBlKQog
ewotICAgIHNpemVfdCBudW1FbnRyaWVzID0gc2l6ZW9mKG1fbWF4SW5kZXhDYWNoZSkgLyBzaXpl
b2YoTWF4SW5kZXhDYWNoZUVudHJ5KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUVu
dHJpZXM7IGkrKykKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUobV9tYXhJ
bmRleENhY2hlKTsgKytpKQogICAgICAgICBpZiAobV9tYXhJbmRleENhY2hlW2ldLnR5cGUgPT0g
dHlwZSkKICAgICAgICAgICAgIHJldHVybiBtX21heEluZGV4Q2FjaGVbaV0ubWF4SW5kZXg7CiAg
ICAgcmV0dXJuIC0xOwpAQCAtMTc5LDggKzE3OCw4IEBAIGxvbmcgV2ViR0xCdWZmZXI6OmdldENh
Y2hlZE1heEluZGV4KHVuc2lnbmVkIGxvbmcgdHlwZSkKIAogdm9pZCBXZWJHTEJ1ZmZlcjo6c2V0
Q2FjaGVkTWF4SW5kZXgodW5zaWduZWQgbG9uZyB0eXBlLCBsb25nIHZhbHVlKQogewotICAgIGlu
dCBudW1FbnRyaWVzID0gc2l6ZW9mKG1fbWF4SW5kZXhDYWNoZSkgLyBzaXplb2YoTWF4SW5kZXhD
YWNoZUVudHJ5KTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUVudHJpZXM7IGkrKykKKyAg
ICBzaXplX3QgbnVtRW50cmllcyA9IGFycmF5X3NpemUobV9tYXhJbmRleENhY2hlKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUVudHJpZXM7ICsraSkKICAgICAgICAgaWYgKG1fbWF4
SW5kZXhDYWNoZVtpXS50eXBlID09IHR5cGUpIHsKICAgICAgICAgICAgIG1fbWF4SW5kZXhDYWNo
ZVtpXS5tYXhJbmRleCA9IHZhbHVlOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZU
UERpcmVjdG9yeVBhcnNlci5jcHAKaW5kZXggZjZhNzRkZS4uODgwZWJkZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9GVFBEaXJlY3RvcnlQYXJzZXIuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgRlRQRW50cnlUeXBl
IHBhcnNlT25lRlRQTGluZShjb25zdCBjaGFyKiBsaW5lLCBMaXN0U3RhdGUmIHN0YXRlLCBMaXN0
UmVzdWx0JiByZXMKICAgewogICAgIHN0YXRpYyBjb25zdCBjaGFyICptb250aF9uYW1lcyA9ICJK
YW5GZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPY3ROb3ZEZWMiOwogICAgIGNvbnN0IGNoYXIgKnRv
a2Vuc1sxNl07IC8qIDE2IGlzIG1vcmUgdGhhbiBlbm91Z2ggKi8KLSAgICB1bnNpZ25lZCBpbnQg
dG9rbGVuWyhzaXplb2YodG9rZW5zKS9zaXplb2YodG9rZW5zWzBdKSldOworICAgIHVuc2lnbmVk
IGludCB0b2tsZW5bYXJyYXlfc2l6ZSh0b2tlbnMpXTsKICAgICB1bnNpZ25lZCBpbnQgbGluZWxl
bl9zYW5zX3dzcDsgIC8vIGxpbmUgbGVuZ3RoIHNhbnMgd2hpdGVzcGFjZQogICAgIHVuc2lnbmVk
IGludCBudW10b2tzID0gMDsKICAgICB1bnNpZ25lZCBpbnQgdG9rbWFya2VyID0gMDsgLyogZXh0
cmEgaW5mbyBmb3IgbHN0eWxlIGhhbmRsZXIgKi8KQEAgLTEzMyw3ICsxMzMsNyBAQCBGVFBFbnRy
eVR5cGUgcGFyc2VPbmVGVFBMaW5lKGNvbnN0IGNoYXIqIGxpbmUsIExpc3RTdGF0ZSYgc3RhdGUs
IExpc3RSZXN1bHQmIHJlcwogICAgIH0KIAogICAgIHVuc2lnbmVkIGludCBwb3MgPSAwOwotICAg
IHdoaWxlIChwb3MgPCBsaW5lbGVuICYmIG51bXRva3MgPCAoc2l6ZW9mKHRva2Vucykvc2l6ZW9m
KHRva2Vuc1swXSkpICkKKyAgICB3aGlsZSAocG9zIDwgbGluZWxlbiAmJiBudW10b2tzIDwgYXJy
YXlfc2l6ZSh0b2tlbnMpKQogICAgIHsKICAgICAgIHdoaWxlIChwb3MgPCBsaW5lbGVuICYmIAog
ICAgICAgICAgICAgKGxpbmVbcG9zXSA9PSAnICcgfHwgbGluZVtwb3NdID09ICdcdCcgfHwgbGlu
ZVtwb3NdID09ICdccicpKQpAQCAtMTU2LDcgKzE1Niw3IEBAIEZUUEVudHJ5VHlwZSBwYXJzZU9u
ZUZUUExpbmUoY29uc3QgY2hhciogbGluZSwgTGlzdFN0YXRlJiBzdGF0ZSwgTGlzdFJlc3VsdCYg
cmVzCiAgICAgICByZXR1cm4gUGFyc2luZ0ZhaWxlZChzdGF0ZSk7CiAKICAgICBsaW5lbGVuX3Nh
bnNfd3NwID0gJih0b2tlbnNbbnVtdG9rcy0xXVt0b2tsZW5bbnVtdG9rcy0xXV0pIC0gdG9rZW5z
WzBdOwotICAgIGlmIChudW10b2tzID09IChzaXplb2YodG9rZW5zKS9zaXplb2YodG9rZW5zWzBd
KSkgKQorICAgIGlmIChudW10b2tzID09IGFycmF5X3NpemUodG9rZW5zKSkKICAgICB7CiAgICAg
ICBwb3MgPSBsaW5lbGVuOwogICAgICAgd2hpbGUgKHBvcyA+IDAgJiYgKGxpbmVbcG9zLTFdID09
ICcgJyB8fCBsaW5lW3Bvcy0xXSA9PSAnXHQnKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBiL1dlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmNwcAppbmRleCA5ZjM1NDgwLi5mYTU0MzVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIvV2ViQ29yZS9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0xNjIsOCArMTYyLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxP
cGVyYXRvcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIAogICAgIC8vIENoZWNrIGZvciBhIHN0
cmV0Y2hhYmxlIGNoYXJhY3Rlci4KICAgICBpZiAoIXN0cmV0Y2hEaXNhYmxlZCAmJiBmaXJzdENo
YXIpIHsKLSAgICAgICAgY29uc3QgaW50IG1heEluZGV4ID0gc2l6ZW9mKHN0cmV0Y2h5Q2hhcmFj
dGVycykgLyBzaXplb2Yoc3RyZXRjaHlDaGFyYWN0ZXJzWzBdKTsKLSAgICAgICAgZm9yIChpbmRl
eCsrOyBpbmRleCA8IG1heEluZGV4OyBpbmRleCsrKSB7CisgICAgICAgIGZvciAoaW5kZXgrKzsg
aW5kZXggPCBhcnJheV9zaXplKHN0cmV0Y2h5Q2hhcmFjdGVycyk7IGluZGV4KyspIHsKICAgICAg
ICAgICAgIGlmIChzdHJldGNoeUNoYXJhY3RlcnNbaW5kZXhdLmNoYXJhY3RlciA9PSBmaXJzdENo
YXIpIHsKICAgICAgICAgICAgICAgICBpc1N0cmV0Y2h5ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFz
ZS5jcHAgYi9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGFk
ZTY4YjUuLjhlNDY3ZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cApAQCAtNzQ0LDcgKzc0NCw3IEBAIHN0YXRpYyB2b2lkIGFkZFNob3J0aGFuZFByb3BlcnRpZXMo
KQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbgogICAgIH07CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKGFuaW1hdGFibGVTaG9ydGhhbmRQcm9w
ZXJ0aWVzKSAvIHNpemVvZihhbmltYXRhYmxlU2hvcnRoYW5kUHJvcGVydGllc1swXSk7ICsraSkg
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShhbmltYXRhYmxlU2hvcnRo
YW5kUHJvcGVydGllcyk7ICsraSkgewogICAgICAgICBpbnQgcHJvcGVydHlJRCA9IGFuaW1hdGFi
bGVTaG9ydGhhbmRQcm9wZXJ0aWVzW2ldOwogICAgICAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxv
bmdoYW5kID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKICAgICAgICAgaWYgKGxv
bmdoYW5kLmxlbmd0aCgpID4gMCkKQEAgLTc1Nyw3ICs3NTcsNyBAQCBzdGF0aWMgdm9pZCBhZGRT
aG9ydGhhbmRQcm9wZXJ0aWVzKCkKICAgICAgICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0CiAgICAg
fTsKIAotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgZm9udExvbmdoYW5kKGFuaW1hdGFibGVGb250
UHJvcGVydGllcywgc2l6ZW9mKGFuaW1hdGFibGVGb250UHJvcGVydGllcykgLyBzaXplb2YoYW5p
bWF0YWJsZUZvbnRQcm9wZXJ0aWVzWzBdKSk7CisgICAgQ1NTUHJvcGVydHlMb25naGFuZCBmb250
TG9uZ2hhbmQoYW5pbWF0YWJsZUZvbnRQcm9wZXJ0aWVzLCBhcnJheV9zaXplKGFuaW1hdGFibGVG
b250UHJvcGVydGllcykpOwogICAgIGFkZFByb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUZvbnQs
IG5ldyBTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXIoQ1NTUHJvcGVydHlGb250LCBmb250TG9uZ2hh
bmQpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vS1VSTC5jcHAKaW5kZXggM2FjNWQ4Ni4uYTFkZjA5YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3Bw
CkBAIC0xNzk2LDcgKzE3OTYsNyBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IEtVUkwmIHVybCkK
ICAgICAgICAgNjY2OSwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAg
IGludmFsaWRQb3J0TnVtYmVyLCAvLyBVc2VkIHRvIGJsb2NrIGFsbCBpbnZhbGlkIHBvcnQgbnVt
YmVycwogICAgIH07Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIGNvbnN0IGJsb2NrZWRQb3J0
TGlzdEVuZCA9IGJsb2NrZWRQb3J0TGlzdCArIHNpemVvZihibG9ja2VkUG9ydExpc3QpIC8gc2l6
ZW9mKGJsb2NrZWRQb3J0TGlzdFswXSk7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIGNvbnN0
IGJsb2NrZWRQb3J0TGlzdEVuZCA9IGJsb2NrZWRQb3J0TGlzdCArIGFycmF5X3NpemUoYmxvY2tl
ZFBvcnRMaXN0KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBUaGUgcG9ydCBsaXN0IG11c3Qg
YmUgc29ydGVkIGZvciBiaW5hcnlfc2VhcmNoIHRvIHdvcmsuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xlLmNw
cAppbmRleCA3MjZiYzU3Li4yNTZhZWRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0tV
UkxHb29nbGUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAKQEAgLTg5
Myw3ICs4OTMsNyBAQCBib29sIHBvcnRBbGxvd2VkKGNvbnN0IEtVUkwmIHVybCkKICAgICAgICAg
NjY2OSwgLy8gQWx0ZXJuYXRlIElSQyBbQXBwbGUgYWRkaXRpb25dCiAgICAgICAgIGludmFsaWRQ
b3J0TnVtYmVyLCAvLyBVc2VkIHRvIGJsb2NrIGFsbCBpbnZhbGlkIHBvcnQgbnVtYmVycwogICAg
IH07Ci0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIGNvbnN0IGJsb2NrZWRQb3J0TGlzdEVuZCA9
IGJsb2NrZWRQb3J0TGlzdCArIHNpemVvZihibG9ja2VkUG9ydExpc3QpIC8gc2l6ZW9mKGJsb2Nr
ZWRQb3J0TGlzdFswXSk7CisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQqIGNvbnN0IGJsb2NrZWRQ
b3J0TGlzdEVuZCA9IGJsb2NrZWRQb3J0TGlzdCArIGFycmF5X3NpemUoYmxvY2tlZFBvcnRMaXN0
KTsKIAogI2lmbmRlZiBOREVCVUcKICAgICAvLyBUaGUgcG9ydCBsaXN0IG11c3QgYmUgc29ydGVk
IGZvciBiaW5hcnlfc2VhcmNoIHRvIHdvcmsuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5
LmNwcAppbmRleCAyMDAyMDE4Li40MzllNTUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdp
c3RyeS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMoKQogICAgICAgICAiaW1hZ2UveC1pY29uIiwgICAgLy8gaWNvCiAg
ICAgICAgICJpbWFnZS94LXhiaXRtYXAiICAvLyB4Ym0KICAgICB9OwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZW9mKHR5cGVzKSAvIHNpemVvZih0eXBlc1swXSk7ICsraSkgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZSh0eXBlcyk7ICsraSkgewogICAgICAg
ICBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGVzW2ldKTsKICAgICAgICAgc3VwcG9y
dGVkSW1hZ2VSZXNvdXJjZU1JTUVUeXBlcy0+YWRkKHR5cGVzW2ldKTsKICAgICB9CkBAIC0xODcs
NyArMTg3LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZEphdmFTY3JpcHRNSU1F
VHlwZXMoKQogICAgICAgICAidGV4dC9qc2NyaXB0IiwKICAgICAgICAgInRleHQvbGl2ZXNjcmlw
dCIsCiAgICAgfTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZih0eXBlcykgLyBz
aXplb2YodHlwZXNbMF0pOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9z
aXplKHR5cGVzKTsgKytpKQogICAgICAgc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcy0+YWRk
KHR5cGVzW2ldKTsKIH0KIApAQCAtMjE5LDEwICsyMTksOSBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMoKQogICAgICAgICAvLyBOb3RlOiBBRERJTkcg
YSBuZXcgdHlwZSBoZXJlIHdpbGwgcHJvYmFibHkgcmVuZGVyIGl0IGFzIEhUTUwuIFRoaXMgY2Fu
CiAgICAgICAgIC8vIHJlc3VsdCBpbiBjcm9zcy1zaXRlIHNjcmlwdGluZy4KICAgICB9OwotICAg
IENPTVBJTEVfQVNTRVJUKHNpemVvZih0eXBlcykgLyBzaXplb2YodHlwZXNbMF0pIDw9IDE2LAot
ICAgICAgICAgICAgICAgICAgIG5vbmltYWdlX21pbWVfdHlwZXNfbXVzdF9iZV9sZXNzX3RoYW5f
b3JfZXF1YWxfdG9fMTYpOworICAgIENPTVBJTEVfQVNTRVJUKGFycmF5X3NpemUodHlwZXMpIDw9
IDE2LCBub25pbWFnZV9taW1lX3R5cGVzX211c3RfYmVfbGVzc190aGFuX29yX2VxdWFsX3RvXzE2
KTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKHR5cGVzKS9zaXplb2YodHlw
ZXNbMF0pOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKHR5cGVz
KTsgKytpKQogICAgICAgICBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy0+YWRkKHR5cGVzW2ld
KTsKIAogICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdpc3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcygp
OwpAQCAtMzE5LDIxICszMTgsMTkgQEAgc3RhdGljIE1lZGlhTUlNRVR5cGVNYXAmIG1lZGlhTUlN
RVR5cGVNYXAoKQogICAgIGlmICghbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwOwogCi0gICAg
Y29uc3QgdW5zaWduZWQgbnVtUGFpcnMgPSBzaXplb2YocGFpcnMpIC8gc2l6ZW9mKHBhaXJzWzBd
KTsKLSAgICBmb3IgKHVuc2lnbmVkIG5keCA9IDA7IG5keCA8IG51bVBhaXJzOyArK25keCkgewot
Ci0gICAgICAgIGlmIChtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmNvbnRhaW5zKHBhaXJz
W25keF0uZXh0ZW5zaW9uKSkKLSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25N
YXAuZ2V0KHBhaXJzW25keF0uZXh0ZW5zaW9uKS0+YXBwZW5kKHBhaXJzW25keF0udHlwZSk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKHBhaXJzKTsgKytpKSB7CisgICAg
ICAgIGlmIChtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmNvbnRhaW5zKHBhaXJzW2ldLmV4
dGVuc2lvbikpCisgICAgICAgICAgICBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmdldChw
YWlyc1tpXS5leHRlbnNpb24pLT5hcHBlbmQocGFpcnNbaV0udHlwZSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4qIHN5bm9ueW1zID0gbmV3IFZlY3RvcjxTdHJp
bmc+OwogCiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHN5c3RlbSBzcGVjaWZpYyB0eXBl
IGZvciB0aGlzIGV4dGVuc2lvbiwgYWRkIGl0IGFzIHRoZSBmaXJzdCB0eXBlIHNvCiAgICAgICAg
ICAgICAvLyBnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uIHdpbGwgYWx3YXlzIHJldHVybiBp
dC4KLSAgICAgICAgICAgIFN0cmluZyBzeXN0ZW1UeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
TUlNRVR5cGVGb3JFeHRlbnNpb24ocGFpcnNbbmR4XS50eXBlKTsKLSAgICAgICAgICAgIGlmICgh
c3lzdGVtVHlwZS5pc0VtcHR5KCkgJiYgcGFpcnNbbmR4XS50eXBlICE9IHN5c3RlbVR5cGUpCisg
ICAgICAgICAgICBTdHJpbmcgc3lzdGVtVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVU
eXBlRm9yRXh0ZW5zaW9uKHBhaXJzW2ldLnR5cGUpOworICAgICAgICAgICAgaWYgKCFzeXN0ZW1U
eXBlLmlzRW1wdHkoKSAmJiBwYWlyc1tpXS50eXBlICE9IHN5c3RlbVR5cGUpCiAgICAgICAgICAg
ICAgICAgc3lub255bXMtPmFwcGVuZChzeXN0ZW1UeXBlKTsKLSAgICAgICAgICAgIHN5bm9ueW1z
LT5hcHBlbmQocGFpcnNbbmR4XS50eXBlKTsKLSAgICAgICAgICAgIG1lZGlhTUlNRVR5cGVGb3JF
eHRlbnNpb25NYXAuYWRkKHBhaXJzW25keF0uZXh0ZW5zaW9uLCBzeW5vbnltcyk7CisgICAgICAg
ICAgICBzeW5vbnltcy0+YXBwZW5kKHBhaXJzW2ldLnR5cGUpOworICAgICAgICAgICAgbWVkaWFN
SU1FVHlwZUZvckV4dGVuc2lvbk1hcC5hZGQocGFpcnNbaV0uZXh0ZW5zaW9uLCBzeW5vbnltcyk7
CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCmluZGV4IGZkYmY2MDEuLjY2MTVjNDEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vVVVJRC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9VVUlELmNwcApAQCAtMzksOSArMzksNiBAQAogCiAjaWYgT1MoV0lORE9XUykKICNpbmNsdWRl
IDxvYmpiYXNlLmg+Ci0jaWZuZGVmIEFSUkFZU0laRQotI2RlZmluZSBBUlJBWVNJWkUoYSkgICAg
ICAgICAgIChzaXplb2YoYSkgLyBzaXplb2YoKGEpWzBdKSkKLSNlbmRpZgogI2VsaWYgT1MoREFS
V0lOKQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZWxpZiBP
UyhMSU5VWCkKQEAgLTY2LDcgKzYzLDcgQEAgU3RyaW5nIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKQogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
d2NoYXJfdCB1dWlkU3RyWzQwXTsKLSAgICBpbnQgbnVtID0gU3RyaW5nRnJvbUdVSUQyKHV1aWQs
IHJlaW50ZXJwcmV0X2Nhc3Q8TFBPTEVTVFI+KHV1aWRTdHIpLCBBUlJBWVNJWkUodXVpZFN0cikp
OworICAgIGludCBudW0gPSBTdHJpbmdGcm9tR1VJRDIodXVpZCwgcmVpbnRlcnByZXRfY2FzdDxM
UE9MRVNUUj4odXVpZFN0ciksIGFycmF5X3NpemUodXVpZFN0cikpOwogICAgIEFTU0VSVChudW0g
PT0gMzkpOwogICAgIFN0cmluZyBjYW5vbmljYWxVdWlkU3RyID0gU3RyaW5nKHV1aWRTdHIgKyAx
LCBudW0gLSAzKS5sb3dlcigpOyAvLyByZW1vdmUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFja2V0
IGFuZCBtYWtlIGl0IGxvd2VyLgogICAgIEFTU0VSVChjYW5vbmljYWxVdWlkU3RyW3V1aWRWZXJz
aW9uSWRlbnRpZmllckluZGV4XSA9PSB1dWlkVmVyc2lvblJlcXVpcmVkKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCA2MDc2NzQ3Li5lYzg5MGNhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9p
ZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3RhdGVGcm9tRm9ybShFdmFzX09iamVjdCogbywg
Q29udHJvbFN0YXRlcyBzdGF0ZXMKICAgICAgICAgIndpbmRvdy1pbmFjdGl2ZSIsCiAgICAgICAg
ICJpbmRldGVybWluYXRlIgogICAgIH07Ci0gICAgc2l6ZV90IGksIGxhc3QgPSBzaXplb2Yoc2ln
bmFscykgLyBzaXplb2Yoc2lnbmFsc1swXSk7CisgICAgc2l6ZV90IGksIGxhc3QgPSBhcnJheV9z
aXplKHNpZ25hbHMpOwogCiAgICAgZWRqZV9vYmplY3Rfc2lnbmFsX2VtaXQobywgInJlc2V0Iiwg
IiIpOwogCkBAIC01OTYsNyArNTk2LDcgQEAgY29uc3QgY2hhciogUmVuZGVyVGhlbWVFZmw6OmVk
amVHcm91cEZyb21Gb3JtVHlwZShGb3JtVHlwZSB0eXBlKSBjb25zdAogICAgICAgICAwCiAgICAg
fTsKICAgICBBU1NFUlQodHlwZSA+PSAwKTsKLSAgICBBU1NFUlQoKHNpemVfdCl0eXBlIDwgc2l6
ZW9mKGdyb3VwcykgLyBzaXplb2YoZ3JvdXBzWzBdKSk7IC8vIG91dCBvZiBzeW5jPworICAgIEFT
U0VSVCgoc2l6ZV90KXR5cGUgPCBhcnJheV9zaXplKGdyb3VwcykpOyAvLyBvdXQgb2Ygc3luYz8K
ICAgICByZXR1cm4gZ3JvdXBzW3R5cGVdOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmNwcAppbmRleCA3NjFiZjQwLi5hZWJmMTBmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIGNvbnN0IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNbXSA9IHsKICAgICAi
aGlnaGxpZ2h0IiwKICAgICAibGlnaHRlciIKIH07Ci1jb25zdCBpbnQgbnVtQ29tcG9zaXRlT3Bl
cmF0b3JOYW1lcyA9IHNpemVvZihjb21wb3NpdGVPcGVyYXRvck5hbWVzKSAvIHNpemVvZihjb21w
b3NpdGVPcGVyYXRvck5hbWVzWzBdKTsKK2NvbnN0IGludCBudW1Db21wb3NpdGVPcGVyYXRvck5h
bWVzID0gYXJyYXlfc2l6ZShjb21wb3NpdGVPcGVyYXRvck5hbWVzKTsKIAogYm9vbCBwYXJzZUNv
bXBvc2l0ZU9wZXJhdG9yKGNvbnN0IFN0cmluZyYgcywgQ29tcG9zaXRlT3BlcmF0b3ImIG9wKQog
ewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2Fj
aGVDaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zv
bnRDYWNoZUNocm9taXVtV2luLmNwcAppbmRleCA3YzNlNDUwLi44NmZkNTExIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2lu
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNo
cm9taXVtV2luLmNwcApAQCAtMjExLDkgKzIxMSw4IEBAIHN0YXRpYyBib29sIExvb2t1cEFsdE5h
bWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGFsdE5hbWUpCiAgICAgc3RhdGljIE5hbWVN
YXAqIGZvbnROYW1lTWFwID0gMDsKIAogICAgIGlmICghZm9udE5hbWVNYXApIHsKLSAgICAgICAg
c2l6ZV90IG51bUVsZW1lbnRzID0gc2l6ZW9mKG5hbWVQYWlycykgLyBzaXplb2YoTmFtZVBhaXIp
OwogICAgICAgICBmb250TmFtZU1hcCA9IG5ldyBOYW1lTWFwOwotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyArK2kpCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXJyYXlfc2l6ZShuYW1lUGFpcnMpOyArK2kpCiAgICAgICAgICAgICBmb250TmFtZU1h
cC0+c2V0KFN0cmluZyhuYW1lUGFpcnNbaV0ubmFtZSksICYobmFtZVBhaXJzW2ldLmFsdE5hbWVD
b2RlcGFnZSkpOwogICAgIH0KIApAQCAtMzkxLDEwICszOTAsMTAgQEAgY29uc3QgU2ltcGxlRm9u
dERhdGEqIEZvbnRDYWNoZTo6Z2V0Rm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnMKICAgICBpbnQgbnVtRm9udHMgPSAwOwogICAgIGlmIChzY3JpcHQgPT0gVVNDUklQ
VF9IQU4pIHsKICAgICAgICAgcGFuVW5pRm9udHMgPSBjamtGb250czsKLSAgICAgICAgbnVtRm9u
dHMgPSBBUlJBWVNJWkUoY2prRm9udHMpOworICAgICAgICBudW1Gb250cyA9IGFycmF5X3NpemUo
Y2prRm9udHMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHBhblVuaUZvbnRzID0gY29tbW9uRm9u
dHM7Ci0gICAgICAgIG51bUZvbnRzID0gQVJSQVlTSVpFKGNvbW1vbkZvbnRzKTsKKyAgICAgICAg
bnVtRm9udHMgPSBhcnJheV9zaXplKGNvbW1vbkZvbnRzKTsKICAgICB9CiAgICAgLy8gRm9udCBy
ZXR1cm5lZCBmcm9tIEdldEZhbGxiYWNrRmFtaWx5IG1heSBub3QgY292ZXIgfGNoYXJhY3RlcnN8
CiAgICAgLy8gYmVjYXVzZSBpdCdzIGJhc2VkIG9uIHNjcmlwdCB0byBmb250IG1hcHBpbmcuIFRo
aXMgcHJvYmxlbSBpcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcAppbmRleCBlNzI1YzUwLi4xOGY4MDI2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGls
c0Nocm9taXVtV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcApAQCAtMTUwLDE0ICsxNTAsMTQgQEAgdm9pZCBpbml0
aWFsaXplU2NyaXB0Rm9udE1hcChTY3JpcHRUb0ZvbnRNYXAmIHNjcmlwdEZvbnRNYXApCiAgICAg
ICAgIHtVU0NSSVBUX01ZQU5NQVIsIG15YW5tYXJGb250c30sCiAgICAgfTsKIAotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgc2l6ZW9mKGZvbnRNYXApIC8gc2l6ZW9mKGZvbnRNYXBbMF0pOyArK2kp
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKGZvbnRNYXApOyArK2kpCiAg
ICAgICAgIHNjcmlwdEZvbnRNYXBbZm9udE1hcFtpXS5zY3JpcHRdID0gZm9udE1hcFtpXS5mYW1p
bHk7CiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBzY2FubmluZyB0aGUgaGFyZC1jb2RlZCBs
aXN0LCB3ZSBoYXZlIHRvIAogICAgIC8vIHVzZSBFbnVtRm9udCogdG8gJ2luc3BlY3QnIGZvbnRz
IHRvIHBpY2sgdXAgZm9udHMgY292ZXJpbmcgc2NyaXB0cwogICAgIC8vIHdoZW4gaXQncyBwb3Nz
aWJsZSAoZS5nLiB1c2luZyBPUy8yIHRhYmxlKS4gSWYgd2UgZG8gdGhhdCwgdGhpcyAKICAgICAv
LyBoYWQgYmV0dGVyIGJlIHB1bGxlZCBvdXQgb2YgaGVyZS4KLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IHNpemVvZihzY3JpcHRUb0ZvbnRGYW1pbGllcykgLyBzaXplb2Yoc2NyaXB0VG9Gb250RmFt
aWxpZXNbMF0pOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUo
c2NyaXB0VG9Gb250RmFtaWxpZXMpOyArK2kpIHsKICAgICAgICAgVVNjcmlwdENvZGUgc2NyaXB0
ID0gc2NyaXB0VG9Gb250RmFtaWxpZXNbaV0uc2NyaXB0OwogICAgICAgICBzY3JpcHRGb250TWFw
W3NjcmlwdF0gPSAwOwogICAgICAgICBjb25zdCBVQ2hhcioqIGZhbWlseVB0ciA9IHNjcmlwdFRv
Rm9udEZhbWlsaWVzW2ldLmZhbWlsaWVzOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwCmlu
ZGV4IDc0NGU2ZDQuLmJmZDhhMDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5jcHAKQEAg
LTEyNCw4ICsxMjQsOCBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBs
ZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnNDb3JlVGV4dChjb25zdCBVQwogICAgICAgICBjb25zdCBz
aG9ydCBydGxGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlID0gMTsKICAgICAgICAgc3RhdGljIGNv
bnN0IHZvaWQqIGx0ck9wdGlvblZhbHVlc1tdID0geyBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZsdHJGb3JjZWRFbWJlZGRpbmdMZXZlbFZh
bHVlKSB9OwogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCogcnRsT3B0aW9uVmFsdWVzW10gPSB7
IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNob3J0VHlwZSwg
JnJ0bEZvcmNlZEVtYmVkZGluZ0xldmVsVmFsdWUpIH07Ci0gICAgICAgIHN0YXRpYyBDRkRpY3Rp
b25hcnlSZWYgbHRyVHlwZXNldHRlck9wdGlvbnMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgbHRyT3B0aW9uVmFsdWVzLCBzaXplb2Yob3B0aW9u
S2V5cykgLyBzaXplb2YoKm9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKLSAgICAgICAgc3Rh
dGljIENGRGljdGlvbmFyeVJlZiBydGxUeXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBvcHRpb25LZXlzLCBydGxPcHRpb25WYWx1ZXMsIHNp
emVvZihvcHRpb25LZXlzKSAvIHNpemVvZigqb3B0aW9uS2V5cyksICZrQ0ZDb3B5U3RyaW5nRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwor
ICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGx0clR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIGx0ck9wdGlv
blZhbHVlcywgYXJyYXlfc2l6ZShvcHRpb25LZXlzKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5
S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgICAg
IHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgcnRsVHlwZXNldHRlck9wdGlvbnMgPSBDRkRpY3Rpb25h
cnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5cywgcnRsT3B0aW9uVmFsdWVz
LCBhcnJheV9zaXplKG9wdGlvbktleXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKICAgICAgICAgUmV0YWlu
UHRyPENUVHlwZXNldHRlclJlZj4gdHlwZXNldHRlcihBZG9wdENGLCBDVFR5cGVzZXR0ZXJDcmVh
dGVXaXRoQXR0cmlidXRlZFN0cmluZ0FuZE9wdGlvbnMoYXR0cmlidXRlZFN0cmluZy5nZXQoKSwg
bV9ydW4ubHRyKCkgPyBsdHJUeXBlc2V0dGVyT3B0aW9ucyA6IHJ0bFR5cGVzZXR0ZXJPcHRpb25z
KSk7CiAKICAgICAgICAgbGluZS5hZG9wdENGKENUVHlwZXNldHRlckNyZWF0ZUxpbmUodHlwZXNl
dHRlci5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwgMCkpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggN2Iw
ZTdhZi4uNjg0M2NkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0
aWMgdm9pZCBkaXNhYmxlQ29tcG9uZW50c09uY2UoKQogICAgICAgICB7J2ltZGMnLCAncGRmICcs
ICdhcHBsJywgMCwgMH0sICAKICAgICB9OwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplb2YoY29tcG9uZW50c1RvRGlzYWJsZSkvc2l6ZW9mKGNvbXBvbmVudHNUb0Rpc2FibGVbMF0p
OyArK2kpIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShjb21wb25lbnRz
VG9EaXNhYmxlKTsgKytpKSAKICAgICAgICAgd2tRVE1vdmllRGlzYWJsZUNvbXBvbmVudChjb21w
b25lbnRzVG9EaXNhYmxlW2ldKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFBVFNVSS5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQVRTVUkubW0KaW5kZXggYmVlYTAxOC4uZDMwMDk1MyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFB
VFNVSS5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0
YUFUU1VJLm1tCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgU2ltcGxlRm9udERhdGE6OmNoZWNrU2hh
cGVzQXJhYmljKCkgY29uc3QKICAgICAvLyBoZXVyaXN0aWMgaXMgdGhhdCBpZiBzdWNoIGEgZm9u
dCBoYXMgYSBnbHlwaCBtZXRhbW9ycGhvc2lzIHRhYmxlLCB0aGVuCiAgICAgLy8gaXQgaW5jbHVk
ZXMgc2hhcGluZyBpbmZvcm1hdGlvbiBmb3IgQXJhYmljLgogICAgIEZvdXJDaGFyQ29kZSB0YWJs
ZXNbXSA9IHsgJ21vcngnLCAnbW9ydCcgfTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZW9mKHRhYmxlcykgLyBzaXplb2YodGFibGVzWzBdKTsgKytpKSB7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKHRhYmxlcyk7ICsraSkgewogICAgICAgICBCeXRlQ291
bnQgdGFibGVTaXplOwogICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBBVFNGb250R2V0VGFibGUo
Zm9udElELCB0YWJsZXNbaV0sIDAsIDAsIDAsICZ0YWJsZVNpemUpOwogICAgICAgICBpZiAoc3Rh
dHVzID09IG5vRXJyKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4IDAxZDc1ZWUuLjMxZTljM2QgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29y
ZVRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnRE
YXRhQ29yZVRleHQuY3BwCkBAIC02MiwxNSArNjIsMTMgQEAgQ0ZEaWN0aW9uYXJ5UmVmIFNpbXBs
ZUZvbnREYXRhOjpnZXRDRlN0cmluZ0F0dHJpYnV0ZXMoVHlwZXNldHRpbmdGZWF0dXJlcyB0eXBl
c2UKICAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzV2l0aEtlcm5pbmdEaXNhYmxlZFtdID0geyBw
bGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwga2VybmluZ0FkanVzdG1lbnQsIGFsbG93TGlnYXR1cmVz
CiAgICAgICAgICAgICA/IGxpZ2F0dXJlc0FsbG93ZWQgOiBsaWdhdHVyZXNOb3RBbGxvd2VkLCBw
bGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsID8ga0NGQm9vbGVhblRydWUg
OiBrQ0ZCb29sZWFuRmFsc2UgfTsKICAgICAgICAgYXR0cmlidXRlc0RpY3Rpb25hcnkuYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGUoMCwga2V5c1dpdGhLZXJuaW5nRGlzYWJsZWQsIHZhbHVlc1dp
dGhLZXJuaW5nRGlzYWJsZWQsCi0gICAgICAgICAgICBzaXplb2Yoa2V5c1dpdGhLZXJuaW5nRGlz
YWJsZWQpIC8gc2l6ZW9mKCprZXlzV2l0aEtlcm5pbmdEaXNhYmxlZCksCi0gICAgICAgICAgICAm
a0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CisgICAgICAgICAgICBhcnJheV9zaXplKGtleXNXaXRoS2VybmluZ0Rp
c2FibGVkKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEJ5IG9t
aXR0aW5nIHRoZSBrQ1RLZXJuQXR0cmlidXRlTmFtZSBhdHRyaWJ1dGUsIHdlIGdldCBDb3JlIFRl
eHQncyBzdGFuZGFyZCBrZXJuaW5nLgogICAgICAgICBzdGF0aWMgY29uc3Qgdm9pZCoga2V5c1dp
dGhLZXJuaW5nRW5hYmxlZFtdID0geyBrQ1RGb250QXR0cmlidXRlTmFtZSwga0NUTGlnYXR1cmVB
dHRyaWJ1dGVOYW1lLCBrQ1RWZXJ0aWNhbEZvcm1zQXR0cmlidXRlTmFtZSB9OwogICAgICAgICBj
b25zdCB2b2lkKiB2YWx1ZXNXaXRoS2VybmluZ0VuYWJsZWRbXSA9IHsgcGxhdGZvcm1EYXRhKCku
Y3RGb250KCksIGFsbG93TGlnYXR1cmVzID8gbGlnYXR1cmVzQWxsb3dlZCA6IGxpZ2F0dXJlc05v
dEFsbG93ZWQsIHBsYXRmb3JtRGF0YSgpLm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWwgPyBrQ0ZC
b29sZWFuVHJ1ZSA6IGtDRkJvb2xlYW5GYWxzZSB9OwogICAgICAgICBhdHRyaWJ1dGVzRGljdGlv
bmFyeS5hZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzV2l0aEtlcm5pbmdFbmFibGVk
LCB2YWx1ZXNXaXRoS2VybmluZ0VuYWJsZWQsCi0gICAgICAgICAgICBzaXplb2Yoa2V5c1dpdGhL
ZXJuaW5nRW5hYmxlZCkgLyBzaXplb2YoKmtleXNXaXRoS2VybmluZ0VuYWJsZWQpLAotICAgICAg
ICAgICAgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgICAgICAgICAgYXJyYXlfc2l6ZShrZXlzV2l0aEtl
cm5pbmdFbmFibGVkKSwgJmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIH0KIAogICAgIHJldHVybiBhdHRy
aWJ1dGVzRGljdGlvbmFyeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDIyNDBmODAuLjEwMTAxZDIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtMzMwLDcgKzMzMCw3
IEBAIFNpbXBsZUZvbnREYXRhKiBGb250Q2FjaGU6OmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQo
Y29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250CiAgICAgICAgIEF0b21pY1N0cmluZygiQXJpYWwi
KQogICAgIH07CiAgICAgU2ltcGxlRm9udERhdGEqIHNpbXBsZUZvbnQ7Ci0gICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBBUlJBWVNJWkUoZmFsbGJhY2tGb250cyk7ICsraSkgeworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShmYWxsYmFja0ZvbnRzKTsgKytpKSB7CiAgICAgICAg
IGlmIChzaW1wbGVGb250ID0gZ2V0Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBmYWxs
YmFja0ZvbnRzW2ldKSkgewogICAgICAgICAgICAgZmFsbGJhY2tGb250TmFtZSA9IGZhbGxiYWNr
Rm9udHNbaV07CiAgICAgICAgICAgICByZXR1cm4gc2ltcGxlRm9udDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRl
eCBjOTI4OGU1Li5jYjYxMWVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9HcmFwaGljc0NvbnRleHRDR1dpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC0yMjgsMjAgKzIyOCwxNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0Q2hlY2tpbmcoY29uc3QgSW50UG9p
bnQmIHBvaW50LCBpbnQgd2lkdGgsCiAgICAgY29uc3QgZmxvYXQgbG93ZXJPcGFjaXR5ID0gMC44
OGY7CiAKICAgICAvL1RvcCBsaW5lCi0gICAgQ0dDb250ZXh0U2V0TGluZURhc2goY29udGV4dCwg
ZWRnZV9vZmZzZXQsIGVkZ2VfZGFzaF9sZW5ndGhzLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YoZWRnZV9kYXNoX2xlbmd0aHMpIC8gc2l6ZW9mKGVkZ2VfZGFzaF9sZW5ndGhzWzBd
KSk7CisgICAgQ0dDb250ZXh0U2V0TGluZURhc2goY29udGV4dCwgZWRnZV9vZmZzZXQsIGVkZ2Vf
ZGFzaF9sZW5ndGhzLCBhcnJheV9zaXplKGVkZ2VfZGFzaF9sZW5ndGhzKSk7CiAgICAgQ0dDb250
ZXh0U2V0QWxwaGEoY29udGV4dCwgdXBwZXJPcGFjaXR5KTsKICAgICBDR0NvbnRleHRTdHJva2VM
aW5lU2VnbWVudHMoY29udGV4dCwgdXBwZXJQb2ludHMsIDIpOwogIAogICAgIC8vIE1pZGRsZSBs
aW5lCi0gICAgQ0dDb250ZXh0U2V0TGluZURhc2goY29udGV4dCwgbWlkZGxlX29mZnNldCwgbWlk
ZGxlX2Rhc2hfbGVuZ3RocywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pZGRs
ZV9kYXNoX2xlbmd0aHMpIC8gc2l6ZW9mKG1pZGRsZV9kYXNoX2xlbmd0aHNbMF0pKTsKKyAgICBD
R0NvbnRleHRTZXRMaW5lRGFzaChjb250ZXh0LCBtaWRkbGVfb2Zmc2V0LCBtaWRkbGVfZGFzaF9s
ZW5ndGhzLCBhcnJheV9zaXplKG1pZGRsZV9kYXNoX2xlbmd0aHMpKTsKICAgICBDR0NvbnRleHRT
ZXRBbHBoYShjb250ZXh0LCBtaWRkbGVPcGFjaXR5KTsKICAgICBDR0NvbnRleHRTdHJva2VMaW5l
U2VnbWVudHMoY29udGV4dCwgbWlkZGxlUG9pbnRzLCAyKTsKICAgICAKICAgICAvLyBCb3R0b20g
bGluZQotICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRleHQsIGVkZ2Vfb2Zmc2V0LCBlZGdl
X2Rhc2hfbGVuZ3RocywKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZWRnZV9kYXNo
X2xlbmd0aHMpIC8gc2l6ZW9mKGVkZ2VfZGFzaF9sZW5ndGhzWzBdKSk7CisgICAgQ0dDb250ZXh0
U2V0TGluZURhc2goY29udGV4dCwgZWRnZV9vZmZzZXQsIGVkZ2VfZGFzaF9sZW5ndGhzLCBhcnJh
eV9zaXplKGVkZ2VfZGFzaF9sZW5ndGhzKSk7CiAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4
dCwgbG93ZXJPcGFjaXR5KTsKICAgICBDR0NvbnRleHRTdHJva2VMaW5lU2VnbWVudHMoY29udGV4
dCwgbG93ZXJQb2ludHMsIDIpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JY29uV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25X
aW4uY3BwCmluZGV4IDA1OTU5ZTAuLjQ4NjQwOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ljb25XaW4uY3BwCkBAIC02OSw3ICs2OSw3IEBAIFBhc3NSZWZQdHI8SWNvbj4gSWNv
bjo6Y3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAg
ICAgcmV0dXJuIDA7CiAjZWxzZQogICAgIFRDSEFSIGJ1ZmZlcltNQVhfUEFUSF07ICAgIAotICAg
IFVJTlQgbGVuZ3RoID0gOjpHZXRTeXN0ZW1EaXJlY3RvcnkoYnVmZmVyLCBBUlJBWVNJWkUoYnVm
ZmVyKSk7CisgICAgVUlOVCBsZW5ndGggPSA6OkdldFN5c3RlbURpcmVjdG9yeShidWZmZXIsIGFy
cmF5X3NpemUoYnVmZmVyKSk7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwog
ICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcApp
bmRleCA5MjI2M2I2Li45Y2ZhMDY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1Rp
bWVWaXN1YWxDb250ZXh0LmNwcApAQCAtMzE1LDcgKzMxNSw3IEBAIHN0YXRpYyB2b2lkIGRpc2Fi
bGVDb21wb25lbnRzT25jZSgpCiAgICAgICAgIHsnZWF0ICcsICdURVhUJywgJ3R4M2cnLCAwLCAw
fSwgIAogICAgIH07CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihjb21wb25l
bnRzVG9EaXNhYmxlKSAvIHNpemVvZihjb21wb25lbnRzVG9EaXNhYmxlWzBdKTsgKytpKSAKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemUoY29tcG9uZW50c1RvRGlzYWJsZSk7
ICsraSkgCiAgICAgICAgIFFUTW92aWU6OmRpc2FibGVDb21wb25lbnQoY29tcG9uZW50c1RvRGlz
YWJsZVtpXSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1FUTW92aWUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZS5jcHAK
aW5kZXggMzc1ZDhjMi4uZTg3YzNhZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vUVRNb3ZpZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
UVRNb3ZpZS5jcHAKQEAgLTU0OCw3ICs1NDgsNyBAQCB2b2lkIFFUTW92aWU6OmxvYWQoQ0ZVUkxS
ZWYgdXJsLCBib29sIHByZXNlcnZlc1BpdGNoKQogICAgIG1vdmllUHJvcHNbbW92aWVQcm9wQ291
bnRdLnByb3BTdGF0dXMgPSAwOyAKICAgICBtb3ZpZVByb3BDb3VudCsrOyAKIAotICAgIEFTU0VS
VChtb3ZpZVByb3BDb3VudCA8PSBzaXplb2YobW92aWVQcm9wcykgLyBzaXplb2YobW92aWVQcm9w
c1swXSkpOworICAgIEFTU0VSVChtb3ZpZVByb3BDb3VudCA8PSBhcnJheV9zaXplKG1vdmllUHJv
cHMpKTsKICAgICBtX3ByaXZhdGUtPm1fbG9hZEVycm9yID0gTmV3TW92aWVGcm9tUHJvcGVydGll
cyhtb3ZpZVByb3BDb3VudCwgbW92aWVQcm9wcywgMCwgMCwgJm1fcHJpdmF0ZS0+bV9tb3ZpZSk7
CiAKIGVuZDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDgwMDMwMWEuLjIyNzNkMGEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0
LmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVT
dHJlYW1zKCkKICAgICAgICAgLy8gQnV0IFNPQ0tTNSBjcmVkZW50aWFscyBkb24ndCB3b3JrIGF0
IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZyBhbnl3YXksIHNlZSA8cmRhcjovLzY3NzY2OTg+Lgog
ICAgICAgICBjb25zdCB2b2lkKiBwcm94eUtleXNbXSA9IHsga0NGU3RyZWFtUHJvcGVydHlTT0NL
U1Byb3h5SG9zdCwga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5UG9ydCB9OwogICAgICAgICBj
b25zdCB2b2lkKiBwcm94eVZhbHVlc1tdID0geyBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBv
cnQuZ2V0KCkgfTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdERp
Y3Rpb25hcnkoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIHByb3h5S2V5cywgcHJveHlW
YWx1ZXMsIHNpemVvZihwcm94eUtleXMpIC8gc2l6ZW9mKCpwcm94eUtleXMpLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3REaWN0aW9uYXJ5KEFk
b3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZSgwLCBwcm94eUtleXMsIHByb3h5VmFsdWVzLCBhcnJh
eV9zaXplKHByb3h5S2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJv
cGVydHkobV9yZWFkU3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNPQ0tTUHJveHksIGNv
bm5lY3REaWN0aW9uYXJ5LmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTM0
NCw3ICszNDQsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcygpCiAg
ICAgaWYgKHNob3VsZFVzZVNTTCgpKSB7CiAgICAgICAgIGNvbnN0IHZvaWQqIGtleXNbXSA9IHsg
a0NGU3RyZWFtU1NMUGVlck5hbWUsIGtDRlN0cmVhbVNTTExldmVsIH07CiAgICAgICAgIGNvbnN0
IHZvaWQqIHZhbHVlc1tdID0geyBob3N0LmdldCgpLCBrQ0ZTdHJlYW1Tb2NrZXRTZWN1cml0eUxl
dmVsTmVnb3RpYXRlZFNTTCB9OwotICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBz
ZXR0aW5ncyhBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGUoMCwga2V5cywgdmFsdWVzLCBzaXpl
b2Yoa2V5cykgLyBzaXplb2YoKmtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IHNldHRpbmdzKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZSgwLCBr
ZXlzLCB2YWx1ZXMsIGFycmF5X3NpemUoa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKICAgICAgICAgQ0ZSZWFk
U3RyZWFtU2V0UHJvcGVydHkobV9yZWFkU3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNT
TFNldHRpbmdzLCBzZXR0aW5ncy5nZXQoKSk7CiAgICAgICAgIENGV3JpdGVTdHJlYW1TZXRQcm9w
ZXJ0eShtX3dyaXRlU3RyZWFtLmdldCgpLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNTTFNldHRpbmdzLCBz
ZXR0aW5ncy5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5j
b2RpbmdSZWdpc3RyeS5jcHAKaW5kZXggZmJlNTgyNi4uMDBhOWMwNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCkBAIC0xODksNyArMTg5LDcg
QEAgc3RhdGljIHZvaWQgYWRkVG9UZXh0Q29kZWNNYXAoY29uc3QgY2hhciogbmFtZSwgTmV3VGV4
dENvZGVjRnVuY3Rpb24gZnVuY3Rpb24sIGMKIAogc3RhdGljIHZvaWQgcHJ1bmVCbGFja2xpc3Rl
ZENvZGVjcygpCiB7Ci0gICAgc2l6ZV90IGJsYWNrbGlzdGVkQ29kZWNMaXN0TGVuZ3RoID0gc2l6
ZW9mKHRleHRFbmNvZGluZ05hbWVCbGFja2xpc3QpIC8gc2l6ZW9mKHRleHRFbmNvZGluZ05hbWVC
bGFja2xpc3RbMF0pOworICAgIHNpemVfdCBibGFja2xpc3RlZENvZGVjTGlzdExlbmd0aCA9IGFy
cmF5X3NpemUodGV4dEVuY29kaW5nTmFtZUJsYWNrbGlzdCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBibGFja2xpc3RlZENvZGVjTGlzdExlbmd0aDsgKytpKSB7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGF0b21pY05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5nZXQodGV4dEVuY29kaW5n
TmFtZUJsYWNrbGlzdFtpXSk7CiAgICAgICAgIGlmICghYXRvbWljTmFtZSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcAppbmRleCA4
ZTJmMzNmLi43MDJlOTI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNj
b2Rlci9Gb250VHJhbnNjb2Rlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5z
Y29kZXIvRm9udFRyYW5zY29kZXIuY3BwCkBAIC00MSwyMyArNDEsMjMgQEAgRm9udFRyYW5zY29k
ZXI6OkZvbnRUcmFuc2NvZGVyKCkKIHsKICAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgUEdv
dGhpYyIsIEJhY2tzbGFzaFRvWWVuU2lnbik7CiAgICAgVUNoYXIgdW5pY29kZU5hbWVNU1BHb3Ro
aWNbXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAw
eDMwQzMsIDB4MzBBRn07Ci0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVu
aWNvZGVOYW1lTVNQR290aGljLCBzaXplb2YodW5pY29kZU5hbWVNU1BHb3RoaWMpIC8gc2l6ZW9m
KFVDaGFyKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CisgICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQo
QXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQR290aGljLCBhcnJheV9zaXplKHVuaWNvZGVOYW1l
TVNQR290aGljKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CiAKICAgICBtX2NvbnZlcnRlclR5cGVz
LmFkZCgiTVMgUE1pbmNobyIsIEJhY2tzbGFzaFRvWWVuU2lnbik7CiAgICAgVUNoYXIgdW5pY29k
ZU5hbWVNU1BNaW5jaG9bXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4NjYw
RSwgMHg2NzFEfTsKLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29k
ZU5hbWVNU1BNaW5jaG8sIHNpemVvZih1bmljb2RlTmFtZU1TUE1pbmNobykgLyBzaXplb2YoVUNo
YXIpKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKKyAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9t
aWNTdHJpbmcodW5pY29kZU5hbWVNU1BNaW5jaG8sIGFycmF5X3NpemUodW5pY29kZU5hbWVNU1BN
aW5jaG8pKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKIAogICAgIG1fY29udmVydGVyVHlwZXMuYWRk
KCJNUyBHb3RoaWMiLCBCYWNrc2xhc2hUb1llblNpZ24pOwogICAgIFVDaGFyIHVuaWNvZGVOYW1l
TVNHb3RoaWNbXSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweDMwQjQsIDB4MzBCNywgMHgz
MEMzLCAweDMwQUZ9OwotICAgIG1fY29udmVydGVyVHlwZXMuYWRkKEF0b21pY1N0cmluZyh1bmlj
b2RlTmFtZU1TR290aGljLCBzaXplb2YodW5pY29kZU5hbWVNU0dvdGhpYykgLyBzaXplb2YoVUNo
YXIpKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKKyAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9t
aWNTdHJpbmcodW5pY29kZU5hbWVNU0dvdGhpYywgYXJyYXlfc2l6ZSh1bmljb2RlTmFtZU1TR290
aGljKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CiAKICAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgi
TVMgTWluY2hvIiwgQmFja3NsYXNoVG9ZZW5TaWduKTsKICAgICBVQ2hhciB1bmljb2RlTmFtZU1T
TWluY2hvW10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHg2NjBFLCAweDY3MUR9OwotICAg
IG1fY29udmVydGVyVHlwZXMuYWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TTWluY2hvLCBz
aXplb2YodW5pY29kZU5hbWVNU01pbmNobykgLyBzaXplb2YoVUNoYXIpKSwgQmFja3NsYXNoVG9Z
ZW5TaWduKTsKKyAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5h
bWVNU01pbmNobywgYXJyYXlfc2l6ZSh1bmljb2RlTmFtZU1TTWluY2hvKSksIEJhY2tzbGFzaFRv
WWVuU2lnbik7CiAKICAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTWVpcnlvIiwgQmFja3NsYXNo
VG9ZZW5TaWduKTsKICAgICBVQ2hhciB1bmljb2RlTmFtZU1laXJ5b1tdID0gezB4MzBFMSwgMHgz
MEE0LCAweDMwRUEsIDB4MzBBQX07Ci0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3Ry
aW5nKHVuaWNvZGVOYW1lTWVpcnlvLCBzaXplb2YodW5pY29kZU5hbWVNZWlyeW8pIC8gc2l6ZW9m
KFVDaGFyKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CisgICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQo
QXRvbWljU3RyaW5nKHVuaWNvZGVOYW1lTWVpcnlvLCBhcnJheV9zaXplKHVuaWNvZGVOYW1lTWVp
cnlvKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CiB9CiAKIEZvbnRUcmFuc2NvZGVyOjpDb252ZXJ0
ZXJUeXBlIEZvbnRUcmFuc2NvZGVyOjpjb252ZXJ0ZXJUeXBlKGNvbnN0IEZvbnREZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uLCBjb25zdCBUZXh0RW5jb2RpbmcqIGVuY29kaW5nKSBjb25zdApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKaW5kZXgg
MTk4ODhiZi4uYmUzZDMyMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJv
YXJkVXRpbGl0aWVzV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRV
dGlsaXRpZXNXaW4uY3BwCkBAIC04NiwxMyArODYsMTMgQEAgc3RhdGljIGJvb2wgZ2V0V2ViTG9j
RGF0YShJRGF0YU9iamVjdCogZGF0YU9iamVjdCwgU3RyaW5nJiB1cmwsIFN0cmluZyogdGl0bGUp
CiAgICAgaWYgKCFoZHJvcCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFEcmFn
UXVlcnlGaWxlVyhoZHJvcCwgMCwgZmlsZW5hbWUsIEFSUkFZU0laRShmaWxlbmFtZSkpKQorICAg
IGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIDAsIGZpbGVuYW1lLCBhcnJheV9zaXplKGZpbGVu
YW1lKSkpCiAgICAgICAgIGdvdG8gZXhpdDsKIAogICAgIGlmIChfd2NzaWNtcChQYXRoRmluZEV4
dGVuc2lvblcoZmlsZW5hbWUpLCBMIi51cmwiKSkKICAgICAgICAgZ290byBleGl0OyAgICAKICAg
ICAKLSAgICBpZiAoIUdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMIkludGVybmV0U2hvcnRjdXQi
LCBMInVybCIsIDAsIHVybEJ1ZmZlciwgQVJSQVlTSVpFKHVybEJ1ZmZlciksIGZpbGVuYW1lKSkK
KyAgICBpZiAoIUdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMIkludGVybmV0U2hvcnRjdXQiLCBM
InVybCIsIDAsIHVybEJ1ZmZlciwgYXJyYXlfc2l6ZSh1cmxCdWZmZXIpLCBmaWxlbmFtZSkpCiAg
ICAgICAgIGdvdG8gZXhpdDsKICAgICAKICAgICBpZiAodGl0bGUpIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9DbGlwYm9hcmRXaW4uY3BwCmluZGV4IDdhNTQ3MzcuLjFlZjU1MWYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vQ2xpcGJvYXJkV2luLmNwcApAQCAtMTcxLDEyICsxNzEsMTIgQEAgc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsVVJMQ29udGVudChjb25zdCBTdHJpbmcmIHVybCwgaW50IGVzdGltYXRl
ZEZpbGVTaXplKQogICAgIGNoYXIqIGZpbGVDb250ZW50czsKICAgICBjaGFyIGFuc2lVcmxbSU5U
RVJORVRfTUFYX1VSTF9MRU5HVEggKyAxXTsKICAgICAvLyBVc2VkIHRvIGdlbmVyYXRlIHRoZSBi
dWZmZXIuIFRoaXMgaXMgbnVsbCB0ZXJtaW5hdGVkIHdoZXJlYXMgdGhlIGZpbGVDb250ZW50cyB3
b24ndCBiZS4KLSAgICBjaGFyIGNvbnRlbnRHZW5lcmF0aW9uQnVmZmVyW0lOVEVSTkVUX01BWF9V
UkxfTEVOR1RIICsgQVJSQVlTSVpFKHN6U2hlbGxEb3RVcmxUZW1wbGF0ZSkgKyAxXTsKKyAgICBj
aGFyIGNvbnRlbnRHZW5lcmF0aW9uQnVmZmVyW0lOVEVSTkVUX01BWF9VUkxfTEVOR1RIICsgYXJy
YXlfc2l6ZShzelNoZWxsRG90VXJsVGVtcGxhdGUpICsgMV07CiAgICAgCi0gICAgaWYgKGVzdGlt
YXRlZEZpbGVTaXplID4gMCAmJiBlc3RpbWF0ZWRGaWxlU2l6ZSA+IEFSUkFZU0laRShjb250ZW50
R2VuZXJhdGlvbkJ1ZmZlcikpCisgICAgaWYgKGVzdGltYXRlZEZpbGVTaXplID4gMCAmJiBlc3Rp
bWF0ZWRGaWxlU2l6ZSA+IGFycmF5X3NpemUoY29udGVudEdlbmVyYXRpb25CdWZmZXIpKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIGludCBhbnNpVXJsU2l6ZSA9IDo6V2lkZUNoYXJUb011bHRp
Qnl0ZShDUF9BQ1AsIDAsIChMUENXU1RSKXVybC5jaGFyYWN0ZXJzKCksIHVybC5sZW5ndGgoKSwg
YW5zaVVybCwgQVJSQVlTSVpFKGFuc2lVcmwpIC0gMSwgMCwgMCk7CisgICAgaW50IGFuc2lVcmxT
aXplID0gOjpXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgKExQQ1dTVFIpdXJsLmNoYXJh
Y3RlcnMoKSwgdXJsLmxlbmd0aCgpLCBhbnNpVXJsLCBhcnJheV9zaXplKGFuc2lVcmwpIC0gMSwg
MCwgMCk7CiAgICAgaWYgKCFhbnNpVXJsU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE5
MSw3ICsxOTEsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxVUkxDb250ZW50KGNvbnN0
IFN0cmluZyYgdXJsLCBpbnQgZXN0aW1hdGVkRmlsZVNpemUpCiAKICAgICBmaWxlQ29udGVudHMg
PSAoUFNUUilHbG9iYWxMb2NrKG1lbU9iaik7CiAKLSAgICBzcHJpbnRmX3MoY29udGVudEdlbmVy
YXRpb25CdWZmZXIsIEFSUkFZU0laRShjb250ZW50R2VuZXJhdGlvbkJ1ZmZlciksIHN6U2hlbGxE
b3RVcmxUZW1wbGF0ZSwgYW5zaVVybCk7CisgICAgc3ByaW50Zl9zKGNvbnRlbnRHZW5lcmF0aW9u
QnVmZmVyLCBhcnJheV9zaXplKGNvbnRlbnRHZW5lcmF0aW9uQnVmZmVyKSwgc3pTaGVsbERvdFVy
bFRlbXBsYXRlLCBhbnNpVXJsKTsKICAgICBDb3B5TWVtb3J5KGZpbGVDb250ZW50cywgY29udGVu
dEdlbmVyYXRpb25CdWZmZXIsIGZpbGVTaXplKTsKICAgICAKICAgICBHbG9iYWxVbmxvY2sobWVt
T2JqKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxIRHJv
cENvbnRlbnQoY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIGZpbGVOYW1lLCBTaGFyZQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIFdDSEFSIHRlbXBQYXRoW01BWF9QQVRIXTsKICAgICAgICAgV0NIQVIg
ZXh0ZW5zaW9uW01BWF9QQVRIXTsKLSAgICAgICAgaWYgKCE6OkdldFRlbXBQYXRoKEFSUkFZU0la
RSh0ZW1wUGF0aCksIHRlbXBQYXRoKSkKKyAgICAgICAgaWYgKCE6OkdldFRlbXBQYXRoKGFycmF5
X3NpemUodGVtcFBhdGgpLCB0ZW1wUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgaWYgKCE6OlBhdGhBcHBlbmQodGVtcFBhdGgsIGZpbGVOYW1lLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zMDIsNyArMzAyLDcg
QEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsVXJsRmlsZURlc2NyaXB0b3IoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgaW50IG1heFNpemUgPSBtaW4oZnNQYXRoLmxlbmd0aCgpLCBBUlJBWVNJWkUoZmdkLT5mZ2Rb
MF0uY0ZpbGVOYW1lKSk7CisgICAgaW50IG1heFNpemUgPSBtaW4oZnNQYXRoLmxlbmd0aCgpLCBh
cnJheV9zaXplKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwogICAgIENvcHlNZW1vcnkoZmdkLT5m
Z2RbMF0uY0ZpbGVOYW1lLCAoTFBDV1NUUilmc1BhdGguY2hhcmFjdGVycygpLCBtYXhTaXplICog
c2l6ZW9mKFVDaGFyKSk7CiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAgICAgCkBAIC0zNDQs
NyArMzQ0LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRv
cihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBpbnQgbWF4U2l6ZSA9IG1pbihmc1BhdGgubGVuZ3RoKCksIEFSUkFZU0laRShm
Z2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKKyAgICBpbnQgbWF4U2l6ZSA9IG1pbihmc1BhdGgubGVu
Z3RoKCksIGFycmF5X3NpemUoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7CiAgICAgQ29weU1lbW9y
eShmZ2QtPmZnZFswXS5jRmlsZU5hbWUsIChMUENXU1RSKWZzUGF0aC5jaGFyYWN0ZXJzKCksIG1h
eFNpemUgKiBzaXplb2YoVUNoYXIpKTsKICAgICBHbG9iYWxVbmxvY2sobWVtT2JqKTsKICAgICAK
QEAgLTYwNyw3ICs2MDcsNyBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBDbGlwYm9hcmRXaW46OmZp
bGVzKCkgY29uc3QKICAgICBXQ0hBUiBmaWxlbmFtZVtNQVhfUEFUSF07CiAgICAgVUlOVCBmaWxl
Q291bnQgPSBEcmFnUXVlcnlGaWxlVyhoZHJvcCwgMHhGRkZGRkZGRiwgMCwgMCk7CiAgICAgZm9y
IChVSU5UIGkgPSAwOyBpIDwgZmlsZUNvdW50OyBpKyspIHsKLSAgICAgICAgaWYgKCFEcmFnUXVl
cnlGaWxlVyhoZHJvcCwgaSwgZmlsZW5hbWUsIEFSUkFZU0laRShmaWxlbmFtZSkpKQorICAgICAg
ICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9wLCBpLCBmaWxlbmFtZSwgYXJyYXlfc2l6ZShmaWxl
bmFtZSkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGZpbGVzLT5hcHBlbmQoRmls
ZTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihmaWxlbmFtZSkpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggMDVmOTEwMy4uMTdlNmU4NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIERy
YWdEYXRhOjphc0ZpbGVuYW1lcyhWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdAogCiAgICAg
Y29uc3QgdW5zaWduZWQgbnVtRmlsZXMgPSBEcmFnUXVlcnlGaWxlVyhoZHJvcCwgMHhGRkZGRkZG
RiwgMCwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZpbGVzOyBpKyspIHsK
LSAgICAgICAgaWYgKCFEcmFnUXVlcnlGaWxlVyhoZHJvcCwgMCwgZmlsZW5hbWUsIEFSUkFZU0la
RShmaWxlbmFtZSkpKQorICAgICAgICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9wLCAwLCBmaWxl
bmFtZSwgYXJyYXlfc2l6ZShmaWxlbmFtZSkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoKFVDaGFyKilmaWxlbmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA0YjdhNjkyLi4wYzk2MTk5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMTkyLDggKzE5Miw4IEBAIENTdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hhciosIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogCiAgICAgY2hhciB0ZW1wUGF0
aFtNQVhfUEFUSF07Ci0gICAgaW50IHRlbXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aEEoX2Nv
dW50b2YodGVtcFBhdGgpLCB0ZW1wUGF0aCk7Ci0gICAgaWYgKHRlbXBQYXRoTGVuZ3RoIDw9IDAg
fHwgdGVtcFBhdGhMZW5ndGggPiBfY291bnRvZih0ZW1wUGF0aCkpCisgICAgaW50IHRlbXBQYXRo
TGVuZ3RoID0gOjpHZXRUZW1wUGF0aEEoYXJyYXlfc2l6ZSh0ZW1wUGF0aCksIHRlbXBQYXRoKTsK
KyAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExlbmd0aCA+IGFycmF5X3Np
emUodGVtcFBhdGgpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwogCiAgICAgSENSWVBUUFJP
ViBoQ3J5cHRQcm92ID0gMDsKQEAgLTI3NCw3ICsyNzQsNyBAQCBib29sIHNhZmVDcmVhdGVGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgQ0ZEYXRhUmVmIGRhdGEpCiB7CiAgICAgLy8gQ3JlYXRlIGEg
dGVtcG9yYXJ5IGZpbGUuCiAgICAgV0NIQVIgdGVtcERpclBhdGhbTUFYX1BBVEhdOwotICAgIGlm
ICghR2V0VGVtcFBhdGhXKEFSUkFZU0laRSh0ZW1wRGlyUGF0aCksIHRlbXBEaXJQYXRoKSkKKyAg
ICBpZiAoIUdldFRlbXBQYXRoVyhhcnJheV9zaXplKHRlbXBEaXJQYXRoKSwgdGVtcERpclBhdGgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBXQ0hBUiB0ZW1wUGF0aFtNQVhfUEFUSF07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKaW5kZXggMmEyNzA4
OS4uZGRhYTkxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVt
V2luQ0UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNw
cApAQCAtMTc0LDggKzE3NCw4IEBAIENTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgY2hh
ciosIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogICAgIGhhbmRsZSA9IElOVkFMSURfSEFO
RExFX1ZBTFVFOwogCiAgICAgd2NoYXJfdCB0ZW1wUGF0aFtNQVhfUEFUSF07Ci0gICAgaW50IHRl
bXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aChfY291bnRvZih0ZW1wUGF0aCksIHRlbXBQYXRo
KTsKLSAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExlbmd0aCA+IF9jb3Vu
dG9mKHRlbXBQYXRoKSkKKyAgICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoKGFy
cmF5X3NpemUodGVtcFBhdGgpLCB0ZW1wUGF0aCk7CisgICAgaWYgKHRlbXBQYXRoTGVuZ3RoIDw9
IDAgfHwgdGVtcFBhdGhMZW5ndGggPiBhcnJheV9zaXplKHRlbXBQYXRoKSkKICAgICAgICAgcmV0
dXJuIENTdHJpbmcoKTsKIAogICAgIEhDUllQVFBST1YgaENyeXB0UHJvdiA9IDA7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1dlYkNvcmUv
cGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCmluZGV4IDZjYmNkYzguLmZkYjFlMDQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisr
KyBiL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0zNCwxMCAr
MzQsNiBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAKLSNp
ZiBDT01QSUxFUihNSU5HVykKLSNkZWZpbmUgX2NvdW50b2YoeCkgKHNpemVvZih4KS9zaXplb2Yo
eFswXSkpCi0jZW5kaWYKLQogI2lmIE9TKFdJTkNFKQogLy8gV0lOQ0UgZG9lc24ndCBzdXBwb3J0
IFJlZ2lzdHJ5IEtleSBBY2Nlc3MgUmlnaHRzLiBUaGUgcGFyYW1ldGVyIHNob3VsZCBhbHdheXMg
YmUgMAogI2lmbmRlZiBLRVlfRU5VTUVSQVRFX1NVQl9LRVlTCkBAIC05Niw3ICs5Miw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBhZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeShIS0VZIHJvb3RLZXks
IEhhc2hTZXQ8U3RyaW5nPiYgcGF0CiAKICAgICAvLyBFbnVtZXJhdGUgc3Via2V5cwogICAgIGZv
ciAoaW50IGkgPSAwOzsgaSsrKSB7Ci0gICAgICAgIERXT1JEIG5hbWVMZW4gPSBfY291bnRvZihu
YW1lKTsKKyAgICAgICAgRFdPUkQgbmFtZUxlbiA9IGFycmF5X3NpemUobmFtZSk7CiAgICAgICAg
IHJlc3VsdCA9IFJlZ0VudW1LZXlFeFcoa2V5LCBpLCBuYW1lLCAmbmFtZUxlbiwgMCwgMCwgMCwg
Jmxhc3RNb2RpZmllZCk7CiAKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQpA
QCAtMjU3LDkgKzI1Myw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRXaW5kb3dzTWVkaWFQbGF5
ZXJQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yCiAjaWYgIU9TKFdJTkNF
KQogICAgIC8vIFRoZSBuZXcgV01QIEZpcmVmb3ggcGx1Z2luIGlzIGluc3RhbGxlZCBpbiBcUEZp
bGVzXFBsdWdpbnMgaWYgaXQgY2FuJ3QgZmluZCBhbnkgRmlyZWZveCBpbnN0YWxscwogICAgIFdD
SEFSIHBsdWdpbkRpcmVjdG9yeVN0cltfTUFYX1BBVEggKyAxXTsKLSAgICBEV09SRCBwbHVnaW5E
aXJlY3RvcnlTaXplID0gOjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKFRFWFQoIiVTWVNURU1E
UklWRSVcXFBGaWxlc1xcUGx1Z2lucyIpLCBwbHVnaW5EaXJlY3RvcnlTdHIsIF9jb3VudG9mKHBs
dWdpbkRpcmVjdG9yeVN0cikpOworICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4
cGFuZEVudmlyb25tZW50U3RyaW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQbHVn
aW5zIiksIHBsdWdpbkRpcmVjdG9yeVN0ciwgYXJyYXlfc2l6ZShwbHVnaW5EaXJlY3RvcnlTdHIp
KTsKIAotICAgIGlmIChwbHVnaW5EaXJlY3RvcnlTaXplID4gMCAmJiBwbHVnaW5EaXJlY3RvcnlT
aXplIDw9IF9jb3VudG9mKHBsdWdpbkRpcmVjdG9yeVN0cikpCisgICAgaWYgKHBsdWdpbkRpcmVj
dG9yeVNpemUgPiAwICYmIHBsdWdpbkRpcmVjdG9yeVNpemUgPD0gYXJyYXlfc2l6ZShwbHVnaW5E
aXJlY3RvcnlTdHIpKQogICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBsdWdpbkRp
cmVjdG9yeVN0ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKICNlbmRpZgogCkBAIC00MTAs
NyArNDA2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3Rv
cmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAjaWYgIU9TKFdJTkNFKQogICAgIFdD
SEFSIHN5c3RlbURpcmVjdG9yeVN0cltNQVhfUEFUSF07CiAKLSAgICBpZiAoR2V0U3lzdGVtRGly
ZWN0b3J5KHN5c3RlbURpcmVjdG9yeVN0ciwgX2NvdW50b2Yoc3lzdGVtRGlyZWN0b3J5U3RyKSkg
PT0gMCkKKyAgICBpZiAoIUdldFN5c3RlbURpcmVjdG9yeShzeXN0ZW1EaXJlY3RvcnlTdHIsIGFy
cmF5X3NpemUoc3lzdGVtRGlyZWN0b3J5U3RyKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdD
SEFSIG1hY3JvbWVkaWFEaXJlY3RvcnlTdHJbTUFYX1BBVEhdOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IDQ4NTViYWIuLmQyMjIxZmIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKQEAgLTQ3OSwxMSArNDc5LDExIEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBmb250RmFtaWxpZXNXaXRoSW52YWxpZENoYXJXaWR0aFtdID0gewogYm9vbCBS
ZW5kZXJUZXh0Q29udHJvbDo6aGFzVmFsaWRBdmdDaGFyV2lkdGgoQXRvbWljU3RyaW5nIGZhbWls
eSkKIHsKICAgICBzdGF0aWMgSGFzaFNldDxBdG9taWNTdHJpbmc+KiBmb250RmFtaWxpZXNXaXRo
SW52YWxpZENoYXJXaWR0aE1hcCA9IDA7Ci0gICAgCisKICAgICBpZiAoIWZvbnRGYW1pbGllc1dp
dGhJbnZhbGlkQ2hhcldpZHRoTWFwKSB7CiAgICAgICAgIGZvbnRGYW1pbGllc1dpdGhJbnZhbGlk
Q2hhcldpZHRoTWFwID0gbmV3IEhhc2hTZXQ8QXRvbWljU3RyaW5nPjsKLSAgICAgICAgCi0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoZm9udEZhbWlsaWVzV2l0aEludmFs
aWRDaGFyV2lkdGgpIC8gc2l6ZW9mKGZvbnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoWzBd
KTsgaSsrKQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShmb250
RmFtaWxpZXNXaXRoSW52YWxpZENoYXJXaWR0aCk7IGkrKykKICAgICAgICAgICAgIGZvbnRGYW1p
bGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoTWFwLT5hZGQoQXRvbWljU3RyaW5nKGZvbnRGYW1pbGll
c1dpdGhJbnZhbGlkQ2hhcldpZHRoW2ldKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9icmVha19saW5lcy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5l
cy5jcHAKaW5kZXggYzZjMWRkZC4uNmNkYjYyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvYnJlYWtfbGluZXMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNw
cApAQCAtMTE0LDggKzExNCw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFzY2lpTGlu
ZUJyZWFrVGFibGVbXVsoYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyIC0KICN1bmRlZiBESQog
I3VuZGVmIEFMCiAKLUNPTVBJTEVfQVNTRVJUKHNpemVvZihhc2NpaUxpbmVCcmVha1RhYmxlKSAv
IHNpemVvZihhc2NpaUxpbmVCcmVha1RhYmxlWzBdKSA9PSBhc2NpaUxpbmVCcmVha1RhYmxlTGFz
dENoYXIgLSBhc2NpaUxpbmVCcmVha1RhYmxlRmlyc3RDaGFyICsgMSwKLSAgICAgICAgVGVzdExp
bmVCcmVha1RhYmxlQ29uc2lzdGVuY3kpOworQ09NUElMRV9BU1NFUlQoYXJyYXlfc2l6ZShhc2Np
aUxpbmVCcmVha1RhYmxlKSA9PSBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgLSBhc2NpaUxp
bmVCcmVha1RhYmxlRmlyc3RDaGFyICsgMSwgVGVzdExpbmVCcmVha1RhYmxlQ29uc2lzdGVuY3kp
OwogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQnJlYWtBZnRlcihVQ2hhciBjaCwgVUNoYXIg
bmV4dENoKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRl
eCBjMTgyOTRkLi5hZjE4YTg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZVRhYmxlcyhTUUxp
dGVEYXRhYmFzZSogc3FsaXRlRGF0YWJhc2UpCiAgICAgICAgICJDUkVBVEUgSU5ERVggSUYgTk9U
IEVYSVNUUyBJbmRleERhdGFfaW5kZXhJZCBPTiBJbmRleERhdGEoaW5kZXhJZCkiCiAgICAgICAg
IH07CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShjb21tYW5kcyk7ICsr
aSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShjb21tYW5kcyk7ICsr
aSkgewogICAgICAgICBpZiAoIXNxbGl0ZURhdGFiYXNlLT5leGVjdXRlQ29tbWFuZChjb21tYW5k
c1tpXSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIHJlY292ZXIg
ZnJvbSB0aGlzIHNpdHVhdGlvbi4gTWF5YmUgbnVrZSB0aGUgZGF0YWJhc2UgYW5kIHN0YXJ0IG92
ZXI/CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBydW4gdGhlIGZvbGxvd2luZyBj
b21tYW5kIGZvciBJbmRleGVkREI6ICVzIiwgY29tbWFuZHNbaV0pOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1h
YmxlLmNwcAppbmRleCBhMjVlMDg2Li45OWZlN2UyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm1hYmxlLmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNw
cApAQCAtMTQ1LDE5ICsxNDUsMTkgQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNlQW5kU2tpcFR5
cGUoY29uc3QgVUNoYXIqJiBjdXJyVHJhbnNmb3JtLCBjb25zdCBVQ2hhciogZW4KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICgqY3VyclRyYW5zZm9ybSA9PSAncycpIHsKLSAg
ICAgICAgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBza2V3WERlc2MsIHNpemVv
Zihza2V3WERlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgIGlmIChza2lwU3RyaW5nKGN1
cnJUcmFuc2Zvcm0sIGVuZCwgc2tld1hEZXNjLCBhcnJheV9zaXplKHNrZXdYRGVzYykpKQogICAg
ICAgICAgICAgdHlwZSA9IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TS0VXWDsKLSAgICAg
ICAgZWxzZSBpZiAoc2tpcFN0cmluZyhjdXJyVHJhbnNmb3JtLCBlbmQsIHNrZXdZRGVzYywgc2l6
ZW9mKHNrZXdZRGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgZWxzZSBpZiAoc2tpcFN0
cmluZyhjdXJyVHJhbnNmb3JtLCBlbmQsIHNrZXdZRGVzYywgYXJyYXlfc2l6ZShza2V3WURlc2Mp
KSkKICAgICAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0tFV1k7
Ci0gICAgICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBzY2FsZURl
c2MsIHNpemVvZihzY2FsZURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgIGVsc2UgaWYg
KHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBzY2FsZURlc2MsIGFycmF5X3NpemUoc2Nh
bGVEZXNjKSkpCiAgICAgICAgICAgICB0eXBlID0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JN
X1NDQUxFOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSBl
bHNlIGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgdHJhbnNsYXRlRGVzYywgc2l6
ZW9mKHRyYW5zbGF0ZURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgfSBlbHNlIGlmIChza2lw
U3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgdHJhbnNsYXRlRGVzYywgYXJyYXlfc2l6ZSh0cmFu
c2xhdGVEZXNjKSkpCiAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1f
VFJBTlNMQVRFOwotICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBy
b3RhdGVEZXNjLCBzaXplb2Yocm90YXRlRGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICBlbHNl
IGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgcm90YXRlRGVzYywgYXJyYXlfc2l6
ZShyb3RhdGVEZXNjKSkpCiAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZP
Uk1fUk9UQVRFOwotICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBt
YXRyaXhEZXNjLCBzaXplb2YobWF0cml4RGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICBlbHNl
IGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgbWF0cml4RGVzYywgYXJyYXlfc2l6
ZShtYXRyaXhEZXNjKSkpCiAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZP
Uk1fTUFUUklYOwogICAgIGVsc2UgCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNw
cAppbmRleCAyMGM1OGFjLi43ZjJhNzJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdWaWV3
U3BlYy5jcHAKKysrIGIvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIGJvb2wgU1ZHVmlld1NwZWM6OnBhcnNlVmlld1NwZWMoY29uc3QgU3RyaW5nJiB2aWV3U3Bl
YykKICAgICBpZiAoY3VyclZpZXdTcGVjID49IGVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKCFza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCBzdmdWaWV3U3BlYywgc2l6
ZW9mKHN2Z1ZpZXdTcGVjKSAvIHNpemVvZihVQ2hhcikpKQorICAgIGlmICghc2tpcFN0cmluZyhj
dXJyVmlld1NwZWMsIGVuZCwgc3ZnVmlld1NwZWMsIGFycmF5X3NpemUoc3ZnVmlld1NwZWMpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwg
KmN1cnJWaWV3U3BlYyAhPSAnKCcgKQpAQCAtOTEsNyArOTEsNyBAQCBib29sIFNWR1ZpZXdTcGVj
OjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAKICAgICB3aGlsZSAoY3Vy
clZpZXdTcGVjIDwgZW5kICYmICpjdXJyVmlld1NwZWMgIT0gJyknKSB7CiAgICAgICAgIGlmICgq
Y3VyclZpZXdTcGVjID09ICd2JykgewotICAgICAgICAgICAgaWYgKHNraXBTdHJpbmcoY3VyclZp
ZXdTcGVjLCBlbmQsIHZpZXdCb3hTcGVjLCBzaXplb2Yodmlld0JveFNwZWMpIC8gc2l6ZW9mKFVD
aGFyKSkpIHsKKyAgICAgICAgICAgIGlmIChza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCB2
aWV3Qm94U3BlYywgYXJyYXlfc2l6ZSh2aWV3Qm94U3BlYykpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKCcpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBjdXJyVmlld1NwZWMr
KzsKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIFNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNv
bnN0IFN0cmluZyYgdmlld1NwZWMpCiAgICAgICAgICAgICAgICAgaWYgKGN1cnJWaWV3U3BlYyA+
PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKScpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgICAgICBjdXJyVmlld1NwZWMrKzsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgdmlld1RhcmdldFNwZWMsIHNp
emVvZih2aWV3VGFyZ2V0U3BlYykgLyBzaXplb2YoVUNoYXIpKSkgeworICAgICAgICAgICAgfSBl
bHNlIGlmIChza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCB2aWV3VGFyZ2V0U3BlYywgYXJy
YXlfc2l6ZSh2aWV3VGFyZ2V0U3BlYykpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJWaWV3
U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKCcpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogdmlld1RhcmdldFN0
YXJ0ID0gKytjdXJyVmlld1NwZWM7CkBAIC0xMTUsNyArMTE1LDcgQEAgYm9vbCBTVkdWaWV3U3Bl
Yzo6cGFyc2VWaWV3U3BlYyhjb25zdCBTdHJpbmcmIHZpZXdTcGVjKQogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9IGVsc2UgaWYgKCpj
dXJyVmlld1NwZWMgPT0gJ3onKSB7Ci0gICAgICAgICAgICBpZiAoIXNraXBTdHJpbmcoY3VyclZp
ZXdTcGVjLCBlbmQsIHpvb21BbmRQYW5TcGVjLCBzaXplb2Yoem9vbUFuZFBhblNwZWMpIC8gc2l6
ZW9mKFVDaGFyKSkpCisgICAgICAgICAgICBpZiAoIXNraXBTdHJpbmcoY3VyclZpZXdTcGVjLCBl
bmQsIHpvb21BbmRQYW5TcGVjLCBhcnJheV9zaXplKHpvb21BbmRQYW5TcGVjKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBl
bmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKCcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgU1ZHVmlld1NwZWM6OnBhcnNlVmlld1NwZWMoY29u
c3QgU3RyaW5nJiB2aWV3U3BlYykKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICBjdXJyVmlld1NwZWMrKzsKICAgICAgICAgfSBlbHNlIGlmICgqY3VyclZpZXdTcGVj
ID09ICdwJykgewotICAgICAgICAgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5k
LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3BlYywgc2l6ZW9mKHByZXNlcnZlQXNwZWN0UmF0aW9TcGVj
KSAvIHNpemVvZihVQ2hhcikpKQorICAgICAgICAgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJWaWV3
U3BlYywgZW5kLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3BlYywgYXJyYXlfc2l6ZShwcmVzZXJ2ZUFz
cGVjdFJhdGlvU3BlYykpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGlmIChjdXJyVmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIFNWR1Zp
ZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY3VyclZpZXdTcGVjKys7CiAgICAgICAg
IH0gZWxzZSBpZiAoKmN1cnJWaWV3U3BlYyA9PSAndCcpIHsKLSAgICAgICAgICAgIGlmICghc2tp
cFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgdHJhbnNmb3JtU3BlYywgc2l6ZW9mKHRyYW5zZm9y
bVNwZWMpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgICAgICBpZiAoIXNraXBTdHJpbmcoY3Vy
clZpZXdTcGVjLCBlbmQsIHRyYW5zZm9ybVNwZWMsIGFycmF5X3NpemUodHJhbnNmb3JtU3BlYykp
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChjdXJyVmll
d1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwIGIv
V2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKaW5kZXggOTNhYjNhZC4uZjg1ZTdiMCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5jcHAKKysrIGIvV2ViQ29yZS9zdmcv
U1ZHWm9vbUFuZFBhbi5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgc3RhdGljIGNvbnN0IFVDaGFyIG1h
Z25pZnlbXSA9ICB7J20nLCAnYScsICdnJywgJ24nLCAnaScsICdmJywgJ3knfTsKIAogYm9vbCBT
Vkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4oY29uc3QgVUNoYXIqJiBzdGFydCwgY29uc3Qg
VUNoYXIqIGVuZCkKIHsKLSAgICBpZiAoc2tpcFN0cmluZyhzdGFydCwgZW5kLCBkaXNhYmxlLCBz
aXplb2YoZGlzYWJsZSkgLyBzaXplb2YoVUNoYXIpKSkKKyAgICBpZiAoc2tpcFN0cmluZyhzdGFy
dCwgZW5kLCBkaXNhYmxlLCBhcnJheV9zaXplKGRpc2FibGUpKSkKICAgICAgICAgc2V0Wm9vbUFu
ZFBhbihTVkdfWk9PTUFORFBBTl9ESVNBQkxFKTsKLSAgICBlbHNlIGlmIChza2lwU3RyaW5nKHN0
YXJ0LCBlbmQsIG1hZ25pZnksIHNpemVvZihtYWduaWZ5KSAvIHNpemVvZihVQ2hhcikpKQorICAg
IGVsc2UgaWYgKHNraXBTdHJpbmcoc3RhcnQsIGVuZCwgbWFnbmlmeSwgYXJyYXlfc2l6ZShtYWdu
aWZ5KSkpCiAgICAgICAgIHNldFpvb21BbmRQYW4oU1ZHX1pPT01BTkRQQU5fTUFHTklGWSk7CiAg
ICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5jcHAgYi9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXgg
OGI0ZTcyMC4uOWQ1MGE0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMu
Y3BwCisrKyBiL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtNzA4LDEwICs3MDgs
OSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcCgpCiAgICAgICAgIHsgInRyYW5zbGF0
ZSIsIHsgJmNyZWF0ZUZ1blRyYW5zbGF0ZSwgMyB9IH0sCiAgICAgICAgIHsgInRydWUiLCB7ICZj
cmVhdGVGdW5UcnVlLCAwIH0gfSwKICAgICB9OwotICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1G
dW5jdGlvbnMgPSBzaXplb2YoZnVuY3Rpb25zKSAvIHNpemVvZihmdW5jdGlvbnNbMF0pOwogCiAg
ICAgZnVuY3Rpb25NYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIEZ1bmN0aW9uUmVjPjsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnVuY3Rpb25zOyArK2kpCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKGZ1bmN0aW9ucyk7ICsraSkKICAgICAgICAgZnVuY3Rp
b25NYXAtPnNldChmdW5jdGlvbnNbaV0ubmFtZSwgZnVuY3Rpb25zW2ldLmZ1bmN0aW9uKTsKIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwIGIvV2ViQ29yZS94bWwv
WFBhdGhQYXJzZXIuY3BwCmluZGV4IGMyNDJhNWMuLmE1YjFjYzEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUveG1sL1hQYXRoUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2V0VXBBeGlzTmFtZXNNYXAoQXhpc05hbWVz
TWFwJiBheGlzTmFtZXMpCiAgICAgICAgIHsgInByZWNlZGluZy1zaWJsaW5nIiwgU3RlcDo6UHJl
Y2VkaW5nU2libGluZ0F4aXMgfSwKICAgICAgICAgeyAic2VsZiIsIFN0ZXA6OlNlbGZBeGlzIH0K
ICAgICB9OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplb2YoYXhpc05hbWVMaXN0
KSAvIHNpemVvZihheGlzTmFtZUxpc3RbMF0pOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcnJheV9zaXplKGF4aXNOYW1lTGlzdCk7ICsraSkKICAgICAgICAgYXhpc05hbWVzLnNl
dChheGlzTmFtZUxpc3RbaV0ubmFtZSwgYXhpc05hbWVMaXN0W2ldLmF4aXMpOwogfQogCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCBmMGZjZDU2Li4zYjAyZjczIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV1RGOjph
cnJheV9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGFu
ZCB1c2FnZXMuCisKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmludGVycHJldEtleUV2ZW50KToKKyAgICAgICAg
KiBzcmMvZ3RrL1dlYklucHV0RXZlbnRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2Rr
RXZlbnRUb1dpbmRvd3NLZXlDb2RlKToKKyAgICAgICAgKiB0ZXN0cy9LVVJMVGVzdC5jcHA6Cisg
ICAgICAgIChDb21wb25lbnRDYXNlOjpURVNUKToKKwogMjAxMC0xMC0yMiAgSmF5IENpdmVsbGkg
IDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2
aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCAxMTk3N2I2
Li5iNDhmMTJlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudElt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKQEAg
LTUxNiwxMiArNTE2LDEyIEBAIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudEltcGw6OmludGVycHJl
dEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2dCkKICAgICAgICAga2V5RG93bkNvbW1h
bmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CiAgICAgICAgIGtleVByZXNz
Q29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKIAotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlzaXplKGtleURvd25FbnRyaWVzKTsgaSsrKSB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleURvd25FbnRy
aWVzKTsgaSsrKSB7CiAgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3du
RW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5RG93bkVudHJpZXNbaV0u
bmFtZSk7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJy
YXlzaXplKGtleVByZXNzRW50cmllcyk7IGkrKykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJyYXlfc2l6ZShrZXlQcmVzc0VudHJpZXMpOyBpKyspIHsKICAgICAgICAgICAg
IGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8
IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtleVByZXNzRW50cmllc1tpXS5uYW1lKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwCmluZGV4
IDcxZDFiMzkuLmZmODhiZDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvZ3RrL1dl
YklucHV0RXZlbnRGYWN0b3J5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJJ
bnB1dEV2ZW50RmFjdG9yeS5jcHAKQEAgLTIzMyw4ICsyMzMsNyBAQCBzdGF0aWMgaW50IGdka0V2
ZW50VG9XaW5kb3dzS2V5Q29kZShjb25zdCBHZGtFdmVudEtleSogZXZlbnQpCiAgICAgaWYgKHdp
bmRvd3NLZXlDb2RlKQogICAgICAgICByZXR1cm4gd2luZG93c0tleUNvZGU7CiAKLSAgICBjb25z
dCBpbnQgdGFibGVTaXplID0gc2l6ZW9mKGhhcmR3YXJlQ29kZVRvR0RLS2V5dmFsKSAvIHNpemVv
ZihoYXJkd2FyZUNvZGVUb0dES0tleXZhbFswXSk7Ci0gICAgaWYgKGV2ZW50LT5oYXJkd2FyZV9r
ZXljb2RlIDwgdGFibGVTaXplKSB7CisgICAgaWYgKGV2ZW50LT5oYXJkd2FyZV9rZXljb2RlIDwg
YXJyYXlfc2l6ZShoYXJkd2FyZUNvZGVUb0dES0tleXZhbCkpIHsKICAgICAgICAgaW50IGtleXZh
bCA9IGhhcmR3YXJlQ29kZVRvR0RLS2V5dmFsW2V2ZW50LT5oYXJkd2FyZV9rZXljb2RlXTsKICAg
ICAgICAgaWYgKGtleXZhbCkKICAgICAgICAgICAgIHJldHVybiBXZWJDb3JlOjp3aW5kb3dzS2V5
Q29kZUZvcktleUV2ZW50KGtleXZhbCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvS1VSTFRlc3QuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tVUkxUZXN0LmNwcAppbmRl
eCAxNTJkZDMxLi5jNjU1ZjY0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvS1VS
TFRlc3QuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LVVJMVGVzdC5jcHAKQEAgLTEz
NSw3ICsxMzUsNyBAQCBURVNUKEtVUkxUZXN0LCBEaWZmZXJlbnRHZXR0ZXJzKQogICAgICAgICB7
Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9mb28vYmxhaD9iYXI9YmF6I1x4Y2VceGIxXHhjZVx4YjIi
LCAiaHR0cCIsICJ3d3cuZ29vZ2xlLmNvbSIsIDAsICIiLCAwLCAiL2Zvby9ibGFoLyIsICJibGFo
IiwgImJhcj1iYXoiLCAiXHhjZVx4YjFceGNlXHhiMiJ9LAogICAgIH07CiAKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShjYXNlcyk7IGkrKykgeworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShjYXNlcyk7IGkrKykgewogICAgICAgICBXZWJDb3JlOjpL
VVJMIGt1cmwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBjYXNlc1tpXS51cmwpOwogCiAgICAg
ICAgIEVYUEVDVF9FUShjYXNlc1tpXS5wcm90b2NvbCwga3VybC5wcm90b2NvbCgpKTsKZGlmZiAt
LWdpdCBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXgg
NDZhODBkZi4uYTNkODliMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMC0yMyAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV1RGOjphcnJheV9zaXplCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVu
aWZ5IHRoZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50RWZsOjppbnRlcnByZXRLZXlFdmVudCk6CisKIDIwMTAtMTAtMjIgIFNhbSBX
ZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2Fy
bHNzb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAK
aW5kZXggYTYzYjcxMi4uNmY4MjFjOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50RWZsLmNwcApAQCAtMjkyLDggKzI5Miw2IEBAIHN0YXRpYyBjb25zdCBLZXlQ
cmVzc0VudHJ5IGtleVByZXNzRW50cmllc1tdID0gewogICAgIHsgJ1xyJywgICBBbHRLZXkgfCBT
aGlmdEtleSwgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAogfTsKIAotI2RlZmluZSBBUlJBWVNJWkUoYXJyYXkpIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9m
KChhcnJheSlbMF0pKQotCiBjb25zdCBjaGFyKiBFZGl0b3JDbGllbnRFZmw6OmludGVycHJldEtl
eUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIEFTU0VSVChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCk7CkBAIC0zMDUsMTAgKzMwMywxMCBAQCBjb25zdCBj
aGFyKiBFZGl0b3JDbGllbnRFZmw6OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQs
IGNvbnN0IGNoYXIqPjsKICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcCA9IG5ldyBIYXNoTWFw
PGludCwgY29uc3QgY2hhcio+OwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBB
UlJBWVNJWkUoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhcnJheV9zaXplKGtleURvd25FbnRyaWVzKTsgaSsrKQogICAgICAgICAgICAga2V5
RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwg
a2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CiAK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZU0laRShrZXlQcmVzc0VudHJp
ZXMpOyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtl
eVByZXNzRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNl
dChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ld
LmNoYXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFmNDVh
NjMuLjczZThmNDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fu
c3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURjo6YXJyYXlfc2l6ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAgICAgICBVbmlmeSB0
aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKGNhY2hlTW9kZWxGb3JNYWluQnVuZGxl
KToKKwogMjAxMC0xMC0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQppbmRleCBjY2ZiNjMyLi41MmM0YjliIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tCkBAIC0xMTcsMTEgKzExNywxMSBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBjYWNoZU1v
ZGVsRm9yTWFpbkJ1bmRsZSh2b2lkKQogICAgIFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbDsKIAog
ICAgIGNvbnN0IGNoYXIqIGJ1bmRsZUlEID0gW1tbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl0gVVRGOFN0cmluZ107Ci0gICAgaWYgKGNvbnRhaW5zKGRvY3VtZW50Vmlld2Vy
SURzLCBzaXplb2YoZG9jdW1lbnRWaWV3ZXJJRHMpIC8gc2l6ZW9mKGRvY3VtZW50Vmlld2VySURz
WzBdKSwgYnVuZGxlSUQpKQorICAgIGlmIChjb250YWlucyhkb2N1bWVudFZpZXdlcklEcywgYXJy
YXlfc2l6ZShkb2N1bWVudFZpZXdlcklEcyksIGJ1bmRsZUlEKSkKICAgICAgICAgY2FjaGVNb2Rl
bCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKLSAgICBlbHNlIGlmIChjb250YWlucyhk
b2N1bWVudEJyb3dzZXJJRHMsIHNpemVvZihkb2N1bWVudEJyb3dzZXJJRHMpIC8gc2l6ZW9mKGRv
Y3VtZW50QnJvd3NlcklEc1swXSksIGJ1bmRsZUlEKSkKKyAgICBlbHNlIGlmIChjb250YWlucyhk
b2N1bWVudEJyb3dzZXJJRHMsIGFycmF5X3NpemUoZG9jdW1lbnRCcm93c2VySURzKSwgYnVuZGxl
SUQpKQogICAgICAgICBjYWNoZU1vZGVsID0gV2ViQ2FjaGVNb2RlbERvY3VtZW50QnJvd3NlcjsK
LSAgICBlbHNlIGlmIChjb250YWlucyhwcmltYXJ5V2ViQnJvd3NlcklEcywgc2l6ZW9mKHByaW1h
cnlXZWJCcm93c2VySURzKSAvIHNpemVvZihwcmltYXJ5V2ViQnJvd3NlcklEc1swXSksIGJ1bmRs
ZUlEKSkKKyAgICBlbHNlIGlmIChjb250YWlucyhwcmltYXJ5V2ViQnJvd3NlcklEcywgYXJyYXlf
c2l6ZShwcmltYXJ5V2ViQnJvd3NlcklEcyksIGJ1bmRsZUlEKSkKICAgICAgICAgY2FjaGVNb2Rl
bCA9IFdlYkNhY2hlTW9kZWxQcmltYXJ5V2ViQnJvd3NlcjsKICAgICBlbHNlIHsKICAgICAgICAg
Ym9vbCBpc0xlZ2FjeUFwcCA9ICFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZF
UlNJT05fV0lUSF9DQUNIRV9NT0RFTF9BUEkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCAyMTc3YjQxLi5m
NzQ3NTAxIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMTEyNyw4ICsxMTI3LDggQEAgdm9pZCBRV2ViUGFn
ZVByaXZhdGU6OmR5bmFtaWNQcm9wZXJ0eUNoYW5nZUV2ZW50KFFEeW5hbWljUHJvcGVydHlDaGFu
Z2VFdmVudCogZXYKICAgICAgICAgfTsKIAogICAgICAgICBRU3RyaW5nIHAgPSBxLT5wcm9wZXJ0
eSgiX3FfUmVwYWludFRocm90dGxpbmdQcmVzZXQiKS50b1N0cmluZygpOwotICAgICAgICBmb3Io
aW50IGkgPSAwOyBpIDwgc2l6ZW9mKHByZXNldHMpIC8gc2l6ZW9mKHByZXNldHNbMF0pOyBpKysp
IHsKLSAgICAgICAgICAgIGlmKHAgPT0gcHJlc2V0c1tpXS5uYW1lKSB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShwcmVzZXRzKTsgKytpKSB7CisgICAgICAgICAg
ICBpZiAocCA9PSBwcmVzZXRzW2ldLm5hbWUpIHsKICAgICAgICAgICAgICAgICBGcmFtZVZpZXc6
OnNldFJlcGFpbnRUaHJvdHRsaW5nRGVmZXJyZWRSZXBhaW50RGVsYXkoCiAgICAgICAgICAgICAg
ICAgICAgICAgICBwcmVzZXRzW2ldLmRlZmVycmVkUmVwYWludERlbGF5KTsKICAgICAgICAgICAg
ICAgICBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nbkluaXRpYWxEZWZlcnJlZFJlcGFp
bnREZWxheUR1cmluZ0xvYWRpbmcoCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5NzBiMDlkLi4zMjVmNjNmIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV1RG
OjphcnJheV9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25z
IGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdl
YlBhZ2VQcml2YXRlOjpkeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4pOgorCiAyMDEwLTEwLTIyICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxz
c29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCmluZGV4IGEwYjIzMzAuLmMwYzhkZjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTEzMDYsOCArMTMwNiw2IEBAIHN0YXRp
YyBjb25zdCBDU1NQcm9wZXJ0eUlEIHFzdHlsZVNoZWV0UHJvcGVydGllc1tdID0gewogICAgIENT
U1Byb3BlcnR5Rm9udFdlaWdodAogfTsKIAotY29uc3QgdW5zaWduZWQgbnVtcVN0eWxlU2hlZXRQ
cm9wZXJ0aWVzID0gc2l6ZW9mKHFzdHlsZVNoZWV0UHJvcGVydGllcykgLyBzaXplb2YocXN0eWxl
U2hlZXRQcm9wZXJ0aWVzWzBdKTsKLQogY2xhc3MgUXRQbHVnaW5XaWRnZXQ6IHB1YmxpYyBXaWRn
ZXQKIHsKIHB1YmxpYzoKQEAgLTE0NDcsNyArMTQ0NSw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBG
cmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6
ZSwKICAgICAgICAgICAgIGlmICghc3R5bGVTaGVldC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAg
ICAgc3R5bGVTaGVldCArPSBRTGF0aW4xQ2hhcignOycpOwogCi0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtcVN0eWxlU2hlZXRQcm9wZXJ0aWVzOyArK2kpIHsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZShxc3R5bGVTaGVldFByb3Bl
cnRpZXMpOyArK2kpIHsKICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0g
cXN0eWxlU2hlZXRQcm9wZXJ0aWVzW2ldOwogCiAgICAgICAgICAgICAgICAgc3R5bGVTaGVldCAr
PSBRU3RyaW5nOjpmcm9tTGF0aW4xKGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eSkpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBl
OTI3ZDE1Li5hYmUzZGMyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTEwLTIzICBQYXRyaWNr
IEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXVEY6OmFycmF5X3NpemUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODI4CisKKyAgICAgICAgVW5p
ZnkgdGhlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzYWdlcy4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKGlzUHJl
SW5zcGVjdEVsZW1lbnRUYWdTYWZhcmkpOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpzdWdnZXN0ZWRGaWxlRXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmludGVycHJldEtleUV2ZW50KToK
KwogMjAxMC0xMC0yMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IHRoZSBXaW5kb3dzIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAppbmRleCBhYjFmNzllLi5jNzg1NzgzIDEwMDY0NAot
LS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcAor
KysgYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmNwcApA
QCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgYm9vbCBpc1ByZUluc3BlY3RFbGVtZW50VGFnU2FmYXJp
KElXZWJVSURlbGVnYXRlKiB1aURlbGVnYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBUQ0hBUiBtb2R1bGVQYXRoW01BWF9QQVRIXTsKLSAgICBEV09SRCBsZW5ndGggPSA6OkdldE1v
ZHVsZUZpbGVOYW1lKDAsIG1vZHVsZVBhdGgsIF9jb3VudG9mKG1vZHVsZVBhdGgpKTsKKyAgICBE
V09SRCBsZW5ndGggPSA6OkdldE1vZHVsZUZpbGVOYW1lKDAsIG1vZHVsZVBhdGgsIGFycmF5X3Np
emUobW9kdWxlUGF0aCkpOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIvV2ViS2l0L3dp
bi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggNjQ0ZTFkOC4uNWQwNzg3MSAxMDA2NDQKLS0tIGEv
V2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJVUkxSZXNw
b25zZS5jcHAKQEAgLTQ0MCw3ICs0NDAsNyBAQCBIUkVTVUxUIFdlYlVSTFJlc3BvbnNlOjpzdWdn
ZXN0ZWRGaWxlRXh0ZW5zaW9uKEJTVFIgKnJlc3VsdCkKICAgICAgICAgaWYgKCFlcnIpIHsKICAg
ICAgICAgICAgIERXT1JEIGtleVR5cGUgPSBSRUdfU1o7CiAgICAgICAgICAgICBUQ0hBUiBleHRl
bnNpb25bTUFYX1BBVEhdOwotICAgICAgICAgICAgRFdPUkQga2V5U2l6ZSA9IHNpemVvZihleHRl
bnNpb24pL3NpemVvZihleHRlbnNpb25bMF0pOworICAgICAgICAgICAgRFdPUkQga2V5U2l6ZSA9
IGFycmF5X3NpemUoZXh0ZW5zaW9uKTsKICAgICAgICAgICAgIGVyciA9IFJlZ1F1ZXJ5VmFsdWVF
eChzdWJLZXksIFRFWFQoIkV4dGVuc2lvbiIpLCAwLCAma2V5VHlwZSwgKExQQllURSlleHRlbnNp
b24sICZrZXlTaXplKTsKICAgICAgICAgICAgIGlmICghZXJyICYmIGtleVR5cGUgIT0gUkVHX1Na
KQogICAgICAgICAgICAgICAgIGVyciA9IEVSUk9SX0lOVkFMSURfREFUQTsKZGlmZiAtLWdpdCBh
L1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGE2
YzNjYjQuLjQ5M2Y3MDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMTgzMywxMCArMTgzMywxMCBAQCBjb25zdCBjaGFy
KiBXZWJWaWV3OjppbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50KiBldnQpCiAg
ICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+
OwogICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBj
aGFyKj47CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9jb3VudG9mKGtleURv
d25FbnRyaWVzKTsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJyYXlf
c2l6ZShrZXlEb3duRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtleURvd25Db21tYW5kc01h
cC0+c2V0KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVz
W2ldLnZpcnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOwogCi0gICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBfY291bnRvZihrZXlQcmVzc0VudHJpZXMpOyBpKyspCisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleVByZXNzRW50cmllcyk7
IGkrKykKICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJp
ZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQ
cmVzc0VudHJpZXNbaV0ubmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luY2Uv
Q2hhbmdlTG9nIGIvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCAyZTA1ODVkLi5jYjk0NmZh
IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW5jZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgV1RGOjphcnJheV9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZm
ZXJlbnQgaW1wbGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVu
dFdpbkNFOjppbnRlcnByZXRLZXlFdmVudCk6CisKIDIwMTAtMTAtMjIgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRp
ZmYgLS1naXQgYS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0Uu
Y3BwIGIvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcApp
bmRleCBiOWU2ZmIxLi5lZDFhZTJjIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCisrKyBiL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKQEAgLTMxMywxMCArMzEzLDEwIEBAIGNvbnN0IGNo
YXIqIEVkaXRvckNsaWVudFdpbkNFOjppbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2
ZW50KiBldmVudCkKICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50
LCBjb25zdCBjaGFyKj47CiAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1h
cDxpbnQsIGNvbnN0IGNoYXIqPjsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
X2NvdW50b2Yoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhcnJheV9zaXplKGtleURvd25FbnRyaWVzKTsgaSsrKQogICAgICAgICAgICAga2V5
RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwg
a2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CiAK
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9jb3VudG9mKGtleVByZXNzRW50cmll
cyk7IGkrKykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5X3NpemUoa2V5
UHJlc3NFbnRyaWVzKTsgaSsrKQogICAgICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcC0+c2V0
KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlQcmVzc0VudHJpZXNbaV0u
Y2hhckNvZGUsIGtleVByZXNzRW50cmllc1tpXS5uYW1lKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGY3N2UwOC4uNTBm
NjU2OCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgV1RGOjphcnJheV9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJlbnQg
aW1wbGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNo
ZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvd2lu
L1BsdWdpbkluZm9TdG9yZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNhZmFyaVBsdWdpbnNE
aXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRNb3ppbGxhUGx1Z2luRGlyZWN0b3JpZXMp
OgorICAgICAgICAoV2ViS2l0OjphZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjphZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjphZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAo
V2ViS2l0OjphZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aW50ZXJwcmV0S2V5RXZlbnQpOgorCiAyMDEwLTEwLTIxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1v
dGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBTdHViIG91dCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC4KZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL3dpbi9Qcm9jZXNz
TGF1bmNoZXJXaW4uY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NM
YXVuY2hlcldpbi5jcHAKaW5kZXggYTFjOWFhZi4uOWU2YzgzOCAxMDA2NDQKLS0tIGEvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAKKysrIGIvV2Vi
S2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBXQ0hBUiBwYXRoU3RyW01BWF9QQVRIXTsKLSAgICBpZiAoITo6R2V0
TW9kdWxlRmlsZU5hbWVXKHdlYktpdE1vZHVsZSwgcGF0aFN0ciwgX2NvdW50b2YocGF0aFN0cikp
KQorICAgIGlmICghOjpHZXRNb2R1bGVGaWxlTmFtZVcod2ViS2l0TW9kdWxlLCBwYXRoU3RyLCBh
cnJheV9zaXplKHBhdGhTdHIpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgOjpQYXRoUmVtb3Zl
RmlsZVNwZWNXKHBhdGhTdHIpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
d2luL1BsdWdpbkluZm9TdG9yZVdpbi5jcHAKaW5kZXggNjQ1YjRjMC4uMTI3NTkwYSAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNw
cAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4u
Y3BwCkBAIC04Miw5ICs4Miw5IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHNhZmFyaVBsdWdpbnNE
aXJlY3RvcnkoKQogICAgICAgICBjYWNoZWRQbHVnaW5EaXJlY3RvcnkgPSB0cnVlOwogCiAgICAg
ICAgIFdDSEFSIG1vZHVsZUZpbGVOYW1lU3RyW01BWF9QQVRIXTsKLSAgICAgICAgaW50IG1vZHVs
ZUZpbGVOYW1lTGVuID0gOjpHZXRNb2R1bGVGaWxlTmFtZVcoMCwgbW9kdWxlRmlsZU5hbWVTdHIs
IF9jb3VudG9mKG1vZHVsZUZpbGVOYW1lU3RyKSk7CisgICAgICAgIGludCBtb2R1bGVGaWxlTmFt
ZUxlbiA9IDo6R2V0TW9kdWxlRmlsZU5hbWVXKDAsIG1vZHVsZUZpbGVOYW1lU3RyLCBhcnJheV9z
aXplKG1vZHVsZUZpbGVOYW1lU3RyKSk7CiAKLSAgICAgICAgaWYgKCFtb2R1bGVGaWxlTmFtZUxl
biB8fCBtb2R1bGVGaWxlTmFtZUxlbiA9PSBfY291bnRvZihtb2R1bGVGaWxlTmFtZVN0cikpCisg
ICAgICAgIGlmICghbW9kdWxlRmlsZU5hbWVMZW4gfHwgbW9kdWxlRmlsZU5hbWVMZW4gPT0gYXJy
YXlfc2l6ZShtb2R1bGVGaWxlTmFtZVN0cikpCiAgICAgICAgICAgICByZXR1cm4gcGx1Z2luc0Rp
cmVjdG9yeTsKIAogICAgICAgICBpZiAoITo6UGF0aFJlbW92ZUZpbGVTcGVjVyhtb2R1bGVGaWxl
TmFtZVN0cikpCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE1vemls
bGFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAKICAgICAv
LyBFbnVtZXJhdGUgc3Via2V5cwogICAgIGZvciAoaW50IGkgPSAwOzsgaSsrKSB7Ci0gICAgICAg
IERXT1JEIG5hbWVMZW4gPSBfY291bnRvZihuYW1lKTsKKyAgICAgICAgRFdPUkQgbmFtZUxlbiA9
IGFycmF5X3NpemUobmFtZSk7CiAgICAgICAgIHJlc3VsdCA9IDo6UmVnRW51bUtleUV4VyhrZXks
IGksIG5hbWUsICZuYW1lTGVuLCAwLCAwLCAwLCAmbGFzdE1vZGlmaWVkKTsKIAogICAgICAgICBp
ZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCkBAIC0xNDMsOSArMTQzLDkgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3Ry
aW5nPiYgZGlyZWN0b3IKIHsKICAgICAvLyBUaGUgbmV3IFdNUCBGaXJlZm94IHBsdWdpbiBpcyBp
bnN0YWxsZWQgaW4gXFBGaWxlc1xQbHVnaW5zIGlmIGl0IGNhbid0IGZpbmQgYW55IEZpcmVmb3gg
aW5zdGFsbHMKICAgICBXQ0hBUiBwbHVnaW5EaXJlY3RvcnlTdHJbTUFYX1BBVEggKyAxXTsKLSAg
ICBEV09SRCBwbHVnaW5EaXJlY3RvcnlTaXplID0gOjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NX
KEwiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQbHVnaW5zIiwgcGx1Z2luRGlyZWN0b3J5U3RyLCBf
Y291bnRvZihwbHVnaW5EaXJlY3RvcnlTdHIpKTsKKyAgICBEV09SRCBwbHVnaW5EaXJlY3RvcnlT
aXplID0gOjpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NXKEwiJVNZU1RFTURSSVZFJVxcUEZpbGVz
XFxQbHVnaW5zIiwgcGx1Z2luRGlyZWN0b3J5U3RyLCBhcnJheV9zaXplKHBsdWdpbkRpcmVjdG9y
eVN0cikpOwogCi0gICAgaWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBsdWdpbkRpcmVj
dG9yeVNpemUgPD0gX2NvdW50b2YocGx1Z2luRGlyZWN0b3J5U3RyKSkKKyAgICBpZiAocGx1Z2lu
RGlyZWN0b3J5U2l6ZSA+IDAgJiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBhcnJheV9zaXplKHBs
dWdpbkRpcmVjdG9yeVN0cikpCiAgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1
Z2luRGlyZWN0b3J5U3RyLCBwbHVnaW5EaXJlY3RvcnlTaXplIC0gMSkpOwogCiAgICAgRFdPUkQg
dHlwZTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3Jv
YmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKIAogICAgIC8v
IEVudW1lcmF0ZSBzdWJrZXlzCiAgICAgZm9yIChpbnQgaSA9IDA7OyBpKyspIHsKLSAgICAgICAg
RFdPUkQgbmFtZUxlbiA9IF9jb3VudG9mKG5hbWUpOworICAgICAgICBEV09SRCBuYW1lTGVuID0g
YXJyYXlfc2l6ZShuYW1lKTsKICAgICAgICAgcmVzdWx0ID0gOjpSZWdFbnVtS2V5RXhXKGtleSwg
aSwgbmFtZSwgJm5hbWVMZW4sIDAsIDAsIDAsICZsYXN0TW9kaWZpZWQpOwogCiAgICAgICAgIGlm
IChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgYWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBk
aXJlY3RvcmllcykKICNpZiAhT1MoV0lOQ0UpCiAgICAgV0NIQVIgc3lzdGVtRGlyZWN0b3J5U3Ry
W01BWF9QQVRIXTsKIAotICAgIGlmICghOjpHZXRTeXN0ZW1EaXJlY3RvcnlXKHN5c3RlbURpcmVj
dG9yeVN0ciwgX2NvdW50b2Yoc3lzdGVtRGlyZWN0b3J5U3RyKSkpCisgICAgaWYgKCE6OkdldFN5
c3RlbURpcmVjdG9yeVcoc3lzdGVtRGlyZWN0b3J5U3RyLCBhcnJheV9zaXplKHN5c3RlbURpcmVj
dG9yeVN0cikpKQogICAgICAgICByZXR1cm47CiAKICAgICBXQ0hBUiBtYWNyb21lZGlhRGlyZWN0
b3J5U3RyW01BWF9QQVRIXTsKQEAgLTMxMiw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBhZGRQbHVn
aW5QYXRoc0Zyb21SZWdpc3RyeShIS0VZIHJvb3RLZXksIFZlY3RvcjxTdHJpbmc+JiBwYXRocykK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgOyArK2kpIHsKICAgICAgICAgLy8gTVNETiBzYXlzIHRo
YXQga2V5IG5hbWVzIGhhdmUgYSBtYXhpbXVtIGxlbmd0aCBvZiAyNTUgY2hhcmFjdGVycy4KICAg
ICAgICAgd2NoYXJfdCBuYW1lWzI1Nl07Ci0gICAgICAgIERXT1JEIG5hbWVMZW4gPSBfY291bnRv
ZihuYW1lKTsKKyAgICAgICAgRFdPUkQgbmFtZUxlbiA9IGFycmF5X3NpemUobmFtZSk7CiAgICAg
ICAgIGlmICg6OlJlZ0VudW1LZXlFeFcoa2V5LCBpLCBuYW1lLCAmbmFtZUxlbiwgMCwgMCwgMCwg
MCkgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXggYmJlMjE4Ni4uNDI1ZmIy
MyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4u
Y3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApA
QCAtMTU3LDEwICsxNTcsMTAgQEAgY29uc3QgY2hhciogV2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZl
bnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZ0KQogICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAg
PSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKICAgICAgICAga2V5UHJlc3NDb21tYW5k
c01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OwogCi0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBfY291bnRvZihrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheV9zaXplKGtleURvd25FbnRyaWVzKTsgKytpKQog
ICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9k
aWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJp
ZXNbaV0ubmFtZSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9jb3VudG9m
KGtleVByZXNzRW50cmllcyk7IGkrKykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
cnJheV9zaXplKGtleVByZXNzRW50cmllcyk7ICsraSkKICAgICAgICAgICAgIGtleVByZXNzQ29t
bWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJl
c3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7CiAgICAgfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71663</attachid>
            <date>2010-10-23 18:18:17 -0700</date>
            <delta_ts>2010-10-24 07:22:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32828d.patch</filename>
            <type>text/plain</type>
            <size>100304</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyMmNkODU0Li40OGQ5YzAwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFSUkFZ
X0xFTkdUSCBtYWNybyB0byBXVEYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMyODI4CisKKyAgICAgICAgVW5pZnkgdGhlIGRpZmZlcmVudCBpbXBsZW1l
bnRhdGlvbnMgYW5kIHVzYWdlcy4KKworICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmb3JtYXRMb2Nh
bGVEYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OnRvSlNPTik6CisgICAgICAgIChKU0M6OlN0cmlu
Z2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL1VTdHJp
bmcuY3BwOgorICAgICAgICAoSlNDOjpVU3RyaW5nOjpudW1iZXIpOgorICAgICAgICAqIHd0Zi9E
YXRlTWF0aC5jcHA6CisgICAgICAgIChXVEY6OnBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENo
YXJhY3RlcnMpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9TdGRM
aWJFeHRyYXMuaDoKKyAgICAgICAgKFdURjo6Yml0d2lzZV9jYXN0KToKKyAgICAgICAgKFdURjo6
Yml0Q291bnQpOgorCiAyMDEwLTEwLTIzICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcwMzY5LgpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDFjYWRlZjguLjQ2
ZDQyOTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAg
LTE0MzcsNyArMTQzNyw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4
ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAgICAgICAgICNpZiBF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgICNkZWZpbmUgTElT
VF9PUENPREVfTEFCRUwoaWQsIGxlbmd0aCkgJiZpZCwKICAgICAgICAgICAgICAgICBzdGF0aWMg
T3Bjb2RlIGxhYmVsc1tdID0geyBGT1JfRUFDSF9PUENPREVfSUQoTElTVF9PUENPREVfTEFCRUwp
IH07Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2YobGFiZWxz
KSAvIHNpemVvZihPcGNvZGUpOyArK2kpCisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBBUlJBWV9MRU5HVEgobGFiZWxzKTsgKytpKQogICAgICAgICAgICAgICAgICAgICBt
X29wY29kZVRhYmxlW2ldID0gbGFiZWxzW2ldOwogICAgICAgICAgICAgI3VuZGVmIExJU1RfT1BD
T0RFX0xBQkVMCiAgICAgICAgICNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCmluZGV4IDQ5ODNm
MjkuLjhjMDgyMWQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApA
QCAtMTgyLDcgKzE4Miw3IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0
YXRlKiBleGVjLCBEYXRlSW5zdGFuY2UqLCBkb3VibGUgdGltZUluTWlsCiAgICAgLy8gV2UgdHJ1
bmNhdGUgdGhlIHN0cmluZyByZXR1cm5lZCBmcm9tIENGRGF0ZUZvcm1hdHRlciBpZiBpdCdzIGFi
c3VyZGx5IGxvbmcgKD4gMjAwIGNoYXJhY3RlcnMpLgogICAgIC8vIFRoYXQncyBub3QgZ3JlYXQg
ZXJyb3IgaGFuZGxpbmcsIGJ1dCBpdCBqdXN0IHdvbid0IGhhcHBlbiBzbyBpdCBkb2Vzbid0IG1h
dHRlci4KICAgICBVQ2hhciBidWZmZXJbMjAwXTsKLSAgICBjb25zdCBzaXplX3QgYnVmZmVyTGVu
Z3RoID0gc2l6ZW9mKGJ1ZmZlcikgLyBzaXplb2YoYnVmZmVyWzBdKTsKKyAgICBjb25zdCBzaXpl
X3QgYnVmZmVyTGVuZ3RoID0gQVJSQVlfTEVOR1RIKGJ1ZmZlcik7CiAgICAgc2l6ZV90IGxlbmd0
aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7CiAgICAgQVNTRVJUKGxlbmd0aCA8PSBidWZm
ZXJMZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiBidWZmZXJMZW5ndGgpCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkwM2U1NzMuLmRhMDZkODMgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMDcsNyArMzA3LDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJKU09OIiksIG5ldyAoZXhlYykg
SlNPTk9iamVjdCh0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5vYmplY3RQ
cm90b3R5cGUpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKQogICAgIH07CiAKLSAgICBhZGRTdGF0
aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIHNpemVvZihzdGF0aWNHbG9iYWxzKSAvIHNpemVvZihH
bG9iYWxQcm9wZXJ0eUluZm8pKTsKKyAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMs
IEFSUkFZX0xFTkdUSChzdGF0aWNHbG9iYWxzKSk7CiAKICAgICAvLyBTZXQgZ2xvYmFsIGZ1bmN0
aW9ucy4KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMDc5NDE4OS4u
YzQ5NWM0ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zMjksNyAr
MzI5LDcgQEAgdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBVU3RyaW5nJiB2YWwKICAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciBoZXhEaWdpdHNbXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKICAgICAgICAgICAg
ICAgICBVQ2hhciBjaCA9IGRhdGFbaV07CiAgICAgICAgICAgICAgICAgVUNoYXIgaGV4W10gPSB7
ICdcXCcsICd1JywgaGV4RGlnaXRzWyhjaCA+PiAxMikgJiAweEZdLCBoZXhEaWdpdHNbKGNoID4+
IDgpICYgMHhGXSwgaGV4RGlnaXRzWyhjaCA+PiA0KSAmIDB4Rl0sIGhleERpZ2l0c1tjaCAmIDB4
Rl0gfTsKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgsIHNpemVvZihoZXgpIC8g
c2l6ZW9mKFVDaGFyKSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4LCBBUlJB
WV9MRU5HVEgoaGV4KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9
CkBAIC0zNTcsNyArMzU3LDcgQEAgaW5saW5lIEpTVmFsdWUgU3RyaW5naWZpZXI6OnRvSlNPTihK
U1ZhbHVlIHZhbHVlLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkMKICAgICAgICAgcmV0
dXJuIHZhbHVlOwogCiAgICAgSlNWYWx1ZSBsaXN0W10gPSB7IHByb3BlcnR5TmFtZS52YWx1ZSht
X2V4ZWMpIH07Ci0gICAgQXJnTGlzdCBhcmdzKGxpc3QsIHNpemVvZihsaXN0KSAvIHNpemVvZihK
U1ZhbHVlKSk7CisgICAgQXJnTGlzdCBhcmdzKGxpc3QsIEFSUkFZX0xFTkdUSChsaXN0KSk7CiAg
ICAgcmV0dXJuIGNhbGwobV9leGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgdmFsdWUs
IGFyZ3MpOwogfQogCkBAIC0zNzEsNyArMzcxLDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJl
c3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYK
ICAgICAvLyBDYWxsIHRoZSByZXBsYWNlciBmdW5jdGlvbi4KICAgICBpZiAobV9yZXBsYWNlckNh
bGxUeXBlICE9IENhbGxUeXBlTm9uZSkgewogICAgICAgICBKU1ZhbHVlIGxpc3RbXSA9IHsgcHJv
cGVydHlOYW1lLnZhbHVlKG1fZXhlYyksIHZhbHVlIH07Ci0gICAgICAgIEFyZ0xpc3QgYXJncyhs
aXN0LCBzaXplb2YobGlzdCkgLyBzaXplb2YoSlNWYWx1ZSkpOworICAgICAgICBBcmdMaXN0IGFy
Z3MobGlzdCwgQVJSQVlfTEVOR1RIKGxpc3QpKTsKICAgICAgICAgdmFsdWUgPSBjYWxsKG1fZXhl
YywgbV9yZXBsYWNlciwgbV9yZXBsYWNlckNhbGxUeXBlLCBtX3JlcGxhY2VyQ2FsbERhdGEsIGhv
bGRlciwgYXJncyk7CiAgICAgICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZ2lmeUZhaWxlZDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVVN0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3Bw
CmluZGV4IDE3Y2Q5YjYuLjkxZDM4MzcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVVN0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcApA
QCAtOTAsNyArOTAsNyBAQCBVU3RyaW5nOjpVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
CiBVU3RyaW5nIFVTdHJpbmc6Om51bWJlcihpbnQgaSkKIHsKICAgICBVQ2hhciBidWZbMSArIHNp
emVvZihpKSAqIDNdOwotICAgIFVDaGFyKiBlbmQgPSBidWYgKyBzaXplb2YoYnVmKSAvIHNpemVv
ZihVQ2hhcik7CisgICAgVUNoYXIqIGVuZCA9IGJ1ZiArIEFSUkFZX0xFTkdUSChidWYpOwogICAg
IFVDaGFyKiBwID0gZW5kOwogCiAgICAgaWYgKGkgPT0gMCkKQEAgLTExOSw3ICsxMTksNyBAQCBV
U3RyaW5nIFVTdHJpbmc6Om51bWJlcihpbnQgaSkKIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKGxv
bmcgbG9uZyBpKQogewogICAgIFVDaGFyIGJ1ZlsxICsgc2l6ZW9mKGkpICogM107Ci0gICAgVUNo
YXIqIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBVQ2hhciog
ZW5kID0gYnVmICsgQVJSQVlfTEVOR1RIKGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAg
ICBpZiAoaSA9PSAwKQpAQCAtMTUyLDcgKzE1Miw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVy
KGxvbmcgbG9uZyBpKQogVVN0cmluZyBVU3RyaW5nOjpudW1iZXIodW5zaWduZWQgdSkKIHsKICAg
ICBVQ2hhciBidWZbc2l6ZW9mKHUpICogM107Ci0gICAgVUNoYXIqIGVuZCA9IGJ1ZiArIHNpemVv
ZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBVQ2hhciogZW5kID0gYnVmICsgQVJSQVlfTEVO
R1RIKGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAgICBpZiAodSA9PSAwKQpAQCAtMTcw
LDcgKzE3MCw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKHVuc2lnbmVkIHUpCiBVU3RyaW5n
IFVTdHJpbmc6Om51bWJlcihsb25nIGwpCiB7CiAgICAgVUNoYXIgYnVmWzEgKyBzaXplb2YobCkg
KiAzXTsKLSAgICBVQ2hhciogZW5kID0gYnVmICsgc2l6ZW9mKGJ1ZikgLyBzaXplb2YoVUNoYXIp
OworICAgIFVDaGFyKiBlbmQgPSBidWYgKyBBUlJBWV9MRU5HVEgoYnVmKTsKICAgICBVQ2hhciog
cCA9IGVuZDsKIAogICAgIGlmIChsID09IDApCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS93
dGYvRGF0ZU1hdGguY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmNwcAppbmRleCBk
MDA1ODU5Li41NzNiZjA5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGgu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAKQEAgLTk1MCw3ICs5NTAs
NyBAQCBzdGF0aWMgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJhY3RlcnMo
Y29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbAogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aGF2ZVRaID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgaW50KHNpemVvZihrbm93bl96b25lcykgLyBzaXplb2YoS25vd25ab25lKSk7IGkr
KykgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgoa25v
d25fem9uZXMpOyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoMCA9PSBzdHJuY2FzZWNtcChk
YXRlU3RyaW5nLCBrbm93bl96b25lc1tpXS50ek5hbWUsIHN0cmxlbihrbm93bl96b25lc1tpXS50
ek5hbWUpKSkgewogICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBrbm93bl96b25lc1tpXS50
ek9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgZGF0ZVN0cmluZyArPSBzdHJsZW4oa25vd25f
em9uZXNbaV0udHpOYW1lKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggOTQ2MTkyYi4uZDQyOWRl
MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKQEAgLTU2MywxMSArNTYzLDYgQEAKICNkZWZpbmUgX0lO
Q19BU1NFUlQgICAgLyogZGlzYWJsZSAiYXNzZXJ0LmgiICovCiAjZGVmaW5lIGFzc2VydCh4KQog
Ci0vKiBfY291bnRvZiBpcyBvbmx5IGluY2x1ZGVkIGluIENFNjsgZm9yIENFNSB3ZSBuZWVkIHRv
IGRlZmluZSBpdCBvdXJzZWxmICovCi0jaWZuZGVmIF9jb3VudG9mCi0jZGVmaW5lIF9jb3VudG9m
KHgpIChzaXplb2YoeCkgLyBzaXplb2YoKHgpWzBdKSkKLSNlbmRpZgotCiAjZW5kaWYgIC8qIE9T
KFdJTkNFKSAmJiAhUExBVEZPUk0oUVQpICovCiAKICNpZiBQTEFURk9STShRVCkKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL0phdmFTY3JpcHRDb3JlL3d0
Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBkNTk0YzE3Li5lZDc3MGZkIDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1N0
ZExpYkV4dHJhcy5oCkBAIC04NywyOSArODcsMzMgQEAgVHlwZVB0ciByZWludGVycHJldF9jYXN0
X3B0cihjb25zdCB2b2lkKiBwdHIpCiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgLyoKLSAgICAg
KiBDKysncyBpZGVhIG9mIGEgcmVpbnRlcnByZXRfY2FzdCBsYWNrcyBzdWZmaWNpZW50IGNvam9u
ZXMuCi0gICAgICovCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVE8sIHR5cGVuYW1lIEZST00+Ci0g
ICAgVE8gYml0d2lzZV9jYXN0KEZST00gZnJvbSkKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZihUTykgPT0gc2l6ZW9mKEZST00pLCBXVEZfYml0d2lzZV9jYXN0X3NpemVvZl9j
YXN0ZWRfdHlwZXNfaXNfZXF1YWwpOwotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBGUk9N
IGZyb207Ci0gICAgICAgICAgICBUTyB0bzsKLSAgICAgICAgfSB1OwotICAgICAgICB1LmZyb20g
PSBmcm9tOwotICAgICAgICByZXR1cm4gdS50bzsKLSAgICB9CisvKgorICogQysrJ3MgaWRlYSBv
ZiBhIHJlaW50ZXJwcmV0X2Nhc3QgbGFja3Mgc3VmZmljaWVudCBjb2pvbmVzLgorICovCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUTywgdHlwZW5hbWUgRlJPTT4KK2lubGluZSBUTyBiaXR3aXNlX2Nhc3Qo
RlJPTSBmcm9tKQoreworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihUTykgPT0gc2l6ZW9mKEZS
T00pLCBXVEZfYml0d2lzZV9jYXN0X3NpemVvZl9jYXN0ZWRfdHlwZXNfaXNfZXF1YWwpOworICAg
IHVuaW9uIHsKKyAgICAgICAgRlJPTSBmcm9tOworICAgICAgICBUTyB0bzsKKyAgICB9IHU7Cisg
ICAgdS5mcm9tID0gZnJvbTsKKyAgICByZXR1cm4gdS50bzsKK30KIAotICAgIC8vIFJldHVybnMg
YSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluICdiaXRzJy4KLSAgICBpbmxpbmUg
c2l6ZV90IGJpdENvdW50KHVuc2lnbmVkIGJpdHMpCi0gICAgewotICAgICAgICBiaXRzID0gYml0
cyAtICgoYml0cyA+PiAxKSAmIDB4NTU1NTU1NTUpOwotICAgICAgICBiaXRzID0gKGJpdHMgJiAw
eDMzMzMzMzMzKSArICgoYml0cyA+PiAyKSAmIDB4MzMzMzMzMzMpOwotICAgICAgICByZXR1cm4g
KCgoYml0cyArIChiaXRzID4+IDQpKSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+IDI0Owot
ICAgIH0KKy8vIFJldHVybnMgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluICdi
aXRzJy4KK2lubGluZSBzaXplX3QgYml0Q291bnQodW5zaWduZWQgYml0cykKK3sKKyAgICBiaXRz
ID0gYml0cyAtICgoYml0cyA+PiAxKSAmIDB4NTU1NTU1NTUpOworICAgIGJpdHMgPSAoYml0cyAm
IDB4MzMzMzMzMzMpICsgKChiaXRzID4+IDIpICYgMHgzMzMzMzMzMyk7CisgICAgcmV0dXJuICgo
KGJpdHMgKyAoYml0cyA+PiA0KSkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+PiAyNDsKK30K
KworLy8gTWFjcm8gdGhhdCByZXR1cm5zIGEgY29tcGlsZSB0aW1lIGNvbnN0YW50IHdpdGggdGhl
IGxlbmd0aCBvZiBhbiBhcnJheSwgYnV0IGdpdmVzIGFuIGVycm9yIGlmIHBhc3NlZCBhIG5vbi1h
cnJheS4KK3RlbXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3QgbGVuZ3RoPiBjaGFy
ICgmQXJyYXlMZW5ndGhIZWxwZXJGdW5jdGlvbihFbGVtZW50VHlwZSAoJilbbGVuZ3RoXSkpW2xl
bmd0aF07CisjZGVmaW5lIEFSUkFZX0xFTkdUSChhcnJheSkgc2l6ZW9mKDo6V1RGOjpBcnJheUxl
bmd0aEhlbHBlckZ1bmN0aW9uKGFycmF5KSkKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLSNlbmRp
ZgorI2VuZGlmIC8vIFdURl9TdGRMaWJFeHRyYXNfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTY3NmFjLi44ZmIxYjJjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyNiBAQAorMjAxMC0xMC0yNCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
QVJSQVlfTEVOR1RIIG1hY3JvIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAgICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGlt
cGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFSSUFSb2xlTWFw
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jhc2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmln
dXJlVjhUZXN0T2JqVGVtcGxhdGUpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAqIGNzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKToKKyAgICAgICAgKiBjc3Mv
Q1NTUHJvcGVydHlMb25naGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0U2hvcnRoYW5k
TWFwKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9tL0V4Y2VwdGlvbkNvZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBl
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5
bGVDb21tYW5kOjpyZW1vdmVOb25FZGl0aW5nUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW1wbGljaXRseVN0eWxlZEVsZW1lbnQpOgorICAg
ICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaVN0YXRlT2ZT
dHlsZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUNvbW1hbmRNYXApOgorICAgICAgICAqIGVkaXRpbmcvTWFya3VwQWNjdW11
bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0Vu
dGl0aWVzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4SW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xCdWZmZXI6OnNldENhY2hlZE1heEluZGV4KToKKyAgICAgICAgKiBsb2FkZXIv
RlRQRGlyZWN0b3J5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlT25lRlRQTGlu
ZSk6CisgICAgICAgICogbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAg
ICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBvcnRBbGxvd2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJM
R29vZ2xlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcnRBbGxvd2VkKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxp
emVTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXpl
U3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjppbml0aWFs
aXplU3VwcG9ydGVkTm9uSW1hZ2VNaW1lVHlwZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1VVSUQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0ZUZyb21Gb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lRWZsOjplZGplR3JvdXBGcm9tRm9ybVR5cGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDb2RlcGFnZTo6aWYpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRG
b250RGF0YUZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFj
dGVyc0NvcmVUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpkaXNhYmxlQ29tcG9uZW50c09u
Y2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUFUU1VJ
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlRm9udERhdGE6OmNoZWNrU2hhcGVzQXJhYmlj
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVGb250RGF0YTo6Z2V0Q0ZTdHJpbmdBdHRy
aWJ1dGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6Z2V0TGFzdFJlc29ydEZhbGxiYWNrRm9u
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0
Q2hlY2tpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb246OmNyZWF0ZUljb25Gb3JGaWxlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzYWJsZUNvbXBvbmVudHNPbmNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUVRNb3ZpZS5jcHA6CisgICAgICAgIChRVE1v
dmllOjpsb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhh
bmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y3Jl
YXRlU3RyZWFtcyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3Ry
eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcnVuZUJsYWNrbGlzdGVkQ29kZWNzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L3RyYW5zY29kZXIvRm9udFRyYW5zY29kZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udFRyYW5zY29kZXI6OkZvbnRUcmFuc2NvZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vQ2xpcGJvYXJkVXRpbGl0aWVzV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdldFdlYkxvY0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsVVJMQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVHbG9iYWxIRHJvcENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlR2xvYmFsVXJsRmlsZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xv
YmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRXaW46
OmZpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0RhdGE6OmFzRmlsZW5hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5Rmls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzYWZlQ3JlYXRlRmlsZSk6CisgICAgICAgICogcGxhdGZv
cm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5UZW1w
b3JhcnlGaWxlKToKKyAgICAgICAgKiBwbHVnaW5zL3dpbi9QbHVnaW5EYXRhYmFzZVdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjphZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeSk6CisgICAgICAg
IChXZWJDb3JlOjphZGRXaW5kb3dzTWVkaWFQbGF5ZXJQbHVnaW5EaXJlY3RvcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6YWRkTWFjcm9tZWRpYVBsdWdpbkRpcmVjdG9yaWVzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dENvbnRyb2w6Omhhc1ZhbGlkQXZnQ2hhcldpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcv
YnJlYWtfbGluZXMuY3BwOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRhYmxlcyk6CisgICAgICAgICogc3ZnL1NW
R1RyYW5zZm9ybWFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VBbmRTa2lwVHlwZSk6
CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Zp
ZXdTcGVjOjpwYXJzZVZpZXdTcGVjKToKKyAgICAgICAgKiBzdmcvU1ZHWm9vbUFuZFBhbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5kUGFuOjpwYXJzZVpvb21BbmRQYW4pOgorICAg
ICAgICAqIHhtbC9YUGF0aEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6
Y3JlYXRlRnVuY3Rpb25NYXApOgorICAgICAgICAqIHhtbC9YUGF0aFBhcnNlci5jcHA6CisKIDIw
MTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDNkZGNkYzUuLmRmNzE1ZjAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTkzNyw5ICs5Mzcs
OCBAQCBzdGF0aWMgQVJJQVJvbGVNYXAqIGNyZWF0ZUFSSUFSb2xlTWFwKCkKICAgICAgICAgeyAi
dHJlZWl0ZW0iLCBUcmVlSXRlbVJvbGUgfQogICAgIH07CiAgICAgQVJJQVJvbGVNYXAqIHJvbGVN
YXAgPSBuZXcgQVJJQVJvbGVNYXA7Ci0gICAgCi0gICAgY29uc3QgdW5zaWduZWQgbnVtUm9sZXMg
PSBzaXplb2Yocm9sZXMpIC8gc2l6ZW9mKHJvbGVzWzBdKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtUm9sZXM7ICsraSkKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQVJS
QVlfTEVOR1RIKHJvbGVzKTsgKytpKQogICAgICAgICByb2xlTWFwLT5zZXQocm9sZXNbaV0uYXJp
YVJvbGUsIHJvbGVzW2ldLndlYmNvcmVSb2xlKTsKICAgICByZXR1cm4gcm9sZU1hcDsKIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIubW0gYi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLm1tCmluZGV4IGU0YjdkOGUuLjg2OWI4NGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KKysrIGIvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQpAQCAtMTE3
OSw5ICsxMTc5LDggQEAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlSb2xlTWFwJiBjcmVhdGVB
Y2Nlc3NpYmlsaXR5Um9sZU1hcCgpCiAgICAgICAgIHsgTGlzdEl0ZW1Sb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfQogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVN
YXAgPSAqbmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVk
IG51bVJvbGVzID0gc2l6ZW9mKHJvbGVzKSAvIHNpemVvZihyb2xlc1swXSk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bVJvbGVzOyArK2kpCisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IEFSUkFZX0xFTkdUSChyb2xlcyk7ICsraSkKICAgICAgICAgcm9sZU1hcC5zZXQocm9s
ZXNbaV0udmFsdWUsIHJvbGVzW2ldLnN0cmluZyk7CiAgICAgcmV0dXJuIHJvbGVNYXA7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZTJiNTBkMC4uN2ZlNzEx
YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtNjAsNyArNjAs
NyBAQCBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShOb25OdWxsUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSwgUGFzc1JlZgogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
SWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJ3aW5kb3ciKSwgZCgpLT5zaGVsbCwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KQogICAgIH07CiAgICAgCi0gICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNH
bG9iYWxzLCBzaXplb2Yoc3RhdGljR2xvYmFscykgLyBzaXplb2YoR2xvYmFsUHJvcGVydHlJbmZv
KSk7CisgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBBUlJBWV9MRU5HVEgoc3Rh
dGljR2xvYmFscykpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6dXBkYXRlRG9jdW1lbnQo
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bSBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNzUx
ZTM1MC4uYTFkZjhkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCkBAIC0xOTY2LDcgKzE5NjYsNyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsIDw8RU5EKTsKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IENv
bmZpZ3VyZVNoYWRvd09iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1w
bGF0ZT4gdGVtcGwpCiB7Ci0gICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0cnMsIHNpemVvZihzaGFkb3dB
dHRycykgLyBzaXplb2YoKnNoYWRvd0F0dHJzKSk7CisgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1
dGVzKHRlbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0cnMs
IEFSUkFZX0xFTkdUSChzaGFkb3dBdHRycykpOwogCiAgICAgLy8gSW5zdGFsbCBhIHNlY3VyaXR5
IGhhbmRsZXIgd2l0aCBWOC4KICAgICB0ZW1wbC0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja3MoVjhE
T01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjaywgVjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0
eUNoZWNrLCB2ODo6RXh0ZXJuYWw6OldyYXAoJlY4RE9NV2luZG93OjppbmZvKSk7CkBAIC0xOTk4
LDcgKzE5OTgsNyBAQCBFTkQKICAgICAjIFNldCB1cCBvdXIgYXR0cmlidXRlcyBpZiB3ZSBoYXZl
IHRoZW0KICAgICBpZiAoJGhhc19hdHRyaWJ1dGVzKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7Ci0gICAgICAgICR7aW50ZXJmYWNlTmFtZX1BdHRycywgc2l6ZW9mKCR7aW50
ZXJmYWNlTmFtZX1BdHRycykgLyBzaXplb2YoKiR7aW50ZXJmYWNlTmFtZX1BdHRycyksCisgICAg
ICAgICR7aW50ZXJmYWNlTmFtZX1BdHRycywgQVJSQVlfTEVOR1RIKCR7aW50ZXJmYWNlTmFtZX1B
dHRycyksCiBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxF
TkQpOwpAQCAtMjAwOCw3ICsyMDA4LDcgQEAgRU5ECiAKICAgICBpZiAoJGhhc19jYWxsYmFja3Mp
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgJHtpbnRlcmZh
Y2VOYW1lfUNhbGxiYWNrcywgc2l6ZW9mKCR7aW50ZXJmYWNlTmFtZX1DYWxsYmFja3MpIC8gc2l6
ZW9mKCoke2ludGVyZmFjZU5hbWV9Q2FsbGJhY2tzKSk7CisgICAgICAgICR7aW50ZXJmYWNlTmFt
ZX1DYWxsYmFja3MsIEFSUkFZX0xFTkdUSCgke2ludGVyZmFjZU5hbWV9Q2FsbGJhY2tzKSk7CiBF
TkQKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwpAQCAt
MjE0Niw3ICsyMTQ2LDcgQEAgRU5ECiAKICAgICBpZiAoJGhhc19jb25zdGFudHMpIHsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICBiYXRjaENvbmZpZ3VyZUNvbnN0YW50
cyhkZXNjLCBwcm90bywgJHtpbnRlcmZhY2VOYW1lfUNvbnN0cywgc2l6ZW9mKCR7aW50ZXJmYWNl
TmFtZX1Db25zdHMpIC8gc2l6ZW9mKCoke2ludGVyZmFjZU5hbWV9Q29uc3RzKSk7CisgICAgYmF0
Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sICR7aW50ZXJmYWNlTmFtZX1Db25zdHMs
IEFSUkFZX0xFTkdUSCgke2ludGVyZmFjZU5hbWV9Q29uc3RzKSk7CiBFTkQKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDQ0
ZjBkM2UuLjMyN2ZjYjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcApAQCAtMTIwMyw4ICsxMjAzLDggQEAgQ09NUElMRV9BU1NFUlQoMHgxYWJj
ID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzE0LCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzE0SXNX
cm8KIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRl
c2MpCiB7CiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSBj
b25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE9iaiIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OmludGVybmFsRmllbGRDb3VudCwKLSAgICAgICAg
VGVzdE9iakF0dHJzLCBzaXplb2YoVGVzdE9iakF0dHJzKSAvIHNpemVvZigqVGVzdE9iakF0dHJz
KSwKLSAgICAgICAgVGVzdE9iakNhbGxiYWNrcywgc2l6ZW9mKFRlc3RPYmpDYWxsYmFja3MpIC8g
c2l6ZW9mKCpUZXN0T2JqQ2FsbGJhY2tzKSk7CisgICAgICAgIFRlc3RPYmpBdHRycywgQVJSQVlf
TEVOR1RIKFRlc3RPYmpBdHRycyksCisgICAgICAgIFRlc3RPYmpDYWxsYmFja3MsIEFSUkFZX0xF
TkdUSChUZXN0T2JqQ2FsbGJhY2tzKSk7CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0
ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8gPSBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpOwogICAg
IApAQCAtMTI2Miw3ICsxMjYyLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoImVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxIiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjplbmFibGVkQXRSdW50aW1l
TWV0aG9kMUNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgZGVmYXVsdFNpZ25hdHVy
ZSkpOwogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQo
KSkKICAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoImVuYWJsZWRBdFJ1bnRpbWVN
ZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFsOjplbmFi
bGVkQXRSdW50aW1lTWV0aG9kMkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgZGVm
YXVsdFNpZ25hdHVyZSkpOwotICAgIGJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3Rv
LCBUZXN0T2JqQ29uc3RzLCBzaXplb2YoVGVzdE9iakNvbnN0cykgLyBzaXplb2YoKlRlc3RPYmpD
b25zdHMpKTsKKyAgICBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVGVzdE9i
akNvbnN0cywgQVJSQVlfTEVOR1RIKFRlc3RPYmpDb25zdHMpKTsKIAogICAgIC8vIEN1c3RvbSB0
b1N0cmluZyB0ZW1wbGF0ZQogICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9T
dHJpbmdUZW1wbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IGZkY2FiMjguLjU1ZDYzOGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyBjb25zdCBp
bnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAjZW5kaWYKIH07CiAKLWNvbnN0IHVuc2lnbmVk
IG51bUNvbXB1dGVkUHJvcGVydGllcyA9IHNpemVvZihjb21wdXRlZFByb3BlcnRpZXMpIC8gc2l6
ZW9mKGNvbXB1dGVkUHJvcGVydGllc1swXSk7Citjb25zdCB1bnNpZ25lZCBudW1Db21wdXRlZFBy
b3BlcnRpZXMgPSBBUlJBWV9MRU5HVEgoY29tcHV0ZWRQcm9wZXJ0aWVzKTsKIAogc3RhdGljIGlu
dCB2YWx1ZUZvclJlcGVhdFJ1bGUoaW50IHJ1bGUpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOWIxZGQ3MS4uM2M0NTkzYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1dlYkNvcmUv
Y3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTQ4LDggKzE0OCw3IEBAIFN0
cmluZyBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShpbnQgcHJv
cGVydHlJRCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfX07CiAgICAg
ICAgICAgICBTdHJpbmcgcmVzOwotICAgICAgICAgICAgY29uc3QgaW50IG5ycHJvcHMgPSBzaXpl
b2YocHJvcGVydGllcykgLyBzaXplb2YocHJvcGVydGllc1swXSk7Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG5ycHJvcHM7ICsraSkgeworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgocHJvcGVydGllcyk7ICsraSkgewogICAgICAgICAgICAg
ICAgIFN0cmluZyB2YWx1ZSA9IGdldENvbW1vblZhbHVlKHByb3BlcnRpZXNbaV0sIDQpOwogICAg
ICAgICAgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKCFyZXMuaXNOdWxsKCkpCkBAIC03NjcsNyArNzY2LDcgQEAgc3RhdGljIGNvbnN0IGludCBi
bG9ja1Byb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVdpZG93cwogfTsKIAotY29uc3Qg
dW5zaWduZWQgbnVtQmxvY2tQcm9wZXJ0aWVzID0gc2l6ZW9mKGJsb2NrUHJvcGVydGllcykgLyBz
aXplb2YoYmxvY2tQcm9wZXJ0aWVzWzBdKTsKK2NvbnN0IHVuc2lnbmVkIG51bUJsb2NrUHJvcGVy
dGllcyA9IEFSUkFZX0xFTkdUSChibG9ja1Byb3BlcnRpZXMpOwogCiBQYXNzUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29weUJs
b2NrUHJvcGVydGllcygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAyNmMzODc2Li40Y2VlYTNj
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKQEAgLTIwMDksMTQgKzIwMDksMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25GaWxsTW9kZSB9OwotICAgIGNvbnN0IGludCBudW1Qcm9wZXJ0aWVzID0g
c2l6ZW9mKHByb3BlcnRpZXMpIC8gc2l6ZW9mKHByb3BlcnRpZXNbMF0pOworICAgIGNvbnN0IHNp
emVfdCBudW1Qcm9wZXJ0aWVzID0gQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOwogCiAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24pOwogCiAg
ICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtudW1Qcm9wZXJ0aWVzXSA9IHsgZmFsc2UgfTsgLy8gY29t
cGlsZXIgd2lsbCByZXBlYXQgZmFsc2UgYXMgbmVjZXNzYXJ5CiAgICAgUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZXNbbnVtUHJvcGVydGllc107CiAKLSAgICBpbnQgaTsKKyAgICBzaXplX3QgaTsKICAg
ICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewogICAgICAgICBDU1NQYXJzZXJWYWx1
ZSogdmFsID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICAgICAgaWYgKHZhbC0+dW5pdCA9
PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IgJiYgdmFsLT5pVmFsdWUgPT0gJywnKSB7CkBAIC0y
MDY3LDE0ICsyMDY3LDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhh
bmQoYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkg
fTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IHNpemVvZihwcm9wZXJ0aWVzKSAvIHNp
emVvZihwcm9wZXJ0aWVzWzBdKTsKKyAgICBjb25zdCBzaXplX3QgbnVtUHJvcGVydGllcyA9IEFS
UkFZX0xFTkdUSChwcm9wZXJ0aWVzKTsKIAogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMs
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbik7CiAKICAgICBib29sIHBhcnNlZFByb3BlcnR5
W251bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJlcGVhdCBmYWxz
ZSBhcyBuZWNlc3NhcnkKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlc1tudW1Qcm9wZXJ0aWVz
XTsKIAotICAgIGludCBpOworICAgIHNpemVfdCBpOwogICAgIHdoaWxlIChtX3ZhbHVlTGlzdC0+
Y3VycmVudCgpKSB7CiAgICAgICAgIENTU1BhcnNlclZhbHVlKiB2YWwgPSBtX3ZhbHVlTGlzdC0+
Y3VycmVudCgpOwogICAgICAgICBpZiAodmFsLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVy
YXRvciAmJiB2YWwtPmlWYWx1ZSA9PSAnLCcpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5j
cHAKaW5kZXggYWNjYTAzNi4uMWJiYzM3NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHlMb25naGFuZC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPGludCwgQ1NTUHJvcGVydHlMb25n
aGFuZD4gU2hvcnRoYW5kTWFwOwogc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhh
bmRNYXAmIHNob3J0aGFuZE1hcCkKIHsKICAgICAjZGVmaW5lIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKG1hcCwgcHJvcElELCBhcnJheSkgXAotICAgICAgICBtYXAuc2V0KHByb3BJRCwgQ1NTUHJv
cGVydHlMb25naGFuZChhcnJheSwgc2l6ZW9mKGFycmF5KSAvIHNpemVvZihhcnJheVswXSkpKQor
ICAgICAgICBtYXAuc2V0KHByb3BJRCwgQ1NTUHJvcGVydHlMb25naGFuZChhcnJheSwgQVJSQVlf
TEVOR1RIKGFycmF5KSkpCiAKICAgICAvLyBGSVhNRTogVGhlICdmb250JyBwcm9wZXJ0eSBoYXMg
InNob3J0aGFuZCBuYXR1cmUiIGJ1dCBpcyBub3QgcGFyc2VkIGFzIGEgc2hvcnRoYW5kLgogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggMDkxNmU2OS4uZjJmYTE3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTU2LDkgKzU1Niw4
IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogICAgIGNsZWFyQVhPYmplY3RDYWNoZSgpOwogCiAg
ICAgbV9kZWNvZGVyID0gMDsKLSAgICAKLSAgICB1bnNpZ25lZCBjb3VudCA9IHNpemVvZihtX25h
bWVDb2xsZWN0aW9uSW5mbykgLyBzaXplb2YobV9uYW1lQ29sbGVjdGlvbkluZm9bMF0pOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgobV9uYW1lQ29sbGVjdGlvbkluZm8pOyArK2kpCiAgICAg
ICAgIGRlbGV0ZUFsbFZhbHVlcyhtX25hbWVDb2xsZWN0aW9uSW5mb1tpXSk7CiAKICAgICBpZiAo
bV9zdHlsZVNoZWV0cykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3Bw
IGIvV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29kZS5jcHAKaW5kZXggOTMwM2Y5ZTAuLjdjZGQ0OWQg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCisrKyBiL1dlYkNvcmUv
ZG9tL0V4Y2VwdGlvbkNvZGUuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBnZXRFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uJiBkZXMKICAgICAgICAgY29kZSAtPSBSYW5nZUV4Y2VwdGlvbjo6UmFuZ2VFeGNlcHRpb25P
ZmZzZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IHJhbmdlRXhjZXB0aW9uTmFtZXM7CiAgICAgICAg
IGRlc2NyaXB0aW9uVGFibGUgPSByYW5nZUV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAgICAgICAg
bmFtZVRhYmxlU2l6ZSA9IHNpemVvZihyYW5nZUV4Y2VwdGlvbk5hbWVzKSAvIHNpemVvZihyYW5n
ZUV4Y2VwdGlvbk5hbWVzWzBdKTsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IEFSUkFZX0xFTkdU
SChyYW5nZUV4Y2VwdGlvbk5hbWVzKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gUmFuZ2VF
eGNlcHRpb246OkJBRF9CT1VOREFSWVBPSU5UU19FUlI7CiAgICAgfSBlbHNlIGlmIChjb2RlID49
IEV2ZW50RXhjZXB0aW9uOjpFdmVudEV4Y2VwdGlvbk9mZnNldCAmJiBjb2RlIDw9IEV2ZW50RXhj
ZXB0aW9uOjpFdmVudEV4Y2VwdGlvbk1heCkgewogICAgICAgICB0eXBlID0gRXZlbnRFeGNlcHRp
b25UeXBlOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzCiAgICAg
ICAgIGNvZGUgLT0gRXZlbnRFeGNlcHRpb246OkV2ZW50RXhjZXB0aW9uT2Zmc2V0OwogICAgICAg
ICBuYW1lVGFibGUgPSBldmVudEV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBkZXNjcmlwdGlvblRh
YmxlID0gZXZlbnRFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5hbWVUYWJsZVNpemUg
PSBzaXplb2YoZXZlbnRFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoZXZlbnRFeGNlcHRpb25OYW1l
c1swXSk7CisgICAgICAgIG5hbWVUYWJsZVNpemUgPSBBUlJBWV9MRU5HVEgoZXZlbnRFeGNlcHRp
b25OYW1lcyk7CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IEV2ZW50RXhjZXB0aW9uOjpVTlNQ
RUNJRklFRF9FVkVOVF9UWVBFX0VSUjsKICAgICB9IGVsc2UgaWYgKGNvZGUgPj0gWE1MSHR0cFJl
cXVlc3RFeGNlcHRpb246OlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uT2Zmc2V0ICYmIGNvZGUgPD0g
WE1MSHR0cFJlcXVlc3RFeGNlcHRpb246OlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uTWF4KSB7CiAg
ICAgICAgIHR5cGUgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvblR5cGU7CkBAIC0yMDcsNyArMjA3
LDcgQEAgdm9pZCBnZXRFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywg
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uJiBkZXMKICAgICAgICAgY29kZSAtPSBYTUxIdHRwUmVx
dWVzdEV4Y2VwdGlvbjo6WE1MSHR0cFJlcXVlc3RFeGNlcHRpb25PZmZzZXQ7CiAgICAgICAgIG5h
bWVUYWJsZSA9IHhtbEh0dHBSZXF1ZXN0RXhjZXB0aW9uTmFtZXM7CiAgICAgICAgIGRlc2NyaXB0
aW9uVGFibGUgPSB4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAgICAgICAg
bmFtZVRhYmxlU2l6ZSA9IHNpemVvZih4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzKSAvIHNp
emVvZih4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzWzBdKTsKKyAgICAgICAgbmFtZVRhYmxl
U2l6ZSA9IEFSUkFZX0xFTkdUSCh4bWxIdHRwUmVxdWVzdEV4Y2VwdGlvbk5hbWVzKTsKICAgICAg
ICAgLy8gWE1MSHR0cFJlcXVlc3QgZXhjZXB0aW9uIGNvZGVzIHN0YXJ0IHdpdGggMTAxIGFuZCB3
ZSBkb24ndCB3YW50IDEwMCBlbXB0eSBlbGVtZW50cyBpbiB0aGUgbmFtZSBhcnJheQogICAgICAg
ICBuYW1lVGFibGVPZmZzZXQgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19FUlI7
CiAjaWYgRU5BQkxFKFhQQVRIKQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9u
Q29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNvZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlv
biYgZGVzCiAgICAgICAgIGNvZGUgLT0gWFBhdGhFeGNlcHRpb246OlhQYXRoRXhjZXB0aW9uT2Zm
c2V0OwogICAgICAgICBuYW1lVGFibGUgPSB4cGF0aEV4Y2VwdGlvbk5hbWVzOwogICAgICAgICBk
ZXNjcmlwdGlvblRhYmxlID0geHBhdGhFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5h
bWVUYWJsZVNpemUgPSBzaXplb2YoeHBhdGhFeGNlcHRpb25OYW1lcykgLyBzaXplb2YoeHBhdGhF
eGNlcHRpb25OYW1lc1swXSk7CisgICAgICAgIG5hbWVUYWJsZVNpemUgPSBBUlJBWV9MRU5HVEgo
eHBhdGhFeGNlcHRpb25OYW1lcyk7CiAgICAgICAgIC8vIFhQYXRoIGV4Y2VwdGlvbiBjb2RlcyBz
dGFydCB3aXRoIDUxIGFuZCB3ZSBkb24ndCB3YW50IDUxIGVtcHR5IGVsZW1lbnRzIGluIHRoZSBu
YW1lIGFycmF5CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IFhQYXRoRXhjZXB0aW9uOjpJTlZB
TElEX0VYUFJFU1NJT05fRVJSOwogI2VuZGlmCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBnZXRF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24oRXhjZXB0aW9uQ29kZSBlYywgRXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uJiBkZXMKICAgICAgICAgY29kZSAtPSBTVkdFeGNlcHRpb246OlNWR0V4Y2VwdGlv
bk9mZnNldDsKICAgICAgICAgbmFtZVRhYmxlID0gc3ZnRXhjZXB0aW9uTmFtZXM7CiAgICAgICAg
IGRlc2NyaXB0aW9uVGFibGUgPSBzdmdFeGNlcHRpb25EZXNjcmlwdGlvbnM7Ci0gICAgICAgIG5h
bWVUYWJsZVNpemUgPSBzaXplb2Yoc3ZnRXhjZXB0aW9uTmFtZXMpIC8gc2l6ZW9mKHN2Z0V4Y2Vw
dGlvbk5hbWVzWzBdKTsKKyAgICAgICAgbmFtZVRhYmxlU2l6ZSA9IEFSUkFZX0xFTkdUSChzdmdF
eGNlcHRpb25OYW1lcyk7CiAgICAgICAgIG5hbWVUYWJsZU9mZnNldCA9IFNWR0V4Y2VwdGlvbjo6
U1ZHX1dST05HX1RZUEVfRVJSOwogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFKQpAQCAtMjM4
LDcgKzIzOCw3IEBAIHZvaWQgZ2V0RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uKEV4Y2VwdGlvbkNv
ZGUgZWMsIEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiYgZGVzCiAgICAgICAgIGNvZGUgLT0gU1FM
RXhjZXB0aW9uOjpTUUxFeGNlcHRpb25PZmZzZXQ7CiAgICAgICAgIG5hbWVUYWJsZSA9IHNxbEV4
Y2VwdGlvbk5hbWVzOwogICAgICAgICBkZXNjcmlwdGlvblRhYmxlID0gc3FsRXhjZXB0aW9uRGVz
Y3JpcHRpb25zOwotICAgICAgICBuYW1lVGFibGVTaXplID0gc2l6ZW9mKHNxbEV4Y2VwdGlvbk5h
bWVzKSAvIHNpemVvZihzcWxFeGNlcHRpb25OYW1lc1swXSk7CisgICAgICAgIG5hbWVUYWJsZVNp
emUgPSBBUlJBWV9MRU5HVEgoc3FsRXhjZXB0aW9uTmFtZXMpOwogICAgICAgICBuYW1lVGFibGVP
ZmZzZXQgPSBTUUxFeGNlcHRpb246OlVOS05PV05fRVJSOwogI2VuZGlmCiAgICAgfSBlbHNlIHsK
QEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIGdldEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihFeGNl
cHRpb25Db2RlIGVjLCBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24mIGRlcwogICAgICAgICB0eXBl
TmFtZSA9ICJET00iOwogICAgICAgICBuYW1lVGFibGUgPSBleGNlcHRpb25OYW1lczsKICAgICAg
ICAgZGVzY3JpcHRpb25UYWJsZSA9IGV4Y2VwdGlvbkRlc2NyaXB0aW9uczsKLSAgICAgICAgbmFt
ZVRhYmxlU2l6ZSA9IHNpemVvZihleGNlcHRpb25OYW1lcykgLyBzaXplb2YoZXhjZXB0aW9uTmFt
ZXNbMF0pOworICAgICAgICBuYW1lVGFibGVTaXplID0gQVJSQVlfTEVOR1RIKGV4Y2VwdGlvbk5h
bWVzKTsKICAgICAgICAgbmFtZVRhYmxlT2Zmc2V0ID0gSU5ERVhfU0laRV9FUlI7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCAyNzNlZGI0Li42ZDE5NWEy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTQ1OSwxMSArNDU5LDEw
IEBAIHN0YXRpYyBjb25zdCBpbnQgZWRpdGluZ1N0eWxlUHJvcGVydGllc1tdID0gewogICAgIENT
U1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4
dFN0cm9rZVdpZHRoLAogfTsKLXNpemVfdCBudW1FZGl0aW5nU3R5bGVQcm9wZXJ0aWVzID0gc2l6
ZW9mKGVkaXRpbmdTdHlsZVByb3BlcnRpZXMpL3NpemVvZihlZGl0aW5nU3R5bGVQcm9wZXJ0aWVz
WzBdKTsKIAogUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBBcHBseVN0eWxlQ29t
bWFuZDo6cmVtb3ZlTm9uRWRpdGluZ1Byb3BlcnRpZXMoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5
bGUpCiB7Ci0gICAgcmV0dXJuIHN0eWxlLT5jb3B5UHJvcGVydGllc0luU2V0KGVkaXRpbmdTdHls
ZVByb3BlcnRpZXMsIG51bUVkaXRpbmdTdHlsZVByb3BlcnRpZXMpOworICAgIHJldHVybiBzdHls
ZS0+Y29weVByb3BlcnRpZXNJblNldChlZGl0aW5nU3R5bGVQcm9wZXJ0aWVzLCBBUlJBWV9MRU5H
VEgoZWRpdGluZ1N0eWxlUHJvcGVydGllcykpOwogfQogCiBQYXNzUmVmUHRyPENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uPiBBcHBseVN0eWxlQ29tbWFuZDo6ZWRpdGluZ1N0eWxlQXRQb3NpdGlv
bihQb3NpdGlvbiBwb3MsIFNob3VsZEluY2x1ZGVUeXBpbmdTdHlsZSBzaG91bGRJbmNsdWRlVHlw
aW5nU3R5bGUpCkBAIC0xMzM2LDcgKzEzMzUsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpy
ZW1vdmVJbXBsaWNpdGx5U3R5bGVkRWxlbWVudChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbgog
ICAgIC8vIEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzdHlsZVB1c2hl
ZERvd24gd2hlbiBtb2RlID09IFJlbW92ZU5vbmUgYmVjYXVzZSBvZiBlYXJseSBleGl0LgogICAg
IEFTU0VSVCghZXh0cmFjdGVkU3R5bGUgfHwgbW9kZSAhPSBSZW1vdmVOb25lKTsKICAgICBib29s
IHJlbW92ZWQgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihIVE1M
RXF1aXZhbGVudHMpIC8gc2l6ZW9mKEhUTUxFcXVpdmFsZW50KTsgaSsrKSB7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgoSFRNTEVxdWl2YWxlbnRzKTsgaSsrKSB7CiAg
ICAgICAgIGNvbnN0IEhUTUxFcXVpdmFsZW50JiBlcXVpdmFsZW50ID0gSFRNTEVxdWl2YWxlbnRz
W2ldOwogICAgICAgICBBU1NFUlQoZXF1aXZhbGVudC5lbGVtZW50IHx8IGVxdWl2YWxlbnQuYXR0
cmlidXRlKTsKICAgICAgICAgaWYgKChleHRyYWN0ZWRTdHlsZSAmJiBlcXVpdmFsZW50LnB1c2hE
b3duVHlwZSA9PSBTaG91bGROb3RCZVB1c2hlZERvd24pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDRkNmQy
NTguLmVhNzg3M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC04NzEsNyArODcxLDcgQEAgc3RhdGljIFRy
aVN0YXRlIHRyaVN0YXRlT2ZTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBkZXNpcmVkU3R5bGUs
IENTU1N0eWxlRGVjbGEKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRp
ZmYgPSBnZXRQcm9wZXJ0aWVzTm90SW4oZGVzaXJlZFN0eWxlLCBzdHlsZVRvQ29tcGFyZSk7CiAK
ICAgICBpZiAoaWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzKQotICAgICAgICBkaWZmLT5yZW1vdmVQ
cm9wZXJ0aWVzSW5TZXQodGV4dE9ubHlQcm9wZXJ0aWVzLCBzaXplb2YodGV4dE9ubHlQcm9wZXJ0
aWVzKSAvIHNpemVvZih0ZXh0T25seVByb3BlcnRpZXNbMF0pKTsKKyAgICAgICAgZGlmZi0+cmVt
b3ZlUHJvcGVydGllc0luU2V0KHRleHRPbmx5UHJvcGVydGllcywgQVJSQVlfTEVOR1RIKHRleHRP
bmx5UHJvcGVydGllcykpOwogCiAgICAgaWYgKCFkaWZmLT5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIFRydWVUcmlTdGF0ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAyM2ZiYTM5
Li42NzkzNWE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xNTYwLDggKzE1NjAs
NyBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAKICAgICBD
b21tYW5kTWFwJiBjb21tYW5kTWFwID0gKm5ldyBDb21tYW5kTWFwOwogCi0gICAgY29uc3QgdW5z
aWduZWQgbnVtQ29tbWFuZHMgPSBzaXplb2YoY29tbWFuZHMpIC8gc2l6ZW9mKGNvbW1hbmRzWzBd
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtQ29tbWFuZHM7IGkrKykgeworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKGNvbW1hbmRzKTsgKytpKSB7CiAg
ICAgICAgIEFTU0VSVCghY29tbWFuZE1hcC5nZXQoY29tbWFuZHNbaV0ubmFtZSkpOwogICAgICAg
ICBjb21tYW5kTWFwLnNldChjb21tYW5kc1tpXS5uYW1lLCAmY29tbWFuZHNbaV0uY29tbWFuZCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggYTcwMTE4OS4u
ODU4ZjE3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNw
cAorKysgYi9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIHZvaWQgYXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKFZlY3RvcjxVQ2hh
cj4mIG91dCwgY29uc3QgVUNoYXIqIGNvbnRlbnQsCiAKICAgICBzaXplX3QgcG9zaXRpb25BZnRl
ckxhc3RFbnRpdHkgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgZm9yIChzaXplX3QgbSA9IDA7IG0gPCBzaXplb2YoZW50aXR5TWFwcykgLyBz
aXplb2YoRW50aXR5RGVzY3JpcHRpb24pOyBtKyspIHsKKyAgICAgICAgZm9yIChzaXplX3QgbSA9
IDA7IG0gPCBBUlJBWV9MRU5HVEgoZW50aXR5TWFwcyk7IG0rKykgewogICAgICAgICAgICAgaWYg
KGNvbnRlbnRbaV0gPT0gZW50aXR5TWFwc1ttXS5lbnRpdHkgJiYgZW50aXR5TWFwc1ttXS5tYXNr
ICYgZW50aXR5TWFzaykgewogICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoY29udGVudCArIHBv
c2l0aW9uQWZ0ZXJMYXN0RW50aXR5LCBpIC0gcG9zaXRpb25BZnRlckxhc3RFbnRpdHkpOwogICAg
ICAgICAgICAgICAgIGFwcGVuZChvdXQsIGVudGl0eU1hcHNbbV0ucmVmZXJlbmNlKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKaW5kZXggOTlkOWNhZC4uYTRmN2IxNiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKKysrIGIvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTE3MCw4ICsxNzAsNyBAQCB1bnNpZ25lZCBXZWJH
TEJ1ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiAKIGxvbmcgV2ViR0xCdWZmZXI6OmdldENhY2hl
ZE1heEluZGV4KHVuc2lnbmVkIGxvbmcgdHlwZSkKIHsKLSAgICBzaXplX3QgbnVtRW50cmllcyA9
IHNpemVvZihtX21heEluZGV4Q2FjaGUpIC8gc2l6ZW9mKE1heEluZGV4Q2FjaGVFbnRyeSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FbnRyaWVzOyBpKyspCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgobV9tYXhJbmRleENhY2hlKTsgKytpKQogICAgICAg
ICBpZiAobV9tYXhJbmRleENhY2hlW2ldLnR5cGUgPT0gdHlwZSkKICAgICAgICAgICAgIHJldHVy
biBtX21heEluZGV4Q2FjaGVbaV0ubWF4SW5kZXg7CiAgICAgcmV0dXJuIC0xOwpAQCAtMTc5LDgg
KzE3OCw4IEBAIGxvbmcgV2ViR0xCdWZmZXI6OmdldENhY2hlZE1heEluZGV4KHVuc2lnbmVkIGxv
bmcgdHlwZSkKIAogdm9pZCBXZWJHTEJ1ZmZlcjo6c2V0Q2FjaGVkTWF4SW5kZXgodW5zaWduZWQg
bG9uZyB0eXBlLCBsb25nIHZhbHVlKQogewotICAgIGludCBudW1FbnRyaWVzID0gc2l6ZW9mKG1f
bWF4SW5kZXhDYWNoZSkgLyBzaXplb2YoTWF4SW5kZXhDYWNoZUVudHJ5KTsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bUVudHJpZXM7IGkrKykKKyAgICBzaXplX3QgbnVtRW50cmllcyA9IEFS
UkFZX0xFTkdUSChtX21heEluZGV4Q2FjaGUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtRW50cmllczsgKytpKQogICAgICAgICBpZiAobV9tYXhJbmRleENhY2hlW2ldLnR5cGUgPT0g
dHlwZSkgewogICAgICAgICAgICAgbV9tYXhJbmRleENhY2hlW2ldLm1heEluZGV4ID0gdmFsdWU7
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9GVFBEaXJl
Y3RvcnlQYXJzZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRlRQRGlyZWN0b3J5UGFyc2VyLmNwcApp
bmRleCBmNmE3NGRlLi44ODBlYmRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GVFBEaXJl
Y3RvcnlQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZUUERpcmVjdG9yeVBhcnNlci5j
cHAKQEAgLTExNyw3ICsxMTcsNyBAQCBGVFBFbnRyeVR5cGUgcGFyc2VPbmVGVFBMaW5lKGNvbnN0
IGNoYXIqIGxpbmUsIExpc3RTdGF0ZSYgc3RhdGUsIExpc3RSZXN1bHQmIHJlcwogICB7CiAgICAg
c3RhdGljIGNvbnN0IGNoYXIgKm1vbnRoX25hbWVzID0gIkphbkZlYk1hckFwck1heUp1bkp1bEF1
Z1NlcE9jdE5vdkRlYyI7CiAgICAgY29uc3QgY2hhciAqdG9rZW5zWzE2XTsgLyogMTYgaXMgbW9y
ZSB0aGFuIGVub3VnaCAqLwotICAgIHVuc2lnbmVkIGludCB0b2tsZW5bKHNpemVvZih0b2tlbnMp
L3NpemVvZih0b2tlbnNbMF0pKV07CisgICAgdW5zaWduZWQgaW50IHRva2xlbltBUlJBWV9MRU5H
VEgodG9rZW5zKV07CiAgICAgdW5zaWduZWQgaW50IGxpbmVsZW5fc2Fuc193c3A7ICAvLyBsaW5l
IGxlbmd0aCBzYW5zIHdoaXRlc3BhY2UKICAgICB1bnNpZ25lZCBpbnQgbnVtdG9rcyA9IDA7CiAg
ICAgdW5zaWduZWQgaW50IHRva21hcmtlciA9IDA7IC8qIGV4dHJhIGluZm8gZm9yIGxzdHlsZSBo
YW5kbGVyICovCkBAIC0xMzMsNyArMTMzLDcgQEAgRlRQRW50cnlUeXBlIHBhcnNlT25lRlRQTGlu
ZShjb25zdCBjaGFyKiBsaW5lLCBMaXN0U3RhdGUmIHN0YXRlLCBMaXN0UmVzdWx0JiByZXMKICAg
ICB9CiAKICAgICB1bnNpZ25lZCBpbnQgcG9zID0gMDsKLSAgICB3aGlsZSAocG9zIDwgbGluZWxl
biAmJiBudW10b2tzIDwgKHNpemVvZih0b2tlbnMpL3NpemVvZih0b2tlbnNbMF0pKSApCisgICAg
d2hpbGUgKHBvcyA8IGxpbmVsZW4gJiYgbnVtdG9rcyA8IEFSUkFZX0xFTkdUSCh0b2tlbnMpKQog
ICAgIHsKICAgICAgIHdoaWxlIChwb3MgPCBsaW5lbGVuICYmIAogICAgICAgICAgICAgKGxpbmVb
cG9zXSA9PSAnICcgfHwgbGluZVtwb3NdID09ICdcdCcgfHwgbGluZVtwb3NdID09ICdccicpKQpA
QCAtMTU2LDcgKzE1Niw3IEBAIEZUUEVudHJ5VHlwZSBwYXJzZU9uZUZUUExpbmUoY29uc3QgY2hh
ciogbGluZSwgTGlzdFN0YXRlJiBzdGF0ZSwgTGlzdFJlc3VsdCYgcmVzCiAgICAgICByZXR1cm4g
UGFyc2luZ0ZhaWxlZChzdGF0ZSk7CiAKICAgICBsaW5lbGVuX3NhbnNfd3NwID0gJih0b2tlbnNb
bnVtdG9rcy0xXVt0b2tsZW5bbnVtdG9rcy0xXV0pIC0gdG9rZW5zWzBdOwotICAgIGlmIChudW10
b2tzID09IChzaXplb2YodG9rZW5zKS9zaXplb2YodG9rZW5zWzBdKSkgKQorICAgIGlmIChudW10
b2tzID09IEFSUkFZX0xFTkdUSCh0b2tlbnMpKQogICAgIHsKICAgICAgIHBvcyA9IGxpbmVsZW47
CiAgICAgICB3aGlsZSAocG9zID4gMCAmJiAobGluZVtwb3MtMV0gPT0gJyAnIHx8IGxpbmVbcG9z
LTFdID09ICdcdCcpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwIGIvV2ViQ29yZS9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4
IDlmMzU0ODAuLmZhNTQzNWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbWF0aG1sL1JlbmRlck1hdGhN
TE9wZXJhdG9yLmNwcAorKysgYi9XZWJDb3JlL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5j
cHAKQEAgLTE2Miw4ICsxNjIsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVG
cm9tRWxlbWVudCgpCiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIGEgc3RyZXRjaGFibGUgY2hhcmFj
dGVyLgogICAgIGlmICghc3RyZXRjaERpc2FibGVkICYmIGZpcnN0Q2hhcikgewotICAgICAgICBj
b25zdCBpbnQgbWF4SW5kZXggPSBzaXplb2Yoc3RyZXRjaHlDaGFyYWN0ZXJzKSAvIHNpemVvZihz
dHJldGNoeUNoYXJhY3RlcnNbMF0pOwotICAgICAgICBmb3IgKGluZGV4Kys7IGluZGV4IDwgbWF4
SW5kZXg7IGluZGV4KyspIHsKKyAgICAgICAgZm9yIChpbmRleCsrOyBpbmRleCA8IEFSUkFZX0xF
TkdUSChzdHJldGNoeUNoYXJhY3RlcnMpOyBpbmRleCsrKSB7CiAgICAgICAgICAgICBpZiAoc3Ry
ZXRjaHlDaGFyYWN0ZXJzW2luZGV4XS5jaGFyYWN0ZXIgPT0gZmlyc3RDaGFyKSB7CiAgICAgICAg
ICAgICAgICAgaXNTdHJldGNoeSA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBhZGU2OGI1Li44ZTQ2N2Uy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKQEAgLTc0NCw3ICs3
NDQsNyBAQCBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCkKICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4KICAgICB9OwogCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemVvZihhbmltYXRhYmxlU2hvcnRoYW5kUHJvcGVydGllcykgLyBzaXpl
b2YoYW5pbWF0YWJsZVNob3J0aGFuZFByb3BlcnRpZXNbMF0pOyArK2kpIHsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IEFSUkFZX0xFTkdUSChhbmltYXRhYmxlU2hvcnRoYW5kUHJvcGVydGll
cyk7ICsraSkgewogICAgICAgICBpbnQgcHJvcGVydHlJRCA9IGFuaW1hdGFibGVTaG9ydGhhbmRQ
cm9wZXJ0aWVzW2ldOwogICAgICAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kID0gbG9u
Z2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKICAgICAgICAgaWYgKGxvbmdoYW5kLmxlbmd0
aCgpID4gMCkKQEAgLTc1Nyw3ICs3NTcsNyBAQCBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9w
ZXJ0aWVzKCkKICAgICAgICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0CiAgICAgfTsKIAotICAgIENT
U1Byb3BlcnR5TG9uZ2hhbmQgZm9udExvbmdoYW5kKGFuaW1hdGFibGVGb250UHJvcGVydGllcywg
c2l6ZW9mKGFuaW1hdGFibGVGb250UHJvcGVydGllcykgLyBzaXplb2YoYW5pbWF0YWJsZUZvbnRQ
cm9wZXJ0aWVzWzBdKSk7CisgICAgQ1NTUHJvcGVydHlMb25naGFuZCBmb250TG9uZ2hhbmQoYW5p
bWF0YWJsZUZvbnRQcm9wZXJ0aWVzLCBBUlJBWV9MRU5HVEgoYW5pbWF0YWJsZUZvbnRQcm9wZXJ0
aWVzKSk7CiAgICAgYWRkUHJvcGVydHlXcmFwcGVyKENTU1Byb3BlcnR5Rm9udCwgbmV3IFNob3J0
aGFuZFByb3BlcnR5V3JhcHBlcihDU1NQcm9wZXJ0eUZvbnQsIGZvbnRMb25naGFuZCkpOwogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMLmNwcAppbmRleCAzYWM1ZDg2Li5hMWRmMDliIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL0tVUkwuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAKQEAgLTE3OTYs
NyArMTc5Niw3IEBAIGJvb2wgcG9ydEFsbG93ZWQoY29uc3QgS1VSTCYgdXJsKQogICAgICAgICA2
NjY5LCAvLyBBbHRlcm5hdGUgSVJDIFtBcHBsZSBhZGRpdGlvbl0KICAgICAgICAgaW52YWxpZFBv
cnROdW1iZXIsIC8vIFVzZWQgdG8gYmxvY2sgYWxsIGludmFsaWQgcG9ydCBudW1iZXJzCiAgICAg
fTsKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCogY29uc3QgYmxvY2tlZFBvcnRMaXN0RW5kID0g
YmxvY2tlZFBvcnRMaXN0ICsgc2l6ZW9mKGJsb2NrZWRQb3J0TGlzdCkgLyBzaXplb2YoYmxvY2tl
ZFBvcnRMaXN0WzBdKTsKKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCogY29uc3QgYmxvY2tlZFBv
cnRMaXN0RW5kID0gYmxvY2tlZFBvcnRMaXN0ICsgQVJSQVlfTEVOR1RIKGJsb2NrZWRQb3J0TGlz
dCk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgLy8gVGhlIHBvcnQgbGlzdCBtdXN0IGJlIHNvcnRl
ZCBmb3IgYmluYXJ5X3NlYXJjaCB0byB3b3JrLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9LVVJMR29vZ2xlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vS1VSTEdvb2dsZS5jcHAKaW5kZXgg
NzI2YmM1Ny4uMjU2YWVkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMR29vZ2xl
LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0tVUkxHb29nbGUuY3BwCkBAIC04OTMsNyArODkz
LDcgQEAgYm9vbCBwb3J0QWxsb3dlZChjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIDY2NjksIC8v
IEFsdGVybmF0ZSBJUkMgW0FwcGxlIGFkZGl0aW9uXQogICAgICAgICBpbnZhbGlkUG9ydE51bWJl
ciwgLy8gVXNlZCB0byBibG9jayBhbGwgaW52YWxpZCBwb3J0IG51bWJlcnMKICAgICB9OwotICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25zdCBibG9ja2VkUG9ydExpc3RFbmQgPSBibG9ja2Vk
UG9ydExpc3QgKyBzaXplb2YoYmxvY2tlZFBvcnRMaXN0KSAvIHNpemVvZihibG9ja2VkUG9ydExp
c3RbMF0pOworICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBjb25zdCBibG9ja2VkUG9ydExpc3RF
bmQgPSBibG9ja2VkUG9ydExpc3QgKyBBUlJBWV9MRU5HVEgoYmxvY2tlZFBvcnRMaXN0KTsKIAog
I2lmbmRlZiBOREVCVUcKICAgICAvLyBUaGUgcG9ydCBsaXN0IG11c3QgYmUgc29ydGVkIGZvciBi
aW5hcnlfc2VhcmNoIHRvIHdvcmsuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApp
bmRleCAyMDAyMDE4Li40MzllNTUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL01JTUVU
eXBlUmVnaXN0cnkuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5j
cHAKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSW1h
Z2VNSU1FVHlwZXMoKQogICAgICAgICAiaW1hZ2UveC1pY29uIiwgICAgLy8gaWNvCiAgICAgICAg
ICJpbWFnZS94LXhiaXRtYXAiICAvLyB4Ym0KICAgICB9OwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZW9mKHR5cGVzKSAvIHNpemVvZih0eXBlc1swXSk7ICsraSkgeworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKHR5cGVzKTsgKytpKSB7CiAgICAgICAgIHN1
cHBvcnRlZEltYWdlTUlNRVR5cGVzLT5hZGQodHlwZXNbaV0pOwogICAgICAgICBzdXBwb3J0ZWRJ
bWFnZVJlc291cmNlTUlNRVR5cGVzLT5hZGQodHlwZXNbaV0pOwogICAgIH0KQEAgLTE4Nyw3ICsx
ODcsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
cygpCiAgICAgICAgICJ0ZXh0L2pzY3JpcHQiLAogICAgICAgICAidGV4dC9saXZlc2NyaXB0IiwK
ICAgICB9OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKHR5cGVzKSAvIHNpemVv
Zih0eXBlc1swXSk7ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX0xFTkdU
SCh0eXBlcyk7ICsraSkKICAgICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMtPmFkZCh0
eXBlc1tpXSk7CiB9CiAKQEAgLTIxOSwxMCArMjE5LDkgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVN1cHBvcnRlZE5vbkltYWdlTWltZVR5cGVzKCkKICAgICAgICAgLy8gTm90ZTogQURESU5HIGEg
bmV3IHR5cGUgaGVyZSB3aWxsIHByb2JhYmx5IHJlbmRlciBpdCBhcyBIVE1MLiBUaGlzIGNhbgog
ICAgICAgICAvLyByZXN1bHQgaW4gY3Jvc3Mtc2l0ZSBzY3JpcHRpbmcuCiAgICAgfTsKLSAgICBD
T01QSUxFX0FTU0VSVChzaXplb2YodHlwZXMpIC8gc2l6ZW9mKHR5cGVzWzBdKSA8PSAxNiwKLSAg
ICAgICAgICAgICAgICAgICBub25pbWFnZV9taW1lX3R5cGVzX211c3RfYmVfbGVzc190aGFuX29y
X2VxdWFsX3RvXzE2KTsKKyAgICBDT01QSUxFX0FTU0VSVChBUlJBWV9MRU5HVEgodHlwZXMpIDw9
IDE2LCBub25pbWFnZV9taW1lX3R5cGVzX211c3RfYmVfbGVzc190aGFuX29yX2VxdWFsX3RvXzE2
KTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKHR5cGVzKS9zaXplb2YodHlw
ZXNbMF0pOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgodHlw
ZXMpOyArK2kpCiAgICAgICAgIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzLT5hZGQodHlwZXNb
aV0pOwogCiAgICAgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlNRVR5cGVz
KCk7CkBAIC0zMTksMjEgKzMxOCwxOSBAQCBzdGF0aWMgTWVkaWFNSU1FVHlwZU1hcCYgbWVkaWFN
SU1FVHlwZU1hcCgpCiAgICAgaWYgKCFtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uTWFwLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXA7CiAKLSAg
ICBjb25zdCB1bnNpZ25lZCBudW1QYWlycyA9IHNpemVvZihwYWlycykgLyBzaXplb2YocGFpcnNb
MF0pOwotICAgIGZvciAodW5zaWduZWQgbmR4ID0gMDsgbmR4IDwgbnVtUGFpcnM7ICsrbmR4KSB7
Ci0KLSAgICAgICAgaWYgKG1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuY29udGFpbnMocGFp
cnNbbmR4XS5leHRlbnNpb24pKQotICAgICAgICAgICAgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lv
bk1hcC5nZXQocGFpcnNbbmR4XS5leHRlbnNpb24pLT5hcHBlbmQocGFpcnNbbmR4XS50eXBlKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX0xFTkdUSChwYWlycyk7ICsraSkgewor
ICAgICAgICBpZiAobWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5jb250YWlucyhwYWlyc1tp
XS5leHRlbnNpb24pKQorICAgICAgICAgICAgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbk1hcC5n
ZXQocGFpcnNbaV0uZXh0ZW5zaW9uKS0+YXBwZW5kKHBhaXJzW2ldLnR5cGUpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+KiBzeW5vbnltcyA9IG5ldyBWZWN0b3I8
U3RyaW5nPjsKIAogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBzeXN0ZW0gc3BlY2lmaWMg
dHlwZSBmb3IgdGhpcyBleHRlbnNpb24sIGFkZCBpdCBhcyB0aGUgZmlyc3QgdHlwZSBzbwogICAg
ICAgICAgICAgLy8gZ2V0TWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbiB3aWxsIGFsd2F5cyByZXR1
cm4gaXQuCi0gICAgICAgICAgICBTdHJpbmcgc3lzdGVtVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKHBhaXJzW25keF0udHlwZSk7Ci0gICAgICAgICAgICBp
ZiAoIXN5c3RlbVR5cGUuaXNFbXB0eSgpICYmIHBhaXJzW25keF0udHlwZSAhPSBzeXN0ZW1UeXBl
KQorICAgICAgICAgICAgU3RyaW5nIHN5c3RlbVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRN
SU1FVHlwZUZvckV4dGVuc2lvbihwYWlyc1tpXS50eXBlKTsKKyAgICAgICAgICAgIGlmICghc3lz
dGVtVHlwZS5pc0VtcHR5KCkgJiYgcGFpcnNbaV0udHlwZSAhPSBzeXN0ZW1UeXBlKQogICAgICAg
ICAgICAgICAgIHN5bm9ueW1zLT5hcHBlbmQoc3lzdGVtVHlwZSk7Ci0gICAgICAgICAgICBzeW5v
bnltcy0+YXBwZW5kKHBhaXJzW25keF0udHlwZSk7Ci0gICAgICAgICAgICBtZWRpYU1JTUVUeXBl
Rm9yRXh0ZW5zaW9uTWFwLmFkZChwYWlyc1tuZHhdLmV4dGVuc2lvbiwgc3lub255bXMpOworICAg
ICAgICAgICAgc3lub255bXMtPmFwcGVuZChwYWlyc1tpXS50eXBlKTsKKyAgICAgICAgICAgIG1l
ZGlhTUlNRVR5cGVGb3JFeHRlbnNpb25NYXAuYWRkKHBhaXJzW2ldLmV4dGVuc2lvbiwgc3lub255
bXMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1VV
SUQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9VVUlELmNwcAppbmRleCBmZGJmNjAxLi42NjE1YzQx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1VVSUQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vVVVJRC5jcHAKQEAgLTM5LDkgKzM5LDYgQEAKIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5j
bHVkZSA8b2JqYmFzZS5oPgotI2lmbmRlZiBBUlJBWVNJWkUKLSNkZWZpbmUgQVJSQVlTSVpFKGEp
ICAgICAgICAgICAoc2l6ZW9mKGEpIC8gc2l6ZW9mKChhKVswXSkpCi0jZW5kaWYKICNlbGlmIE9T
KERBUldJTikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2Vs
aWYgT1MoTElOVVgpCkBAIC02Niw3ICs2Myw3IEBAIFN0cmluZyBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCkKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIHdjaGFyX3QgdXVpZFN0cls0MF07Ci0gICAgaW50IG51bSA9IFN0cmluZ0Zyb21HVUlEMih1
dWlkLCByZWludGVycHJldF9jYXN0PExQT0xFU1RSPih1dWlkU3RyKSwgQVJSQVlTSVpFKHV1aWRT
dHIpKTsKKyAgICBpbnQgbnVtID0gU3RyaW5nRnJvbUdVSUQyKHV1aWQsIHJlaW50ZXJwcmV0X2Nh
c3Q8TFBPTEVTVFI+KHV1aWRTdHIpLCBBUlJBWV9MRU5HVEgodXVpZFN0cikpOwogICAgIEFTU0VS
VChudW0gPT0gMzkpOwogICAgIFN0cmluZyBjYW5vbmljYWxVdWlkU3RyID0gU3RyaW5nKHV1aWRT
dHIgKyAxLCBudW0gLSAzKS5sb3dlcigpOyAvLyByZW1vdmUgb3BlbmluZyBhbmQgY2xvc2luZyBi
cmFja2V0IGFuZCBtYWtlIGl0IGxvd2VyLgogICAgIEFTU0VSVChjYW5vbmljYWxVdWlkU3RyW3V1
aWRWZXJzaW9uSWRlbnRpZmllckluZGV4XSA9PSB1dWlkVmVyc2lvblJlcXVpcmVkKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRleCA2MDc2NzQ3Li5lYzg5MGNhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCkBAIC0yNDcsNyArMjQ3LDcg
QEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3RhdGVGcm9tRm9ybShFdmFzX09iamVj
dCogbywgQ29udHJvbFN0YXRlcyBzdGF0ZXMKICAgICAgICAgIndpbmRvdy1pbmFjdGl2ZSIsCiAg
ICAgICAgICJpbmRldGVybWluYXRlIgogICAgIH07Ci0gICAgc2l6ZV90IGksIGxhc3QgPSBzaXpl
b2Yoc2lnbmFscykgLyBzaXplb2Yoc2lnbmFsc1swXSk7CisgICAgc2l6ZV90IGksIGxhc3QgPSBB
UlJBWV9MRU5HVEgoc2lnbmFscyk7CiAKICAgICBlZGplX29iamVjdF9zaWduYWxfZW1pdChvLCAi
cmVzZXQiLCAiIik7CiAKQEAgLTU5Niw3ICs1OTYsNyBAQCBjb25zdCBjaGFyKiBSZW5kZXJUaGVt
ZUVmbDo6ZWRqZUdyb3VwRnJvbUZvcm1UeXBlKEZvcm1UeXBlIHR5cGUpIGNvbnN0CiAgICAgICAg
IDAKICAgICB9OwogICAgIEFTU0VSVCh0eXBlID49IDApOwotICAgIEFTU0VSVCgoc2l6ZV90KXR5
cGUgPCBzaXplb2YoZ3JvdXBzKSAvIHNpemVvZihncm91cHNbMF0pKTsgLy8gb3V0IG9mIHN5bmM/
CisgICAgQVNTRVJUKChzaXplX3QpdHlwZSA8IEFSUkFZX0xFTkdUSChncm91cHMpKTsgLy8gb3V0
IG9mIHN5bmM/CiAgICAgcmV0dXJuIGdyb3Vwc1t0eXBlXTsKIH0KIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKaW5kZXggNzYxYmY0MC4uYWViZjEwZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjb21wb3NpdGVPcGVyYXRvck5hbWVzW10g
PSB7CiAgICAgImhpZ2hsaWdodCIsCiAgICAgImxpZ2h0ZXIiCiB9OwotY29uc3QgaW50IG51bUNv
bXBvc2l0ZU9wZXJhdG9yTmFtZXMgPSBzaXplb2YoY29tcG9zaXRlT3BlcmF0b3JOYW1lcykgLyBz
aXplb2YoY29tcG9zaXRlT3BlcmF0b3JOYW1lc1swXSk7Citjb25zdCBpbnQgbnVtQ29tcG9zaXRl
T3BlcmF0b3JOYW1lcyA9IEFSUkFZX0xFTkdUSChjb21wb3NpdGVPcGVyYXRvck5hbWVzKTsKIAog
Ym9vbCBwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGNvbnN0IFN0cmluZyYgcywgQ29tcG9zaXRlT3Bl
cmF0b3ImIG9wKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2FjaGVDaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcAppbmRleCA3YzNlNDUwLi44NmZkNTEx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDYWNo
ZUNocm9taXVtV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRDYWNoZUNocm9taXVtV2luLmNwcApAQCAtMjExLDkgKzIxMSw4IEBAIHN0YXRpYyBib29s
IExvb2t1cEFsdE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGFsdE5hbWUpCiAgICAg
c3RhdGljIE5hbWVNYXAqIGZvbnROYW1lTWFwID0gMDsKIAogICAgIGlmICghZm9udE5hbWVNYXAp
IHsKLSAgICAgICAgc2l6ZV90IG51bUVsZW1lbnRzID0gc2l6ZW9mKG5hbWVQYWlycykgLyBzaXpl
b2YoTmFtZVBhaXIpOwogICAgICAgICBmb250TmFtZU1hcCA9IG5ldyBOYW1lTWFwOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyArK2kpCisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKG5hbWVQYWlycyk7ICsraSkKICAgICAgICAg
ICAgIGZvbnROYW1lTWFwLT5zZXQoU3RyaW5nKG5hbWVQYWlyc1tpXS5uYW1lKSwgJihuYW1lUGFp
cnNbaV0uYWx0TmFtZUNvZGVwYWdlKSk7CiAgICAgfQogCkBAIC0zOTEsMTAgKzM5MCwxMCBAQCBj
b25zdCBTaW1wbGVGb250RGF0YSogRm9udENhY2hlOjpnZXRGb250RGF0YUZvckNoYXJhY3RlcnMo
Y29uc3QgRm9udCYgZm9udCwgY29ucwogICAgIGludCBudW1Gb250cyA9IDA7CiAgICAgaWYgKHNj
cmlwdCA9PSBVU0NSSVBUX0hBTikgewogICAgICAgICBwYW5VbmlGb250cyA9IGNqa0ZvbnRzOwot
ICAgICAgICBudW1Gb250cyA9IEFSUkFZU0laRShjamtGb250cyk7CisgICAgICAgIG51bUZvbnRz
ID0gQVJSQVlfTEVOR1RIKGNqa0ZvbnRzKTsKICAgICB9IGVsc2UgewogICAgICAgICBwYW5VbmlG
b250cyA9IGNvbW1vbkZvbnRzOwotICAgICAgICBudW1Gb250cyA9IEFSUkFZU0laRShjb21tb25G
b250cyk7CisgICAgICAgIG51bUZvbnRzID0gQVJSQVlfTEVOR1RIKGNvbW1vbkZvbnRzKTsKICAg
ICB9CiAgICAgLy8gRm9udCByZXR1cm5lZCBmcm9tIEdldEZhbGxiYWNrRmFtaWx5IG1heSBub3Qg
Y292ZXIgfGNoYXJhY3RlcnN8CiAgICAgLy8gYmVjYXVzZSBpdCdzIGJhc2VkIG9uIHNjcmlwdCB0
byBmb250IG1hcHBpbmcuIFRoaXMgcHJvYmxlbSBpcwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcAppbmRl
eCBlNzI1YzUwLi4xOGY4MDI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRVdGlsc0Nocm9taXVtV2luLmNwcApAQCAtMTUwLDE0ICsx
NTAsMTQgQEAgdm9pZCBpbml0aWFsaXplU2NyaXB0Rm9udE1hcChTY3JpcHRUb0ZvbnRNYXAmIHNj
cmlwdEZvbnRNYXApCiAgICAgICAgIHtVU0NSSVBUX01ZQU5NQVIsIG15YW5tYXJGb250c30sCiAg
ICAgfTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9mKGZvbnRNYXApIC8gc2l6ZW9m
KGZvbnRNYXBbMF0pOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWV9MRU5H
VEgoZm9udE1hcCk7ICsraSkKICAgICAgICAgc2NyaXB0Rm9udE1hcFtmb250TWFwW2ldLnNjcmlw
dF0gPSBmb250TWFwW2ldLmZhbWlseTsKIAogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHNjYW5u
aW5nIHRoZSBoYXJkLWNvZGVkIGxpc3QsIHdlIGhhdmUgdG8gCiAgICAgLy8gdXNlIEVudW1Gb250
KiB0byAnaW5zcGVjdCcgZm9udHMgdG8gcGljayB1cCBmb250cyBjb3ZlcmluZyBzY3JpcHRzCiAg
ICAgLy8gd2hlbiBpdCdzIHBvc3NpYmxlIChlLmcuIHVzaW5nIE9TLzIgdGFibGUpLiBJZiB3ZSBk
byB0aGF0LCB0aGlzIAogICAgIC8vIGhhZCBiZXR0ZXIgYmUgcHVsbGVkIG91dCBvZiBoZXJlLgot
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9mKHNjcmlwdFRvRm9udEZhbWlsaWVzKSAvIHNp
emVvZihzY3JpcHRUb0ZvbnRGYW1pbGllc1swXSk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgQVJSQVlfTEVOR1RIKHNjcmlwdFRvRm9udEZhbWlsaWVzKTsgKytpKSB7CiAgICAg
ICAgIFVTY3JpcHRDb2RlIHNjcmlwdCA9IHNjcmlwdFRvRm9udEZhbWlsaWVzW2ldLnNjcmlwdDsK
ICAgICAgICAgc2NyaXB0Rm9udE1hcFtzY3JpcHRdID0gMDsKICAgICAgICAgY29uc3QgVUNoYXIq
KiBmYW1pbHlQdHIgPSBzY3JpcHRUb0ZvbnRGYW1pbGllc1tpXS5mYW1pbGllczsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNv
cmVUZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckNvcmVUZXh0LmNwcAppbmRleCA3NDRlNmQ0Li5iZmQ4YTAxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4
dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQuY3BwCkBAIC0xMjQsOCArMTI0LDggQEAgdm9pZCBDb21wbGV4VGV4dENv
bnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJzQ29yZVRleHQoY29u
c3QgVUMKICAgICAgICAgY29uc3Qgc2hvcnQgcnRsRm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSA9
IDE7CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBsdHJPcHRpb25WYWx1ZXNbXSA9IHsgQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU2hvcnRUeXBlLCAmbHRy
Rm9yY2VkRW1iZWRkaW5nTGV2ZWxWYWx1ZSkgfTsKICAgICAgICAgc3RhdGljIGNvbnN0IHZvaWQq
IHJ0bE9wdGlvblZhbHVlc1tdID0geyBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrQ0ZOdW1iZXJTaG9ydFR5cGUsICZydGxGb3JjZWRFbWJlZGRpbmdMZXZlbFZhbHVlKSB9Owot
ICAgICAgICBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGx0clR5cGVzZXR0ZXJPcHRpb25zID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIG9wdGlvbktleXMsIGx0ck9wdGlv
blZhbHVlcywgc2l6ZW9mKG9wdGlvbktleXMpIC8gc2l6ZW9mKCpvcHRpb25LZXlzKSwgJmtDRkNv
cHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcyk7Ci0gICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgcnRsVHlwZXNldHRlck9w
dGlvbnMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0aW9uS2V5
cywgcnRsT3B0aW9uVmFsdWVzLCBzaXplb2Yob3B0aW9uS2V5cykgLyBzaXplb2YoKm9wdGlvbktl
eXMpLCAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlv
bmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICAgICAgc3RhdGljIENGRGljdGlvbmFyeVJlZiBsdHJU
eXBlc2V0dGVyT3B0aW9ucyA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBvcHRpb25LZXlzLCBsdHJPcHRpb25WYWx1ZXMsIEFSUkFZX0xFTkdUSChvcHRpb25LZXlzKSwg
JmtDRkNvcHlTdHJpbmdEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlW
YWx1ZUNhbGxCYWNrcyk7CisgICAgICAgIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgcnRsVHlwZXNl
dHRlck9wdGlvbnMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgb3B0
aW9uS2V5cywgcnRsT3B0aW9uVmFsdWVzLCBBUlJBWV9MRU5HVEgob3B0aW9uS2V5cyksICZrQ0ZD
b3B5U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVD
YWxsQmFja3MpOwogICAgICAgICBSZXRhaW5QdHI8Q1RUeXBlc2V0dGVyUmVmPiB0eXBlc2V0dGVy
KEFkb3B0Q0YsIENUVHlwZXNldHRlckNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nQW5kT3B0aW9u
cyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpLCBtX3J1bi5sdHIoKSA/IGx0clR5cGVzZXR0ZXJPcHRp
b25zIDogcnRsVHlwZXNldHRlck9wdGlvbnMpKTsKIAogICAgICAgICBsaW5lLmFkb3B0Q0YoQ1RU
eXBlc2V0dGVyQ3JlYXRlTGluZSh0eXBlc2V0dGVyLmdldCgpLCBDRlJhbmdlTWFrZSgwLCAwKSkp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbQppbmRleCA3YjBlN2FmLi42ODQzY2QyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bQpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyB2b2lkIGRpc2FibGVDb21wb25lbnRzT25jZSgp
CiAgICAgICAgIHsnaW1kYycsICdwZGYgJywgJ2FwcGwnLCAwLCAwfSwgIAogICAgIH07CiAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihjb21wb25lbnRzVG9EaXNhYmxlKS9zaXpl
b2YoY29tcG9uZW50c1RvRGlzYWJsZVswXSk7ICsraSkgCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBBUlJBWV9MRU5HVEgoY29tcG9uZW50c1RvRGlzYWJsZSk7ICsraSkgCiAgICAgICAgIHdr
UVRNb3ZpZURpc2FibGVDb21wb25lbnQoY29tcG9uZW50c1RvRGlzYWJsZVtpXSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQVRT
VUkubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUFUU1VJ
Lm1tCmluZGV4IGJlZWEwMTguLmQzMDA5NTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQVRTVUkubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFBVFNVSS5tbQpAQCAtNTksNyArNTksNyBAQCB2
b2lkIFNpbXBsZUZvbnREYXRhOjpjaGVja1NoYXBlc0FyYWJpYygpIGNvbnN0CiAgICAgLy8gaGV1
cmlzdGljIGlzIHRoYXQgaWYgc3VjaCBhIGZvbnQgaGFzIGEgZ2x5cGggbWV0YW1vcnBob3NpcyB0
YWJsZSwgdGhlbgogICAgIC8vIGl0IGluY2x1ZGVzIHNoYXBpbmcgaW5mb3JtYXRpb24gZm9yIEFy
YWJpYy4KICAgICBGb3VyQ2hhckNvZGUgdGFibGVzW10gPSB7ICdtb3J4JywgJ21vcnQnIH07Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZih0YWJsZXMpIC8gc2l6ZW9mKHRhYmxl
c1swXSk7ICsraSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKHRh
Ymxlcyk7ICsraSkgewogICAgICAgICBCeXRlQ291bnQgdGFibGVTaXplOwogICAgICAgICBPU1N0
YXR1cyBzdGF0dXMgPSBBVFNGb250R2V0VGFibGUoZm9udElELCB0YWJsZXNbaV0sIDAsIDAsIDAs
ICZ0YWJsZVNpemUpOwogICAgICAgICBpZiAoc3RhdHVzID09IG5vRXJyKSB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQu
Y3BwCmluZGV4IDAxZDc1ZWUuLjMxZTljM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCkBAIC02MiwxNSAr
NjIsMTMgQEAgQ0ZEaWN0aW9uYXJ5UmVmIFNpbXBsZUZvbnREYXRhOjpnZXRDRlN0cmluZ0F0dHJp
YnV0ZXMoVHlwZXNldHRpbmdGZWF0dXJlcyB0eXBlc2UKICAgICAgICAgY29uc3Qgdm9pZCogdmFs
dWVzV2l0aEtlcm5pbmdEaXNhYmxlZFtdID0geyBwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwga2Vy
bmluZ0FkanVzdG1lbnQsIGFsbG93TGlnYXR1cmVzCiAgICAgICAgICAgICA/IGxpZ2F0dXJlc0Fs
bG93ZWQgOiBsaWdhdHVyZXNOb3RBbGxvd2VkLCBwbGF0Zm9ybURhdGEoKS5vcmllbnRhdGlvbigp
ID09IFZlcnRpY2FsID8ga0NGQm9vbGVhblRydWUgOiBrQ0ZCb29sZWFuRmFsc2UgfTsKICAgICAg
ICAgYXR0cmlidXRlc0RpY3Rpb25hcnkuYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoMCwga2V5
c1dpdGhLZXJuaW5nRGlzYWJsZWQsIHZhbHVlc1dpdGhLZXJuaW5nRGlzYWJsZWQsCi0gICAgICAg
ICAgICBzaXplb2Yoa2V5c1dpdGhLZXJuaW5nRGlzYWJsZWQpIC8gc2l6ZW9mKCprZXlzV2l0aEtl
cm5pbmdEaXNhYmxlZCksCi0gICAgICAgICAgICAma0NGQ29weVN0cmluZ0RpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAgICAg
ICBBUlJBWV9MRU5HVEgoa2V5c1dpdGhLZXJuaW5nRGlzYWJsZWQpLCAma0NGQ29weVN0cmluZ0Rp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQnkgb21pdHRpbmcgdGhlIGtDVEtlcm5BdHRyaWJ1
dGVOYW1lIGF0dHJpYnV0ZSwgd2UgZ2V0IENvcmUgVGV4dCdzIHN0YW5kYXJkIGtlcm5pbmcuCiAg
ICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBrZXlzV2l0aEtlcm5pbmdFbmFibGVkW10gPSB7IGtD
VEZvbnRBdHRyaWJ1dGVOYW1lLCBrQ1RMaWdhdHVyZUF0dHJpYnV0ZU5hbWUsIGtDVFZlcnRpY2Fs
Rm9ybXNBdHRyaWJ1dGVOYW1lIH07CiAgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1dpdGhLZXJu
aW5nRW5hYmxlZFtdID0geyBwbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgYWxsb3dMaWdhdHVyZXMg
PyBsaWdhdHVyZXNBbGxvd2VkIDogbGlnYXR1cmVzTm90QWxsb3dlZCwgcGxhdGZvcm1EYXRhKCku
b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbCA/IGtDRkJvb2xlYW5UcnVlIDoga0NGQm9vbGVhbkZh
bHNlIH07CiAgICAgICAgIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5LmFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKDAsIGtleXNXaXRoS2VybmluZ0VuYWJsZWQsIHZhbHVlc1dpdGhLZXJuaW5nRW5hYmxl
ZCwKLSAgICAgICAgICAgIHNpemVvZihrZXlzV2l0aEtlcm5pbmdFbmFibGVkKSAvIHNpemVvZigq
a2V5c1dpdGhLZXJuaW5nRW5hYmxlZCksCi0gICAgICAgICAgICAma0NGQ29weVN0cmluZ0RpY3Rp
b25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Cisg
ICAgICAgICAgICBBUlJBWV9MRU5HVEgoa2V5c1dpdGhLZXJuaW5nRW5hYmxlZCksICZrQ0ZDb3B5
U3RyaW5nRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKICAgICB9CiAKICAgICByZXR1cm4gYXR0cmlidXRlc0RpY3Rpb25hcnkuZ2V0KCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4u
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRl
eCAyMjQwZjgwLi4xMDEwMWQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCBTaW1wbGVGb250RGF0YSogRm9u
dENhY2hlOjpnZXRMYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udAogICAgICAgICBBdG9taWNTdHJpbmcoIkFyaWFsIikKICAgICB9OwogICAgIFNpbXBsZUZv
bnREYXRhKiBzaW1wbGVGb250OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgQVJSQVlTSVpFKGZh
bGxiYWNrRm9udHMpOyArK2kpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX0xF
TkdUSChmYWxsYmFja0ZvbnRzKTsgKytpKSB7CiAgICAgICAgIGlmIChzaW1wbGVGb250ID0gZ2V0
Q2FjaGVkRm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBmYWxsYmFja0ZvbnRzW2ldKSkgewogICAg
ICAgICAgICAgZmFsbGJhY2tGb250TmFtZSA9IGZhbGxiYWNrRm9udHNbaV07CiAgICAgICAgICAg
ICByZXR1cm4gc2ltcGxlRm9udDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dENHV2luLmNwcAppbmRleCBjOTI4OGU1Li5jYjYxMWVkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRD
R1dpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250
ZXh0Q0dXaW4uY3BwCkBAIC0yMjgsMjAgKzIyOCwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0xpbmVGb3JUZXh0Q2hlY2tpbmcoY29uc3QgSW50UG9pbnQmIHBvaW50LCBpbnQgd2lkdGgs
CiAgICAgY29uc3QgZmxvYXQgbG93ZXJPcGFjaXR5ID0gMC44OGY7CiAKICAgICAvL1RvcCBsaW5l
Ci0gICAgQ0dDb250ZXh0U2V0TGluZURhc2goY29udGV4dCwgZWRnZV9vZmZzZXQsIGVkZ2VfZGFz
aF9sZW5ndGhzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZWRnZV9kYXNoX2xl
bmd0aHMpIC8gc2l6ZW9mKGVkZ2VfZGFzaF9sZW5ndGhzWzBdKSk7CisgICAgQ0dDb250ZXh0U2V0
TGluZURhc2goY29udGV4dCwgZWRnZV9vZmZzZXQsIGVkZ2VfZGFzaF9sZW5ndGhzLCBBUlJBWV9M
RU5HVEgoZWRnZV9kYXNoX2xlbmd0aHMpKTsKICAgICBDR0NvbnRleHRTZXRBbHBoYShjb250ZXh0
LCB1cHBlck9wYWNpdHkpOwogICAgIENHQ29udGV4dFN0cm9rZUxpbmVTZWdtZW50cyhjb250ZXh0
LCB1cHBlclBvaW50cywgMik7CiAgCiAgICAgLy8gTWlkZGxlIGxpbmUKLSAgICBDR0NvbnRleHRT
ZXRMaW5lRGFzaChjb250ZXh0LCBtaWRkbGVfb2Zmc2V0LCBtaWRkbGVfZGFzaF9sZW5ndGhzLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWlkZGxlX2Rhc2hfbGVuZ3RocykgLyBz
aXplb2YobWlkZGxlX2Rhc2hfbGVuZ3Roc1swXSkpOworICAgIENHQ29udGV4dFNldExpbmVEYXNo
KGNvbnRleHQsIG1pZGRsZV9vZmZzZXQsIG1pZGRsZV9kYXNoX2xlbmd0aHMsIEFSUkFZX0xFTkdU
SChtaWRkbGVfZGFzaF9sZW5ndGhzKSk7CiAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwg
bWlkZGxlT3BhY2l0eSk7CiAgICAgQ0dDb250ZXh0U3Ryb2tlTGluZVNlZ21lbnRzKGNvbnRleHQs
IG1pZGRsZVBvaW50cywgMik7CiAgICAgCiAgICAgLy8gQm90dG9tIGxpbmUKLSAgICBDR0NvbnRl
eHRTZXRMaW5lRGFzaChjb250ZXh0LCBlZGdlX29mZnNldCwgZWRnZV9kYXNoX2xlbmd0aHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVkZ2VfZGFzaF9sZW5ndGhzKSAvIHNpemVv
ZihlZGdlX2Rhc2hfbGVuZ3Roc1swXSkpOworICAgIENHQ29udGV4dFNldExpbmVEYXNoKGNvbnRl
eHQsIGVkZ2Vfb2Zmc2V0LCBlZGdlX2Rhc2hfbGVuZ3RocywgQVJSQVlfTEVOR1RIKGVkZ2VfZGFz
aF9sZW5ndGhzKSk7CiAgICAgQ0dDb250ZXh0U2V0QWxwaGEoY29udGV4dCwgbG93ZXJPcGFjaXR5
KTsKICAgICBDR0NvbnRleHRTdHJva2VMaW5lU2VnbWVudHMoY29udGV4dCwgbG93ZXJQb2ludHMs
IDIpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JY29uV2lu
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4uY3BwCmluZGV4IDA1
OTU5ZTAuLjQ4NjQwOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ljb25XaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ljb25XaW4u
Y3BwCkBAIC02OSw3ICs2OSw3IEBAIFBhc3NSZWZQdHI8SWNvbj4gSWNvbjo6Y3JlYXRlSWNvbkZv
ckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCiAgICAgcmV0dXJuIDA7CiAj
ZWxzZQogICAgIFRDSEFSIGJ1ZmZlcltNQVhfUEFUSF07ICAgIAotICAgIFVJTlQgbGVuZ3RoID0g
OjpHZXRTeXN0ZW1EaXJlY3RvcnkoYnVmZmVyLCBBUlJBWVNJWkUoYnVmZmVyKSk7CisgICAgVUlO
VCBsZW5ndGggPSA6OkdldFN5c3RlbURpcmVjdG9yeShidWZmZXIsIEFSUkFZX0xFTkdUSChidWZm
ZXIpKTsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlj
a1RpbWVWaXN1YWxDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCmluZGV4IDkyMjYzYjYu
LjljZmEwNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRl
eHQuY3BwCkBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIHZvaWQgZGlzYWJsZUNvbXBvbmVudHNP
bmNlKCkKICAgICAgICAgeydlYXQgJywgJ1RFWFQnLCAndHgzZycsIDAsIDB9LCAgCiAgICAgfTsK
IAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGNvbXBvbmVudHNUb0Rpc2FibGUp
IC8gc2l6ZW9mKGNvbXBvbmVudHNUb0Rpc2FibGVbMF0pOyArK2kpIAorICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKGNvbXBvbmVudHNUb0Rpc2FibGUpOyArK2kpIAogICAg
ICAgICBRVE1vdmllOjpkaXNhYmxlQ29tcG9uZW50KGNvbXBvbmVudHNUb0Rpc2FibGVbaV0pOwog
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9RVE1vdmllLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWUuY3BwCmluZGV4IDM3NWQ4
YzIuLmU4N2MzYWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FU
TW92aWUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1FUTW92aWUuY3Bw
CkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBRVE1vdmllOjpsb2FkKENGVVJMUmVmIHVybCwgYm9v
bCBwcmVzZXJ2ZXNQaXRjaCkKICAgICBtb3ZpZVByb3BzW21vdmllUHJvcENvdW50XS5wcm9wU3Rh
dHVzID0gMDsgCiAgICAgbW92aWVQcm9wQ291bnQrKzsgCiAKLSAgICBBU1NFUlQobW92aWVQcm9w
Q291bnQgPD0gc2l6ZW9mKG1vdmllUHJvcHMpIC8gc2l6ZW9mKG1vdmllUHJvcHNbMF0pKTsKKyAg
ICBBU1NFUlQobW92aWVQcm9wQ291bnQgPD0gQVJSQVlfTEVOR1RIKG1vdmllUHJvcHMpKTsKICAg
ICBtX3ByaXZhdGUtPm1fbG9hZEVycm9yID0gTmV3TW92aWVGcm9tUHJvcGVydGllcyhtb3ZpZVBy
b3BDb3VudCwgbW92aWVQcm9wcywgMCwgMCwgJm1fcHJpdmF0ZS0+bV9tb3ZpZSk7CiAKIGVuZDoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVDRk5ldC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwCmluZGV4IDgwMDMwMWEuLjIyNzNkMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApAQCAt
MzMyLDcgKzMzMiw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKCkK
ICAgICAgICAgLy8gQnV0IFNPQ0tTNSBjcmVkZW50aWFscyBkb24ndCB3b3JrIGF0IHRoZSB0aW1l
IG9mIHRoaXMgd3JpdGluZyBhbnl3YXksIHNlZSA8cmRhcjovLzY3NzY2OTg+LgogICAgICAgICBj
b25zdCB2b2lkKiBwcm94eUtleXNbXSA9IHsga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5SG9z
dCwga0NGU3RyZWFtUHJvcGVydHlTT0NLU1Byb3h5UG9ydCB9OwogICAgICAgICBjb25zdCB2b2lk
KiBwcm94eVZhbHVlc1tdID0geyBtX3Byb3h5SG9zdC5nZXQoKSwgbV9wcm94eVBvcnQuZ2V0KCkg
fTsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdERpY3Rpb25hcnko
QWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIHByb3h5S2V5cywgcHJveHlWYWx1ZXMsIHNp
emVvZihwcm94eUtleXMpIC8gc2l6ZW9mKCpwcm94eUtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3REaWN0aW9uYXJ5KEFkb3B0Q0YsIENG
RGljdGlvbmFyeUNyZWF0ZSgwLCBwcm94eUtleXMsIHByb3h5VmFsdWVzLCBBUlJBWV9MRU5HVEgo
cHJveHlLZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eSht
X3JlYWRTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5U09DS1NQcm94eSwgY29ubmVjdERp
Y3Rpb25hcnkuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMzQ0LDcgKzM0
NCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKCkKICAgICBpZiAo
c2hvdWxkVXNlU1NMKCkpIHsKICAgICAgICAgY29uc3Qgdm9pZCoga2V5c1tdID0geyBrQ0ZTdHJl
YW1TU0xQZWVyTmFtZSwga0NGU3RyZWFtU1NMTGV2ZWwgfTsKICAgICAgICAgY29uc3Qgdm9pZCog
dmFsdWVzW10gPSB7IGhvc3QuZ2V0KCksIGtDRlN0cmVhbVNvY2tldFNlY3VyaXR5TGV2ZWxOZWdv
dGlhdGVkU1NMIH07Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHNldHRpbmdz
KEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZSgwLCBrZXlzLCB2YWx1ZXMsIHNpemVvZihrZXlz
KSAvIHNpemVvZigqa2V5cyksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gc2V0dGluZ3MoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMsIHZh
bHVlcywgQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIENGUmVhZFN0cmVh
bVNldFByb3BlcnR5KG1fcmVhZFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVydHlTU0xTZXR0
aW5ncywgc2V0dGluZ3MuZ2V0KCkpOwogICAgICAgICBDRldyaXRlU3RyZWFtU2V0UHJvcGVydHko
bV93cml0ZVN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVydHlTU0xTZXR0aW5ncywgc2V0dGlu
Z3MuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
RW5jb2RpbmdSZWdpc3RyeS5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5n
UmVnaXN0cnkuY3BwCmluZGV4IGZiZTU4MjYuLjAwYTljMDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0
YXRpYyB2b2lkIGFkZFRvVGV4dENvZGVjTWFwKGNvbnN0IGNoYXIqIG5hbWUsIE5ld1RleHRDb2Rl
Y0Z1bmN0aW9uIGZ1bmN0aW9uLCBjCiAKIHN0YXRpYyB2b2lkIHBydW5lQmxhY2tsaXN0ZWRDb2Rl
Y3MoKQogewotICAgIHNpemVfdCBibGFja2xpc3RlZENvZGVjTGlzdExlbmd0aCA9IHNpemVvZih0
ZXh0RW5jb2RpbmdOYW1lQmxhY2tsaXN0KSAvIHNpemVvZih0ZXh0RW5jb2RpbmdOYW1lQmxhY2ts
aXN0WzBdKTsKKyAgICBzaXplX3QgYmxhY2tsaXN0ZWRDb2RlY0xpc3RMZW5ndGggPSBBUlJBWV9M
RU5HVEgodGV4dEVuY29kaW5nTmFtZUJsYWNrbGlzdCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBibGFja2xpc3RlZENvZGVjTGlzdExlbmd0aDsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNo
YXIqIGF0b21pY05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lTWFwLT5nZXQodGV4dEVuY29kaW5nTmFt
ZUJsYWNrbGlzdFtpXSk7CiAgICAgICAgIGlmICghYXRvbWljTmFtZSkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC90cmFuc2NvZGVyL0ZvbnRUcmFuc2NvZGVyLmNwcAppbmRleCA4ZTJm
MzNmLi43MDJlOTI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNjb2Rl
ci9Gb250VHJhbnNjb2Rlci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3RyYW5zY29k
ZXIvRm9udFRyYW5zY29kZXIuY3BwCkBAIC00MSwyMyArNDEsMjMgQEAgRm9udFRyYW5zY29kZXI6
OkZvbnRUcmFuc2NvZGVyKCkKIHsKICAgICBtX2NvbnZlcnRlclR5cGVzLmFkZCgiTVMgUEdvdGhp
YyIsIEJhY2tzbGFzaFRvWWVuU2lnbik7CiAgICAgVUNoYXIgdW5pY29kZU5hbWVNU1BHb3RoaWNb
XSA9IHsweEZGMkQsIDB4RkYzMywgMHgwMDIwLCAweEZGMzAsIDB4MzBCNCwgMHgzMEI3LCAweDMw
QzMsIDB4MzBBRn07Ci0gICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRvbWljU3RyaW5nKHVuaWNv
ZGVOYW1lTVNQR290aGljLCBzaXplb2YodW5pY29kZU5hbWVNU1BHb3RoaWMpIC8gc2l6ZW9mKFVD
aGFyKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CisgICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRv
bWljU3RyaW5nKHVuaWNvZGVOYW1lTVNQR290aGljLCBBUlJBWV9MRU5HVEgodW5pY29kZU5hbWVN
U1BHb3RoaWMpKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKIAogICAgIG1fY29udmVydGVyVHlwZXMu
YWRkKCJNUyBQTWluY2hvIiwgQmFja3NsYXNoVG9ZZW5TaWduKTsKICAgICBVQ2hhciB1bmljb2Rl
TmFtZU1TUE1pbmNob1tdID0gezB4RkYyRCwgMHhGRjMzLCAweDAwMjAsIDB4RkYzMCwgMHg2NjBF
LCAweDY3MUR9OwotICAgIG1fY29udmVydGVyVHlwZXMuYWRkKEF0b21pY1N0cmluZyh1bmljb2Rl
TmFtZU1TUE1pbmNobywgc2l6ZW9mKHVuaWNvZGVOYW1lTVNQTWluY2hvKSAvIHNpemVvZihVQ2hh
cikpLCBCYWNrc2xhc2hUb1llblNpZ24pOworICAgIG1fY29udmVydGVyVHlwZXMuYWRkKEF0b21p
Y1N0cmluZyh1bmljb2RlTmFtZU1TUE1pbmNobywgQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNQ
TWluY2hvKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CiAKICAgICBtX2NvbnZlcnRlclR5cGVzLmFk
ZCgiTVMgR290aGljIiwgQmFja3NsYXNoVG9ZZW5TaWduKTsKICAgICBVQ2hhciB1bmljb2RlTmFt
ZU1TR290aGljW10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHgzMEI0LCAweDMwQjcsIDB4
MzBDMywgMHgzMEFGfTsKLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5p
Y29kZU5hbWVNU0dvdGhpYywgc2l6ZW9mKHVuaWNvZGVOYW1lTVNHb3RoaWMpIC8gc2l6ZW9mKFVD
aGFyKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CisgICAgbV9jb252ZXJ0ZXJUeXBlcy5hZGQoQXRv
bWljU3RyaW5nKHVuaWNvZGVOYW1lTVNHb3RoaWMsIEFSUkFZX0xFTkdUSCh1bmljb2RlTmFtZU1T
R290aGljKSksIEJhY2tzbGFzaFRvWWVuU2lnbik7CiAKICAgICBtX2NvbnZlcnRlclR5cGVzLmFk
ZCgiTVMgTWluY2hvIiwgQmFja3NsYXNoVG9ZZW5TaWduKTsKICAgICBVQ2hhciB1bmljb2RlTmFt
ZU1TTWluY2hvW10gPSB7MHhGRjJELCAweEZGMzMsIDB4MDAyMCwgMHg2NjBFLCAweDY3MUR9Owot
ICAgIG1fY29udmVydGVyVHlwZXMuYWRkKEF0b21pY1N0cmluZyh1bmljb2RlTmFtZU1TTWluY2hv
LCBzaXplb2YodW5pY29kZU5hbWVNU01pbmNobykgLyBzaXplb2YoVUNoYXIpKSwgQmFja3NsYXNo
VG9ZZW5TaWduKTsKKyAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9taWNTdHJpbmcodW5pY29k
ZU5hbWVNU01pbmNobywgQVJSQVlfTEVOR1RIKHVuaWNvZGVOYW1lTVNNaW5jaG8pKSwgQmFja3Ns
YXNoVG9ZZW5TaWduKTsKIAogICAgIG1fY29udmVydGVyVHlwZXMuYWRkKCJNZWlyeW8iLCBCYWNr
c2xhc2hUb1llblNpZ24pOwogICAgIFVDaGFyIHVuaWNvZGVOYW1lTWVpcnlvW10gPSB7MHgzMEUx
LCAweDMwQTQsIDB4MzBFQSwgMHgzMEFBfTsKLSAgICBtX2NvbnZlcnRlclR5cGVzLmFkZChBdG9t
aWNTdHJpbmcodW5pY29kZU5hbWVNZWlyeW8sIHNpemVvZih1bmljb2RlTmFtZU1laXJ5bykgLyBz
aXplb2YoVUNoYXIpKSwgQmFja3NsYXNoVG9ZZW5TaWduKTsKKyAgICBtX2NvbnZlcnRlclR5cGVz
LmFkZChBdG9taWNTdHJpbmcodW5pY29kZU5hbWVNZWlyeW8sIEFSUkFZX0xFTkdUSCh1bmljb2Rl
TmFtZU1laXJ5bykpLCBCYWNrc2xhc2hUb1llblNpZ24pOwogfQogCiBGb250VHJhbnNjb2Rlcjo6
Q29udmVydGVyVHlwZSBGb250VHJhbnNjb2Rlcjo6Y29udmVydGVyVHlwZShjb25zdCBGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY29uc3QgVGV4dEVuY29kaW5nKiBlbmNvZGluZykg
Y29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0NsaXBib2FyZFV0aWxpdGll
c1dpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRVdGlsaXRpZXNXaW4uY3Bw
CmluZGV4IDE5ODg4YmYuLmJlM2QzMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0NsaXBib2FyZFV0aWxpdGllc1dpbi5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xp
cGJvYXJkVXRpbGl0aWVzV2luLmNwcApAQCAtODYsMTMgKzg2LDEzIEBAIHN0YXRpYyBib29sIGdl
dFdlYkxvY0RhdGEoSURhdGFPYmplY3QqIGRhdGFPYmplY3QsIFN0cmluZyYgdXJsLCBTdHJpbmcq
IHRpdGxlKQogICAgIGlmICghaGRyb3ApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
ICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIDAsIGZpbGVuYW1lLCBBUlJBWVNJWkUoZmlsZW5hbWUp
KSkKKyAgICBpZiAoIURyYWdRdWVyeUZpbGVXKGhkcm9wLCAwLCBmaWxlbmFtZSwgQVJSQVlfTEVO
R1RIKGZpbGVuYW1lKSkpCiAgICAgICAgIGdvdG8gZXhpdDsKIAogICAgIGlmIChfd2NzaWNtcChQ
YXRoRmluZEV4dGVuc2lvblcoZmlsZW5hbWUpLCBMIi51cmwiKSkKICAgICAgICAgZ290byBleGl0
OyAgICAKICAgICAKLSAgICBpZiAoIUdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMIkludGVybmV0
U2hvcnRjdXQiLCBMInVybCIsIDAsIHVybEJ1ZmZlciwgQVJSQVlTSVpFKHVybEJ1ZmZlciksIGZp
bGVuYW1lKSkKKyAgICBpZiAoIUdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMIkludGVybmV0U2hv
cnRjdXQiLCBMInVybCIsIDAsIHVybEJ1ZmZlciwgQVJSQVlfTEVOR1RIKHVybEJ1ZmZlciksIGZp
bGVuYW1lKSkKICAgICAgICAgZ290byBleGl0OwogICAgIAogICAgIGlmICh0aXRsZSkgewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0NsaXBib2FyZFdpbi5jcHAKaW5kZXggN2E1NDczNy4uMWVmNTUxZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4vQ2xpcGJvYXJkV2luLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9DbGlwYm9hcmRXaW4uY3BwCkBAIC0xNzEsMTIgKzE3MSwxMiBAQCBz
dGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxVUkxDb250ZW50KGNvbnN0IFN0cmluZyYgdXJsLCBp
bnQgZXN0aW1hdGVkRmlsZVNpemUpCiAgICAgY2hhciogZmlsZUNvbnRlbnRzOwogICAgIGNoYXIg
YW5zaVVybFtJTlRFUk5FVF9NQVhfVVJMX0xFTkdUSCArIDFdOwogICAgIC8vIFVzZWQgdG8gZ2Vu
ZXJhdGUgdGhlIGJ1ZmZlci4gVGhpcyBpcyBudWxsIHRlcm1pbmF0ZWQgd2hlcmVhcyB0aGUgZmls
ZUNvbnRlbnRzIHdvbid0IGJlLgotICAgIGNoYXIgY29udGVudEdlbmVyYXRpb25CdWZmZXJbSU5U
RVJORVRfTUFYX1VSTF9MRU5HVEggKyBBUlJBWVNJWkUoc3pTaGVsbERvdFVybFRlbXBsYXRlKSAr
IDFdOworICAgIGNoYXIgY29udGVudEdlbmVyYXRpb25CdWZmZXJbSU5URVJORVRfTUFYX1VSTF9M
RU5HVEggKyBBUlJBWV9MRU5HVEgoc3pTaGVsbERvdFVybFRlbXBsYXRlKSArIDFdOwogICAgIAot
ICAgIGlmIChlc3RpbWF0ZWRGaWxlU2l6ZSA+IDAgJiYgZXN0aW1hdGVkRmlsZVNpemUgPiBBUlJB
WVNJWkUoY29udGVudEdlbmVyYXRpb25CdWZmZXIpKQorICAgIGlmIChlc3RpbWF0ZWRGaWxlU2l6
ZSA+IDAgJiYgZXN0aW1hdGVkRmlsZVNpemUgPiBBUlJBWV9MRU5HVEgoY29udGVudEdlbmVyYXRp
b25CdWZmZXIpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGludCBhbnNpVXJsU2l6ZSA9IDo6
V2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIDAsIChMUENXU1RSKXVybC5jaGFyYWN0ZXJzKCks
IHVybC5sZW5ndGgoKSwgYW5zaVVybCwgQVJSQVlTSVpFKGFuc2lVcmwpIC0gMSwgMCwgMCk7Cisg
ICAgaW50IGFuc2lVcmxTaXplID0gOjpXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgMCwgKExQ
Q1dTVFIpdXJsLmNoYXJhY3RlcnMoKSwgdXJsLmxlbmd0aCgpLCBhbnNpVXJsLCBBUlJBWV9MRU5H
VEgoYW5zaVVybCkgLSAxLCAwLCAwKTsKICAgICBpZiAoIWFuc2lVcmxTaXplKQogICAgICAgICBy
ZXR1cm4gMDsKIApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2Jh
bFVSTENvbnRlbnQoY29uc3QgU3RyaW5nJiB1cmwsIGludCBlc3RpbWF0ZWRGaWxlU2l6ZSkKIAog
ICAgIGZpbGVDb250ZW50cyA9IChQU1RSKUdsb2JhbExvY2sobWVtT2JqKTsKIAotICAgIHNwcmlu
dGZfcyhjb250ZW50R2VuZXJhdGlvbkJ1ZmZlciwgQVJSQVlTSVpFKGNvbnRlbnRHZW5lcmF0aW9u
QnVmZmVyKSwgc3pTaGVsbERvdFVybFRlbXBsYXRlLCBhbnNpVXJsKTsKKyAgICBzcHJpbnRmX3Mo
Y29udGVudEdlbmVyYXRpb25CdWZmZXIsIEFSUkFZX0xFTkdUSChjb250ZW50R2VuZXJhdGlvbkJ1
ZmZlciksIHN6U2hlbGxEb3RVcmxUZW1wbGF0ZSwgYW5zaVVybCk7CiAgICAgQ29weU1lbW9yeShm
aWxlQ29udGVudHMsIGNvbnRlbnRHZW5lcmF0aW9uQnVmZmVyLCBmaWxlU2l6ZSk7CiAgICAgCiAg
ICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CkBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSERyb3BDb250ZW50KGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBmaWxl
TmFtZSwgU2hhcmUKICAgICB9IGVsc2UgewogICAgICAgICBXQ0hBUiB0ZW1wUGF0aFtNQVhfUEFU
SF07CiAgICAgICAgIFdDSEFSIGV4dGVuc2lvbltNQVhfUEFUSF07Ci0gICAgICAgIGlmICghOjpH
ZXRUZW1wUGF0aChBUlJBWVNJWkUodGVtcFBhdGgpLCB0ZW1wUGF0aCkpCisgICAgICAgIGlmICgh
OjpHZXRUZW1wUGF0aChBUlJBWV9MRU5HVEgodGVtcFBhdGgpLCB0ZW1wUGF0aCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKCE6OlBhdGhBcHBlbmQodGVtcFBhdGgsIGZpbGVO
YW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJu
IDA7CkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsVXJsRmls
ZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgaW50IG1heFNpemUgPSBtaW4oZnNQYXRoLmxlbmd0aCgp
LCBBUlJBWVNJWkUoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7CisgICAgaW50IG1heFNpemUgPSBt
aW4oZnNQYXRoLmxlbmd0aCgpLCBBUlJBWV9MRU5HVEgoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7
CiAgICAgQ29weU1lbW9yeShmZ2QtPmZnZFswXS5jRmlsZU5hbWUsIChMUENXU1RSKWZzUGF0aC5j
aGFyYWN0ZXJzKCksIG1heFNpemUgKiBzaXplb2YoVUNoYXIpKTsKICAgICBHbG9iYWxVbmxvY2so
bWVtT2JqKTsKICAgICAKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGludCBtYXhTaXplID0gbWluKGZzUGF0
aC5sZW5ndGgoKSwgQVJSQVlTSVpFKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOworICAgIGludCBt
YXhTaXplID0gbWluKGZzUGF0aC5sZW5ndGgoKSwgQVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNG
aWxlTmFtZSkpOwogICAgIENvcHlNZW1vcnkoZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lLCAoTFBDV1NU
Uilmc1BhdGguY2hhcmFjdGVycygpLCBtYXhTaXplICogc2l6ZW9mKFVDaGFyKSk7CiAgICAgR2xv
YmFsVW5sb2NrKG1lbU9iaik7CiAgICAgCkBAIC02MDcsNyArNjA3LDcgQEAgUGFzc1JlZlB0cjxG
aWxlTGlzdD4gQ2xpcGJvYXJkV2luOjpmaWxlcygpIGNvbnN0CiAgICAgV0NIQVIgZmlsZW5hbWVb
TUFYX1BBVEhdOwogICAgIFVJTlQgZmlsZUNvdW50ID0gRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIDB4
RkZGRkZGRkYsIDAsIDApOwogICAgIGZvciAoVUlOVCBpID0gMDsgaSA8IGZpbGVDb3VudDsgaSsr
KSB7Ci0gICAgICAgIGlmICghRHJhZ1F1ZXJ5RmlsZVcoaGRyb3AsIGksIGZpbGVuYW1lLCBBUlJB
WVNJWkUoZmlsZW5hbWUpKSkKKyAgICAgICAgaWYgKCFEcmFnUXVlcnlGaWxlVyhoZHJvcCwgaSwg
ZmlsZW5hbWUsIEFSUkFZX0xFTkdUSChmaWxlbmFtZSkpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGZpbGVzLT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8VUNo
YXIqPihmaWxlbmFtZSkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAK
aW5kZXggMDVmOTEwMy4uMTdlNmU4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
RHJhZ0RhdGFXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNw
cApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIERyYWdEYXRhOjphc0ZpbGVuYW1lcyhWZWN0b3I8U3Ry
aW5nPiYgcmVzdWx0KSBjb25zdAogCiAgICAgY29uc3QgdW5zaWduZWQgbnVtRmlsZXMgPSBEcmFn
UXVlcnlGaWxlVyhoZHJvcCwgMHhGRkZGRkZGRiwgMCwgMCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bUZpbGVzOyBpKyspIHsKLSAgICAgICAgaWYgKCFEcmFnUXVlcnlGaWxlVyho
ZHJvcCwgMCwgZmlsZW5hbWUsIEFSUkFZU0laRShmaWxlbmFtZSkpKQorICAgICAgICBpZiAoIURy
YWdRdWVyeUZpbGVXKGhkcm9wLCAwLCBmaWxlbmFtZSwgQVJSQVlfTEVOR1RIKGZpbGVuYW1lKSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgoVUNoYXIqKWZp
bGVuYW1lKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4
IDRiN2E2OTIuLjBjOTYxOTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVT
eXN0ZW1XaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3Bw
CkBAIC0xOTIsOCArMTkyLDggQEAgQ1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBjaGFy
KiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5E
TEVfVkFMVUU7CiAKICAgICBjaGFyIHRlbXBQYXRoW01BWF9QQVRIXTsKLSAgICBpbnQgdGVtcFBh
dGhMZW5ndGggPSA6OkdldFRlbXBQYXRoQShfY291bnRvZih0ZW1wUGF0aCksIHRlbXBQYXRoKTsK
LSAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0ZW1wUGF0aExlbmd0aCA+IF9jb3VudG9m
KHRlbXBQYXRoKSkKKyAgICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoQShBUlJB
WV9MRU5HVEgodGVtcFBhdGgpLCB0ZW1wUGF0aCk7CisgICAgaWYgKHRlbXBQYXRoTGVuZ3RoIDw9
IDAgfHwgdGVtcFBhdGhMZW5ndGggPiBBUlJBWV9MRU5HVEgodGVtcFBhdGgpKQogICAgICAgICBy
ZXR1cm4gQ1N0cmluZygpOwogCiAgICAgSENSWVBUUFJPViBoQ3J5cHRQcm92ID0gMDsKQEAgLTI3
NCw3ICsyNzQsNyBAQCBib29sIHNhZmVDcmVhdGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgQ0ZE
YXRhUmVmIGRhdGEpCiB7CiAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCiAgICAgV0NI
QVIgdGVtcERpclBhdGhbTUFYX1BBVEhdOwotICAgIGlmICghR2V0VGVtcFBhdGhXKEFSUkFZU0la
RSh0ZW1wRGlyUGF0aCksIHRlbXBEaXJQYXRoKSkKKyAgICBpZiAoIUdldFRlbXBQYXRoVyhBUlJB
WV9MRU5HVEgodGVtcERpclBhdGgpLCB0ZW1wRGlyUGF0aCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFdDSEFSIHRlbXBQYXRoW01BWF9QQVRIXTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luY2UvRmlsZVN5c3RlbVdpbkNFLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvRmlsZVN5c3RlbVdpbkNFLmNwcAppbmRleCAyYTI3MDg5Li5kZGFhOTFkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0ZpbGVTeXN0ZW1XaW5DRS5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS93aW5jZS9GaWxlU3lzdGVtV2luQ0UuY3BwCkBAIC0xNzQsOCArMTc0LDggQEAg
Q1N0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBjaGFyKiwgUGxhdGZvcm1GaWxlSGFuZGxl
JiBoYW5kbGUpCiAgICAgaGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CiAKICAgICB3Y2hh
cl90IHRlbXBQYXRoW01BWF9QQVRIXTsKLSAgICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRl
bXBQYXRoKF9jb3VudG9mKHRlbXBQYXRoKSwgdGVtcFBhdGgpOwotICAgIGlmICh0ZW1wUGF0aExl
bmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3RoID4gX2NvdW50b2YodGVtcFBhdGgpKQorICAgIGlu
dCB0ZW1wUGF0aExlbmd0aCA9IDo6R2V0VGVtcFBhdGgoQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSwg
dGVtcFBhdGgpOworICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8IHRlbXBQYXRoTGVuZ3Ro
ID4gQVJSQVlfTEVOR1RIKHRlbXBQYXRoKSkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKIAog
ICAgIEhDUllQVFBST1YgaENyeXB0UHJvdiA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdp
bnMvd2luL1BsdWdpbkRhdGFiYXNlV2luLmNwcCBiL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2lu
RGF0YWJhc2VXaW4uY3BwCmluZGV4IDZjYmNkYzguLmZkYjFlMDQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGx1Z2lucy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGx1Z2lu
cy93aW4vUGx1Z2luRGF0YWJhc2VXaW4uY3BwCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUg
PHdpbmRvd3MuaD4KICNpbmNsdWRlIDxzaGx3YXBpLmg+CiAKLSNpZiBDT01QSUxFUihNSU5HVykK
LSNkZWZpbmUgX2NvdW50b2YoeCkgKHNpemVvZih4KS9zaXplb2YoeFswXSkpCi0jZW5kaWYKLQog
I2lmIE9TKFdJTkNFKQogLy8gV0lOQ0UgZG9lc24ndCBzdXBwb3J0IFJlZ2lzdHJ5IEtleSBBY2Nl
c3MgUmlnaHRzLiBUaGUgcGFyYW1ldGVyIHNob3VsZCBhbHdheXMgYmUgMAogI2lmbmRlZiBLRVlf
RU5VTUVSQVRFX1NVQl9LRVlTCkBAIC05Niw3ICs5Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeShIS0VZIHJvb3RLZXksIEhhc2hTZXQ8U3RyaW5nPiYg
cGF0CiAKICAgICAvLyBFbnVtZXJhdGUgc3Via2V5cwogICAgIGZvciAoaW50IGkgPSAwOzsgaSsr
KSB7Ci0gICAgICAgIERXT1JEIG5hbWVMZW4gPSBfY291bnRvZihuYW1lKTsKKyAgICAgICAgRFdP
UkQgbmFtZUxlbiA9IEFSUkFZX0xFTkdUSChuYW1lKTsKICAgICAgICAgcmVzdWx0ID0gUmVnRW51
bUtleUV4VyhrZXksIGksIG5hbWUsICZuYW1lTGVuLCAwLCAwLCAwLCAmbGFzdE1vZGlmaWVkKTsK
IAogICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1MpCkBAIC0yNTcsOSArMjUzLDkg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9y
eShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3IKICNpZiAhT1MoV0lOQ0UpCiAgICAgLy8gVGhlIG5l
dyBXTVAgRmlyZWZveCBwbHVnaW4gaXMgaW5zdGFsbGVkIGluIFxQRmlsZXNcUGx1Z2lucyBpZiBp
dCBjYW4ndCBmaW5kIGFueSBGaXJlZm94IGluc3RhbGxzCiAgICAgV0NIQVIgcGx1Z2luRGlyZWN0
b3J5U3RyW19NQVhfUEFUSCArIDFdOwotICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6
OkV4cGFuZEVudmlyb25tZW50U3RyaW5nc1coVEVYVCgiJVNZU1RFTURSSVZFJVxcUEZpbGVzXFxQ
bHVnaW5zIiksIHBsdWdpbkRpcmVjdG9yeVN0ciwgX2NvdW50b2YocGx1Z2luRGlyZWN0b3J5U3Ry
KSk7CisgICAgRFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6ZSA9IDo6RXhwYW5kRW52aXJvbm1lbnRT
dHJpbmdzVyhURVhUKCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiKSwgcGx1Z2luRGly
ZWN0b3J5U3RyLCBBUlJBWV9MRU5HVEgocGx1Z2luRGlyZWN0b3J5U3RyKSk7CiAKLSAgICBpZiAo
cGx1Z2luRGlyZWN0b3J5U2l6ZSA+IDAgJiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBfY291bnRv
ZihwbHVnaW5EaXJlY3RvcnlTdHIpKQorICAgIGlmIChwbHVnaW5EaXJlY3RvcnlTaXplID4gMCAm
JiBwbHVnaW5EaXJlY3RvcnlTaXplIDw9IEFSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIp
KQogICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBsdWdpbkRpcmVjdG9yeVN0ciwg
cGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKICNlbmRpZgogCkBAIC00MTAsNyArNDA2LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGFkZE1hY3JvbWVkaWFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8
U3RyaW5nPiYgZGlyZWN0b3JpZXMpCiAjaWYgIU9TKFdJTkNFKQogICAgIFdDSEFSIHN5c3RlbURp
cmVjdG9yeVN0cltNQVhfUEFUSF07CiAKLSAgICBpZiAoR2V0U3lzdGVtRGlyZWN0b3J5KHN5c3Rl
bURpcmVjdG9yeVN0ciwgX2NvdW50b2Yoc3lzdGVtRGlyZWN0b3J5U3RyKSkgPT0gMCkKKyAgICBp
ZiAoIUdldFN5c3RlbURpcmVjdG9yeShzeXN0ZW1EaXJlY3RvcnlTdHIsIEFSUkFZX0xFTkdUSChz
eXN0ZW1EaXJlY3RvcnlTdHIpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgV0NIQVIgbWFjcm9t
ZWRpYURpcmVjdG9yeVN0cltNQVhfUEFUSF07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5jcHAKaW5kZXggNDg1NWJhYi4uZDIyMjFmYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcApAQCAtNDc5LDExICs0NzksMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IGZvbnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hhcldpZHRoW10gPSB7CiBib29sIFJlbmRlclRleHRD
b250cm9sOjpoYXNWYWxpZEF2Z0NoYXJXaWR0aChBdG9taWNTdHJpbmcgZmFtaWx5KQogewogICAg
IHN0YXRpYyBIYXNoU2V0PEF0b21pY1N0cmluZz4qIGZvbnRGYW1pbGllc1dpdGhJbnZhbGlkQ2hh
cldpZHRoTWFwID0gMDsKLSAgICAKKwogICAgIGlmICghZm9udEZhbWlsaWVzV2l0aEludmFsaWRD
aGFyV2lkdGhNYXApIHsKICAgICAgICAgZm9udEZhbWlsaWVzV2l0aEludmFsaWRDaGFyV2lkdGhN
YXAgPSBuZXcgSGFzaFNldDxBdG9taWNTdHJpbmc+OwotICAgICAgICAKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihmb250RmFtaWxpZXNXaXRoSW52YWxpZENoYXJXaWR0
aCkgLyBzaXplb2YoZm9udEZhbWlsaWVzV2l0aEludmFsaWRDaGFyV2lkdGhbMF0pOyBpKyspCisK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgoZm9udEZhbWlsaWVz
V2l0aEludmFsaWRDaGFyV2lkdGgpOyBpKyspCiAgICAgICAgICAgICBmb250RmFtaWxpZXNXaXRo
SW52YWxpZENoYXJXaWR0aE1hcC0+YWRkKEF0b21pY1N0cmluZyhmb250RmFtaWxpZXNXaXRoSW52
YWxpZENoYXJXaWR0aFtpXSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvYnJlYWtfbGluZXMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCmlu
ZGV4IGM2YzFkZGQuLjZjZGI2MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL2JyZWFr
X2xpbmVzLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9icmVha19saW5lcy5jcHAKQEAgLTEx
NCw4ICsxMTQsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaUxpbmVCcmVha1Rh
YmxlW11bKGFzY2lpTGluZUJyZWFrVGFibGVMYXN0Q2hhciAtCiAjdW5kZWYgREkKICN1bmRlZiBB
TAogCi1DT01QSUxFX0FTU0VSVChzaXplb2YoYXNjaWlMaW5lQnJlYWtUYWJsZSkgLyBzaXplb2Yo
YXNjaWlMaW5lQnJlYWtUYWJsZVswXSkgPT0gYXNjaWlMaW5lQnJlYWtUYWJsZUxhc3RDaGFyIC0g
YXNjaWlMaW5lQnJlYWtUYWJsZUZpcnN0Q2hhciArIDEsCi0gICAgICAgIFRlc3RMaW5lQnJlYWtU
YWJsZUNvbnNpc3RlbmN5KTsKK0NPTVBJTEVfQVNTRVJUKEFSUkFZX0xFTkdUSChhc2NpaUxpbmVC
cmVha1RhYmxlKSA9PSBhc2NpaUxpbmVCcmVha1RhYmxlTGFzdENoYXIgLSBhc2NpaUxpbmVCcmVh
a1RhYmxlRmlyc3RDaGFyICsgMSwgVGVzdExpbmVCcmVha1RhYmxlQ29uc2lzdGVuY3kpOwogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQnJlYWtBZnRlcihVQ2hhciBjaCwgVUNoYXIgbmV4dENo
KQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5j
cHAgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCBjMTgy
OTRkLi5hZjE4YTg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNw
cApAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZVRhYmxlcyhTUUxpdGVEYXRh
YmFzZSogc3FsaXRlRGF0YWJhc2UpCiAgICAgICAgICJDUkVBVEUgSU5ERVggSUYgTk9UIEVYSVNU
UyBJbmRleERhdGFfaW5kZXhJZCBPTiBJbmRleERhdGEoaW5kZXhJZCkiCiAgICAgICAgIH07CiAK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFycmF5c2l6ZShjb21tYW5kcyk7ICsraSkgewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKGNvbW1hbmRzKTsgKytpKSB7
CiAgICAgICAgIGlmICghc3FsaXRlRGF0YWJhc2UtPmV4ZWN1dGVDb21tYW5kKGNvbW1hbmRzW2ld
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gcmVjb3ZlciBmcm9t
IHRoaXMgc2l0dWF0aW9uLiBNYXliZSBudWtlIHRoZSBkYXRhYmFzZSBhbmQgc3RhcnQgb3Zlcj8K
ICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1h
bmQgZm9yIEluZGV4ZWREQjogJXMiLCBjb21tYW5kc1tpXSk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1hYmxlLmNwcCBiL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUu
Y3BwCmluZGV4IGEyNWUwODYuLjk5ZmU3ZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybWFibGUuY3BwCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCkBA
IC0xNDUsMTkgKzE0NSwxOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgcGFyc2VBbmRTa2lwVHlwZShj
b25zdCBVQ2hhciomIGN1cnJUcmFuc2Zvcm0sIGNvbnN0IFVDaGFyKiBlbgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCpjdXJyVHJhbnNmb3JtID09ICdzJykgewotICAgICAg
ICBpZiAoc2tpcFN0cmluZyhjdXJyVHJhbnNmb3JtLCBlbmQsIHNrZXdYRGVzYywgc2l6ZW9mKHNr
ZXdYRGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgaWYgKHNraXBTdHJpbmcoY3VyclRy
YW5zZm9ybSwgZW5kLCBza2V3WERlc2MsIEFSUkFZX0xFTkdUSChza2V3WERlc2MpKSkKICAgICAg
ICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0tFV1g7Ci0gICAgICAg
IGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBza2V3WURlc2MsIHNpemVv
Zihza2V3WURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgIGVsc2UgaWYgKHNraXBTdHJp
bmcoY3VyclRyYW5zZm9ybSwgZW5kLCBza2V3WURlc2MsIEFSUkFZX0xFTkdUSChza2V3WURlc2Mp
KSkKICAgICAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fU0tFV1k7
Ci0gICAgICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBzY2FsZURl
c2MsIHNpemVvZihzY2FsZURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgIGVsc2UgaWYg
KHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCBzY2FsZURlc2MsIEFSUkFZX0xFTkdUSChz
Y2FsZURlc2MpKSkKICAgICAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZP
Uk1fU0NBTEU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
IGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCB0cmFuc2xhdGVEZXNjLCBz
aXplb2YodHJhbnNsYXRlRGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICB9IGVsc2UgaWYgKHNr
aXBTdHJpbmcoY3VyclRyYW5zZm9ybSwgZW5kLCB0cmFuc2xhdGVEZXNjLCBBUlJBWV9MRU5HVEgo
dHJhbnNsYXRlRGVzYykpKQogICAgICAgICB0eXBlID0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNG
T1JNX1RSQU5TTEFURTsKLSAgICBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVu
ZCwgcm90YXRlRGVzYywgc2l6ZW9mKHJvdGF0ZURlc2MpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAg
ZWxzZSBpZiAoc2tpcFN0cmluZyhjdXJyVHJhbnNmb3JtLCBlbmQsIHJvdGF0ZURlc2MsIEFSUkFZ
X0xFTkdUSChyb3RhdGVEZXNjKSkpCiAgICAgICAgIHR5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19U
UkFOU0ZPUk1fUk9UQVRFOwotICAgIGVsc2UgaWYgKHNraXBTdHJpbmcoY3VyclRyYW5zZm9ybSwg
ZW5kLCBtYXRyaXhEZXNjLCBzaXplb2YobWF0cml4RGVzYykgLyBzaXplb2YoVUNoYXIpKSkKKyAg
ICBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJUcmFuc2Zvcm0sIGVuZCwgbWF0cml4RGVzYywgQVJS
QVlfTEVOR1RIKG1hdHJpeERlc2MpKSkKICAgICAgICAgdHlwZSA9IFNWR1RyYW5zZm9ybTo6U1ZH
X1RSQU5TRk9STV9NQVRSSVg7CiAgICAgZWxzZSAKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwIGIvV2ViQ29yZS9zdmcvU1ZHVmll
d1NwZWMuY3BwCmluZGV4IDIwYzU4YWMuLjdmMmE3MmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdTcGVjLmNwcAorKysgYi9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKQEAgLTgy
LDcgKzgyLDcgQEAgYm9vbCBTVkdWaWV3U3BlYzo6cGFyc2VWaWV3U3BlYyhjb25zdCBTdHJpbmcm
IHZpZXdTcGVjKQogICAgIGlmIChjdXJyVmlld1NwZWMgPj0gZW5kKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoIXNraXBTdHJpbmcoY3VyclZpZXdTcGVjLCBlbmQsIHN2Z1ZpZXdT
cGVjLCBzaXplb2Yoc3ZnVmlld1NwZWMpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgaWYgKCFza2lw
U3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCBzdmdWaWV3U3BlYywgQVJSQVlfTEVOR1RIKHN2Z1Zp
ZXdTcGVjKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjdXJyVmlld1NwZWMg
Pj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnICkKQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBT
VkdWaWV3U3BlYzo6cGFyc2VWaWV3U3BlYyhjb25zdCBTdHJpbmcmIHZpZXdTcGVjKQogCiAgICAg
d2hpbGUgKGN1cnJWaWV3U3BlYyA8IGVuZCAmJiAqY3VyclZpZXdTcGVjICE9ICcpJykgewogICAg
ICAgICBpZiAoKmN1cnJWaWV3U3BlYyA9PSAndicpIHsKLSAgICAgICAgICAgIGlmIChza2lwU3Ry
aW5nKGN1cnJWaWV3U3BlYywgZW5kLCB2aWV3Qm94U3BlYywgc2l6ZW9mKHZpZXdCb3hTcGVjKSAv
IHNpemVvZihVQ2hhcikpKSB7CisgICAgICAgICAgICBpZiAoc2tpcFN0cmluZyhjdXJyVmlld1Nw
ZWMsIGVuZCwgdmlld0JveFNwZWMsIEFSUkFZX0xFTkdUSCh2aWV3Qm94U3BlYykpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAn
KCcpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBj
dXJyVmlld1NwZWMrKzsKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIFNWR1ZpZXdTcGVjOjpwYXJz
ZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAgICAgICAgICAgICAgICAgaWYgKGN1
cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKScpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICBjdXJyVmlld1NwZWMrKzsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgdmlld1Rh
cmdldFNwZWMsIHNpemVvZih2aWV3VGFyZ2V0U3BlYykgLyBzaXplb2YoVUNoYXIpKSkgeworICAg
ICAgICAgICAgfSBlbHNlIGlmIChza2lwU3RyaW5nKGN1cnJWaWV3U3BlYywgZW5kLCB2aWV3VGFy
Z2V0U3BlYywgQVJSQVlfTEVOR1RIKHZpZXdUYXJnZXRTcGVjKSkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY3VyclZpZXdTcGVjID49IGVuZCB8fCAqY3VyclZpZXdTcGVjICE9ICcoJykKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
KiB2aWV3VGFyZ2V0U3RhcnQgPSArK2N1cnJWaWV3U3BlYzsKQEAgLTExNSw3ICsxMTUsNyBAQCBi
b29sIFNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0gZWxzZSBpZiAoKmN1cnJWaWV3U3BlYyA9PSAneicpIHsKLSAgICAgICAgICAgIGlmICghc2tp
cFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgem9vbUFuZFBhblNwZWMsIHNpemVvZih6b29tQW5k
UGFuU3BlYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgICAgIGlmICghc2tpcFN0cmluZyhj
dXJyVmlld1NwZWMsIGVuZCwgem9vbUFuZFBhblNwZWMsIEFSUkFZX0xFTkdUSCh6b29tQW5kUGFu
U3BlYykpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmIChj
dXJyVmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBib29sIFNWR1ZpZXdTcGVjOjpw
YXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmlld1NwZWMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgY3VyclZpZXdTcGVjKys7CiAgICAgICAgIH0gZWxzZSBp
ZiAoKmN1cnJWaWV3U3BlYyA9PSAncCcpIHsKLSAgICAgICAgICAgIGlmICghc2tpcFN0cmluZyhj
dXJyVmlld1NwZWMsIGVuZCwgcHJlc2VydmVBc3BlY3RSYXRpb1NwZWMsIHNpemVvZihwcmVzZXJ2
ZUFzcGVjdFJhdGlvU3BlYykgLyBzaXplb2YoVUNoYXIpKSkKKyAgICAgICAgICAgIGlmICghc2tp
cFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgcHJlc2VydmVBc3BlY3RSYXRpb1NwZWMsIEFSUkFZ
X0xFTkdUSChwcmVzZXJ2ZUFzcGVjdFJhdGlvU3BlYykpKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIGlmIChjdXJyVmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmll
d1NwZWMgIT0gJygnKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzOSw3ICsx
MzksNyBAQCBib29sIFNWR1ZpZXdTcGVjOjpwYXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYgdmll
d1NwZWMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY3VyclZp
ZXdTcGVjKys7CiAgICAgICAgIH0gZWxzZSBpZiAoKmN1cnJWaWV3U3BlYyA9PSAndCcpIHsKLSAg
ICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyVmlld1NwZWMsIGVuZCwgdHJhbnNmb3JtU3Bl
Yywgc2l6ZW9mKHRyYW5zZm9ybVNwZWMpIC8gc2l6ZW9mKFVDaGFyKSkpCisgICAgICAgICAgICBp
ZiAoIXNraXBTdHJpbmcoY3VyclZpZXdTcGVjLCBlbmQsIHRyYW5zZm9ybVNwZWMsIEFSUkFZX0xF
TkdUSCh0cmFuc2Zvcm1TcGVjKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgKmN1cnJWaWV3U3BlYyAhPSAnKCcp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcv
U1ZHWm9vbUFuZFBhbi5jcHAgYi9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAppbmRleCA5
M2FiM2FkLi5mODVlN2IwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNw
cAorKysgYi9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcApAQCAtNTYsOSArNTYsOSBAQCBz
dGF0aWMgY29uc3QgVUNoYXIgbWFnbmlmeVtdID0gIHsnbScsICdhJywgJ2cnLCAnbicsICdpJywg
J2YnLCAneSd9OwogCiBib29sIFNWR1pvb21BbmRQYW46OnBhcnNlWm9vbUFuZFBhbihjb25zdCBV
Q2hhciomIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kKQogewotICAgIGlmIChza2lwU3RyaW5nKHN0
YXJ0LCBlbmQsIGRpc2FibGUsIHNpemVvZihkaXNhYmxlKSAvIHNpemVvZihVQ2hhcikpKQorICAg
IGlmIChza2lwU3RyaW5nKHN0YXJ0LCBlbmQsIGRpc2FibGUsIEFSUkFZX0xFTkdUSChkaXNhYmxl
KSkpCiAgICAgICAgIHNldFpvb21BbmRQYW4oU1ZHX1pPT01BTkRQQU5fRElTQUJMRSk7Ci0gICAg
ZWxzZSBpZiAoc2tpcFN0cmluZyhzdGFydCwgZW5kLCBtYWduaWZ5LCBzaXplb2YobWFnbmlmeSkg
LyBzaXplb2YoVUNoYXIpKSkKKyAgICBlbHNlIGlmIChza2lwU3RyaW5nKHN0YXJ0LCBlbmQsIG1h
Z25pZnksIEFSUkFZX0xFTkdUSChtYWduaWZ5KSkpCiAgICAgICAgIHNldFpvb21BbmRQYW4oU1ZH
X1pPT01BTkRQQU5fTUFHTklGWSk7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9XZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggOGI0ZTcyMC4uOWQ1MGE0MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rp
b25zLmNwcApAQCAtNzA4LDEwICs3MDgsOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVGdW5jdGlvbk1h
cCgpCiAgICAgICAgIHsgInRyYW5zbGF0ZSIsIHsgJmNyZWF0ZUZ1blRyYW5zbGF0ZSwgMyB9IH0s
CiAgICAgICAgIHsgInRydWUiLCB7ICZjcmVhdGVGdW5UcnVlLCAwIH0gfSwKICAgICB9OwotICAg
IGNvbnN0IHVuc2lnbmVkIGludCBudW1GdW5jdGlvbnMgPSBzaXplb2YoZnVuY3Rpb25zKSAvIHNp
emVvZihmdW5jdGlvbnNbMF0pOwogCiAgICAgZnVuY3Rpb25NYXAgPSBuZXcgSGFzaE1hcDxTdHJp
bmcsIEZ1bmN0aW9uUmVjPjsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtRnVuY3Rp
b25zOyArK2kpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgoZnVuY3Rp
b25zKTsgKytpKQogICAgICAgICBmdW5jdGlvbk1hcC0+c2V0KGZ1bmN0aW9uc1tpXS5uYW1lLCBm
dW5jdGlvbnNbaV0uZnVuY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YUGF0
aFBhcnNlci5jcHAgYi9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKaW5kZXggYzI0MmE1Yy4u
YTViMWNjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1dl
YkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBz
ZXRVcEF4aXNOYW1lc01hcChBeGlzTmFtZXNNYXAmIGF4aXNOYW1lcykKICAgICAgICAgeyAicHJl
Y2VkaW5nLXNpYmxpbmciLCBTdGVwOjpQcmVjZWRpbmdTaWJsaW5nQXhpcyB9LAogICAgICAgICB7
ICJzZWxmIiwgU3RlcDo6U2VsZkF4aXMgfQogICAgIH07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNpemVvZihheGlzTmFtZUxpc3QpIC8gc2l6ZW9mKGF4aXNOYW1lTGlzdFswXSk7ICsr
aSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX0xFTkdUSChheGlzTmFtZUxpc3Qp
OyArK2kpCiAgICAgICAgIGF4aXNOYW1lcy5zZXQoYXhpc05hbWVMaXN0W2ldLm5hbWUsIGF4aXNO
YW1lTGlzdFtpXS5heGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjBmY2Q1Ni4uM2IwMmY3MyAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3Rl
cmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEFSUkFZX0xFTkdUSCBtYWNybyB0byBXVEYKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODI4CisKKyAgICAgICAg
VW5pZnkgdGhlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzYWdlcy4KKworICAgICAg
ICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xp
ZW50SW1wbDo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAgICAqIHNyYy9ndGsvV2ViSW5wdXRF
dmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpnZGtFdmVudFRvV2luZG93c0tleUNv
ZGUpOgorICAgICAgICAqIHRlc3RzL0tVUkxUZXN0LmNwcDoKKyAgICAgICAgKENvbXBvbmVudENh
c2U6OlRFU1QpOgorCiAyMDEwLTEwLTIyICBKYXkgQ2l2ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDExOTc3YjYuLmI0OGYxMmUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAtNTE2LDEyICs1MTYsMTIgQEAg
Y29uc3QgY2hhciogRWRpdG9yQ2xpZW50SW1wbDo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5
Ym9hcmRFdmVudCogZXZ0KQogICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1h
cDxpbnQsIGNvbnN0IGNoYXIqPjsKICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcCA9IG5ldyBI
YXNoTWFwPGludCwgY29uc3QgY2hhcio+OwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBhcnJheXNpemUoa2V5RG93bkVudHJpZXMpOyBpKyspIHsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IEFSUkFZX0xFTkdUSChrZXlEb3duRW50cmllcyk7IGkrKykgewogICAg
ICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZp
ZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOwogICAgICAgICB9
CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFycmF5c2l6ZShrZXlQcmVzc0Vu
dHJpZXMpOyBpKyspIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZX0xF
TkdUSChrZXlQcmVzc0VudHJpZXMpOyBpKyspIHsKICAgICAgICAgICAgIGtleVByZXNzQ29tbWFu
ZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NF
bnRyaWVzW2ldLmNoYXJDb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGtleVByZXNzRW50cmllc1tpXS5uYW1lKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9ndGsvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwCmluZGV4IDcxZDFiMzkuLmZmODhi
ZDAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvZ3RrL1dlYklucHV0RXZlbnRGYWN0
b3J5LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2d0ay9XZWJJbnB1dEV2ZW50RmFjdG9y
eS5jcHAKQEAgLTIzMyw4ICsyMzMsNyBAQCBzdGF0aWMgaW50IGdka0V2ZW50VG9XaW5kb3dzS2V5
Q29kZShjb25zdCBHZGtFdmVudEtleSogZXZlbnQpCiAgICAgaWYgKHdpbmRvd3NLZXlDb2RlKQog
ICAgICAgICByZXR1cm4gd2luZG93c0tleUNvZGU7CiAKLSAgICBjb25zdCBpbnQgdGFibGVTaXpl
ID0gc2l6ZW9mKGhhcmR3YXJlQ29kZVRvR0RLS2V5dmFsKSAvIHNpemVvZihoYXJkd2FyZUNvZGVU
b0dES0tleXZhbFswXSk7Ci0gICAgaWYgKGV2ZW50LT5oYXJkd2FyZV9rZXljb2RlIDwgdGFibGVT
aXplKSB7CisgICAgaWYgKGV2ZW50LT5oYXJkd2FyZV9rZXljb2RlIDwgQVJSQVlfTEVOR1RIKGhh
cmR3YXJlQ29kZVRvR0RLS2V5dmFsKSkgewogICAgICAgICBpbnQga2V5dmFsID0gaGFyZHdhcmVD
b2RlVG9HREtLZXl2YWxbZXZlbnQtPmhhcmR3YXJlX2tleWNvZGVdOwogICAgICAgICBpZiAoa2V5
dmFsKQogICAgICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yS2V5RXZl
bnQoa2V5dmFsKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LVVJMVGVzdC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvS1VSTFRlc3QuY3BwCmluZGV4IDE1MmRkMzEuLmM2
NTVmNjQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9LVVJMVGVzdC5jcHAKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0tVUkxUZXN0LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBA
IFRFU1QoS1VSTFRlc3QsIERpZmZlcmVudEdldHRlcnMpCiAgICAgICAgIHsiaHR0cDovL3d3dy5n
b29nbGUuY29tL2Zvby9ibGFoP2Jhcj1iYXojXHhjZVx4YjFceGNlXHhiMiIsICJodHRwIiwgInd3
dy5nb29nbGUuY29tIiwgMCwgIiIsIDAsICIvZm9vL2JsYWgvIiwgImJsYWgiLCAiYmFyPWJheiIs
ICJceGNlXHhiMVx4Y2VceGIyIn0sCiAgICAgfTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYXJyYXlzaXplKGNhc2VzKTsgaSsrKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBB
UlJBWV9MRU5HVEgoY2FzZXMpOyBpKyspIHsKICAgICAgICAgV2ViQ29yZTo6S1VSTCBrdXJsKFdl
YkNvcmU6OlBhcnNlZFVSTFN0cmluZywgY2FzZXNbaV0udXJsKTsKIAogICAgICAgICBFWFBFQ1Rf
RVEoY2FzZXNbaV0ucHJvdG9jb2wsIGt1cmwucHJvdG9jb2woKSk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvZWZsL0NoYW5nZUxvZyBiL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDQ2YTgwZGYuLmEz
ZDg5YjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIEFSUkFZX0xFTkdUSCBtYWNybyB0byBXVEYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODI4CisKKyAgICAgICAgVW5p
ZnkgdGhlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzYWdlcy4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRFZmw6OmludGVycHJldEtleUV2ZW50KToKKwogMjAxMC0xMC0yMiAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJs
c3Nvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
RWZsLmNwcCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcApp
bmRleCBhNjNiNzEyLi42ZjgyMWM4IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5jcHAKKysrIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRFZmwuY3BwCkBAIC0yOTIsOCArMjkyLDYgQEAgc3RhdGljIGNvbnN0IEtleVBy
ZXNzRW50cnkga2V5UHJlc3NFbnRyaWVzW10gPSB7CiAgICAgeyAnXHInLCAgIEFsdEtleSB8IFNo
aWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
CiB9OwogCi0jZGVmaW5lIEFSUkFZU0laRShhcnJheSkgKHNpemVvZihhcnJheSkgLyBzaXplb2Yo
KGFycmF5KVswXSkpCi0KIGNvbnN0IGNoYXIqIEVkaXRvckNsaWVudEVmbDo6aW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgQVNTRVJUKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KTsKQEAgLTMwNSwxMCArMzAzLDEwIEBAIGNvbnN0IGNo
YXIqIEVkaXRvckNsaWVudEVmbDo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwg
Y29uc3QgY2hhcio+OwogICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8
aW50LCBjb25zdCBjaGFyKj47CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFS
UkFZU0laRShrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEFSUkFZX0xFTkdUSChrZXlEb3duRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtl
eURvd25Db21tYW5kc01hcC0+c2V0KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8
IGtleURvd25FbnRyaWVzW2ldLnZpcnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOwog
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBUlJBWVNJWkUoa2V5UHJlc3NFbnRy
aWVzKTsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RI
KGtleVByZXNzRW50cmllcyk7IGkrKykKICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAt
PnNldChrZXlQcmVzc0VudHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVz
W2ldLmNoYXJDb2RlLCBrZXlQcmVzc0VudHJpZXNbaV0ubmFtZSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFm
NDVhNjMuLjczZThmNDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sg
R2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFSUkFZX0xFTkdUSCBtYWNybyB0byBXVEYKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODI4CisKKyAg
ICAgICAgVW5pZnkgdGhlIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYW5kIHVzYWdlcy4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgIChjYWNoZU1vZGVs
Rm9yTWFpbkJ1bmRsZSk6CisKIDIwMTAtMTAtMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0KaW5kZXggY2NmYjYzMi4uNTJjNGI5YiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMTE3LDExICsxMTcsMTEgQEAgc3RhdGljIFdlYkNhY2hl
TW9kZWwgY2FjaGVNb2RlbEZvck1haW5CdW5kbGUodm9pZCkKICAgICBXZWJDYWNoZU1vZGVsIGNh
Y2hlTW9kZWw7CiAKICAgICBjb25zdCBjaGFyKiBidW5kbGVJRCA9IFtbW05TQnVuZGxlIG1haW5C
dW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdIFVURjhTdHJpbmddOwotICAgIGlmIChjb250YWlucyhk
b2N1bWVudFZpZXdlcklEcywgc2l6ZW9mKGRvY3VtZW50Vmlld2VySURzKSAvIHNpemVvZihkb2N1
bWVudFZpZXdlcklEc1swXSksIGJ1bmRsZUlEKSkKKyAgICBpZiAoY29udGFpbnMoZG9jdW1lbnRW
aWV3ZXJJRHMsIEFSUkFZX0xFTkdUSChkb2N1bWVudFZpZXdlcklEcyksIGJ1bmRsZUlEKSkKICAg
ICAgICAgY2FjaGVNb2RlbCA9IFdlYkNhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKLSAgICBlbHNl
IGlmIChjb250YWlucyhkb2N1bWVudEJyb3dzZXJJRHMsIHNpemVvZihkb2N1bWVudEJyb3dzZXJJ
RHMpIC8gc2l6ZW9mKGRvY3VtZW50QnJvd3NlcklEc1swXSksIGJ1bmRsZUlEKSkKKyAgICBlbHNl
IGlmIChjb250YWlucyhkb2N1bWVudEJyb3dzZXJJRHMsIEFSUkFZX0xFTkdUSChkb2N1bWVudEJy
b3dzZXJJRHMpLCBidW5kbGVJRCkpCiAgICAgICAgIGNhY2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVs
RG9jdW1lbnRCcm93c2VyOwotICAgIGVsc2UgaWYgKGNvbnRhaW5zKHByaW1hcnlXZWJCcm93c2Vy
SURzLCBzaXplb2YocHJpbWFyeVdlYkJyb3dzZXJJRHMpIC8gc2l6ZW9mKHByaW1hcnlXZWJCcm93
c2VySURzWzBdKSwgYnVuZGxlSUQpKQorICAgIGVsc2UgaWYgKGNvbnRhaW5zKHByaW1hcnlXZWJC
cm93c2VySURzLCBBUlJBWV9MRU5HVEgocHJpbWFyeVdlYkJyb3dzZXJJRHMpLCBidW5kbGVJRCkp
CiAgICAgICAgIGNhY2hlTW9kZWwgPSBXZWJDYWNoZU1vZGVsUHJpbWFyeVdlYkJyb3dzZXI7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGJvb2wgaXNMZWdhY3lBcHAgPSAhV2ViS2l0TGlua2VkT25PckFm
dGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfQ0FDSEVfTU9ERUxfQVBJKTsKZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAKaW5kZXggMjE3N2I0MS4uZjc0NzUwMSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTExMjcsOCArMTEy
Nyw4IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpkeW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudChR
RHluYW1pY1Byb3BlcnR5Q2hhbmdlRXZlbnQqIGV2CiAgICAgICAgIH07CiAKICAgICAgICAgUVN0
cmluZyBwID0gcS0+cHJvcGVydHkoIl9xX1JlcGFpbnRUaHJvdHRsaW5nUHJlc2V0IikudG9TdHJp
bmcoKTsKLSAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHNpemVvZihwcmVzZXRzKSAvIHNpemVv
ZihwcmVzZXRzWzBdKTsgaSsrKSB7Ci0gICAgICAgICAgICBpZihwID09IHByZXNldHNbaV0ubmFt
ZSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX0xFTkdUSChwcmVzZXRz
KTsgKytpKSB7CisgICAgICAgICAgICBpZiAocCA9PSBwcmVzZXRzW2ldLm5hbWUpIHsKICAgICAg
ICAgICAgICAgICBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nRGVmZXJyZWRSZXBhaW50
RGVsYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXRzW2ldLmRlZmVycmVkUmVwYWlu
dERlbGF5KTsKICAgICAgICAgICAgICAgICBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5n
bkluaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcoCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5NzBiMDlkLi4z
MjVmNjNmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgQVJSQVlfTEVOR1RIIG1hY3JvIHRvIFdURgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAgICAgICBVbmlm
eSB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisgICAgICAgICog
QXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHluYW1pY1Byb3Bl
cnR5Q2hhbmdlRXZlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRl
UGx1Z2luKToKKwogMjAxMC0xMC0yMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCBhMGIyMzMwLi5jMGM4ZGY4
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCkBAIC0xMzA2LDggKzEzMDYsNiBAQCBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBxc3R5
bGVTaGVldFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQKIH07CiAK
LWNvbnN0IHVuc2lnbmVkIG51bXFTdHlsZVNoZWV0UHJvcGVydGllcyA9IHNpemVvZihxc3R5bGVT
aGVldFByb3BlcnRpZXMpIC8gc2l6ZW9mKHFzdHlsZVNoZWV0UHJvcGVydGllc1swXSk7Ci0KIGNs
YXNzIFF0UGx1Z2luV2lkZ2V0OiBwdWJsaWMgV2lkZ2V0CiB7CiBwdWJsaWM6CkBAIC0xNDQ3LDcg
KzE0NDUsNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRl
UGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAgICAgICAgICAgICBpZiAoIXN0eWxl
U2hlZXQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQgKz0gUUxhdGluMUNo
YXIoJzsnKTsKIAotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bXFTdHls
ZVNoZWV0UHJvcGVydGllczsgKytpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IEFSUkFZX0xFTkdUSChxc3R5bGVTaGVldFByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gcXN0eWxlU2hlZXRQcm9wZXJ0aWVzW2ld
OwogCiAgICAgICAgICAgICAgICAgc3R5bGVTaGVldCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKGdl
dFByb3BlcnR5TmFtZShwcm9wZXJ0eSkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCBlOTI3ZDE1Li5hYmUzZGMyIDEwMDY0NAot
LS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDEwLTEwLTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBBUlJBWV9MRU5HVEggbWFjcm8gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJl
bnQgaW1wbGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHA6CisgICAgICAgIChpc1ByZUluc3BlY3RFbGVtZW50
VGFnU2FmYXJpKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJV
UkxSZXNwb25zZTo6c3VnZ2VzdGVkRmlsZUV4dGVuc2lvbik6CisgICAgICAgICogV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJWaWV3OjppbnRlcnByZXRLZXlFdmVudCk6CisKIDIwMTAtMTAtMjIg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgV2luZG93
cyBidWlsZC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5jcHAKaW5kZXggYWIxZjc5ZS4uYzc4NTc4MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5jcHAKQEAgLTYwLDcgKzYwLDcg
QEAgc3RhdGljIGJvb2wgaXNQcmVJbnNwZWN0RWxlbWVudFRhZ1NhZmFyaShJV2ViVUlEZWxlZ2F0
ZSogdWlEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVENIQVIgbW9kdWxl
UGF0aFtNQVhfUEFUSF07Ci0gICAgRFdPUkQgbGVuZ3RoID0gOjpHZXRNb2R1bGVGaWxlTmFtZSgw
LCBtb2R1bGVQYXRoLCBfY291bnRvZihtb2R1bGVQYXRoKSk7CisgICAgRFdPUkQgbGVuZ3RoID0g
OjpHZXRNb2R1bGVGaWxlTmFtZSgwLCBtb2R1bGVQYXRoLCBBUlJBWV9MRU5HVEgobW9kdWxlUGF0
aCkpOwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1dlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIvV2ViS2l0L3dpbi9XZWJVUkxSZXNw
b25zZS5jcHAKaW5kZXggNjQ0ZTFkOC4uNWQwNzg3MSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9X
ZWJVUkxSZXNwb25zZS5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAg
LTQ0MCw3ICs0NDAsNyBAQCBIUkVTVUxUIFdlYlVSTFJlc3BvbnNlOjpzdWdnZXN0ZWRGaWxlRXh0
ZW5zaW9uKEJTVFIgKnJlc3VsdCkKICAgICAgICAgaWYgKCFlcnIpIHsKICAgICAgICAgICAgIERX
T1JEIGtleVR5cGUgPSBSRUdfU1o7CiAgICAgICAgICAgICBUQ0hBUiBleHRlbnNpb25bTUFYX1BB
VEhdOwotICAgICAgICAgICAgRFdPUkQga2V5U2l6ZSA9IHNpemVvZihleHRlbnNpb24pL3NpemVv
ZihleHRlbnNpb25bMF0pOworICAgICAgICAgICAgRFdPUkQga2V5U2l6ZSA9IEFSUkFZX0xFTkdU
SChleHRlbnNpb24pOwogICAgICAgICAgICAgZXJyID0gUmVnUXVlcnlWYWx1ZUV4KHN1YktleSwg
VEVYVCgiRXh0ZW5zaW9uIiksIDAsICZrZXlUeXBlLCAoTFBCWVRFKWV4dGVuc2lvbiwgJmtleVNp
emUpOwogICAgICAgICAgICAgaWYgKCFlcnIgJiYga2V5VHlwZSAhPSBSRUdfU1opCiAgICAgICAg
ICAgICAgICAgZXJyID0gRVJST1JfSU5WQUxJRF9EQVRBOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcCBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggYTZjM2NiNC4uNDkz
ZjcwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCkBAIC0xODMzLDEwICsxODMzLDEwIEBAIGNvbnN0IGNoYXIqIFdlYlZpZXc6
OmludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2dCkKICAgICAgICAga2V5
RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CiAgICAgICAg
IGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKIAot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgX2NvdW50b2Yoa2V5RG93bkVudHJpZXMp
OyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBUlJBWV9MRU5HVEgoa2V5
RG93bkVudHJpZXMpOyBpKyspCiAgICAgICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChr
ZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0
dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgX2NvdW50b2Yoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKGtleVByZXNzRW50cmllcyk7IGkrKykK
ICAgICAgICAgICAgIGtleVByZXNzQ29tbWFuZHNNYXAtPnNldChrZXlQcmVzc0VudHJpZXNbaV0u
bW9kaWZpZXJzIDw8IDE2IHwga2V5UHJlc3NFbnRyaWVzW2ldLmNoYXJDb2RlLCBrZXlQcmVzc0Vu
dHJpZXNbaV0ubmFtZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luY2UvQ2hhbmdl
TG9nIGIvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwppbmRleCAyZTA1ODVkLi5jYjk0NmZhIDEwMDY0
NAotLS0gYS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW5jZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0xMC0yMyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJv
Z2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgQVJSQVlfTEVOR1RIIG1hY3JvIHRvIFdURgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAgICAgICBVbmlmeSB0aGUg
ZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JD
bGllbnRXaW5DRTo6aW50ZXJwcmV0S2V5RXZlbnQpOgorCiAyMDEwLTEwLTIyICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdp
bkNFLmNwcCBiL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5j
cHAKaW5kZXggYjllNmZiMS4uZWQxYWUyYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAorKysgYi9XZWJLaXQvd2luY2UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuY3BwCkBAIC0zMTMsMTAgKzMxMywxMCBAQCBjb25z
dCBjaGFyKiBFZGl0b3JDbGllbnRXaW5DRTo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiAgICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFw
PGludCwgY29uc3QgY2hhcio+OwogICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhh
c2hNYXA8aW50LCBjb25zdCBjaGFyKj47CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IF9jb3VudG9mKGtleURvd25FbnRyaWVzKTsgaSsrKQorICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgQVJSQVlfTEVOR1RIKGtleURvd25FbnRyaWVzKTsgaSsrKQogICAgICAgICAg
ICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJzIDw8
IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0ubmFt
ZSk7CiAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9jb3VudG9mKGtleVByZXNz
RW50cmllcyk7IGkrKykKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEFSUkFZX0xF
TkdUSChrZXlQcmVzc0VudHJpZXMpOyBpKyspCiAgICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRz
TWFwLT5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50
cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0Zjc3
ZTA4Li41MGY2NTY4IDEwMDY0NAotLS0gYS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTEwLTIzICBQYXRyaWNrIEdhbnN0ZXJl
ciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBBUlJBWV9MRU5HVEggbWFjcm8gdG8gV1RGCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVu
aWZ5IHRoZSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1BsdWdpbnMvd2luL1BsdWdpbkluZm9TdG9yZVdpbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OnNhZmFyaVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRNb3ppbGxh
UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViS2l0OjphZGRXaW5kb3dzTWVkaWFQbGF5
ZXJQbHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRBZG9iZUFjcm9iYXRQbHVn
aW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0
b3JpZXMpOgorICAgICAgICAoV2ViS2l0OjphZGRQbHVnaW5QYXRoc0Zyb21SZWdpc3RyeSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQpOgorCiAyMDEwLTEwLTIxICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBTdHViIG91dCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC4KZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL0xh
dW5jaGVyL3dpbi9Qcm9jZXNzTGF1bmNoZXJXaW4uY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1
bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hlcldpbi5jcHAKaW5kZXggYTFjOWFhZi4uOWU2YzgzOCAx
MDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVuY2hl
cldpbi5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvd2luL1Byb2Nlc3NMYXVu
Y2hlcldpbi5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5j
aFByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAKICAgICBXQ0hBUiBwYXRoU3RyW01BWF9QQVRI
XTsKLSAgICBpZiAoITo6R2V0TW9kdWxlRmlsZU5hbWVXKHdlYktpdE1vZHVsZSwgcGF0aFN0ciwg
X2NvdW50b2YocGF0aFN0cikpKQorICAgIGlmICghOjpHZXRNb2R1bGVGaWxlTmFtZVcod2ViS2l0
TW9kdWxlLCBwYXRoU3RyLCBBUlJBWV9MRU5HVEgocGF0aFN0cikpKQogICAgICAgICByZXR1cm47
CiAKICAgICA6OlBhdGhSZW1vdmVGaWxlU3BlY1cocGF0aFN0cik7CmRpZmYgLS1naXQgYS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4uY3BwIGIvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2luLmNwcAppbmRleCA2NDVi
NGMwLi4xMjc1OTBhIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9Q
bHVnaW5JbmZvU3RvcmVXaW4uY3BwCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvd2lu
L1BsdWdpbkluZm9TdG9yZVdpbi5jcHAKQEAgLTgyLDkgKzgyLDkgQEAgc3RhdGljIGlubGluZSBT
dHJpbmcgc2FmYXJpUGx1Z2luc0RpcmVjdG9yeSgpCiAgICAgICAgIGNhY2hlZFBsdWdpbkRpcmVj
dG9yeSA9IHRydWU7CiAKICAgICAgICAgV0NIQVIgbW9kdWxlRmlsZU5hbWVTdHJbTUFYX1BBVEhd
OwotICAgICAgICBpbnQgbW9kdWxlRmlsZU5hbWVMZW4gPSA6OkdldE1vZHVsZUZpbGVOYW1lVygw
LCBtb2R1bGVGaWxlTmFtZVN0ciwgX2NvdW50b2YobW9kdWxlRmlsZU5hbWVTdHIpKTsKKyAgICAg
ICAgaW50IG1vZHVsZUZpbGVOYW1lTGVuID0gOjpHZXRNb2R1bGVGaWxlTmFtZVcoMCwgbW9kdWxl
RmlsZU5hbWVTdHIsIEFSUkFZX0xFTkdUSChtb2R1bGVGaWxlTmFtZVN0cikpOwogCi0gICAgICAg
IGlmICghbW9kdWxlRmlsZU5hbWVMZW4gfHwgbW9kdWxlRmlsZU5hbWVMZW4gPT0gX2NvdW50b2Yo
bW9kdWxlRmlsZU5hbWVTdHIpKQorICAgICAgICBpZiAoIW1vZHVsZUZpbGVOYW1lTGVuIHx8IG1v
ZHVsZUZpbGVOYW1lTGVuID09IEFSUkFZX0xFTkdUSChtb2R1bGVGaWxlTmFtZVN0cikpCiAgICAg
ICAgICAgICByZXR1cm4gcGx1Z2luc0RpcmVjdG9yeTsKIAogICAgICAgICBpZiAoITo6UGF0aFJl
bW92ZUZpbGVTcGVjVyhtb2R1bGVGaWxlTmFtZVN0cikpCkBAIC0xMDksNyArMTA5LDcgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhWZWN0b3I8U3RyaW5n
PiYgZGlyZWN0b3JpZXMpCiAKICAgICAvLyBFbnVtZXJhdGUgc3Via2V5cwogICAgIGZvciAoaW50
IGkgPSAwOzsgaSsrKSB7Ci0gICAgICAgIERXT1JEIG5hbWVMZW4gPSBfY291bnRvZihuYW1lKTsK
KyAgICAgICAgRFdPUkQgbmFtZUxlbiA9IEFSUkFZX0xFTkdUSChuYW1lKTsKICAgICAgICAgcmVz
dWx0ID0gOjpSZWdFbnVtS2V5RXhXKGtleSwgaSwgbmFtZSwgJm5hbWVMZW4sIDAsIDAsIDAsICZs
YXN0TW9kaWZpZWQpOwogCiAgICAgICAgIGlmIChyZXN1bHQgIT0gRVJST1JfU1VDQ0VTUykKQEAg
LTE0Myw5ICsxNDMsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkV2luZG93c01lZGlhUGxheWVy
UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcgogewogICAgIC8vIFRoZSBu
ZXcgV01QIEZpcmVmb3ggcGx1Z2luIGlzIGluc3RhbGxlZCBpbiBcUEZpbGVzXFBsdWdpbnMgaWYg
aXQgY2FuJ3QgZmluZCBhbnkgRmlyZWZveCBpbnN0YWxscwogICAgIFdDSEFSIHBsdWdpbkRpcmVj
dG9yeVN0cltNQVhfUEFUSCArIDFdOwotICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6
OkV4cGFuZEVudmlyb25tZW50U3RyaW5nc1coTCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdp
bnMiLCBwbHVnaW5EaXJlY3RvcnlTdHIsIF9jb3VudG9mKHBsdWdpbkRpcmVjdG9yeVN0cikpOwor
ICAgIERXT1JEIHBsdWdpbkRpcmVjdG9yeVNpemUgPSA6OkV4cGFuZEVudmlyb25tZW50U3RyaW5n
c1coTCIlU1lTVEVNRFJJVkUlXFxQRmlsZXNcXFBsdWdpbnMiLCBwbHVnaW5EaXJlY3RvcnlTdHIs
IEFSUkFZX0xFTkdUSChwbHVnaW5EaXJlY3RvcnlTdHIpKTsKIAotICAgIGlmIChwbHVnaW5EaXJl
Y3RvcnlTaXplID4gMCAmJiBwbHVnaW5EaXJlY3RvcnlTaXplIDw9IF9jb3VudG9mKHBsdWdpbkRp
cmVjdG9yeVN0cikpCisgICAgaWYgKHBsdWdpbkRpcmVjdG9yeVNpemUgPiAwICYmIHBsdWdpbkRp
cmVjdG9yeVNpemUgPD0gQVJSQVlfTEVOR1RIKHBsdWdpbkRpcmVjdG9yeVN0cikpCiAgICAgICAg
IGRpcmVjdG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luRGlyZWN0b3J5U3RyLCBwbHVnaW5EaXJl
Y3RvcnlTaXplIC0gMSkpOwogCiAgICAgRFdPUkQgdHlwZTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgYWRkQWRvYmVBY3JvYmF0UGx1Z2luRGlyZWN0b3J5KFZlY3RvcjxT
dHJpbmc+JiBkaXJlY3RvcmllcykKIAogICAgIC8vIEVudW1lcmF0ZSBzdWJrZXlzCiAgICAgZm9y
IChpbnQgaSA9IDA7OyBpKyspIHsKLSAgICAgICAgRFdPUkQgbmFtZUxlbiA9IF9jb3VudG9mKG5h
bWUpOworICAgICAgICBEV09SRCBuYW1lTGVuID0gQVJSQVlfTEVOR1RIKG5hbWUpOwogICAgICAg
ICByZXN1bHQgPSA6OlJlZ0VudW1LZXlFeFcoa2V5LCBpLCBuYW1lLCAmbmFtZUxlbiwgMCwgMCwg
MCwgJmxhc3RNb2RpZmllZCk7CiAKICAgICAgICAgaWYgKHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNT
KQpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRNYWNyb21lZGlhUGx1
Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQogI2lmICFPUyhXSU5D
RSkKICAgICBXQ0hBUiBzeXN0ZW1EaXJlY3RvcnlTdHJbTUFYX1BBVEhdOwogCi0gICAgaWYgKCE6
OkdldFN5c3RlbURpcmVjdG9yeVcoc3lzdGVtRGlyZWN0b3J5U3RyLCBfY291bnRvZihzeXN0ZW1E
aXJlY3RvcnlTdHIpKSkKKyAgICBpZiAoITo6R2V0U3lzdGVtRGlyZWN0b3J5VyhzeXN0ZW1EaXJl
Y3RvcnlTdHIsIEFSUkFZX0xFTkdUSChzeXN0ZW1EaXJlY3RvcnlTdHIpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgV0NIQVIgbWFjcm9tZWRpYURpcmVjdG9yeVN0cltNQVhfUEFUSF07CkBAIC0z
MTIsNyArMzEyLDcgQEAgc3RhdGljIHZvaWQgYWRkUGx1Z2luUGF0aHNGcm9tUmVnaXN0cnkoSEtF
WSByb290S2V5LCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IDsgKytpKSB7CiAgICAgICAgIC8vIE1TRE4gc2F5cyB0aGF0IGtleSBuYW1lcyBoYXZlIGEgbWF4
aW11bSBsZW5ndGggb2YgMjU1IGNoYXJhY3RlcnMuCiAgICAgICAgIHdjaGFyX3QgbmFtZVsyNTZd
OwotICAgICAgICBEV09SRCBuYW1lTGVuID0gX2NvdW50b2YobmFtZSk7CisgICAgICAgIERXT1JE
IG5hbWVMZW4gPSBBUlJBWV9MRU5HVEgobmFtZSk7CiAgICAgICAgIGlmICg6OlJlZ0VudW1LZXlF
eFcoa2V5LCBpLCBuYW1lLCAmbmFtZUxlbiwgMCwgMCwgMCwgMCkgIT0gRVJST1JfU1VDQ0VTUykK
ICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4v
V2ViUGFnZVdpbi5jcHAKaW5kZXggYmJlMjE4Ni4uNDI1ZmIyMyAxMDA2NDQKLS0tIGEvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMTU3LDEwICsxNTcsMTAgQEAg
Y29uc3QgY2hhciogV2ViUGFnZTo6aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVu
dCogZXZ0KQogICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNv
bnN0IGNoYXIqPjsKICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGlu
dCwgY29uc3QgY2hhcio+OwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBfY291
bnRvZihrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBBUlJBWV9MRU5HVEgoa2V5RG93bkVudHJpZXMpOyArK2kpCiAgICAgICAgICAgICBrZXlEb3du
Q29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlE
b3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKIAotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgX2NvdW50b2Yoa2V5UHJlc3NFbnRyaWVzKTsg
aSsrKQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFSUkFZX0xFTkdUSChrZXlQcmVz
c0VudHJpZXMpOyArK2kpCiAgICAgICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwLT5zZXQoa2V5
UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleVByZXNzRW50cmllc1tpXS5jaGFy
Q29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwogICAgIH0KIAo=
</data>
<flag name="review"
          id="61765"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="61766"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71680</attachid>
            <date>2010-10-24 07:37:56 -0700</date>
            <delta_ts>2010-10-24 09:46:54 -0700</delta_ts>
            <desc>JavaScriptCore part</desc>
            <filename>bug-32828e.patch</filename>
            <type>text/plain</type>
            <size>9546</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyMmNkODU0Li40OGQ5YzAwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURl9B
UlJBWV9MRU5HVEggbWFjcm8gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJlbnQgaW1w
bGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6Cisg
ICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9ybWF0
TG9jYWxlRGF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU09O
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OmFwcGVuZFF1b3RlZFN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjp0b0pTT04pOgorICAgICAgICAoSlNDOjpT
dHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9V
U3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6bnVtYmVyKToKKyAgICAgICAgKiB3
dGYvRGF0ZU1hdGguY3BwOgorICAgICAgICAoV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0
ZWRDaGFyYWN0ZXJzKToKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYv
U3RkTGliRXh0cmFzLmg6CisgICAgICAgIChXVEY6OmJpdHdpc2VfY2FzdCk6CisgICAgICAgIChX
VEY6OmJpdENvdW50KToKKwogMjAxMC0xMC0yMyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3MDM2OS4K
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBi
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAxY2FkZWY4
Li40NmQ0MjkwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC0xNDM3LDcgKzE0MzcsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0
ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICAj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICAjZGVmaW5l
IExJU1RfT1BDT0RFX0xBQkVMKGlkLCBsZW5ndGgpICYmaWQsCiAgICAgICAgICAgICAgICAgc3Rh
dGljIE9wY29kZSBsYWJlbHNbXSA9IHsgRk9SX0VBQ0hfT1BDT0RFX0lEKExJU1RfT1BDT0RFX0xB
QkVMKSB9OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGxh
YmVscykgLyBzaXplb2YoT3Bjb2RlKTsgKytpKQorICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChsYWJlbHMpOyArK2kpCiAgICAgICAgICAgICAg
ICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBsYWJlbHNbaV07CiAgICAgICAgICAgICAjdW5kZWYg
TElTVF9PUENPREVfTEFCRUwKICAgICAgICAgI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5k
ZXggNDk4M2YyOS4uOGMwODIxZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5
cGUuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0
ZShFeGVjU3RhdGUqIGV4ZWMsIERhdGVJbnN0YW5jZSosIGRvdWJsZSB0aW1lSW5NaWwKICAgICAv
LyBXZSB0cnVuY2F0ZSB0aGUgc3RyaW5nIHJldHVybmVkIGZyb20gQ0ZEYXRlRm9ybWF0dGVyIGlm
IGl0J3MgYWJzdXJkbHkgbG9uZyAoPiAyMDAgY2hhcmFjdGVycykuCiAgICAgLy8gVGhhdCdzIG5v
dCBncmVhdCBlcnJvciBoYW5kbGluZywgYnV0IGl0IGp1c3Qgd29uJ3QgaGFwcGVuIHNvIGl0IGRv
ZXNuJ3QgbWF0dGVyLgogICAgIFVDaGFyIGJ1ZmZlclsyMDBdOwotICAgIGNvbnN0IHNpemVfdCBi
dWZmZXJMZW5ndGggPSBzaXplb2YoYnVmZmVyKSAvIHNpemVvZihidWZmZXJbMF0pOworICAgIGNv
bnN0IHNpemVfdCBidWZmZXJMZW5ndGggPSBXVEZfQVJSQVlfTEVOR1RIKGJ1ZmZlcik7CiAgICAg
c2l6ZV90IGxlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZyk7CiAgICAgQVNTRVJUKGxl
bmd0aCA8PSBidWZmZXJMZW5ndGgpOwogICAgIGlmIChsZW5ndGggPiBidWZmZXJMZW5ndGgpCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkwM2U1NzMuLmRh
MDZkODMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0z
MDcsNyArMzA3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJKU09OIiks
IG5ldyAoZXhlYykgSlNPTk9iamVjdCh0aGlzLCBKU09OT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
ZCgpLT5vYmplY3RQcm90b3R5cGUpKSwgRG9udEVudW0gfCBEb250RGVsZXRlKQogICAgIH07CiAK
LSAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIHNpemVvZihzdGF0aWNHbG9iYWxz
KSAvIHNpemVvZihHbG9iYWxQcm9wZXJ0eUluZm8pKTsKKyAgICBhZGRTdGF0aWNHbG9iYWxzKHN0
YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwogCiAgICAgLy8g
U2V0IGdsb2JhbCBmdW5jdGlvbnMuCiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3Bw
CmluZGV4IDA3OTQxODkuLmM0OTVjNGUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmNwcApAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgU3RyaW5naWZpZXI6OmFwcGVuZFF1b3RlZFN0
cmluZyhVU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgVVN0cmluZyYgdmFsCiAgICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2Rl
ZiI7CiAgICAgICAgICAgICAgICAgVUNoYXIgY2ggPSBkYXRhW2ldOwogICAgICAgICAgICAgICAg
IFVDaGFyIGhleFtdID0geyAnXFwnLCAndScsIGhleERpZ2l0c1soY2ggPj4gMTIpICYgMHhGXSwg
aGV4RGlnaXRzWyhjaCA+PiA4KSAmIDB4Rl0sIGhleERpZ2l0c1soY2ggPj4gNCkgJiAweEZdLCBo
ZXhEaWdpdHNbY2ggJiAweEZdIH07Ci0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4
LCBzaXplb2YoaGV4KSAvIHNpemVvZihVQ2hhcikpOworICAgICAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGhleCwgV1RGX0FSUkFZX0xFTkdUSChoZXgpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KQEAgLTM1Nyw3ICszNTcsNyBAQCBpbmxpbmUgSlNWYWx1ZSBT
dHJpbmdpZmllcjo6dG9KU09OKEpTVmFsdWUgdmFsdWUsIGNvbnN0IFByb3BlcnR5TmFtZUZvckZ1
bmN0aW9uQwogICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBKU1ZhbHVlIGxpc3RbXSA9IHsg
cHJvcGVydHlOYW1lLnZhbHVlKG1fZXhlYykgfTsKLSAgICBBcmdMaXN0IGFyZ3MobGlzdCwgc2l6
ZW9mKGxpc3QpIC8gc2l6ZW9mKEpTVmFsdWUpKTsKKyAgICBBcmdMaXN0IGFyZ3MobGlzdCwgV1RG
X0FSUkFZX0xFTkdUSChsaXN0KSk7CiAgICAgcmV0dXJuIGNhbGwobV9leGVjLCBvYmplY3QsIGNh
bGxUeXBlLCBjYWxsRGF0YSwgdmFsdWUsIGFyZ3MpOwogfQogCkBAIC0zNzEsNyArMzcxLDcgQEAg
U3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZp
ZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYKICAgICAvLyBDYWxsIHRoZSByZXBsYWNlciBmdW5jdGlv
bi4KICAgICBpZiAobV9yZXBsYWNlckNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgewogICAgICAg
ICBKU1ZhbHVlIGxpc3RbXSA9IHsgcHJvcGVydHlOYW1lLnZhbHVlKG1fZXhlYyksIHZhbHVlIH07
Ci0gICAgICAgIEFyZ0xpc3QgYXJncyhsaXN0LCBzaXplb2YobGlzdCkgLyBzaXplb2YoSlNWYWx1
ZSkpOworICAgICAgICBBcmdMaXN0IGFyZ3MobGlzdCwgV1RGX0FSUkFZX0xFTkdUSChsaXN0KSk7
CiAgICAgICAgIHZhbHVlID0gY2FsbChtX2V4ZWMsIG1fcmVwbGFjZXIsIG1fcmVwbGFjZXJDYWxs
VHlwZSwgbV9yZXBsYWNlckNhbGxEYXRhLCBob2xkZXIsIGFyZ3MpOwogICAgICAgICBpZiAobV9l
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWQ7
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcAppbmRleCAxN2NkOWI2Li45MWQzODM3IDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVVN0cmluZy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgVVN0cmluZzo6VVN0
cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKQogVVN0cmluZyBVU3RyaW5nOjpudW1iZXIoaW50
IGkpCiB7CiAgICAgVUNoYXIgYnVmWzEgKyBzaXplb2YoaSkgKiAzXTsKLSAgICBVQ2hhciogZW5k
ID0gYnVmICsgc2l6ZW9mKGJ1ZikgLyBzaXplb2YoVUNoYXIpOworICAgIFVDaGFyKiBlbmQgPSBi
dWYgKyBXVEZfQVJSQVlfTEVOR1RIKGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAgICBp
ZiAoaSA9PSAwKQpAQCAtMTE5LDcgKzExOSw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKGlu
dCBpKQogVVN0cmluZyBVU3RyaW5nOjpudW1iZXIobG9uZyBsb25nIGkpCiB7CiAgICAgVUNoYXIg
YnVmWzEgKyBzaXplb2YoaSkgKiAzXTsKLSAgICBVQ2hhciogZW5kID0gYnVmICsgc2l6ZW9mKGJ1
ZikgLyBzaXplb2YoVUNoYXIpOworICAgIFVDaGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlfTEVO
R1RIKGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAgICBpZiAoaSA9PSAwKQpAQCAtMTUy
LDcgKzE1Miw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKGxvbmcgbG9uZyBpKQogVVN0cmlu
ZyBVU3RyaW5nOjpudW1iZXIodW5zaWduZWQgdSkKIHsKICAgICBVQ2hhciBidWZbc2l6ZW9mKHUp
ICogM107Ci0gICAgVUNoYXIqIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFy
KTsKKyAgICBVQ2hhciogZW5kID0gYnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYpOwogICAgIFVD
aGFyKiBwID0gZW5kOwogCiAgICAgaWYgKHUgPT0gMCkKQEAgLTE3MCw3ICsxNzAsNyBAQCBVU3Ry
aW5nIFVTdHJpbmc6Om51bWJlcih1bnNpZ25lZCB1KQogVVN0cmluZyBVU3RyaW5nOjpudW1iZXIo
bG9uZyBsKQogewogICAgIFVDaGFyIGJ1ZlsxICsgc2l6ZW9mKGwpICogM107Ci0gICAgVUNoYXIq
IGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBVQ2hhciogZW5k
ID0gYnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYpOwogICAgIFVDaGFyKiBwID0gZW5kOwogCiAg
ICAgaWYgKGwgPT0gMCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5j
cHAgYi9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCmluZGV4IGQwMDU4NTkuLjU3M2Jm
MDkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvd3RmL0RhdGVNYXRoLmNwcApAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBk
b3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhjb25zdCBjaGFyKiBk
YXRlU3RyaW5nLCBib29sCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBoYXZlVFogPSB0cnVl
OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnQo
c2l6ZW9mKGtub3duX3pvbmVzKSAvIHNpemVvZihLbm93blpvbmUpKTsgaSsrKSB7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoa25vd25fem9uZXMp
OyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoMCA9PSBzdHJuY2FzZWNtcChkYXRlU3RyaW5n
LCBrbm93bl96b25lc1tpXS50ek5hbWUsIHN0cmxlbihrbm93bl96b25lc1tpXS50ek5hbWUpKSkg
ewogICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBrbm93bl96b25lc1tpXS50ek9mZnNldDsK
ICAgICAgICAgICAgICAgICAgICAgZGF0ZVN0cmluZyArPSBzdHJsZW4oa25vd25fem9uZXNbaV0u
dHpOYW1lKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oIGIvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKaW5kZXggOTQ2MTkyYi4uZDQyOWRlMiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKKysrIGIvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKQEAgLTU2MywxMSArNTYzLDYgQEAKICNkZWZpbmUgX0lOQ19BU1NFUlQg
ICAgLyogZGlzYWJsZSAiYXNzZXJ0LmgiICovCiAjZGVmaW5lIGFzc2VydCh4KQogCi0vKiBfY291
bnRvZiBpcyBvbmx5IGluY2x1ZGVkIGluIENFNjsgZm9yIENFNSB3ZSBuZWVkIHRvIGRlZmluZSBp
dCBvdXJzZWxmICovCi0jaWZuZGVmIF9jb3VudG9mCi0jZGVmaW5lIF9jb3VudG9mKHgpIChzaXpl
b2YoeCkgLyBzaXplb2YoKHgpWzBdKSkKLSNlbmRpZgotCiAjZW5kaWYgIC8qIE9TKFdJTkNFKSAm
JiAhUExBVEZPUk0oUVQpICovCiAKICNpZiBQTEFURk9STShRVCkKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJF
eHRyYXMuaAppbmRleCBkNTk0YzE3Li5lZDc3MGZkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS93dGYvU3RkTGliRXh0cmFzLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJh
cy5oCkBAIC04NywyOSArODcsMzMgQEAgVHlwZVB0ciByZWludGVycHJldF9jYXN0X3B0cihjb25z
dCB2b2lkKiBwdHIpCiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgLyoKLSAgICAgKiBDKysncyBp
ZGVhIG9mIGEgcmVpbnRlcnByZXRfY2FzdCBsYWNrcyBzdWZmaWNpZW50IGNvam9uZXMuCi0gICAg
ICovCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVE8sIHR5cGVuYW1lIEZST00+Ci0gICAgVE8gYml0
d2lzZV9jYXN0KEZST00gZnJvbSkKLSAgICB7Ci0gICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVv
ZihUTykgPT0gc2l6ZW9mKEZST00pLCBXVEZfYml0d2lzZV9jYXN0X3NpemVvZl9jYXN0ZWRfdHlw
ZXNfaXNfZXF1YWwpOwotICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBGUk9NIGZyb207Ci0g
ICAgICAgICAgICBUTyB0bzsKLSAgICAgICAgfSB1OwotICAgICAgICB1LmZyb20gPSBmcm9tOwot
ICAgICAgICByZXR1cm4gdS50bzsKLSAgICB9CisvKgorICogQysrJ3MgaWRlYSBvZiBhIHJlaW50
ZXJwcmV0X2Nhc3QgbGFja3Mgc3VmZmljaWVudCBjb2pvbmVzLgorICovCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUTywgdHlwZW5hbWUgRlJPTT4KK2lubGluZSBUTyBiaXR3aXNlX2Nhc3QoRlJPTSBmcm9t
KQoreworICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihUTykgPT0gc2l6ZW9mKEZST00pLCBXVEZf
Yml0d2lzZV9jYXN0X3NpemVvZl9jYXN0ZWRfdHlwZXNfaXNfZXF1YWwpOworICAgIHVuaW9uIHsK
KyAgICAgICAgRlJPTSBmcm9tOworICAgICAgICBUTyB0bzsKKyAgICB9IHU7CisgICAgdS5mcm9t
ID0gZnJvbTsKKyAgICByZXR1cm4gdS50bzsKK30KIAotICAgIC8vIFJldHVybnMgYSBjb3VudCBv
ZiB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluICdiaXRzJy4KLSAgICBpbmxpbmUgc2l6ZV90IGJp
dENvdW50KHVuc2lnbmVkIGJpdHMpCi0gICAgewotICAgICAgICBiaXRzID0gYml0cyAtICgoYml0
cyA+PiAxKSAmIDB4NTU1NTU1NTUpOwotICAgICAgICBiaXRzID0gKGJpdHMgJiAweDMzMzMzMzMz
KSArICgoYml0cyA+PiAyKSAmIDB4MzMzMzMzMzMpOwotICAgICAgICByZXR1cm4gKCgoYml0cyAr
IChiaXRzID4+IDQpKSAmIDB4RjBGMEYwRikgKiAweDEwMTAxMDEpID4+IDI0OwotICAgIH0KKy8v
IFJldHVybnMgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluICdiaXRzJy4KK2lu
bGluZSBzaXplX3QgYml0Q291bnQodW5zaWduZWQgYml0cykKK3sKKyAgICBiaXRzID0gYml0cyAt
ICgoYml0cyA+PiAxKSAmIDB4NTU1NTU1NTUpOworICAgIGJpdHMgPSAoYml0cyAmIDB4MzMzMzMz
MzMpICsgKChiaXRzID4+IDIpICYgMHgzMzMzMzMzMyk7CisgICAgcmV0dXJuICgoKGJpdHMgKyAo
Yml0cyA+PiA0KSkgJiAweEYwRjBGMEYpICogMHgxMDEwMTAxKSA+PiAyNDsKK30KKworLy8gTWFj
cm8gdGhhdCByZXR1cm5zIGEgY29tcGlsZSB0aW1lIGNvbnN0YW50IHdpdGggdGhlIGxlbmd0aCBv
ZiBhbiBhcnJheSwgYnV0IGdpdmVzIGFuIGVycm9yIGlmIHBhc3NlZCBhIG5vbi1hcnJheS4KK3Rl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlLCBzaXplX3QgbGVuZ3RoPiBjaGFyICgmQXJyYXlM
ZW5ndGhIZWxwZXJGdW5jdGlvbihFbGVtZW50VHlwZSAoJilbbGVuZ3RoXSkpW2xlbmd0aF07Cisj
ZGVmaW5lIFdURl9BUlJBWV9MRU5HVEgoYXJyYXkpIHNpemVvZig6OldURjo6QXJyYXlMZW5ndGhI
ZWxwZXJGdW5jdGlvbihhcnJheSkpCiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi0jZW5kaWYKKyNl
bmRpZiAvLyBXVEZfU3RkTGliRXh0cmFzX2gK
</data>
<flag name="review"
          id="61784"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="61785"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71690</attachid>
            <date>2010-10-24 09:46:54 -0700</date>
            <delta_ts>2010-10-24 15:30:34 -0700</delta_ts>
            <desc>JavaScriptCore part</desc>
            <filename>bug-32828f.patch</filename>
            <type>text/plain</type>
            <size>7700</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAyMmNkODU0Li40OGQ5YzAwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTAtMTAtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdURl9B
UlJBWV9MRU5HVEggbWFjcm8gdG8gV1RGCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMjgyOAorCisgICAgICAgIFVuaWZ5IHRoZSBkaWZmZXJlbnQgaW1w
bGVtZW50YXRpb25zIGFuZCB1c2FnZXMuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6Cisg
ICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Zm9ybWF0
TG9jYWxlRGF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAgICAgICogcnVudGltZS9KU09O
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OmFwcGVuZFF1b3RlZFN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjp0b0pTT04pOgorICAgICAgICAoSlNDOjpT
dHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9V
U3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6VVN0cmluZzo6bnVtYmVyKToKKyAgICAgICAgKiB3
dGYvRGF0ZU1hdGguY3BwOgorICAgICAgICAoV1RGOjpwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0
ZWRDaGFyYWN0ZXJzKToKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisKIDIwMTAtMTAt
MjMgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByNzAzNjkuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggMWNhZGVmOC4uNDZkNDI5MCAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTQzNyw3ICsxNDM3LDcgQEAgSlNW
YWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdp
c3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKQogICAgICAgICAgICAgI2RlZmluZSBMSVNUX09QQ09ERV9MQUJFTChpZCwgbGVu
Z3RoKSAmJmlkLAogICAgICAgICAgICAgICAgIHN0YXRpYyBPcGNvZGUgbGFiZWxzW10gPSB7IEZP
Ul9FQUNIX09QQ09ERV9JRChMSVNUX09QQ09ERV9MQUJFTCkgfTsKLSAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihsYWJlbHMpIC8gc2l6ZW9mKE9wY29kZSk7ICsr
aSkKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgobGFiZWxzKTsgKytpKQogICAgICAgICAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0g
bGFiZWxzW2ldOwogICAgICAgICAgICAgI3VuZGVmIExJU1RfT1BDT0RFX0xBQkVMCiAgICAgICAg
ICNlbmRpZiAvLyBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCmluZGV4IDQ5ODNmMjkuLjhjMDgyMWQgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBA
IHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoRXhlY1N0YXRlKiBleGVjLCBEYXRlSW5z
dGFuY2UqLCBkb3VibGUgdGltZUluTWlsCiAgICAgLy8gV2UgdHJ1bmNhdGUgdGhlIHN0cmluZyBy
ZXR1cm5lZCBmcm9tIENGRGF0ZUZvcm1hdHRlciBpZiBpdCdzIGFic3VyZGx5IGxvbmcgKD4gMjAw
IGNoYXJhY3RlcnMpLgogICAgIC8vIFRoYXQncyBub3QgZ3JlYXQgZXJyb3IgaGFuZGxpbmcsIGJ1
dCBpdCBqdXN0IHdvbid0IGhhcHBlbiBzbyBpdCBkb2Vzbid0IG1hdHRlci4KICAgICBVQ2hhciBi
dWZmZXJbMjAwXTsKLSAgICBjb25zdCBzaXplX3QgYnVmZmVyTGVuZ3RoID0gc2l6ZW9mKGJ1ZmZl
cikgLyBzaXplb2YoYnVmZmVyWzBdKTsKKyAgICBjb25zdCBzaXplX3QgYnVmZmVyTGVuZ3RoID0g
V1RGX0FSUkFZX0xFTkdUSChidWZmZXIpOwogICAgIHNpemVfdCBsZW5ndGggPSBDRlN0cmluZ0dl
dExlbmd0aChzdHJpbmcpOwogICAgIEFTU0VSVChsZW5ndGggPD0gYnVmZmVyTGVuZ3RoKTsKICAg
ICBpZiAobGVuZ3RoID4gYnVmZmVyTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA5MDNlNTczLi5kYTA2ZDgzIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICBHbG9iYWxQcm9wZXJ0
eUluZm8oSWRlbnRpZmllcihleGVjLCAiSlNPTiIpLCBuZXcgKGV4ZWMpIEpTT05PYmplY3QodGhp
cywgSlNPTk9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlKSksIERv
bnRFbnVtIHwgRG9udERlbGV0ZSkKICAgICB9OwogCi0gICAgYWRkU3RhdGljR2xvYmFscyhzdGF0
aWNHbG9iYWxzLCBzaXplb2Yoc3RhdGljR2xvYmFscykgLyBzaXplb2YoR2xvYmFsUHJvcGVydHlJ
bmZvKSk7CisgICAgYWRkU3RhdGljR2xvYmFscyhzdGF0aWNHbG9iYWxzLCBXVEZfQVJSQVlfTEVO
R1RIKHN0YXRpY0dsb2JhbHMpKTsKIAogICAgIC8vIFNldCBnbG9iYWwgZnVuY3Rpb25zLgogCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCAwNzk0MTg5Li5jNDk1YzRlIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTMyOSw3ICszMjksNyBAQCB2
b2lkIFN0cmluZ2lmaWVyOjphcHBlbmRRdW90ZWRTdHJpbmcoVVN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIGNvbnN0IFVTdHJpbmcmIHZhbAogICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
IGhleERpZ2l0c1tdID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgICAgICAgICAgICAgIFVDaGFy
IGNoID0gZGF0YVtpXTsKICAgICAgICAgICAgICAgICBVQ2hhciBoZXhbXSA9IHsgJ1xcJywgJ3Un
LCBoZXhEaWdpdHNbKGNoID4+IDEyKSAmIDB4Rl0sIGhleERpZ2l0c1soY2ggPj4gOCkgJiAweEZd
LCBoZXhEaWdpdHNbKGNoID4+IDQpICYgMHhGXSwgaGV4RGlnaXRzW2NoICYgMHhGXSB9OwotICAg
ICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGhleCwgc2l6ZW9mKGhleCkgLyBzaXplb2YoVUNo
YXIpKTsKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChoZXgsIFdURl9BUlJBWV9MRU5H
VEgoaGV4KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
NTcsNyArMzU3LDcgQEAgaW5saW5lIEpTVmFsdWUgU3RyaW5naWZpZXI6OnRvSlNPTihKU1ZhbHVl
IHZhbHVlLCBjb25zdCBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkMKICAgICAgICAgcmV0dXJuIHZh
bHVlOwogCiAgICAgSlNWYWx1ZSBsaXN0W10gPSB7IHByb3BlcnR5TmFtZS52YWx1ZShtX2V4ZWMp
IH07Ci0gICAgQXJnTGlzdCBhcmdzKGxpc3QsIHNpemVvZihsaXN0KSAvIHNpemVvZihKU1ZhbHVl
KSk7CisgICAgQXJnTGlzdCBhcmdzKGxpc3QsIFdURl9BUlJBWV9MRU5HVEgobGlzdCkpOwogICAg
IHJldHVybiBjYWxsKG1fZXhlYywgb2JqZWN0LCBjYWxsVHlwZSwgY2FsbERhdGEsIHZhbHVlLCBh
cmdzKTsKIH0KIApAQCAtMzcxLDcgKzM3MSw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1
bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoVVN0cmluZ0J1aWxkZXImCiAg
ICAgLy8gQ2FsbCB0aGUgcmVwbGFjZXIgZnVuY3Rpb24uCiAgICAgaWYgKG1fcmVwbGFjZXJDYWxs
VHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKICAgICAgICAgSlNWYWx1ZSBsaXN0W10gPSB7IHByb3Bl
cnR5TmFtZS52YWx1ZShtX2V4ZWMpLCB2YWx1ZSB9OwotICAgICAgICBBcmdMaXN0IGFyZ3MobGlz
dCwgc2l6ZW9mKGxpc3QpIC8gc2l6ZW9mKEpTVmFsdWUpKTsKKyAgICAgICAgQXJnTGlzdCBhcmdz
KGxpc3QsIFdURl9BUlJBWV9MRU5HVEgobGlzdCkpOwogICAgICAgICB2YWx1ZSA9IGNhbGwobV9l
eGVjLCBtX3JlcGxhY2VyLCBtX3JlcGxhY2VyQ2FsbFR5cGUsIG1fcmVwbGFjZXJDYWxsRGF0YSwg
aG9sZGVyLCBhcmdzKTsKICAgICAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9VU3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmluZy5j
cHAKaW5kZXggMTdjZDliNi4uOTFkMzgzNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9VU3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIFVTdHJpbmc6OlVTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVy
cykKIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKGludCBpKQogewogICAgIFVDaGFyIGJ1ZlsxICsg
c2l6ZW9mKGkpICogM107Ci0gICAgVUNoYXIqIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6
ZW9mKFVDaGFyKTsKKyAgICBVQ2hhciogZW5kID0gYnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYp
OwogICAgIFVDaGFyKiBwID0gZW5kOwogCiAgICAgaWYgKGkgPT0gMCkKQEAgLTExOSw3ICsxMTks
NyBAQCBVU3RyaW5nIFVTdHJpbmc6Om51bWJlcihpbnQgaSkKIFVTdHJpbmcgVVN0cmluZzo6bnVt
YmVyKGxvbmcgbG9uZyBpKQogewogICAgIFVDaGFyIGJ1ZlsxICsgc2l6ZW9mKGkpICogM107Ci0g
ICAgVUNoYXIqIGVuZCA9IGJ1ZiArIHNpemVvZihidWYpIC8gc2l6ZW9mKFVDaGFyKTsKKyAgICBV
Q2hhciogZW5kID0gYnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYpOwogICAgIFVDaGFyKiBwID0g
ZW5kOwogCiAgICAgaWYgKGkgPT0gMCkKQEAgLTE1Miw3ICsxNTIsNyBAQCBVU3RyaW5nIFVTdHJp
bmc6Om51bWJlcihsb25nIGxvbmcgaSkKIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKHVuc2lnbmVk
IHUpCiB7CiAgICAgVUNoYXIgYnVmW3NpemVvZih1KSAqIDNdOwotICAgIFVDaGFyKiBlbmQgPSBi
dWYgKyBzaXplb2YoYnVmKSAvIHNpemVvZihVQ2hhcik7CisgICAgVUNoYXIqIGVuZCA9IGJ1ZiAr
IFdURl9BUlJBWV9MRU5HVEgoYnVmKTsKICAgICBVQ2hhciogcCA9IGVuZDsKIAogICAgIGlmICh1
ID09IDApCkBAIC0xNzAsNyArMTcwLDcgQEAgVVN0cmluZyBVU3RyaW5nOjpudW1iZXIodW5zaWdu
ZWQgdSkKIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKGxvbmcgbCkKIHsKICAgICBVQ2hhciBidWZb
MSArIHNpemVvZihsKSAqIDNdOwotICAgIFVDaGFyKiBlbmQgPSBidWYgKyBzaXplb2YoYnVmKSAv
IHNpemVvZihVQ2hhcik7CisgICAgVUNoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5HVEgo
YnVmKTsKICAgICBVQ2hhciogcCA9IGVuZDsKIAogICAgIGlmIChsID09IDApCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwIGIvSmF2YVNjcmlwdENvcmUvd3RmL0Rh
dGVNYXRoLmNwcAppbmRleCBkMDA1ODU5Li41NzNiZjA5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS93dGYvRGF0ZU1hdGguY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5j
cHAKQEAgLTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMgZG91YmxlIHBhcnNlRGF0ZUZyb21OdWxsVGVy
bWluYXRlZENoYXJhY3RlcnMoY29uc3QgY2hhciogZGF0ZVN0cmluZywgYm9vbAogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaGF2ZVRaID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW50KHNpemVvZihrbm93bl96b25lcykgLyBzaXpl
b2YoS25vd25ab25lKSk7IGkrKykgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKGtub3duX3pvbmVzKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKDAgPT0gc3RybmNhc2VjbXAoZGF0ZVN0cmluZywga25vd25fem9uZXNbaV0udHpOYW1lLCBz
dHJsZW4oa25vd25fem9uZXNbaV0udHpOYW1lKSkpIHsKICAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0ID0ga25vd25fem9uZXNbaV0udHpPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIGRhdGVT
dHJpbmcgKz0gc3RybGVuKGtub3duX3pvbmVzW2ldLnR6TmFtZSk7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmggYi9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGli
RXh0cmFzLmgKaW5kZXggZDU5NGMxNy4uZWQ3NzBmZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRMaWJFeHRy
YXMuaApAQCAtMTEyLDYgKzExMiw5IEBAIFR5cGVQdHIgcmVpbnRlcnByZXRfY2FzdF9wdHIoY29u
c3Qgdm9pZCogcHRyKQogICAgIGJpdHMgPSAoYml0cyAmIDB4MzMzMzMzMzMpICsgKChiaXRzID4+
IDIpICYgMHgzMzMzMzMzMyk7CiAgICAgcmV0dXJuICgoKGJpdHMgKyAoYml0cyA+PiA0KSkgJiAw
eEYwRjBGMEYpICogMHgxMDEwMTAxKSA+PiAyNDsKIH0KKworLy8gTWFjcm8gdGhhdCByZXR1cm5z
IGEgY29tcGlsZSB0aW1lIGNvbnN0YW50IHdpdGggdGhlIGxlbmd0aCBvZiBhbiBhcnJheSwgYnV0
IGdpdmVzIGFuIGVycm9yIGlmIHBhc3NlZCBhIG5vbi1hcnJheS4KK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHNpemVfdCBTaXplPiBjaGFyICgmQXJyYXlMZW5ndGhIZWxwZXJGdW5jdGlvbihUICgmKVtT
aXplXSkpW1NpemVdOworI2RlZmluZSBXVEZfQVJSQVlfTEVOR1RIKGFycmF5KSBzaXplb2YoOjpX
VEY6OkFycmF5TGVuZ3RoSGVscGVyRnVuY3Rpb24oYXJyYXkpKQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAo=
</data>
<flag name="review"
          id="61798"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="61799"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71698</attachid>
            <date>2010-10-24 15:30:34 -0700</date>
            <delta_ts>2010-10-24 16:20:21 -0700</delta_ts>
            <desc>JavaScriptCore part</desc>
            <filename>bug-32828g.patch</filename>
            <type>text/plain</type>
            <size>7650</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlOWVjODc1Li45YjM5YmJlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTAtMTAtMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgorCisgICAgICAgIEFkZCBXVEZfQVJS
QVlfTEVOR1RIIG1hY3JvIHRvIFdURgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzI4MjgKKworICAgICAgICBVbmlmeSB0aGUgZGlmZmVyZW50IGltcGxl
bWVudGF0aW9ucyBhbmQgdXNhZ2VzLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdExv
Y2FsZURhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBlbmRRdW90ZWRTdHJpbmcp
OgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6dG9KU09OKToKKyAgICAgICAgKEpTQzo6U3Ry
aW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvVVN0
cmluZy5jcHA6CisgICAgICAgIChKU0M6OlVTdHJpbmc6Om51bWJlcik6CisgICAgICAgICogd3Rm
L0RhdGVNYXRoLmNwcDoKKyAgICAgICAgKFdURjo6cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVk
Q2hhcmFjdGVycyk6CisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5oOgorCiAyMDEwLTEwLTI0
ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tmlrb2xhcyBaaW1tZXJtYW5uLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCmluZGV4IDE5YjcwYzIuLmU3YzkxOWEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE0MzcsNyArMTQzNyw3IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OnByaXZhdGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiBy
ZWdpc3RlckZpCiAgICAgICAgICNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
ICAgICAgICAgICAgICNkZWZpbmUgTElTVF9PUENPREVfTEFCRUwoaWQsIGxlbmd0aCkgJiZpZCwK
ICAgICAgICAgICAgICAgICBzdGF0aWMgT3Bjb2RlIGxhYmVsc1tdID0geyBGT1JfRUFDSF9PUENP
REVfSUQoTElTVF9PUENPREVfTEFCRUwpIH07Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplb2YobGFiZWxzKSAvIHNpemVvZihPcGNvZGUpOyArK2kpCisgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGxhYmVscyk7
ICsraSkKICAgICAgICAgICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IGxhYmVsc1tpXTsK
ICAgICAgICAgICAgICN1bmRlZiBMSVNUX09QQ09ERV9MQUJFTAogICAgICAgICAjZW5kaWYgLy8g
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcAppbmRleCA0OTgzZjI5Li5jNzU1ZWU5IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgSlND
ZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEV4ZWNTdGF0ZSogZXhlYywgRGF0ZUluc3RhbmNlKiwgZG91
YmxlIHRpbWVJbk1pbAogICAgIC8vIFdlIHRydW5jYXRlIHRoZSBzdHJpbmcgcmV0dXJuZWQgZnJv
bSBDRkRhdGVGb3JtYXR0ZXIgaWYgaXQncyBhYnN1cmRseSBsb25nICg+IDIwMCBjaGFyYWN0ZXJz
KS4KICAgICAvLyBUaGF0J3Mgbm90IGdyZWF0IGVycm9yIGhhbmRsaW5nLCBidXQgaXQganVzdCB3
b24ndCBoYXBwZW4gc28gaXQgZG9lc24ndCBtYXR0ZXIuCiAgICAgVUNoYXIgYnVmZmVyWzIwMF07
Ci0gICAgY29uc3Qgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IHNpemVvZihidWZmZXIpIC8gc2l6ZW9m
KGJ1ZmZlclswXSk7CisgICAgY29uc3Qgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IFdURl9BUlJBWV9M
RU5HVEgoYnVmZmVyKTsKICAgICBzaXplX3QgbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3Ry
aW5nKTsKICAgICBBU1NFUlQobGVuZ3RoIDw9IGJ1ZmZlckxlbmd0aCk7CiAgICAgaWYgKGxlbmd0
aCA+IGJ1ZmZlckxlbmd0aCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggN2IxZWIwNi4uNWE2Mzc3NCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50
aWZpZXIoZXhlYywgIkpTT04iKSwgbmV3IChleGVjKSBKU09OT2JqZWN0KHRoaXMsIEpTT05PYmpl
Y3Q6OmNyZWF0ZVN0cnVjdHVyZShkKCktPm9iamVjdFByb3RvdHlwZSkpLCBEb250RW51bSB8IERv
bnREZWxldGUpCiAgICAgfTsKIAotICAgIGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywg
c2l6ZW9mKHN0YXRpY0dsb2JhbHMpIC8gc2l6ZW9mKEdsb2JhbFByb3BlcnR5SW5mbykpOworICAg
IGFkZFN0YXRpY0dsb2JhbHMoc3RhdGljR2xvYmFscywgV1RGX0FSUkFZX0xFTkdUSChzdGF0aWNH
bG9iYWxzKSk7CiAKICAgICAvLyBTZXQgZ2xvYmFsIGZ1bmN0aW9ucy4KIApkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggMDc5NDE4OS4uYmJkY2JkNCAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBTdHJpbmdp
Zmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBV
U3RyaW5nJiB2YWwKICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNb
XSA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKICAgICAgICAgICAgICAgICBVQ2hhciBjaCA9IGRhdGFb
aV07CiAgICAgICAgICAgICAgICAgVUNoYXIgaGV4W10gPSB7ICdcXCcsICd1JywgaGV4RGlnaXRz
WyhjaCA+PiAxMikgJiAweEZdLCBoZXhEaWdpdHNbKGNoID4+IDgpICYgMHhGXSwgaGV4RGlnaXRz
WyhjaCA+PiA0KSAmIDB4Rl0sIGhleERpZ2l0c1tjaCAmIDB4Rl0gfTsKLSAgICAgICAgICAgICAg
ICBidWlsZGVyLmFwcGVuZChoZXgsIHNpemVvZihoZXgpIC8gc2l6ZW9mKFVDaGFyKSk7CisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoaGV4LCBXVEZfQVJSQVlfTEVOR1RIKGhleCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMzU3LDcgKzM1Nyw3
IEBAIGlubGluZSBKU1ZhbHVlIFN0cmluZ2lmaWVyOjp0b0pTT04oSlNWYWx1ZSB2YWx1ZSwgY29u
c3QgUHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DCiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAg
IEpTVmFsdWUgbGlzdFtdID0geyBwcm9wZXJ0eU5hbWUudmFsdWUobV9leGVjKSB9OwotICAgIEFy
Z0xpc3QgYXJncyhsaXN0LCBzaXplb2YobGlzdCkgLyBzaXplb2YoSlNWYWx1ZSkpOworICAgIEFy
Z0xpc3QgYXJncyhsaXN0LCBXVEZfQVJSQVlfTEVOR1RIKGxpc3QpKTsKICAgICByZXR1cm4gY2Fs
bChtX2V4ZWMsIG9iamVjdCwgY2FsbFR5cGUsIGNhbGxEYXRhLCB2YWx1ZSwgYXJncyk7CiB9CiAK
QEAgLTM3MSw3ICszNzEsNyBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lm
aWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJgogICAgIC8vIENhbGwg
dGhlIHJlcGxhY2VyIGZ1bmN0aW9uLgogICAgIGlmIChtX3JlcGxhY2VyQ2FsbFR5cGUgIT0gQ2Fs
bFR5cGVOb25lKSB7CiAgICAgICAgIEpTVmFsdWUgbGlzdFtdID0geyBwcm9wZXJ0eU5hbWUudmFs
dWUobV9leGVjKSwgdmFsdWUgfTsKLSAgICAgICAgQXJnTGlzdCBhcmdzKGxpc3QsIHNpemVvZihs
aXN0KSAvIHNpemVvZihKU1ZhbHVlKSk7CisgICAgICAgIEFyZ0xpc3QgYXJncyhsaXN0LCBXVEZf
QVJSQVlfTEVOR1RIKGxpc3QpKTsKICAgICAgICAgdmFsdWUgPSBjYWxsKG1fZXhlYywgbV9yZXBs
YWNlciwgbV9yZXBsYWNlckNhbGxUeXBlLCBtX3JlcGxhY2VyQ2FsbERhdGEsIGhvbGRlciwgYXJn
cyk7CiAgICAgICAgIGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZ2lmeUZhaWxlZDsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VVN0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VTdHJpbmcuY3BwCmluZGV4IDE3
Y2Q5YjYuLmIzY2Q0MGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVVN0cmlu
Zy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VU3RyaW5nLmNwcApAQCAtOTAsNyAr
OTAsNyBAQCBVU3RyaW5nOjpVU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpCiBVU3RyaW5n
IFVTdHJpbmc6Om51bWJlcihpbnQgaSkKIHsKICAgICBVQ2hhciBidWZbMSArIHNpemVvZihpKSAq
IDNdOwotICAgIFVDaGFyKiBlbmQgPSBidWYgKyBzaXplb2YoYnVmKSAvIHNpemVvZihVQ2hhcik7
CisgICAgVUNoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5HVEgoYnVmKTsKICAgICBVQ2hh
ciogcCA9IGVuZDsKIAogICAgIGlmIChpID09IDApCkBAIC0xMTksNyArMTE5LDcgQEAgVVN0cmlu
ZyBVU3RyaW5nOjpudW1iZXIoaW50IGkpCiBVU3RyaW5nIFVTdHJpbmc6Om51bWJlcihsb25nIGxv
bmcgaSkKIHsKICAgICBVQ2hhciBidWZbMSArIHNpemVvZihpKSAqIDNdOwotICAgIFVDaGFyKiBl
bmQgPSBidWYgKyBzaXplb2YoYnVmKSAvIHNpemVvZihVQ2hhcik7CisgICAgVUNoYXIqIGVuZCA9
IGJ1ZiArIFdURl9BUlJBWV9MRU5HVEgoYnVmKTsKICAgICBVQ2hhciogcCA9IGVuZDsKIAogICAg
IGlmIChpID09IDApCkBAIC0xNTIsNyArMTUyLDcgQEAgVVN0cmluZyBVU3RyaW5nOjpudW1iZXIo
bG9uZyBsb25nIGkpCiBVU3RyaW5nIFVTdHJpbmc6Om51bWJlcih1bnNpZ25lZCB1KQogewogICAg
IFVDaGFyIGJ1ZltzaXplb2YodSkgKiAzXTsKLSAgICBVQ2hhciogZW5kID0gYnVmICsgc2l6ZW9m
KGJ1ZikgLyBzaXplb2YoVUNoYXIpOworICAgIFVDaGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlf
TEVOR1RIKGJ1Zik7CiAgICAgVUNoYXIqIHAgPSBlbmQ7CiAKICAgICBpZiAodSA9PSAwKQpAQCAt
MTcwLDcgKzE3MCw3IEBAIFVTdHJpbmcgVVN0cmluZzo6bnVtYmVyKHVuc2lnbmVkIHUpCiBVU3Ry
aW5nIFVTdHJpbmc6Om51bWJlcihsb25nIGwpCiB7CiAgICAgVUNoYXIgYnVmWzEgKyBzaXplb2Yo
bCkgKiAzXTsKLSAgICBVQ2hhciogZW5kID0gYnVmICsgc2l6ZW9mKGJ1ZikgLyBzaXplb2YoVUNo
YXIpOworICAgIFVDaGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlfTEVOR1RIKGJ1Zik7CiAgICAg
VUNoYXIqIHAgPSBlbmQ7CiAKICAgICBpZiAobCA9PSAwKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvd3RmL0RhdGVNYXRoLmNwcCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5jcHAK
aW5kZXggZDAwNTg1OS4uNWU3YTgxNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0Rh
dGVNYXRoLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguY3BwCkBAIC05NTAs
NyArOTUwLDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFy
YWN0ZXJzKGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcsIGJvb2wKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGhhdmVUWiA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGludChzaXplb2Yoa25vd25fem9uZXMpIC8gc2l6ZW9mKEtub3duWm9u
ZSkpOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZ
X0xFTkdUSChrbm93bl96b25lcyk7ICsraSkgewogICAgICAgICAgICAgICAgIGlmICgwID09IHN0
cm5jYXNlY21wKGRhdGVTdHJpbmcsIGtub3duX3pvbmVzW2ldLnR6TmFtZSwgc3RybGVuKGtub3du
X3pvbmVzW2ldLnR6TmFtZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IGtub3du
X3pvbmVzW2ldLnR6T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBkYXRlU3RyaW5nICs9IHN0
cmxlbihrbm93bl96b25lc1tpXS50ek5hbWUpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
d3RmL1N0ZExpYkV4dHJhcy5oIGIvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCmlu
ZGV4IDZlNzljNzguLmZkN2FkYTIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRM
aWJFeHRyYXMuaAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTEx
MCw2ICsxMTAsMTAgQEAgaW5saW5lIHNpemVfdCBiaXRDb3VudCh1bnNpZ25lZCBiaXRzKQogICAg
IHJldHVybiAoKChiaXRzICsgKGJpdHMgPj4gNCkpICYgMHhGMEYwRjBGKSAqIDB4MTAxMDEwMSkg
Pj4gMjQ7CiB9CiAKKy8vIE1hY3JvIHRoYXQgcmV0dXJucyBhIGNvbXBpbGUgdGltZSBjb25zdGFu
dCB3aXRoIHRoZSBsZW5ndGggb2YgYW4gYXJyYXksIGJ1dCBnaXZlcyBhbiBlcnJvciBpZiBwYXNz
ZWQgYSBub24tYXJyYXkuCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgU2l6ZT4gY2hhciAo
JkFycmF5TGVuZ3RoSGVscGVyRnVuY3Rpb24oVCAoJilbU2l6ZV0pKVtTaXplXTsKKyNkZWZpbmUg
V1RGX0FSUkFZX0xFTkdUSChhcnJheSkgc2l6ZW9mKDo6V1RGOjpBcnJheUxlbmd0aEhlbHBlckZ1
bmN0aW9uKGFycmF5KSkKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBXVEZfU3Rk
TGliRXh0cmFzX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>