<?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>17017</bug_id>
          
          <creation_ts>2008-01-26 03:13:54 -0800</creation_ts>
          <short_desc>Remove KJS::UChar</short_desc>
          <delta_ts>2008-03-10 15:08:26 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>darin</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>68279</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 03:13:54 -0800</bug_when>
    <thetext>Remove KJS::UChar

Darin and I talked about this long ago.  No need for a real class.  This also gets rid of the silly KJS::UChar vs. ::UChar confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68280</commentid>
    <comment_count>1</comment_count>
      <attachid>18703</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 03:19:29 -0800</bug_when>
    <thetext>Created attachment 18703
Send KJS::UChar out to pasture

 JavaScriptCore/API/JSStringRef.cpp                 |    4 +-
 JavaScriptCore/JavaScriptCore.exp                  |   10 +-
 .../JavaScriptCore.xcodeproj/project.pbxproj       |    1 -
 JavaScriptCore/bindings/c/c_utility.cpp            |    2 +-
 JavaScriptCore/kjs/Parser.h                        |    2 -
 JavaScriptCore/kjs/function.cpp                    |   32 +-
 JavaScriptCore/kjs/function_object.cpp             |    4 +-
 JavaScriptCore/kjs/identifier.cpp                  |    6 +-
 JavaScriptCore/kjs/interpreter.h                   |    2 -
 JavaScriptCore/kjs/lexer.cpp                       |   29 +-
 JavaScriptCore/kjs/lookup.cpp                      |    2 +-
 JavaScriptCore/kjs/nodes2string.cpp                |    2 +-
 JavaScriptCore/kjs/string_object.cpp               |    6 +-
 JavaScriptCore/kjs/ustring.cpp                     |   30 +-
 JavaScriptCore/kjs/ustring.h                       |   62 +-
 JavaScriptGlue/Configurations/Base.xcconfig        |    2 +-
 .../ForwardingHeaders/wtf/unicode/Unicode.h        |    1 +
 .../ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h |    1 +
 JavaScriptGlue/icu/LICENSE                         |   25 +
 JavaScriptGlue/icu/README                          |    4 +
 JavaScriptGlue/icu/unicode/platform.h              |  267 ++
 JavaScriptGlue/icu/unicode/putil.h                 |  180 ++
 JavaScriptGlue/icu/unicode/uchar.h                 | 2798 ++++++++++++++++++++
 JavaScriptGlue/icu/unicode/uconfig.h               |  186 ++
 JavaScriptGlue/icu/unicode/uiter.h                 |  707 +++++
 JavaScriptGlue/icu/unicode/umachine.h              |  371 +++
 JavaScriptGlue/icu/unicode/urename.h               | 1468 ++++++++++
 JavaScriptGlue/icu/unicode/ustring.h               | 1320 +++++++++
 JavaScriptGlue/icu/unicode/utf.h                   |  221 ++
 JavaScriptGlue/icu/unicode/utf16.h                 |  605 +++++
 JavaScriptGlue/icu/unicode/utf8.h                  |  627 +++++
 JavaScriptGlue/icu/unicode/utypes.h                |  745 ++++++
 JavaScriptGlue/icu/unicode/uversion.h              |  216 ++
 WebCore/WebCore.xcodeproj/project.pbxproj          |    1 -
 WebCore/bindings/js/kjs_proxy.cpp                  |    2 +-
 WebCore/bindings/js/kjs_window.cpp                 |    4 +-
 WebCore/platform/DeprecatedString.cpp              |    4 +-
 WebCore/platform/text/String.cpp                   |    4 +-
 38 files changed, 9816 insertions(+), 137 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68281</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 03:20:16 -0800</bug_when>
    <thetext>I will note that this patch is *entirely* the damn ICU headers :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68282</commentid>
    <comment_count>3</comment_count>
      <attachid>18703</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 03:26:06 -0800</bug_when>
    <thetext>Comment on attachment 18703
Send KJS::UChar out to pasture

I&apos;m going to upload a split patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68283</commentid>
    <comment_count>4</comment_count>
      <attachid>18704</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 03:26:25 -0800</bug_when>
    <thetext>Created attachment 18704
Add ICU and appropriate Unicode forwarding headers to JSG (ENTIRELY ICU headers)

 JavaScriptGlue/Configurations/Base.xcconfig        |    2 +-
 .../ForwardingHeaders/wtf/unicode/Unicode.h        |    1 +
 .../ForwardingHeaders/wtf/unicode/icu/UnicodeIcu.h |    1 +
 JavaScriptGlue/icu/LICENSE                         |   25 +
 JavaScriptGlue/icu/README                          |    4 +
 JavaScriptGlue/icu/unicode/platform.h              |  267 ++
 JavaScriptGlue/icu/unicode/putil.h                 |  180 ++
 JavaScriptGlue/icu/unicode/uchar.h                 | 2798 ++++++++++++++++++++
 JavaScriptGlue/icu/unicode/uconfig.h               |  186 ++
 JavaScriptGlue/icu/unicode/uiter.h                 |  707 +++++
 JavaScriptGlue/icu/unicode/umachine.h              |  371 +++
 JavaScriptGlue/icu/unicode/urename.h               | 1468 ++++++++++
 JavaScriptGlue/icu/unicode/ustring.h               | 1320 +++++++++
 JavaScriptGlue/icu/unicode/utf.h                   |  221 ++
 JavaScriptGlue/icu/unicode/utf16.h                 |  605 +++++
 JavaScriptGlue/icu/unicode/utf8.h                  |  627 +++++
 JavaScriptGlue/icu/unicode/utypes.h                |  745 ++++++
 JavaScriptGlue/icu/unicode/uversion.h              |  216 ++
 18 files changed, 9743 insertions(+), 1 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68284</commentid>
    <comment_count>5</comment_count>
      <attachid>18705</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 03:26:27 -0800</bug_when>
    <thetext>Created attachment 18705
send KJS::UChar out to pasture (minus ICU headers)

 JavaScriptCore/API/JSStringRef.cpp      |    4 +-
 JavaScriptCore/JavaScriptCore.exp       |   10 ++--
 JavaScriptCore/bindings/c/c_utility.cpp |    2 +-
 JavaScriptCore/kjs/Parser.h             |    2 -
 JavaScriptCore/kjs/function.cpp         |   32 ++++++++--------
 JavaScriptCore/kjs/function_object.cpp  |    4 +-
 JavaScriptCore/kjs/identifier.cpp       |    6 +-
 JavaScriptCore/kjs/interpreter.h        |    2 -
 JavaScriptCore/kjs/lexer.cpp            |   29 +++++++-------
 JavaScriptCore/kjs/lookup.cpp           |    2 +-
 JavaScriptCore/kjs/nodes2string.cpp     |    2 +-
 JavaScriptCore/kjs/string_object.cpp    |    6 +-
 JavaScriptCore/kjs/ustring.cpp          |   30 +++++++-------
 JavaScriptCore/kjs/ustring.h            |   62 +------------------------------
 WebCore/bindings/js/kjs_proxy.cpp       |    2 +-
 WebCore/bindings/js/kjs_window.cpp      |    4 +-
 WebCore/platform/DeprecatedString.cpp   |    4 +-
 WebCore/platform/text/String.cpp        |    4 +-
 18 files changed, 73 insertions(+), 134 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68296</commentid>
    <comment_count>6</comment_count>
      <attachid>18705</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-26 08:18:28 -0800</bug_when>
    <thetext>Comment on attachment 18705
send KJS::UChar out to pasture (minus ICU headers)

Generally looks good.

+    return toRef(UString(reinterpret_cast&lt;const UChar*&gt;(chars), static_cast&lt;int&gt;(numChars)).rep()-&gt;ref());

+    return toRef(UString(reinterpret_cast&lt;UChar*&gt;(buffer.data()), p - buffer.data()).rep()-&gt;ref());

+  const ::UChar* d = reinterpret_cast&lt;const ::UChar*&gt;(&amp;data()[0]);

+    Completion comp = Interpreter::evaluate(exec, filename, baseLine, reinterpret_cast&lt;const UChar*&gt;(str.characters()), str.length(), thisNode);

+    return Identifier(reinterpret_cast&lt;const UChar*&gt;(m_impl-&gt;characters()), m_impl-&gt;length());

+    return UString(reinterpret_cast&lt;const UChar*&gt;(m_impl-&gt;characters()), m_impl-&gt;length());

No typecast needed at all at these call sites now.

There&apos;s a small but potentially slightly dangerous difference between KJS::UChar and the integer type UChar typedef, and that&apos;s the behavior of converting a char into UChar. This will silently behave differently, sign extending rather than padding with zeroes. Here are the three callsites that are affected:

From CStringTranslator::translate:

        for (size_t i = 0; i != length; i++)
            d[i] = c[i];

This needs a typecast to &quot;unsigned char&quot; on the right side of the assignment statement. Unless we guarantee we only use this on ASCII strings.

From SourceStream&amp; SourceStream::operator&lt;&lt;(char c):

    UChar ch(c);

This also needs a typecast to &quot;unsigned char&quot;. It&apos;s probably a little less dangerous than the above because we probably use this operator only with ASCII characters, but I&apos;m not sure.

From UString::append(const char*), in 3 different places:

        for (int i = 0; i &lt; tSize; ++i)
            d[thisSize + i] = t[i];

Same issue, same explanation -- safe if only used on ASCII, or we can add a cast to preserve the old behavior.

I&apos;m going to say review- because of this issue; otherwise good patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68297</commentid>
    <comment_count>7</comment_count>
      <attachid>18704</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-26 08:20:51 -0800</bug_when>
    <thetext>Comment on attachment 18704
Add ICU and appropriate Unicode forwarding headers to JSG (ENTIRELY ICU headers)

r=me

But I suggest using svn copy on the whole icu directory from JavaScriptCore instead of doing the individual files like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68315</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 13:48:47 -0800</bug_when>
    <thetext>I actually copied 3 fewer files than the full ICU directory. :) But I agree, that would be cleaner.  I&apos;ll do that.

The sign-extend issue calls the whole patch into question!  Since the goal was not to make it easier to hack on WebKit (less confusion) rather than harder (dangerous to convert from char to UChar)!

Hum...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68316</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 13:50:11 -0800</bug_when>
    <thetext>s/not//</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68323</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-26 16:01:15 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; The sign-extend issue calls the whole patch into question!  Since the goal was
&gt; not to make it easier to hack on WebKit (less confusion) rather than harder
&gt; (dangerous to convert from char to UChar)!

Nah, it&apos;s not all that important. It&apos;s not super-helpful to have char convert to UChar by 0-filling any more than by sign extending. It&apos;s just a subtle change at the switchover time. In the long run, it&apos;s find to have the single integral type.

The safest way to do things would be to change KJS::UChar to remove the special char-conversion feature, then do the switchover in a separate step.

I thought of one other difference between UChar and KJS::UChar. The latter default constructs to 0 even in cases where the raw type constructs uninitialized. These are the only things to worry about when switching over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68324</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 16:08:38 -0800</bug_when>
    <thetext>I think that&apos;s an excellent idea.

I&apos;ll split the patch out into stages.  One which makes UChar(char*) and UChar() private, and a second which does the removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68325</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-26 16:09:20 -0800</bug_when>
    <thetext>UChar(char) rather. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68516</commentid>
    <comment_count>13</comment_count>
      <attachid>18704</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-28 18:06:39 -0800</bug_when>
    <thetext>Comment on attachment 18704
Add ICU and appropriate Unicode forwarding headers to JSG (ENTIRELY ICU headers)

Landed this patch (using SVN cp).  Working on the other pieces still.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68524</commentid>
    <comment_count>14</comment_count>
      <attachid>18753</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-28 18:58:03 -0800</bug_when>
    <thetext>Created attachment 18753
Corrections for darin

 JavaScriptCore/API/JSStringRef.cpp           |    8 ++++----
 JavaScriptCore/API/JSStringRefCF.cpp         |    2 +-
 JavaScriptCore/bindings/objc/objc_utility.mm |    2 +-
 JavaScriptCore/kjs/identifier.cpp            |    2 +-
 JavaScriptCore/kjs/nodes2string.cpp          |    3 ++-
 JavaScriptCore/kjs/string_object.cpp         |    8 ++++----
 JavaScriptCore/kjs/ustring.cpp               |   14 +++++++-------
 WebCore/bindings/js/kjs_proxy.cpp            |    2 +-
 WebCore/dom/Document.cpp                     |    4 ++--
 WebCore/html/HTMLFormElement.cpp             |    2 +-
 WebCore/platform/text/AtomicString.cpp       |    4 ++--
 WebCore/platform/text/String.cpp             |    8 ++++----
 WebCore/platform/text/TextCodecICU.cpp       |    2 +-
 13 files changed, 31 insertions(+), 30 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68525</commentid>
    <comment_count>15</comment_count>
      <attachid>18754</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-28 19:01:13 -0800</bug_when>
    <thetext>Created attachment 18754
Combined patch for darin

 JavaScriptCore/API/JSStringRef.cpp           |    8 ++--
 JavaScriptCore/API/JSStringRefCF.cpp         |    2 +-
 JavaScriptCore/JavaScriptCore.exp            |   10 ++--
 JavaScriptCore/bindings/c/c_utility.cpp      |    2 +-
 JavaScriptCore/bindings/objc/objc_utility.mm |    2 +-
 JavaScriptCore/kjs/Parser.h                  |    2 -
 JavaScriptCore/kjs/function.cpp              |   32 +++++++-------
 JavaScriptCore/kjs/function_object.cpp       |    4 +-
 JavaScriptCore/kjs/identifier.cpp            |    8 ++--
 JavaScriptCore/kjs/interpreter.h             |    2 -
 JavaScriptCore/kjs/lexer.cpp                 |   29 ++++++------
 JavaScriptCore/kjs/lookup.cpp                |    2 +-
 JavaScriptCore/kjs/nodes2string.cpp          |    5 +-
 JavaScriptCore/kjs/string_object.cpp         |   14 +++---
 JavaScriptCore/kjs/ustring.cpp               |   40 ++++++++--------
 JavaScriptCore/kjs/ustring.h                 |   62 +-------------------------
 WebCore/bindings/js/kjs_proxy.cpp            |    2 +-
 WebCore/bindings/js/kjs_window.cpp           |    4 +-
 WebCore/dom/Document.cpp                     |    4 +-
 WebCore/html/HTMLFormElement.cpp             |    2 +-
 WebCore/platform/DeprecatedString.cpp        |    4 +-
 WebCore/platform/text/AtomicString.cpp       |    4 +-
 WebCore/platform/text/String.cpp             |    8 ++--
 WebCore/platform/text/TextCodecICU.cpp       |    2 +-
 24 files changed, 97 insertions(+), 157 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68688</commentid>
    <comment_count>16</comment_count>
      <attachid>18754</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-29 12:56:05 -0800</bug_when>
    <thetext>Comment on attachment 18754
Combined patch for darin

 552       if (charLen &amp;&amp; (u == 0 || u &gt;= 128 || !strchr(do_not_unescape, static_cast&lt;unsigned char&gt;(u)))) {

There&apos;s no need for a cast here. strchr takes an int and the earlier code on the line already checks that it&apos;s a value in the range 1-127, so a normal conversion to int will do.

 837             if (Lexer::isHexDigit((c + 2)[0]) &amp;&amp; Lexer::isHexDigit((c + 3)[0]) &amp;&amp; Lexer::isHexDigit((c + 4)[0]) &amp;&amp; Lexer::isHexDigit((c + 5)[0])) {
 838                 u = Lexer::convertUnicode((c + 2)[0], (c + 3)[0], (c + 4)[0], (c + 5)[0]);

Really should be c[2] instead of (c + 2)[0]. The [0] is a good trick to do this with a global replace, but it&apos;s a little ugly.

 116             d[i] = static_cast&lt;unsigned char&gt;(c[i]); // static_cast to unsigned char to avoid erroneous sign-extend

The comment says the sign extend here would be &quot;erroneous&quot;, but really I think that this function is only called on pure ASCII strings. While changing 128-255 into U+0080 to U+00FF is arguably better than changing them to U+FF80 to U+FFFF, I think what&apos;s really going on here is that it&apos;s never going to matter. I think a better comment would simply state that we use unsigned char because we want to zero-extend rather than sign extending. Note that cross-platform, plain old &quot;char&quot; can be *either* unsigned or signed.

 97 void Lexer::setCode(int startingLineNumber, const UChar *c, unsigned int len)

Surprised you didn&apos;t move the star.

266212     UString &amp;append(const char *);
267213     UString &amp;append(unsigned short);
268214     UString &amp;append(char c) { return append(static_cast&lt;unsigned short&gt;(static_cast&lt;unsigned char&gt;(c))); }
269      UString &amp;append(UChar c) { return append(c.uc); }

I think we need the append(unsigned short) to be changed to be an append(UChar), because on Windows those two types aren&apos;t the same. As-is I think this might break the Windows build.

r=me on this as-is, but please make sure you don&apos;t break the Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72383</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-02-29 14:23:09 -0800</bug_when>
    <thetext>Eric, this patch has been sitting around in the commit queue for over a month now.  Do you intend to land it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72384</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-29 14:35:42 -0800</bug_when>
    <thetext>Eric has been a busy little boy @ work.  However my big project ended on Wed, so I&apos;ll look at making time to land this this afternoon. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72754</commentid>
    <comment_count>19</comment_count>
      <attachid>19533</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-04 16:50:02 -0800</bug_when>
    <thetext>Created attachment 19533
Fix patch to compile on TOT, change ::UChar -&gt; UChar

 JavaScriptCore/kjs/interpreter.h                   |    2 ++
 JavaScriptCore/pcre/pcre.h                         |    4 ++--
 .../bindings/js/JSCSSStyleDeclarationCustom.cpp    |   12 ++++++------
 WebCore/bindings/js/JSSVGPODTypeWrapper.h          |    2 +-
 WebCore/svg/SVGAnimatedTemplate.h                  |    2 +-
 5 files changed, 12 insertions(+), 10 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72755</commentid>
    <comment_count>20</comment_count>
      <attachid>19534</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-04 16:50:05 -0800</bug_when>
    <thetext>Created attachment 19534
Fix per darin&apos;s suggestions

 JavaScriptCore/bindings/c/c_utility.cpp   |    6 +++---
 JavaScriptCore/kjs/function.cpp           |   12 ++++++------
 JavaScriptCore/kjs/identifier.cpp         |    2 +-
 JavaScriptCore/kjs/lexer.cpp              |    2 +-
 JavaScriptCore/kjs/nodes2string.cpp       |    2 +-
 JavaScriptCore/kjs/regexp.cpp             |    6 +++---
 JavaScriptCore/kjs/string_object.cpp      |   24 ++++++++++++------------
 JavaScriptCore/kjs/ustring.cpp            |   20 ++++++++++----------
 JavaScriptCore/kjs/ustring.h              |   12 ++++++------
 WebCore/bindings/js/JSSVGPODTypeWrapper.h |    2 +-
 WebCore/svg/SVGAnimatedTemplate.h         |    2 +-
 11 files changed, 45 insertions(+), 45 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72756</commentid>
    <comment_count>21</comment_count>
      <attachid>19535</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-04 16:56:00 -0800</bug_when>
    <thetext>Created attachment 19535
Updated combined patch for removing KJS::UChar

 JavaScriptCore/API/JSStringRef.cpp                 |    8 +-
 JavaScriptCore/API/JSStringRefCF.cpp               |    2 +-
 JavaScriptCore/JavaScriptCore.exp                  |   10 ++--
 JavaScriptCore/bindings/c/c_utility.cpp            |    8 +-
 JavaScriptCore/bindings/objc/objc_utility.mm       |    2 +-
 JavaScriptCore/kjs/Parser.h                        |    2 -
 JavaScriptCore/kjs/function.cpp                    |   34 +++++-----
 JavaScriptCore/kjs/function_object.cpp             |    4 +-
 JavaScriptCore/kjs/identifier.cpp                  |    8 +-
 JavaScriptCore/kjs/interpreter.h                   |    4 +-
 JavaScriptCore/kjs/lexer.cpp                       |   29 ++++----
 JavaScriptCore/kjs/lookup.cpp                      |    2 +-
 JavaScriptCore/kjs/nodes2string.cpp                |    5 +-
 JavaScriptCore/kjs/regexp.cpp                      |    6 +-
 JavaScriptCore/kjs/string_object.cpp               |   38 +++++-----
 JavaScriptCore/kjs/ustring.cpp                     |   48 ++++++------
 JavaScriptCore/kjs/ustring.h                       |   74 ++-----------------
 JavaScriptCore/pcre/pcre.h                         |    4 +-
 .../bindings/js/JSCSSStyleDeclarationCustom.cpp    |   12 ++--
 WebCore/bindings/js/JSSVGPODTypeWrapper.h          |    2 +-
 WebCore/bindings/js/kjs_proxy.cpp                  |    2 +-
 WebCore/bindings/js/kjs_window.cpp                 |    4 +-
 WebCore/dom/Document.cpp                           |    4 +-
 WebCore/platform/text/AtomicString.cpp             |    4 +-
 WebCore/platform/text/String.cpp                   |    8 +-
 WebCore/platform/text/TextCodecICU.cpp             |    2 +-
 WebCore/svg/SVGAnimatedTemplate.h                  |    2 +-
 27 files changed, 135 insertions(+), 193 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73015</commentid>
    <comment_count>22</comment_count>
      <attachid>19535</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-03-07 12:03:24 -0800</bug_when>
    <thetext>Comment on attachment 19535
Updated combined patch for removing KJS::UChar

 213     UString&amp; append(const UChar);

 807 UString&amp; UString::append(const UChar c)

There&apos;s no reason for or value to having this &quot;const&quot; here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73016</commentid>
    <comment_count>23</comment_count>
      <attachid>19533</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-03-07 12:09:59 -0800</bug_when>
    <thetext>Comment on attachment 19533
Fix patch to compile on TOT, change ::UChar -&gt; UChar

Clearing review flag on this, with the understanding that this is included in the combined patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73017</commentid>
    <comment_count>24</comment_count>
      <attachid>19534</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-03-07 12:10:27 -0800</bug_when>
    <thetext>Comment on attachment 19534
Fix per darin&apos;s suggestions

Clearing review flag on this, with the understanding that this is included in the combined patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73206</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-03-10 09:32:43 -0700</bug_when>
    <thetext>I tried to apply this and land it, but because it&apos;s a git patch and not a Subversion patch, I couldn&apos;t use the --merge option of svn-apply and there were a few conflicts. So I think Eric is going to have to land this himself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73248</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-03-10 15:08:26 -0700</bug_when>
    <thetext>r30942</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18703</attachid>
            <date>2008-01-26 03:19:29 -0800</date>
            <delta_ts>2008-01-26 03:26:06 -0800</delta_ts>
            <desc>Send KJS::UChar out to pasture</desc>
            <filename>Send-KJS-UChar-out-to-pasture.patch</filename>
            <type>text/plain</type>
            <size>403807</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZTE0YzE4OTE5YTg4NjY2M2ZjZmNlY2VkZGVjY2RhMDg3MTQ3YjQ2OQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcCBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0
cmluZ1JlZi5jcHAKaW5kZXggOWEzMDdkMC4uNjRhMGRlMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJp
bmdSZWYuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7
CiBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGNvbnN0IEpTQ2hhciog
Y2hhcnMsIHNpemVfdCBudW1DaGFycykKIHsKICAgICBKU0xvY2sgbG9jazsKLSAgICByZXR1cm4g
dG9SZWYoVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6VUNoYXIqPihjaGFycyks
IHN0YXRpY19jYXN0PGludD4obnVtQ2hhcnMpKS5yZXAoKS0+cmVmKCkpOworICAgIHJldHVybiB0
b1JlZihVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihjaGFycyksIHN0YXRp
Y19jYXN0PGludD4obnVtQ2hhcnMpKS5yZXAoKS0+cmVmKCkpOwogfQogCiBKU1N0cmluZ1JlZiBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCkBAIC01Nyw3
ICs1Nyw3IEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0
IGNoYXIqIHN0cmluZykKICAgICBpZiAoY29udmVyc2lvbk9LICE9IGNvbnZlcnRVVEY4VG9VVEYx
Nigmc3RyaW5nLCBzdHJpbmcgKyBsZW5ndGgsICZwLCBwICsgbGVuZ3RoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gdG9SZWYoVVN0cmluZyhyZWludGVycHJldF9jYXN0PEtKUzo6
VUNoYXIqPihidWZmZXIuZGF0YSgpKSwgcCAtIGJ1ZmZlci5kYXRhKCkpLnJlcCgpLT5yZWYoKSk7
CisgICAgcmV0dXJuIHRvUmVmKFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZl
ci5kYXRhKCkpLCBwIC0gYnVmZmVyLmRhdGEoKSkucmVwKCktPnJlZigpKTsKIH0KIAogSlNTdHJp
bmdSZWYgSlNTdHJpbmdSZXRhaW4oSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCmluZGV4IGU3ZDVkNWYuLjAwNTI0YzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAKQEAgLTEwNywxNSArMTA3LDE1IEBAIF9fWjE1anNSZWdFeHBFeGVjdXRlUEs4SlNSZWdF
eHBQS3RpaVBpaQogX19aMjNfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdFA0X05QUFBOM0tKUzhKU09i
amVjdEVOM1dURjEwUGFzc1JlZlB0cklOUzFfOEJpbmRpbmdzMTBSb290T2JqZWN0RUVFCiBfX1oy
NV9OUE5fQ3JlYXRlTm9TY3JpcHRPYmplY3R2CiBfX1pOM0tKUzEwSWRlbnRpZmllcjExYWRkU2xv
d0Nhc2VFUE5TXzdVU3RyaW5nM1JlcEUKLV9fWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQS05TXzVV
Q2hhckVpCitfX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEt0aQogX19aTjNLSlMxMElkZW50aWZp
ZXIzYWRkRVBLYwogX19aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUEtOU183VVN0cmluZzNSZXBF
UEtjCiBfX1pOM0tKUzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU185RXJyb3JUeXBlRQog
X19aTjNLSlMxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUVQS2MKLV9f
Wk4zS0pTMTFJbnRlcnByZXRlcjExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0
cmluZ0VpUEtOU181VUNoYXJFaQorX19aTjNLSlMxMUludGVycHJldGVyMTFjaGVja1N5bnRheEVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRWlQS3RpCiBfX1pOM0tKUzExSW50ZXJwcmV0ZXIy
MXNob3VsZFByaW50RXhjZXB0aW9uc0V2CiBfX1pOM0tKUzExSW50ZXJwcmV0ZXIyNHNldFNob3Vs
ZFByaW50RXhjZXB0aW9uc0ViCi1fX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUE5TXzlF
eGVjU3RhdGVFUktOU183VVN0cmluZ0VpUEtOU181VUNoYXJFaVBOU183SlNWYWx1ZUUKK19fWk4z
S0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRWlQ
S3RpUE5TXzdKU1ZhbHVlRQogX19aTjNLSlMxMUludGVycHJldGVyOGV2YWx1YXRlRVBOU185RXhl
Y1N0YXRlRVJLTlNfN1VTdHJpbmdFaVM1X1BOU183SlNWYWx1ZUUKIF9fWk4zS0pTMTFKU0ltbWVk
aWF0ZTR0eXBlRVBLTlNfN0pTVmFsdWVFCiBfX1pOM0tKUzExSlNJbW1lZGlhdGU4dG9PYmplY3RF
UEtOU183SlNWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUUKQEAgLTE3MywxMyArMTczLDEzIEBAIF9fWk4z
S0pTNkpTTG9jazRsb2NrRXYKIF9fWk4zS0pTNkpTTG9jazZ1bmxvY2tFdgogX19aTjNLSlM2SlNM
b2NrOWxvY2tDb3VudEV2CiBfX1pOM0tKUzZMb29rdXA5ZmluZEVudHJ5RVBLTlNfOUhhc2hUYWJs
ZUVSS05TXzEwSWRlbnRpZmllckUKLV9fWk4zS0pTNlBhcnNlcjVwYXJzZUVpUEtOU181VUNoYXJF
alBpUzRfUE5TXzdVU3RyaW5nRQorX19aTjNLSlM2UGFyc2VyNXBhcnNlRWlQS3RqUGlTM19QTlNf
N1VTdHJpbmdFCiBfX1pOM0tKUzZwYXJzZXJFdgogX19aTjNLSlM3Q1N0cmluZ0QxRXYKIF9fWk4z
S0pTN1VTdHJpbmczUmVwNG51bGxFCiBfX1pOM0tKUzdVU3RyaW5nM1JlcDdkZXN0cm95RXYKIF9f
Wk4zS0pTN1VTdHJpbmc2YXBwZW5kRVJLUzBfCi1fX1pOM0tKUzdVU3RyaW5nQzFFUEtOU181VUNo
YXJFaQorX19aTjNLSlM3VVN0cmluZ0MxRVBLdGkKIF9fWk4zS0pTN1VTdHJpbmdDMUVQS2MKIF9f
Wk4zS0pTN1VTdHJpbmdDMUVSS1MwX1MyXwogX19aTjNLSlM3VVN0cmluZ2FTRVBLYwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYjEwMTA1Yy4uMTBjZmY1OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzM3LDcg
KzEzMzcsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDE0OUMyNzcxMDg5MDJBRkUwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIkphdmFTY3JpcHRDb3JlIiAqLzsKLQkJCWNvbXBhdGliaWxpdHlWZXJzaW9u
ID0gIlhjb2RlIDIuNCI7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJCW1haW5H
cm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBKYXZhU2NyaXB0Q29yZSAqLzsKIAkJ
CXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2OERGRkYzOEE1MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAq
LzsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcCBi
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcAppbmRleCA3ZTJhMTlmLi42
Y2U0YzE5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCkBAIC0xNzUs
NyArMTc1LDcgQEAgSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihjb25zdCBO
UFVURjgqIG5hbWUpCiAgICAgTlBVVEYxNiAqbWV0aG9kTmFtZTsKICAgICB1bnNpZ25lZCBVVEYx
Nkxlbmd0aDsKICAgICBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwg
LTEsICZtZXRob2ROYW1lLCAmVVRGMTZMZW5ndGgpOyAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0
dXJuZWQgbWVtb3J5LgotICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigoY29uc3QgS0pTOjpVQ2hh
ciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigo
Y29uc3QgVUNoYXIqKW1ldGhvZE5hbWUsIFVURjE2TGVuZ3RoKTsKICAgICBmcmVlKG1ldGhvZE5h
bWUpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUva2pzL1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5oCmluZGV4IDkyNTQ4
ZmUuLjBjYWZjOGEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgKQEAgLTM3LDggKzM3LDYgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGU7CiAgICAgY2xhc3MgVVN0cmluZzsKIAotICAg
IHN0cnVjdCBVQ2hhcjsKLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyc2Vy
UmVmQ291bnRlZERhdGEgOiBQYXJzZXJSZWZDb3VudGVkIHsKICAgICAgICAgVCBkYXRhOwogICAg
IH07CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwIGIvSmF2YVNj
cmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcAppbmRleCA5MmIyZjJmLi5lNDQzMTE5IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9mdW5jdGlvbi5jcHAKQEAgLTUwNCw4ICs1MDQsOCBAQCBzdGF0aWMgSlNWYWx1ZSogZGVj
b2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgY29uc3QgY2hhciogZG9fbm90
X3VuZQogICAgIFVDaGFyIGMgPSAqcDsKICAgICBpZiAoYyA9PSAnJScpIHsKICAgICAgIGludCBj
aGFyTGVuID0gMDsKLSAgICAgIGlmIChrIDw9IGxlbiAtIDMgJiYgaXNBU0NJSUhleERpZ2l0KHBb
MV0udWMpICYmIGlzQVNDSUlIZXhEaWdpdChwWzJdLnVjKSkgewotICAgICAgICBjb25zdCBjaGFy
IGIwID0gTGV4ZXI6OmNvbnZlcnRIZXgocFsxXS51YywgcFsyXS51Yyk7CisgICAgICBpZiAoayA8
PSBsZW4gLSAzICYmIGlzQVNDSUlIZXhEaWdpdChwWzFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQocFsy
XSkpIHsKKyAgICAgICAgY29uc3QgY2hhciBiMCA9IExleGVyOjpjb252ZXJ0SGV4KHBbMV0sIHBb
Ml0pOwogICAgICAgICBjb25zdCBpbnQgc2VxdWVuY2VMZW4gPSBVVEY4U2VxdWVuY2VMZW5ndGgo
YjApOwogICAgICAgICBpZiAoc2VxdWVuY2VMZW4gIT0gMCAmJiBrIDw9IGxlbiAtIHNlcXVlbmNl
TGVuICogMykgewogICAgICAgICAgIGNoYXJMZW4gPSBzZXF1ZW5jZUxlbiAqIDM7CkBAIC01MTMs
OCArNTEzLDggQEAgc3RhdGljIEpTVmFsdWUqIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IExpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGRvX25vdF91bmUKICAgICAgICAgICBzZXF1ZW5jZVsw
XSA9IGIwOwogICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc2VxdWVuY2VMZW47ICsraSkg
ewogICAgICAgICAgICAgY29uc3QgVUNoYXIqIHEgPSBwICsgaSAqIDM7Ci0gICAgICAgICAgICBp
ZiAocVswXSA9PSAnJScgJiYgaXNBU0NJSUhleERpZ2l0KHFbMV0udWMpICYmIGlzQVNDSUlIZXhE
aWdpdChxWzJdLnVjKSkKLSAgICAgICAgICAgICAgc2VxdWVuY2VbaV0gPSBMZXhlcjo6Y29udmVy
dEhleChxWzFdLnVjLCBxWzJdLnVjKTsKKyAgICAgICAgICAgIGlmIChxWzBdID09ICclJyAmJiBp
c0FTQ0lJSGV4RGlnaXQocVsxXSkgJiYgaXNBU0NJSUhleERpZ2l0KHFbMl0pKQorICAgICAgICAg
ICAgICBzZXF1ZW5jZVtpXSA9IExleGVyOjpjb252ZXJ0SGV4KHFbMV0sIHFbMl0pOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgIGNoYXJMZW4gPSAwOwogICAgICAgICAgICAgICBi
cmVhazsKQEAgLTU0MSwxMyArNTQxLDEzIEBAIHN0YXRpYyBKU1ZhbHVlKiBkZWNvZGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzLCBjb25zdCBjaGFyKiBkb19ub3RfdW5lCiAgICAg
ICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJzdHJpY3QiIG1vZGUgaXMg
dGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgIC8vIEZvciB0aGF0LCBpdCdzIGdvb2Qg
dG8gc3VwcG9ydCB0aGUgd29ua3kgIiV1IiBzeW50YXggZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBX
aW5JRS4KICAgICAgICAgaWYgKGsgPD0gbGVuIC0gNiAmJiBwWzFdID09ICd1JwotICAgICAgICAg
ICAgJiYgaXNBU0NJSUhleERpZ2l0KHBbMl0udWMpICYmIGlzQVNDSUlIZXhEaWdpdChwWzNdLnVj
KQotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KHBbNF0udWMpICYmIGlzQVNDSUlIZXhE
aWdpdChwWzVdLnVjKSkgeworICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KHBbMl0pICYm
IGlzQVNDSUlIZXhEaWdpdChwWzNdKQorICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KHBb
NF0pICYmIGlzQVNDSUlIZXhEaWdpdChwWzVdKSkgewogICAgICAgICAgIGNoYXJMZW4gPSA2Owot
ICAgICAgICAgIHUgPSBMZXhlcjo6Y29udmVydFVuaWNvZGUocFsyXS51YywgcFszXS51YywgcFs0
XS51YywgcFs1XS51Yyk7CisgICAgICAgICAgdSA9IExleGVyOjpjb252ZXJ0VW5pY29kZShwWzJd
LCBwWzNdLCBwWzRdLCBwWzVdKTsKICAgICAgICAgfQogICAgICAgfQotICAgICAgaWYgKGNoYXJM
ZW4gJiYgKHUudWMgPT0gMCB8fCB1LnVjID49IDEyOCB8fCAhc3RyY2hyKGRvX25vdF91bmVzY2Fw
ZSwgdS5sb3coKSkpKSB7CisgICAgICBpZiAoY2hhckxlbiAmJiAodSA9PSAwIHx8IHUgPj0gMTI4
IHx8ICFzdHJjaHIoZG9fbm90X3VuZXNjYXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih1
KSkpKSB7CiAgICAgICAgIGMgPSB1OwogICAgICAgICBrICs9IGNoYXJMZW4gLSAxOwogICAgICAg
fQpAQCAtNjIwLDcgKzYyMCw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VJbnQoY29uc3QgVVN0cmlu
ZyYgcywgaW50IHJhZGl4KQogICAgIGludCBsZW5ndGggPSBzLnNpemUoKTsKICAgICBpbnQgcCA9
IDA7CiAKLSAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2Uoc1twXS51Yykp
IHsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3BhY2Uoc1twXSkpIHsKICAg
ICAgICAgKytwOwogICAgIH0KIApAQCAtNjUxLDcgKzY1MSw3IEBAIHN0YXRpYyBkb3VibGUgcGFy
c2VJbnQoY29uc3QgVVN0cmluZyYgcywgaW50IHJhZGl4KQogICAgIGJvb2wgc2F3RGlnaXQgPSBm
YWxzZTsKICAgICBkb3VibGUgbnVtYmVyID0gMDsKICAgICB3aGlsZSAocCA8IGxlbmd0aCkgewot
ICAgICAgICBpbnQgZGlnaXQgPSBwYXJzZURpZ2l0KHNbcF0udWMsIHJhZGl4KTsKKyAgICAgICAg
aW50IGRpZ2l0ID0gcGFyc2VEaWdpdChzW3BdLCByYWRpeCk7CiAgICAgICAgIGlmIChkaWdpdCA9
PSAtMSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBzYXdEaWdpdCA9IHRydWU7CkBAIC02
NzksNyArNjc5LDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KGNvbnN0IFVTdHJpbmcmIHMp
CiAgICAgLy8gTmVlZCB0byBza2lwIGFueSB3aGl0ZXNwYWNlIGFuZCB0aGVuIG9uZSArIG9yIC0g
c2lnbi4KICAgICBpbnQgbGVuZ3RoID0gcy5zaXplKCk7CiAgICAgaW50IHAgPSAwOwotICAgIHdo
aWxlIChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShzW3BdLnVjKSkgeworICAgIHdoaWxl
IChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShzW3BdKSkgewogICAgICAgICArK3A7CiAg
ICAgfQogICAgIGlmIChwIDwgbGVuZ3RoICYmIChzW3BdID09ICcrJyB8fCBzW3BdID09ICctJykp
IHsKQEAgLTgwNiw3ICs4MDYsNyBAQCBKU1ZhbHVlKiBnbG9iYWxGdW5jRXNjYXBlKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBMaXN0JiBhcmdzKQogICAgIFVTdHJpbmcgciA9ICIi
LCBzLCBzdHIgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKICAgICBjb25zdCBVQ2hhciogYyA9
IHN0ci5kYXRhKCk7CiAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBzdHIuc2l6ZSgpOyBrKyssIGMr
KykgewotICAgICAgICBpbnQgdSA9IGMtPnVjOworICAgICAgICBpbnQgdSA9IGNbMF07CiAgICAg
ICAgIGlmICh1ID4gMjU1KSB7CiAgICAgICAgICAgICBjaGFyIHRtcFs3XTsKICAgICAgICAgICAg
IHNwcmludGYodG1wLCAiJSV1JTA0WCIsIHUpOwpAQCAtODMyLDEzICs4MzIsMTMgQEAgSlNWYWx1
ZSogZ2xvYmFsRnVuY1VuZXNjYXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBM
aXN0JiBhcmdzKQogICAgICAgICBjb25zdCBVQ2hhciogYyA9IHN0ci5kYXRhKCkgKyBrOwogICAg
ICAgICBVQ2hhciB1OwogICAgICAgICBpZiAoKmMgPT0gVUNoYXIoJyUnKSAmJiBrIDw9IGxlbiAt
IDYgJiYgKihjICsgMSkgPT0gVUNoYXIoJ3UnKSkgewotICAgICAgICAgICAgaWYgKExleGVyOjpp
c0hleERpZ2l0KChjICsgMiktPnVjKSAmJiBMZXhlcjo6aXNIZXhEaWdpdCgoYyArIDMpLT51Yykg
JiYgTGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyA0KS0+dWMpICYmIExleGVyOjppc0hleERpZ2l0KChj
ICsgNSktPnVjKSkgewotICAgICAgICAgICAgICAgIHUgPSBMZXhlcjo6Y29udmVydFVuaWNvZGUo
KGMgKyAyKS0+dWMsIChjICsgMyktPnVjLCAoYyArIDQpLT51YywgKGMgKyA1KS0+dWMpOworICAg
ICAgICAgICAgaWYgKExleGVyOjppc0hleERpZ2l0KChjICsgMilbMF0pICYmIExleGVyOjppc0hl
eERpZ2l0KChjICsgMylbMF0pICYmIExleGVyOjppc0hleERpZ2l0KChjICsgNClbMF0pICYmIExl
eGVyOjppc0hleERpZ2l0KChjICsgNSlbMF0pKSB7CisgICAgICAgICAgICAgICAgdSA9IExleGVy
Ojpjb252ZXJ0VW5pY29kZSgoYyArIDIpWzBdLCAoYyArIDMpWzBdLCAoYyArIDQpWzBdLCAoYyAr
IDUpWzBdKTsKICAgICAgICAgICAgICAgICBjID0gJnU7CiAgICAgICAgICAgICAgICAgayArPSA1
OwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKCpjID09IFVDaGFyKCclJykgJiYg
ayA8PSBsZW4gLSAzICYmIExleGVyOjppc0hleERpZ2l0KChjICsgMSktPnVjKSAmJiBMZXhlcjo6
aXNIZXhEaWdpdCgoYyArIDIpLT51YykpIHsKLSAgICAgICAgICAgIHUgPSBVQ2hhcihMZXhlcjo6
Y29udmVydEhleCgoYysxKS0+dWMsIChjKzIpLT51YykpOworICAgICAgICB9IGVsc2UgaWYgKCpj
ID09IFVDaGFyKCclJykgJiYgayA8PSBsZW4gLSAzICYmIExleGVyOjppc0hleERpZ2l0KChjICsg
MSlbMF0pICYmIExleGVyOjppc0hleERpZ2l0KChjICsgMilbMF0pKSB7CisgICAgICAgICAgICB1
ID0gVUNoYXIoTGV4ZXI6OmNvbnZlcnRIZXgoKGMrMSlbMF0sIChjKzIpWzBdKSk7CiAgICAgICAg
ICAgICBjID0gJnU7CiAgICAgICAgICAgICBrICs9IDI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUv
a2pzL2Z1bmN0aW9uX29iamVjdC5jcHAKaW5kZXggYTYxZGI4NS4uMTJhNmNkMCAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAKQEAgLTIwMiwxMCArMjAyLDEwIEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbk9iamVjdEltcDo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
TGlzdCYgYXJncywgY29uc3QKICAgICB3aGlsZSAoaSA8IGxlbikgewogICAgICAgICB3aGlsZSAo
KmMgPT0gJyAnICYmIGkgPCBsZW4pCiAgICAgICAgICAgICBjKyssIGkrKzsKLSAgICAgICAgaWYg
KExleGVyOjppc0lkZW50U3RhcnQoYy0+dWMpKSB7ICAvLyBlbHNlIGVycm9yCisgICAgICAgIGlm
IChMZXhlcjo6aXNJZGVudFN0YXJ0KGNbMF0pKSB7ICAvLyBlbHNlIGVycm9yCiAgICAgICAgICAg
ICBwYXJhbSA9IFVTdHJpbmcoYywgMSk7CiAgICAgICAgICAgICBjKyssIGkrKzsKLSAgICAgICAg
ICAgIHdoaWxlIChpIDwgbGVuICYmIChMZXhlcjo6aXNJZGVudFBhcnQoYy0+dWMpKSkgeworICAg
ICAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgKExleGVyOjppc0lkZW50UGFydChjWzBdKSkpIHsK
ICAgICAgICAgICAgICAgICBwYXJhbSArPSBVU3RyaW5nKGMsIDEpOwogICAgICAgICAgICAgICAg
IGMrKywgaSsrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pz
L2lkZW50aWZpZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIuY3BwCmluZGV4
IDNmYTAxYWQuLjJlODJkZTggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9pZGVudGlm
aWVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5jcHAKQEAgLTY3LDcg
KzY3LDcgQEAgYm9vbCBJZGVudGlmaWVyOjplcXVhbChjb25zdCBVU3RyaW5nOjpSZXAgKnIsIGNv
bnN0IGNoYXIgKnMpCiAgICAgaW50IGxlbmd0aCA9IHItPmxlbjsKICAgICBjb25zdCBVQ2hhciAq
ZCA9IHItPmRhdGEoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkKLSAg
ICAgICAgaWYgKGRbaV0udWMgIT0gKHVuc2lnbmVkIGNoYXIpc1tpXSkKKyAgICAgICAgaWYgKGRb
aV0gIT0gKHVuc2lnbmVkIGNoYXIpc1tpXSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gc1tsZW5ndGhdID09IDA7CiB9CkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgSWRlbnRp
Zmllcjo6ZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwICpyLCBjb25zdCBVQ2hhciAqcywgaW50IGxl
bmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNvbnN0IFVDaGFyICpkID0gci0+ZGF0
YSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKQotICAgICAgICBpZiAo
ZFtpXS51YyAhPSBzW2ldLnVjKQorICAgICAgICBpZiAoZFtpXSAhPSBzW2ldKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTEsNyArOTEsNyBAQCBi
b29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCAqciwgY29uc3QgVVN0cmlu
Zzo6UmVwICpiKQogICAgIGNvbnN0IFVDaGFyICpkID0gci0+ZGF0YSgpOwogICAgIGNvbnN0IFVD
aGFyICpzID0gYi0+ZGF0YSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGxlbmd0aDsgKytp
KQotICAgICAgICBpZiAoZFtpXS51YyAhPSBzW2ldLnVjKQorICAgICAgICBpZiAoZFtpXSAhPSBz
W2ldKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmggYi9KYXZhU2NyaXB0Q29y
ZS9ranMvaW50ZXJwcmV0ZXIuaAppbmRleCA3OWI5Mzk4Li45YTgwNmU1IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMv
aW50ZXJwcmV0ZXIuaApAQCAtMjksOCArMjksNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgY2xhc3Mg
RXhlY1N0YXRlOwogICBjbGFzcyBKU1ZhbHVlOwogICBjbGFzcyBVU3RyaW5nOwotCi0gIHN0cnVj
dCBVQ2hhcjsKICAgCiAgIGNsYXNzIEludGVycHJldGVyIHsKICAgcHVibGljOgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9sZXhl
ci5jcHAKaW5kZXggYzRkMzI3Zi4uZTEwNjhhOSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL2xleGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIExleGVyOjpMZXhlcigpCiAgICAgbV9pZGVudGlmaWVycy5yZXNlcnZlQ2FwYWNp
dHkoaW5pdGlhbFN0cmluZ1RhYmxlQ2FwYWNpdHkpOwogfQogCi12b2lkIExleGVyOjpzZXRDb2Rl
KGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IEtKUzo6VUNoYXIgKmMsIHVuc2lnbmVkIGlu
dCBsZW4pCit2b2lkIExleGVyOjpzZXRDb2RlKGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0
IFVDaGFyICpjLCB1bnNpZ25lZCBpbnQgbGVuKQogewogICB5eWxpbmVubyA9IDEgKyBzdGFydGlu
Z0xpbmVOdW1iZXI7CiAgIHJlc3RyS2V5d29yZCA9IGZhbHNlOwpAQCAtMTExLDEwICsxMTEsMTAg
QEAgdm9pZCBMZXhlcjo6c2V0Q29kZShpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBLSlM6
OlVDaGFyICpjLCB1bnNpZ25lZCBpbnQgbGUKICAgYXRMaW5lU3RhcnQgPSB0cnVlOwogCiAgIC8v
IHJlYWQgZmlyc3QgY2hhcmFjdGVycwotICBjdXJyZW50ID0gKGxlbmd0aCA+IDApID8gY29kZVsw
XS51YyA6IC0xOwotICBuZXh0MSA9IChsZW5ndGggPiAxKSA/IGNvZGVbMV0udWMgOiAtMTsKLSAg
bmV4dDIgPSAobGVuZ3RoID4gMikgPyBjb2RlWzJdLnVjIDogLTE7Ci0gIG5leHQzID0gKGxlbmd0
aCA+IDMpID8gY29kZVszXS51YyA6IC0xOworICBjdXJyZW50ID0gKGxlbmd0aCA+IDApID8gY29k
ZVswXSA6IC0xOworICBuZXh0MSA9IChsZW5ndGggPiAxKSA/IGNvZGVbMV0gOiAtMTsKKyAgbmV4
dDIgPSAobGVuZ3RoID4gMikgPyBjb2RlWzJdIDogLTE7CisgIG5leHQzID0gKGxlbmd0aCA+IDMp
ID8gY29kZVszXSA6IC0xOwogfQogCiB2b2lkIExleGVyOjpzaGlmdCh1bnNpZ25lZCBpbnQgcCkK
QEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIExleGVyOjpzaGlmdCh1bnNpZ25lZCBpbnQgcCkKICAg
ICBjdXJyZW50ID0gbmV4dDE7CiAgICAgbmV4dDEgPSBuZXh0MjsKICAgICBuZXh0MiA9IG5leHQz
OwotICAgIG5leHQzID0gKHBvcyArIDMgPCBsZW5ndGgpID8gY29kZVtwb3MgKyAzXS51YyA6IC0x
OworICAgIG5leHQzID0gKHBvcyArIDMgPCBsZW5ndGgpID8gY29kZVtwb3MgKyAzXSA6IC0xOwog
ICB9CiB9CiAKQEAgLTQyNyw3ICs0MjcsNyBAQCBpbnQgTGV4ZXI6OmxleCgpCiAgICAgICAgIHNl
dERvbmUoQmFkKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgICB0b2tlbiA9IGNvbnZl
cnRVbmljb2RlKGN1cnJlbnQsIG5leHQxLCBuZXh0MiwgbmV4dDMpLnVjOworICAgICAgdG9rZW4g
PSBjb252ZXJ0VW5pY29kZShjdXJyZW50LCBuZXh0MSwgbmV4dDIsIG5leHQzKTsKICAgICAgIHNo
aWZ0KDMpOwogICAgICAgaWYgKCFpc0lkZW50U3RhcnQodG9rZW4pKSB7CiAgICAgICAgIHNldERv
bmUoQmFkKTsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBpbnQgTGV4ZXI6OmxleCgpCiAgICAgICAgIHNl
dERvbmUoQmFkKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgICB0b2tlbiA9IGNvbnZl
cnRVbmljb2RlKGN1cnJlbnQsIG5leHQxLCBuZXh0MiwgbmV4dDMpLnVjOworICAgICAgdG9rZW4g
PSBjb252ZXJ0VW5pY29kZShjdXJyZW50LCBuZXh0MSwgbmV4dDIsIG5leHQzKTsKICAgICAgIHNo
aWZ0KDMpOwogICAgICAgaWYgKCFpc0lkZW50UGFydCh0b2tlbikpIHsKICAgICAgICAgc2V0RG9u
ZShCYWQpOwpAQCAtNzkyLDEwICs3OTIsMTEgQEAgdW5zaWduZWQgY2hhciBMZXhlcjo6Y29udmVy
dEhleChpbnQgYzEsIGludCBjMikKICAgcmV0dXJuICgoY29udmVydEhleChjMSkgPDwgNCkgKyBj
b252ZXJ0SGV4KGMyKSk7CiB9CiAKLUtKUzo6VUNoYXIgTGV4ZXI6OmNvbnZlcnRVbmljb2RlKGlu
dCBjMSwgaW50IGMyLCBpbnQgYzMsIGludCBjNCkKK1VDaGFyIExleGVyOjpjb252ZXJ0VW5pY29k
ZShpbnQgYzEsIGludCBjMiwgaW50IGMzLCBpbnQgYzQpCiB7Ci0gIHJldHVybiBLSlM6OlVDaGFy
KChjb252ZXJ0SGV4KGMxKSA8PCA0KSArIGNvbnZlcnRIZXgoYzIpLAotICAgICAgICAgICAgICAg
KGNvbnZlcnRIZXgoYzMpIDw8IDQpICsgY29udmVydEhleChjNCkpOworICAgIHVuc2lnbmVkIGNo
YXIgaGlnaEJ5dGUgPSAoY29udmVydEhleChjMSkgPDwgNCkgKyBjb252ZXJ0SGV4KGMyKTsKKyAg
ICB1bnNpZ25lZCBjaGFyIGxvd0J5dGUgPSAoY29udmVydEhleChjMykgPDwgNCkgKyBjb252ZXJ0
SGV4KGM0KTsKKyAgICByZXR1cm4gKGhpZ2hCeXRlIDw8IDggfCBsb3dCeXRlKTsKIH0KIAogdm9p
ZCBMZXhlcjo6cmVjb3JkOChpbnQgYykKQEAgLTgxMiw3ICs4MTMsNyBAQCB2b2lkIExleGVyOjpy
ZWNvcmQxNihpbnQgYykKICAgICByZWNvcmQxNihVQ2hhcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBz
aG9ydD4oYykpKTsKIH0KIAotdm9pZCBMZXhlcjo6cmVjb3JkMTYoS0pTOjpVQ2hhciBjKQordm9p
ZCBMZXhlcjo6cmVjb3JkMTYoVUNoYXIgYykKIHsKICAgICBtX2J1ZmZlcjE2LmFwcGVuZChjKTsK
IH0KQEAgLTg4MCwxNCArODgxLDE0IEBAIHZvaWQgTGV4ZXI6OmNsZWFyKCkKICAgICBtX2ZsYWdz
ID0gMDsKIH0KIAotSWRlbnRpZmllciogTGV4ZXI6Om1ha2VJZGVudGlmaWVyKGNvbnN0IFZlY3Rv
cjxLSlM6OlVDaGFyPiYgYnVmZmVyKQorSWRlbnRpZmllciogTGV4ZXI6Om1ha2VJZGVudGlmaWVy
KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICBLSlM6OklkZW50aWZpZXIqIGlk
ZW50aWZpZXIgPSBuZXcgS0pTOjpJZGVudGlmaWVyKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOwogICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKGlkZW50aWZpZXIpOwogICAgIHJldHVybiBp
ZGVudGlmaWVyOwogfQogIAotVVN0cmluZyogTGV4ZXI6Om1ha2VVU3RyaW5nKGNvbnN0IFZlY3Rv
cjxLSlM6OlVDaGFyPiYgYnVmZmVyKQorVVN0cmluZyogTGV4ZXI6Om1ha2VVU3RyaW5nKGNvbnN0
IFZlY3RvcjxVQ2hhcj4mIGJ1ZmZlcikKIHsKICAgICBVU3RyaW5nKiBzdHJpbmcgPSBuZXcgVVN0
cmluZyhidWZmZXIpOwogICAgIG1fc3RyaW5ncy5hcHBlbmQoc3RyaW5nKTsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2tqcy9sb29rdXAuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1
cC5jcHAKaW5kZXggOTVkYzVjYi4uMDU4ZjU4ZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
a2pzL2xvb2t1cC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGtleXNNYXRjaChjb25zdCBVQ2hhciogYywg
dW5zaWduZWQgbGVuLCBjb25zdCBjaGFyKiBzKQogICAvLyBGSVhNRTogVGhpcyBjYW4gcnVuIG9m
ZiB0aGUgZW5kIG9mIHxzfCBpZiB8Y3wgaGFzIGEgVSswMDAwIGNoYXJhY3RlciBpbiBpdC4KICAg
Y29uc3QgY2hhciogZW5kID0gcyArIGxlbjsKICAgZm9yICg7IHMgIT0gZW5kOyBjKyssIHMrKykK
LSAgICBpZiAoYy0+dWMgIT0gKnMpCisgICAgaWYgKCpjICE9ICpzKQogICAgICAgcmV0dXJuIGZh
bHNlOwogICByZXR1cm4gKnMgPT0gMDsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tq
cy9ub2RlczJzdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAK
aW5kZXggMDQzMmI3Zi4uOTNkYzMwMiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL25v
ZGVzMnN0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIFVTdHJpbmcgZXNjYXBlU3RyaW5nRm9yUHJldHR5UHJp
bnRpbmcoY29uc3QgVVN0cmluZyYgcykKICAgICBVU3RyaW5nIGVzY2FwZWRTdHJpbmc7CiAKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgdW5zaWduZWQg
c2hvcnQgYyA9IHMuZGF0YSgpW2ldLnVuaWNvZGUoKTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQg
YyA9IHMuZGF0YSgpW2ldOwogICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgIGNhc2Ug
J1wiJzoKICAgICAgICAgICAgICAgICBlc2NhcGVkU3RyaW5nICs9ICJcXFwiIjsKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9zdHJpbmdfb2JqZWN0LmNwcAppbmRleCA0M2MyNDVlLi5mYmQ0ODUzIDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUva2pzL3N0cmluZ19vYmplY3QuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIGlubGlu
ZSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBVU3RyaW5nICZyZXBsYWNl
bWVudCwgY29uc3QKICAgICBpZiAoaSsxID09IHN1YnN0aXR1dGVkUmVwbGFjZW1lbnQuc2l6ZSgp
KQogICAgICAgICBicmVhazsKIAotICAgIHVuc2lnbmVkIHNob3J0IHJlZiA9IHN1YnN0aXR1dGVk
UmVwbGFjZW1lbnRbaSsxXS51bmljb2RlKCk7CisgICAgdW5zaWduZWQgc2hvcnQgcmVmID0gc3Vi
c3RpdHV0ZWRSZXBsYWNlbWVudFtpKzFdOwogICAgIGludCBiYWNrcmVmU3RhcnQgPSAwOwogICAg
IGludCBiYWNrcmVmTGVuZ3RoID0gMDsKICAgICBpbnQgYWR2YW5jZSA9IDA7CkBAIC0yNzQsNyAr
Mjc0LDcgQEAgc3RhdGljIGlubGluZSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhj
b25zdCBVU3RyaW5nICZyZXBsYWNlbWVudCwgY29uc3QKICAgICAgICAgaWYgKGJhY2tyZWZJbmRl
eCA+IHJlZy0+bnVtU3VicGF0dGVybnMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBpZiAoc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5zaXplKCkgPiBpICsgMikgewotICAgICAgICAg
ICAgcmVmID0gc3Vic3RpdHV0ZWRSZXBsYWNlbWVudFtpKzJdLnVuaWNvZGUoKTsKKyAgICAgICAg
ICAgIHJlZiA9IHN1YnN0aXR1dGVkUmVwbGFjZW1lbnRbaSsyXTsKICAgICAgICAgICAgIGlmIChy
ZWYgPj0gJzAnICYmIHJlZiA8PSAnOScpIHsKICAgICAgICAgICAgICAgICBiYWNrcmVmSW5kZXgg
PSAxMCAqIGJhY2tyZWZJbmRleCArIHJlZiAtICcwJzsKICAgICAgICAgICAgICAgICBpZiAoYmFj
a3JlZkluZGV4ID4gcmVnLT5udW1TdWJwYXR0ZXJucygpKQpAQCAtNDcyLDcgKzQ3Miw3IEBAIEpT
VmFsdWUqIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogdGhpc09iaiwgY29uc3QgTGlzCiAgICAgSlNWYWx1ZSogYTAgPSBhcmdzWzBdOwogICAgIGRv
dWJsZSBkcG9zID0gYTAtPnRvSW50ZWdlcihleGVjKTsKICAgICBpZiAoZHBvcyA+PSAwICYmIGRw
b3MgPCBsZW4pCi0gICAgICByZXN1bHQgPSBqc051bWJlcihzW3N0YXRpY19jYXN0PGludD4oZHBv
cyldLnVuaWNvZGUoKSk7CisgICAgICByZXN1bHQgPSBqc051bWJlcihzW3N0YXRpY19jYXN0PGlu
dD4oZHBvcyldKTsKICAgICBlbHNlCiAgICAgICByZXN1bHQgPSBqc05hTigpOwogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAKaW5kZXggYjY1OGE4ZC4uZjRjMWE4NyAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL2tqcy91c3RyaW5nLmNwcApAQCAtMjY0LDggKzI2NCw4IEBAIHVuc2lnbmVkIFVTdHJpbmc6
OlJlcDo6Y29tcHV0ZUhhc2goY29uc3QgVUNoYXIgKnMsIGludCBsZW4pCiAKICAgLy8gTWFpbiBs
b29wCiAgIGZvciAoOyBsID4gMDsgbC0tKSB7Ci0gICAgaGFzaCArPSBzWzBdLnVjOwotICAgIHRt
cCA9IChzWzFdLnVjIDw8IDExKSBeIGhhc2g7CisgICAgaGFzaCArPSBzWzBdOworICAgIHRtcCA9
IChzWzFdIDw8IDExKSBeIGhhc2g7CiAgICAgaGFzaCA9IChoYXNoIDw8IDE2KSBeIHRtcDsKICAg
ICBzICs9IDI7CiAgICAgaGFzaCArPSBoYXNoID4+IDExOwpAQCAtMjczLDcgKzI3Myw3IEBAIHVu
c2lnbmVkIFVTdHJpbmc6OlJlcDo6Y29tcHV0ZUhhc2goY29uc3QgVUNoYXIgKnMsIGludCBsZW4p
CiAKICAgLy8gSGFuZGxlIGVuZCBjYXNlCiAgIGlmIChyZW0pIHsKLSAgICBoYXNoICs9IHNbMF0u
dWM7CisgICAgaGFzaCArPSBzWzBdOwogICAgIGhhc2ggXj0gaGFzaCA8PCAxMTsKICAgICBoYXNo
ICs9IGhhc2ggPj4gMTc7CiAgIH0KQEAgLTQyOSw3ICs0MjksNyBAQCBVU3RyaW5nOjpVU3RyaW5n
KGNvbnN0IGNoYXIgKmMpCiAgICAgICBtX3JlcCA9ICZSZXA6Om51bGw7CiAgIGVsc2UgewogICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICBkW2ldLnVj
ID0gY1tpXTsKKyAgICAgICAgICBkW2ldID0gY1tpXTsKICAgICAgIG1fcmVwID0gUmVwOjpjcmVh
dGUoZCwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgpKTsKICAgfQogfQpAQCAtODc5LDcgKzg3OSw3
IEBAIGNoYXIgKlVTdHJpbmc6OmFzY2lpKCkgY29uc3QKICAgY2hhciAqcSA9IHN0YXRCdWZmZXI7
CiAgIGNvbnN0IFVDaGFyICpsaW1pdCA9IHAgKyBsZW5ndGg7CiAgIHdoaWxlIChwICE9IGxpbWl0
KSB7Ci0gICAgKnEgPSBzdGF0aWNfY2FzdDxjaGFyPihwLT51Yyk7CisgICAgKnEgPSBzdGF0aWNf
Y2FzdDxjaGFyPihwWzBdKTsKICAgICArK3A7CiAgICAgKytxOwogICB9CkBAIC05MTUsNyArOTE1
LDcgQEAgVVN0cmluZyAmVVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IGNoYXIgKmMpCiAgICAgbV9y
ZXAgPSBSZXA6OmNyZWF0ZShkLCBsKTsKICAgfQogICBmb3IgKGludCBpID0gMDsgaSA8IGw7IGkr
KykKLSAgICBkW2ldLnVjID0gY1tpXTsKKyAgICBkW2ldID0gY1tpXTsKIAogICByZXR1cm4gKnRo
aXM7CiB9CkBAIC05MjUsNyArOTI1LDcgQEAgYm9vbCBVU3RyaW5nOjppczhCaXQoKSBjb25zdAog
ICBjb25zdCBVQ2hhciAqdSA9IGRhdGEoKTsKICAgY29uc3QgVUNoYXIgKmxpbWl0ID0gdSArIHNp
emUoKTsKICAgd2hpbGUgKHUgPCBsaW1pdCkgewotICAgIGlmICh1LT51YyA+IDB4RkYpCisgICAg
aWYgKHVbMF0gPiAweEZGKQogICAgICAgcmV0dXJuIGZhbHNlOwogICAgICsrdTsKICAgfQpAQCAt
MTA2OCw3ICsxMDY4LDcgQEAgdWludDMyX3QgVVN0cmluZzo6dG9TdHJpY3RVSW50MzIoYm9vbCAq
b2spIGNvbnN0CiAgIGlmIChsZW4gPT0gMCkKICAgICByZXR1cm4gMDsKICAgY29uc3QgVUNoYXIg
KnAgPSBtX3JlcC0+ZGF0YSgpOwotICB1bnNpZ25lZCBzaG9ydCBjID0gcC0+dW5pY29kZSgpOwor
ICB1bnNpZ25lZCBzaG9ydCBjID0gcFswXTsKIAogICAvLyBJZiB0aGUgZmlyc3QgZGlnaXQgaXMg
MCwgb25seSAwIGl0c2VsZiBpcyBPSy4KICAgaWYgKGMgPT0gJzAnKSB7CkBAIC0xMTA0LDcgKzEx
MDQsNyBAQCB1aW50MzJfdCBVU3RyaW5nOjp0b1N0cmljdFVJbnQzMihib29sICpvaykgY29uc3QK
ICAgICB9CiAgICAgCiAgICAgLy8gR2V0IG5leHQgY2hhcmFjdGVyLgotICAgIGMgPSAoKytwKS0+
dW5pY29kZSgpOworICAgIGMgPSAqKCsrcCk7CiAgIH0KIH0KIApAQCAtMTEyMSwxMCArMTEyMSwx
MCBAQCBpbnQgVVN0cmluZzo6ZmluZChjb25zdCBVU3RyaW5nICZmLCBpbnQgcG9zKSBjb25zdAog
ICBjb25zdCBVQ2hhciAqZW5kID0gZGF0YSgpICsgc3ogLSBmc3o7CiAgIGludCBmc2l6ZW1pbnVz
b25lID0gKGZzeiAtIDEpICogc2l6ZW9mKFVDaGFyKTsKICAgY29uc3QgVUNoYXIgKmZkYXRhID0g
Zi5kYXRhKCk7Ci0gIHVuc2lnbmVkIHNob3J0IGZjaGFyID0gZmRhdGEtPnVjOworICB1bnNpZ25l
ZCBzaG9ydCBmY2hhciA9IGZkYXRhWzBdOwogICArK2ZkYXRhOwogICBmb3IgKGNvbnN0IFVDaGFy
ICpjID0gZGF0YSgpICsgcG9zOyBjIDw9IGVuZDsgYysrKQotICAgIGlmIChjLT51YyA9PSBmY2hh
ciAmJiAhbWVtY21wKGMgKyAxLCBmZGF0YSwgZnNpemVtaW51c29uZSkpCisgICAgaWYgKGNbMF0g
PT0gZmNoYXIgJiYgIW1lbWNtcChjICsgMSwgZmRhdGEsIGZzaXplbWludXNvbmUpKQogICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oYyAtIGRhdGEoKSk7CiAKICAgcmV0dXJuIC0xOwpAQCAt
MTIxNSw3ICsxMjE1LDcgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25z
dCBjaGFyICpzMikKICAgY29uc3QgVUNoYXIgKnUgPSBzMS5kYXRhKCk7CiAgIGNvbnN0IFVDaGFy
ICp1ZW5kID0gdSArIHMxLnNpemUoKTsKICAgd2hpbGUgKHUgIT0gdWVuZCAmJiAqczIpIHsKLSAg
ICBpZiAodS0+dWMgIT0gKHVuc2lnbmVkIGNoYXIpKnMyKQorICAgIGlmICh1WzBdICE9ICh1bnNp
Z25lZCBjaGFyKSpzMikKICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzMisrOwogICAgIHUrKzsK
QEAgLTEyMzgsNyArMTIzOCw3IEBAIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFVTdHJpbmcmIHMxLCBj
b25zdCBVU3RyaW5nJiBzMikKICAgICBsKys7CiAgIH0KICAgaWYgKGwgPCBsbWluKQotICAgIHJl
dHVybiAoYzEtPnVjIDwgYzItPnVjKTsKKyAgICByZXR1cm4gKGMxWzBdIDwgYzJbMF0pOwogCiAg
IHJldHVybiAobDEgPCBsMik7CiB9CkBAIC0xMjU4LDcgKzEyNTgsNyBAQCBpbnQgY29tcGFyZShj
b25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpCiAgIH0KIAogICBpZiAobCA8IGxt
aW4pCi0gICAgcmV0dXJuIChjMS0+dWMgPiBjMi0+dWMpID8gMSA6IC0xOworICAgIHJldHVybiAo
YzFbMF0gPiBjMlswXSkgPyAxIDogLTE7CiAKICAgaWYgKGwxID09IGwyKQogICAgIHJldHVybiAw
OwpAQCAtMTI3NCw3ICsxMjc0LDcgQEAgQ1N0cmluZyBVU3RyaW5nOjpVVEY4U3RyaW5nKGJvb2wg
c3RyaWN0KSBjb25zdAogCiAgIC8vIENvbnZlcnQgdG8gcnVucyBvZiA4LWJpdCBjaGFyYWN0ZXJz
LgogICBjaGFyKiBwID0gYnVmZmVyLmRhdGEoKTsKLSAgY29uc3QgOjpVQ2hhciogZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KCZkYXRhKCktPnVjKTsKKyAgY29uc3QgOjpVQ2hh
ciogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KCZkYXRhKClbMF0pOwogICBD
b252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IGNvbnZlcnRVVEYxNlRvVVRGOCgmZCwgZCArIGxlbmd0
aCwgJnAsIHAgKyBidWZmZXIuc2l6ZSgpLCBzdHJpY3QpOwogICBpZiAocmVzdWx0ICE9IGNvbnZl
cnNpb25PSykKICAgICByZXR1cm4gQ1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUva2pzL3VzdHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgKaW5kZXggN2Zh
YTg2YS4uYmNhOTk0OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCkBAIC0zMCwxNiArMzAsOSBAQAogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotLyogT24gc29tZSBBUk0gcGxhdGZvcm1zIEdDQyB3
b24ndCBwYWNrIHN0cnVjdHVyZXMgYnkgZGVmYXVsdCBzbyBzaXplb2YoVUNoYXIpCi0gICB3aWxs
IGVuZCB1cCBiZWluZyAhPSAyIHdoaWNoIGNhdXNlcyBjcmFzaGVzIHNpbmNlIHRoZSBjb2RlIGRl
cGVuZHMgb24gdGhhdC4gKi8KLSNpZiBDT01QSUxFUihHQ0MpICYmIFBMQVRGT1JNKEZPUkNFX1BB
Q0spCi0jZGVmaW5lIFBBQ0tfU1RSVUNUIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCi0jZWxzZQot
I2RlZmluZSBQQUNLX1NUUlVDVAotI2VuZGlmCi0KIC8qKgogICogQGludGVybmFsCiAgKi8KQEAg
LTU1LDU0ICs0OCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICB1c2luZyBXVEY6OlBsYWNlbWVudE5l
d0Fkb3B0OwogCiAgIGNsYXNzIFVTdHJpbmc7Ci0KLSAgLyoqCi0gICAqIEBzaG9ydCBVbmljb2Rl
IGNoYXJhY3Rlci4KLSAgICoKLSAgICogVUNoYXIgcmVwcmVzZW50cyBhIDE2IGJpdCBVbmljb2Rl
IGNoYXJhY3Rlci4gSXQncyBpbnRlcm5hbCBkYXRhCi0gICAqIHJlcHJlc2VudGF0aW9uIGlzIGNv
bXBhdGlibGUgdG8gWENoYXIyYiBhbmQgUUNoYXIuIEl0J3MgdGhlcmVmb3JlCi0gICAqIHBvc3Np
YmxlIHRvIGV4Y2hhbmdlIGRhdGEgd2l0aCBYIGFuZCBRdCB3aXRoIHNoYWxsb3cgY29waWVzLgot
ICAgKi8KLSAgc3RydWN0IFVDaGFyIHsKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3QgYSBjaGFy
YWN0ZXIgd2l0aCB1bmluaXRpYWxpemVkIHZhbHVlLiAgICAKLSAgICAgKi8KLSAgICBVQ2hhcigp
OwotICAgIC8qKgotICAgICAqIENvbnN0cnVjdCBhIGNoYXJhY3RlciB3aXRoIHRoZSB2YWx1ZSBk
ZW5vdGVkIGJ5IHRoZSBhcmd1bWVudHMuCi0gICAgICogQHBhcmFtIGggaGlnaGVyIGJ5dGUKLSAg
ICAgKiBAcGFyYW0gbCBsb3dlciBieXRlCi0gICAgICovCi0gICAgVUNoYXIodW5zaWduZWQgY2hh
ciBoICwgdW5zaWduZWQgY2hhciBsKTsKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3QgYSBjaGFy
YWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCi0gICAgICogQHBhcmFtIHUgMTYgYml0IFVuaWNv
ZGUgdmFsdWUKLSAgICAgKi8KLSAgICBVQ2hhcihjaGFyIHUpOwotICAgIFVDaGFyKHVuc2lnbmVk
IGNoYXIgdSk7Ci0gICAgVUNoYXIodW5zaWduZWQgc2hvcnQgdSk7Ci0gICAgLyoqCi0gICAgICog
QHJldHVybiBUaGUgaGlnaGVyIGJ5dGUgb2YgdGhlIGNoYXJhY3Rlci4KLSAgICAgKi8KLSAgICB1
bnNpZ25lZCBjaGFyIGhpZ2goKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPih1YyA+PiA4KTsgfQotICAgIC8qKgotICAgICAqIEByZXR1cm4gVGhlIGxvd2VyIGJ5dGUg
b2YgdGhlIGNoYXJhY3Rlci4KLSAgICAgKi8KLSAgICB1bnNpZ25lZCBjaGFyIGxvdygpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHVjKTsgfQotICAgIC8qKgotICAg
ICAqIEByZXR1cm4gdGhlIDE2IGJpdCBVbmljb2RlIHZhbHVlIG9mIHRoZSBjaGFyYWN0ZXIKLSAg
ICAgKi8KLSAgICB1bnNpZ25lZCBzaG9ydCB1bmljb2RlKCkgY29uc3QgeyByZXR1cm4gdWM7IH0K
LQotICAgIHVuc2lnbmVkIHNob3J0IHVjOwotICB9IFBBQ0tfU1RSVUNUOwotCi0gIGlubGluZSBV
Q2hhcjo6VUNoYXIoKSB7IH0KLSAgaW5saW5lIFVDaGFyOjpVQ2hhcih1bnNpZ25lZCBjaGFyIGgg
LCB1bnNpZ25lZCBjaGFyIGwpIDogdWMoaCA8PCA4IHwgbCkgeyB9Ci0gIGlubGluZSBVQ2hhcjo6
VUNoYXIoY2hhciB1KSA6IHVjKCh1bnNpZ25lZCBjaGFyKXUpIHsgfQotICBpbmxpbmUgVUNoYXI6
OlVDaGFyKHVuc2lnbmVkIGNoYXIgdSkgOiB1Yyh1KSB7IH0KLSAgaW5saW5lIFVDaGFyOjpVQ2hh
cih1bnNpZ25lZCBzaG9ydCB1KSA6IHVjKHUpIHsgfQotCisgIAogICAvKioKICAgICogQHNob3J0
IDggYml0IGNoYXIgYmFzZWQgc3RyaW5nIGNsYXNzCiAgICAqLwpAQCAtMjY2LDcgKzIxMiw2IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgIFVTdHJpbmcgJmFwcGVuZChjb25zdCBjaGFyICopOwogICAg
IFVTdHJpbmcgJmFwcGVuZCh1bnNpZ25lZCBzaG9ydCk7CiAgICAgVVN0cmluZyAmYXBwZW5kKGNo
YXIgYykgeyByZXR1cm4gYXBwZW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihjKSkpOyB9Ci0gICAgVVN0cmluZyAmYXBwZW5kKFVDaGFyIGMp
IHsgcmV0dXJuIGFwcGVuZChjLnVjKTsgfQogCiAgICAgLyoqCiAgICAgICogQHJldHVybiBUaGUg
c3RyaW5nIGNvbnZlcnRlZCB0byB0aGUgOC1iaXQgc3RyaW5nIHR5cGUgQ1N0cmluZygpLgpAQCAt
NDAzLDkgKzM0OCw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFJlZlB0cjxSZXA+IG1fcmVwOwog
ICB9OwogCi0gIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVUNoYXIgJmMxLCBjb25zdCBV
Q2hhciAmYzIpIHsKLSAgICByZXR1cm4gKGMxLnVjID09IGMyLnVjKTsKLSAgfQogICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKTsKICAgaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpIHsK
ICAgICByZXR1cm4gIUtKUzo6b3BlcmF0b3I9PShzMSwgczIpOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdEdsdWUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL0phdmFTY3JpcHRHbHVlL0Nv
bmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKaW5kZXggMTViYmJlYS4uZjdlNWI4MiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdEdsdWUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9K
YXZhU2NyaXB0R2x1ZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0zMCw3ICszMCw3
IEBAIFdBUk5JTkdfQ0ZMQUdTX3BwYyA9ICQoV0FSTklOR19DRkxBR1NfQkFTRSkgLVdzaG9ydGVu
LTY0LXRvLTMyOwogLy8gRklYTUU6IEphdmFTY3JpcHRHbHVlIDY0LWJpdCBidWlsZHMgc2hvdWxk
IGJ1aWxkIHdpdGggLVdzaG9ydGVuLTY0LXRvLTMyCiBXQVJOSU5HX0NGTEFHU19wcGM2NCA9ICQo
V0FSTklOR19DRkxBR1NfQkFTRSk7CiBXQVJOSU5HX0NGTEFHU194ODZfNjQgPSAkKFdBUk5JTkdf
Q0ZMQUdTX0JBU0UpOwotCitIRUFERVJfU0VBUkNIX1BBVEhTID0gLiBpY3UgJChIRUFERVJfU0VB
UkNIX1BBVEhTKTsKIAogLy8gPHJkYXI6Ly9wcm9ibGVtLzU0ODg2Nzg+OiBQcm9kdWN0aW9uIGJ1
aWxkcyBvbiAxMC40IFBvd2VyUEMgbmVlZCB0byBoYXZlIGRlYnVnZ2luZyBzeW1ib2xzIGRpc2Fi
bGVkIHRvIHByZXZlbnQgYSBodWdlIFNUQUJTIHNlY3Rpb24gYmVpbmcgZ2VuZXJhdGVkLgogLy8g
ICAgICAgICAgICAgICAgICAgICAgICAgICBYY29kZSBvbiAxMC40IGRvZXMgbm90IGRlZmluZSBN
QUNfT1NfWF9WRVJTSU9OX01BSk9SLCBzbyB0aGUgZGVmYXVsdCBNYWMgT1MgWCB2ZXJzaW9uIGlz
IHRyZWF0ZWQgYXMgMTAuNC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi91bmljb2RlL1VuaWNvZGUuaCBiL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi91bmljb2RlL1VuaWNvZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi42MjM5MTdmCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdEdsdWUvRm9yd2Fy
ZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUvVW5pY29kZS5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9Vbmljb2RlLmg+CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0R2x1ZS9G
b3J3YXJkaW5nSGVhZGVycy93dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oIGIvSmF2YVNjcmlw
dEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUvaWN1L1VuaWNvZGVJY3UuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjY0ZWI1Ci0tLSAvZGV2L251bGwKKysr
IGIvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUvaWN1L1VuaWNv
ZGVJY3UuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVW5pY29kZUlj
dS5oPgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUvaWN1L0xJQ0VOU0UgYi9KYXZhU2NyaXB0
R2x1ZS9pY3UvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODVk
MTMwCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdEdsdWUvaWN1L0xJQ0VOU0UKQEAgLTAs
MCArMSwyNSBAQAorQ09QWVJJR0hUIEFORCBQRVJNSVNTSU9OIE5PVElDRQorCitDb3B5cmlnaHQg
KGMpIDE5OTUtMjAwNiBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9u
IGFuZCBvdGhlcnMKKworQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eSBvZiB0aGlzCitzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlCit3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5
LCBtb2RpZnksCittZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgYW5kL29yIHNlbGwgY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zCit0byB3aG9tIHRoZSBTb2Z0
d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UocykKK2FuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwg
Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSBhbmQgdGhhdCBib3RoIHRoZSBhYm92ZQorY29weXJpZ2h0
IG5vdGljZShzKSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGlu
ZyBkb2N1bWVudGF0aW9uLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELAorSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5UIE9GIFRI
SVJEIFBBUlRZIFJJR0hUUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIK
K09SIEhPTERFUlMgSU5DTFVERUQgSU4gVEhJUyBOT1RJQ0UgQkUgTElBQkxFIEZPUiBBTlkgQ0xB
SU0sIE9SIEFOWSBTUEVDSUFMIElORElSRUNUIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMsIE9S
IEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEg
T1IKK1BST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNF
IE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORworT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisKK0V4Y2Vw
dCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIGEgY29weXJpZ2h0IGhv
bGRlciBzaGFsbCBub3QgYmUgdXNlZCBpbgorYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHBy
b21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJlCit3
aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBvZiB0aGUgY29weXJpZ2h0IGhvbGRl
ci4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRHbHVlL2ljdS9SRUFETUUgYi9KYXZhU2NyaXB0R2x1
ZS9pY3UvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OWUyZTgK
LS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9pY3UvUkVBRE1FCkBAIC0wLDAgKzEs
NCBAQAorVGhlIGhlYWRlcnMgaW4gdGhpcyBkaXJlY3RvcnkgYXJlIGZvciBjb21waWxpbmcgb24g
TWFjIE9TIFggMTAuNC4KK1RoZSBNYWMgT1MgWCAxMC40IHJlbGVhc2UgaW5jbHVkZXMgdGhlIElD
VSBiaW5hcnksIGJ1dCBub3QgSUNVIGhlYWRlcnMuCitGb3Igb3RoZXIgcGxhdGZvcm1zLCBpbnN0
YWxsZWQgSUNVIGhlYWRlcnMgc2hvdWxkIGJlIHVzZWQgcmF0aGVyIHRoYW4gdGhlc2UuCitUaGV5
IGFyZSBzcGVjaWZpYyB0byBNYWMgT1MgWCAxMC40LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEds
dWUvaWN1L3VuaWNvZGUvcGxhdGZvcm0uaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3Bs
YXRmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU5NWEyNgotLS0g
L2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3BsYXRmb3JtLmgKQEAg
LTAsMCArMSwyNjcgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmln
aHQgKEMpIDE5OTctMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENv
cnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqCisqICBGSUxFIE5BTUUgOiBwbGF0Zm9ybS5oCisqCisqICAgRGF0ZSAg
ICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KKyogICAwNS8xMy85OCAgICBub3MgICAgICAg
ICBDcmVhdGlvbiAoY29udGVudCBtb3ZlZCBoZXJlIGZyb20gcHR5cGVzLmgpLgorKiAgIDAzLzAy
Lzk5ICAgIHN0ZXBoZW4gICAgIEFkZGVkIEFTNDAwIHN1cHBvcnQuCisqICAgMDMvMzAvOTkgICAg
c3RlcGhlbiAgICAgQWRkZWQgTGludXggc3VwcG9ydC4KKyogICAwNC8xMy85OSAgICBzdGVwaGVu
ICAgICBSZXdvcmtlZCBmb3IgYXV0b2NvbmYuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisK
Ky8qIERlZmluZSB0aGUgcGxhdGZvcm0gd2UncmUgb24uICovCisjaWZuZGVmIFVfREFSV0lOCisj
ZGVmaW5lIFVfREFSV0lOCisjZW5kaWYKKworLyogRGVmaW5lIHdoZXRoZXIgaW50dHlwZXMuaCBp
cyBhdmFpbGFibGUgKi8KKyNpZm5kZWYgVV9IQVZFX0lOVFRZUEVTX0gKKyNkZWZpbmUgVV9IQVZF
X0lOVFRZUEVTX0ggMQorI2VuZGlmCisKKy8qCisgKiBEZWZpbmUgd2hhdCBzdXBwb3J0IGZvciBD
Kysgc3RyZWFtcyBpcyBhdmFpbGFibGUuCisgKiAgICAgSWYgVV9JT1NUUkVBTV9TT1VSQ0UgaXMg
c2V0IHRvIDE5OTcxMSwgdGhlbiA8aW9zdHJlYW0+IGlzIGF2YWlsYWJsZQorICogKDE5OTc3MTEg
aXMgdGhlIGRhdGUgdGhlIElTTy9JRUMgQysrIEZESVMgd2FzIHB1Ymxpc2hlZCksIGFuZCB0aGVu
CisgKiBvbmUgc2hvdWxkIHF1YWxpZnkgc3RyZWFtcyB1c2luZyB0aGUgc3RkIG5hbWVzcGFjZSBp
biBJQ1UgaGVhZGVyCisgKiBmaWxlcy4KKyAqICAgICBJZiBVX0lPU1RSRUFNX1NPVVJDRSBpcyBz
ZXQgdG8gMTk4NTA2LCB0aGVuIDxpb3N0cmVhbS5oPiBpcworICogYXZhaWxhYmxlIGluc3RlYWQg
KDE5ODUwNiBpcyB0aGUgZGF0ZSB3aGVuIFN0cm91c3RydXAgcHVibGlzaGVkCisgKiAiQW4gRXh0
ZW5zaWJsZSBJL08gRmFjaWxpdHkgZm9yIEMrKyIgYXQgdGhlIHN1bW1lciBVU0VOSVggY29uZmVy
ZW5jZSkuCisgKiAgICAgSWYgVV9JT1NUUkVBTV9TT1VSQ0UgaXMgMCwgdGhlbiBDKysgc3RyZWFt
cyBhcmUgbm90IGF2YWlsYWJsZSBhbmQKKyAqIHN1cHBvcnQgZm9yIHRoZW0gd2lsbCBiZSBzaWxl
bnRseSBzdXBwcmVzc2VkIGluIElDVS4KKyAqCisgKi8KKworI2lmbmRlZiBVX0lPU1RSRUFNX1NP
VVJDRQorI2RlZmluZSBVX0lPU1RSRUFNX1NPVVJDRSAxOTk3MTEKKyNlbmRpZgorCisvKiBEZXRl
cm1pbmVzIHdoZXRoZXIgc3BlY2lmaWMgdHlwZXMgYXJlIGF2YWlsYWJsZSAqLworI2lmbmRlZiBV
X0hBVkVfSU5UOF9UCisjZGVmaW5lIFVfSEFWRV9JTlQ4X1QgMQorI2VuZGlmCisKKyNpZm5kZWYg
VV9IQVZFX1VJTlQ4X1QKKyNkZWZpbmUgVV9IQVZFX1VJTlQ4X1QgMAorI2VuZGlmCisKKyNpZm5k
ZWYgVV9IQVZFX0lOVDE2X1QKKyNkZWZpbmUgVV9IQVZFX0lOVDE2X1QgMQorI2VuZGlmCisKKyNp
Zm5kZWYgVV9IQVZFX1VJTlQxNl9UCisjZGVmaW5lIFVfSEFWRV9VSU5UMTZfVCAwCisjZW5kaWYK
KworI2lmbmRlZiBVX0hBVkVfSU5UMzJfVAorI2RlZmluZSBVX0hBVkVfSU5UMzJfVCAxCisjZW5k
aWYKKworI2lmbmRlZiBVX0hBVkVfVUlOVDMyX1QKKyNkZWZpbmUgVV9IQVZFX1VJTlQzMl9UIDAK
KyNlbmRpZgorCisjaWZuZGVmIFVfSEFWRV9JTlQ2NF9UCisjZGVmaW5lIFVfSEFWRV9JTlQ2NF9U
IDEKKyNlbmRpZgorCisjaWZuZGVmIFVfSEFWRV9VSU5UNjRfVAorI2RlZmluZSBVX0hBVkVfVUlO
VDY0X1QgMAorI2VuZGlmCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEdlbmVyaWMgZGF0
YSB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5o
PgorCisvKiBJZiB5b3VyIHBsYXRmb3JtIGRvZXMgbm90IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBo
ZWFkZXIsIHlvdSBtYXkKKyAgIG5lZWQgdG8gZWRpdCB0aGUgdHlwZWRlZnMgYmVsb3cuICovCisj
aWYgVV9IQVZFX0lOVFRZUEVTX0gKKworLyogYXV0b2NvbmYgMi4xMyBzb21ldGltZXMgY2FuJ3Qg
cHJvcGVybHkgZmluZCB0aGUgZGF0YSB0eXBlcyBpbiA8aW50dHlwZXMuaD4gKi8KKy8qIG9zLzM5
MCBuZWVkcyA8aW50dHlwZXMuaD4sIGJ1dCBpdCBkb2Vzbid0IGhhdmUgaW50OF90LCBhbmQgaXQg
c29tZXRpbWVzICovCisvKiBkb2Vzbid0IGhhdmUgdWludDhfdCBkZXBlbmRpbmcgb24gdGhlIE9T
IHZlcnNpb24uICovCisvKiBTbyB3ZSBoYXZlIHRoaXMgd29yayBhcm91bmQuICovCisjaWZkZWYg
T1MzOTAKKy8qIFRoZSBmZWF0dXJlcyBoZWFkZXIgaXMgbmVlZGVkIHRvIGdldCAodSlpbnQ2NF90
IHNvbWV0aW1lcy4gKi8KKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgorI2lmICEgVV9IQVZFX0lOVDhf
VAordHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7CisjZW5kaWYKKyNpZiAhZGVmaW5lZChfX3Vp
bnQ4X3QpCisjZGVmaW5lIF9fdWludDhfdCAxCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhf
dDsKKyNlbmRpZgorI2VuZGlmIC8qIE9TMzkwICovCisKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgor
CisjZWxzZSAvKiBVX0hBVkVfSU5UVFlQRVNfSCAqLworCisjaWYgISBVX0hBVkVfSU5UOF9UCit0
eXBlZGVmIHNpZ25lZCBjaGFyIGludDhfdDsKKyNlbmRpZgorCisjaWYgISBVX0hBVkVfVUlOVDhf
VAordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7CisjZW5kaWYKKworI2lmICEgVV9IQVZF
X0lOVDE2X1QKK3R5cGVkZWYgc2lnbmVkIHNob3J0IGludDE2X3Q7CisjZW5kaWYKKworI2lmICEg
VV9IQVZFX1VJTlQxNl9UCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90OworI2VuZGlm
CisKKyNpZiAhIFVfSEFWRV9JTlQzMl9UCit0eXBlZGVmIHNpZ25lZCBpbnQgaW50MzJfdDsKKyNl
bmRpZgorCisjaWYgISBVX0hBVkVfVUlOVDMyX1QKK3R5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQz
Ml90OworI2VuZGlmCisKKyNpZiAhIFVfSEFWRV9JTlQ2NF9UCisgICAgdHlwZWRlZiBzaWduZWQg
bG9uZyBsb25nIGludDY0X3Q7CisvKiBlbHNlIHdlIG1heSBub3QgaGF2ZSBhIDY0LWJpdCB0eXBl
ICovCisjZW5kaWYKKworI2lmICEgVV9IQVZFX1VJTlQ2NF9UCisgICAgdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIGxvbmcgdWludDY0X3Q7CisvKiBlbHNlIHdlIG1heSBub3QgaGF2ZSBhIDY0LWJpdCB0
eXBlICovCisjZW5kaWYKKworI2VuZGlmCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIENv
bXBpbGVyIGFuZCBlbnZpcm9ubWVudCBmZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyogRGVmaW5lIHdo
ZXRoZXIgbmFtZXNwYWNlIGlzIHN1cHBvcnRlZCAqLworI2lmbmRlZiBVX0hBVkVfTkFNRVNQQUNF
CisjZGVmaW5lIFVfSEFWRV9OQU1FU1BBQ0UgMQorI2VuZGlmCisKKy8qIERldGVybWluZXMgdGhl
IGVuZGlhbm5lc3Mgb2YgdGhlIHBsYXRmb3JtCisgICBJdCdzIGRvbmUgdGhpcyB3YXkgaW4gY2Fz
ZSBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzIGFyZSBiZWluZyBidWlsdCBhdCBvbmNlLgorICAgRm9y
IGV4YW1wbGUsIERhcndpbiBzdXBwb3J0cyBmYXQgYmluYXJpZXMsIHdoaWNoIGNhbiBiZSBib3Ro
IFBQQyBhbmQgeDg2IGJhc2VkLiAqLworI2lmIGRlZmluZWQoQllURV9PUkRFUikgJiYgZGVmaW5l
ZChCSUdfRU5ESUFOKQorI2RlZmluZSBVX0lTX0JJR19FTkRJQU4gKEJZVEVfT1JERVIgPT0gQklH
X0VORElBTikKKyNlbHNlCisjZGVmaW5lIFVfSVNfQklHX0VORElBTiAxCisjZW5kaWYKKworLyog
MSBvciAwIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRocmVhZHMuICBJZiB1bmRlZmluZWQsIGRlZmF1
bHQgaXM6IGVuYWJsZSB0aHJlYWRzLiAqLworI2RlZmluZSBJQ1VfVVNFX1RIUkVBRFMgMQorCisj
aWZuZGVmIFVfREVCVUcKKyNkZWZpbmUgVV9ERUJVRyAwCisjZW5kaWYKKworI2lmbmRlZiBVX1JF
TEVBU0UKKyNkZWZpbmUgVV9SRUxFQVNFIDEKKyNlbmRpZgorCisvKiBEZXRlcm1pbmUgd2hldGhl
ciB0byBkaXNhYmxlIHJlbmFtaW5nIG9yIG5vdC4gVGhpcyBvdmVycmlkZXMgdGhlCisgICBzZXR0
aW5nIGluIHVtYWNoaW5lLmggd2hpY2ggaXMgZm9yIGFsbCBwbGF0Zm9ybXMuICovCisjaWZuZGVm
IFVfRElTQUJMRV9SRU5BTUlORworI2RlZmluZSBVX0RJU0FCTEVfUkVOQU1JTkcgMQorI2VuZGlm
CisKKy8qIERldGVybWluZSB3aGV0aGVyIHRvIG92ZXJyaWRlIG5ldyBhbmQgZGVsZXRlLiAqLwor
I2lmbmRlZiBVX09WRVJSSURFX0NYWF9BTExPQ0FUSU9OCisjZGVmaW5lIFVfT1ZFUlJJREVfQ1hY
X0FMTE9DQVRJT04gMQorI2VuZGlmCisvKiBEZXRlcm1pbmUgd2hldGhlciB0byBvdmVycmlkZSBw
bGFjZW1lbnQgbmV3IGFuZCBkZWxldGUgZm9yIFNUTC4gKi8KKyNpZm5kZWYgVV9IQVZFX1BMQUNF
TUVOVF9ORVcKKyNkZWZpbmUgVV9IQVZFX1BMQUNFTUVOVF9ORVcgMQorI2VuZGlmCisKKy8qIERl
dGVybWluZSB3aGV0aGVyIHRvIGVuYWJsZSB0cmFjaW5nLiAqLworI2lmbmRlZiBVX0VOQUJMRV9U
UkFDSU5HCisjZGVmaW5lIFVfRU5BQkxFX1RSQUNJTkcgMQorI2VuZGlmCisKKy8qIERlZmluZSB0
aGUgbGlicmFyeSBzdWZmaXggaW4gYSBDIHN5bnRheC4gKi8KKyNkZWZpbmUgVV9IQVZFX0xJQl9T
VUZGSVggMAorI2RlZmluZSBVX0xJQl9TVUZGSVhfQ19OQU1FIAorI2RlZmluZSBVX0xJQl9TVUZG
SVhfQ19OQU1FX1NUUklORyAiIgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBDaGFyYWN0
ZXIgZGF0YSB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNpZiBkZWZpbmVkKE9TMzkw
KSB8fCBkZWZpbmVkKE9TNDAwKQorIyAgIGRlZmluZSBVX0NIQVJTRVRfRkFNSUxZIDEKKyNlbmRp
ZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBJbmZvcm1hdGlvbiBhYm91dCB3Y2hhciBz
dXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgVV9IQVZFX1dDSEFSX0ggICAgICAxCisjZGVm
aW5lIFVfU0laRU9GX1dDSEFSX1QgICAgNAorCisjZGVmaW5lIFVfSEFWRV9XQ1NDUFkgICAgICAg
MQorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBJbmZvcm1hdGlvbiBhYm91dCBQT1NJWCBz
dXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgVV9IQVZFX05MX0xBTkdJTkZPICAgICAgICAg
IDEKKyNkZWZpbmUgVV9IQVZFX05MX0xBTkdJTkZPX0NPREVTRVQgIDEKKyNkZWZpbmUgVV9OTF9M
QU5HSU5GT19DT0RFU0VUICAgICAgIENPREVTRVQKKworI2lmIDEKKyNkZWZpbmUgVV9UWlNFVCAg
ICAgICAgIHR6c2V0CisjZW5kaWYKKyNpZiAwCisjZGVmaW5lIFVfVElNRVpPTkUgICAgICAKKyNl
bmRpZgorI2lmIDEKKyNkZWZpbmUgVV9UWk5BTUUgICAgICAgIHR6bmFtZQorI2VuZGlmCisKKyNk
ZWZpbmUgVV9IQVZFX01NQVAgICAgIDEKKyNkZWZpbmUgVV9IQVZFX1BPUEVOICAgIDEKKworLyo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0qLworLyogU3ltYm9sIGltcG9ydC1leHBvcnQgY29udHJvbCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0qLworCisjZGVmaW5lIFVfRVhQT1JUCisvKiBVX0NBTExDT05WIGlzIHJlbGVhdGVk
IHRvIFVfRVhQT1JUMiAqLworI2RlZmluZSBVX0VYUE9SVDIKKworLyogY3lnd2luIG5lZWRzIHRv
IGV4cG9ydC9pbXBvcnQgZGF0YSAqLworI2lmZGVmIFVfQ1lHV0lOCisjZGVmaW5lIFVfSU1QT1JU
IF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgVV9JTVBPUlQgCisjZW5kaWYK
KworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogQ29kZSBhbGlnbm1lbnQgYW5kIEMgZnVuY3Rp
b24gaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0qLworCisjaWZuZGVmIFVfSU5MSU5FCisjZGVmaW5lIFVfSU5MSU5FIGlu
bGluZQorI2VuZGlmCisKKyNkZWZpbmUgVV9BTElHTl9DT0RFKG4pIAorCisvKj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSovCisvKiBQcm9ncmFtcyB1c2VkIGJ5IElDVSBjb2RlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov
CisKKyNkZWZpbmUgVV9NQUtFICAiL3Vzci9iaW4vZ251bWFrZSIKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRHbHVlL2ljdS91bmljb2RlL3B1dGlsLmggYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29k
ZS9wdXRpbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NWRmNTMKLS0t
IC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS9wdXRpbC5oCkBAIC0w
LDAgKzEsMTgwIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJpZ2h0
IChDKSAxOTk3LTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jw
b3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgorKgorKiAgRklMRSBOQU1FIDogcHV0aWwuaAorKgorKiAgIERhdGUgICAgICAg
IE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMDUvMTQvOTggICAgbm9zICAgICAgICAgQ3Jl
YXRpb24gKGNvbnRlbnQgbW92ZWQgaGVyZSBmcm9tIHV0eXBlcy5oKS4KKyogICAwNi8xNy85OSAg
ICBlcm0gICAgICAgICBBZGRlZCBJRUVFXzc1NAorKiAgIDA3LzIyLzk4ICAgIHN0ZXBoZW4gICAg
IEFkZGVkIElFRUVyZW1haW5kZXIsIG1heCwgbWluLCB0cnVuYworKiAgIDA4LzEzLzk4ICAgIHN0
ZXBoZW4gICAgIEFkZGVkIGlzTmVnYXRpdmVJbmZpbml0eSwgaXNQb3NpdGl2ZUluZmluaXR5Cisq
ICAgMDgvMjQvOTggICAgc3RlcGhlbiAgICAgQWRkZWQgbG9uZ0JpdHNGcm9tRG91YmxlCisqICAg
MDMvMDIvOTkgICAgc3RlcGhlbiAgICAgUmVtb3ZlZCBvcGVuRmlsZSgpLiAgQWRkZWQgQVM0MDAg
c3VwcG9ydC4KKyogICAwNC8xNS85OSAgICBzdGVwaGVuICAgICBDb252ZXJ0ZWQgdG8gQworKiAg
IDExLzE1Lzk5ICAgIGhlbGVuYSAgICAgIEludGVncmF0ZWQgUy8zOTAgY2hhbmdlcyBmb3IgSUVF
RSBzdXBwb3J0LgorKiAgIDAxLzExLzAwICAgIGhlbGVuYSAgICAgIEFkZGVkIHVfZ2V0VmVyc2lv
bi4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworI2lmbmRlZiBQVVRJTF9ICisjZGVmaW5l
IFBVVElMX0gKKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisKKy8qIERlZmluZSB0aGlz
IHRvIDEgaWYgeW91ciBwbGF0Zm9ybSBzdXBwb3J0cyBJRUVFIDc1NCBmbG9hdGluZyBwb2ludCwK
KyAgIHRvIDAgaWYgaXQgZG9lcyBub3QuICovCisjaWZuZGVmIElFRUVfNzU0CisjICAgZGVmaW5l
IElFRUVfNzU0IDEKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFBsYXRmb3Jt
IHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKy8qKgorICogUGxhdGZvcm0gdXRp
bGl0aWVzIGlzb2xhdGVzIHRoZSBwbGF0Zm9ybSBkZXBlbmRlbmNpZXMgb2YgdGhlCisgKiBsaWJh
cmFyeS4gIEZvciBlYWNoIHBsYXRmb3JtIHdoaWNoIHRoaXMgY29kZSBpcyBwb3J0ZWQgdG8sIHRo
ZXNlCisgKiBmdW5jdGlvbnMgbWF5IGhhdmUgdG8gYmUgcmUtaW1wbGVtZW50ZWQuCisgKi8KKwor
LyoqCisgKiBSZXR1cm4gdGhlIElDVSBkYXRhIGRpcmVjdG9yeS4gCisgKiBUaGUgZGF0YSBkaXJl
Y3RvcnkgaXMgd2hlcmUgY29tbW9uIGZvcm1hdCBJQ1UgZGF0YSBmaWxlcyAoLmRhdCBmaWxlcykK
KyAqICAgYXJlIGxvYWRlZCBmcm9tLiAgTm90ZSB0aGF0IG5vcm1hbCB1c2Ugb2YgdGhlIGJ1aWx0
LWluIElDVQorICogICBmYWNpbGl0aWVzIGRvZXMgbm90IHJlcXVpcmUgbG9hZGluZyBvZiBhbiBl
eHRlcm5hbCBkYXRhIGZpbGU7CisgKiAgIHVubGVzcyB5b3UgYXJlIGFkZGluZyBjdXN0b20gZGF0
YSB0byBJQ1UsIHRoZSBkYXRhIGRpcmVjdG9yeQorICogICBkb2VzIG5vdCBuZWVkIHRvIGJlIHNl
dC4KKyAqCisgKiBUaGUgZGF0YSBkaXJlY3RvcnkgaXMgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOgor
ICogICAgSWYgdV9zZXREYXRhRGlyZWN0b3J5KCkgaGFzIGJlZW4gY2FsbGVkLCB0aGF0IGlzIGl0
LCBvdGhlcndpc2UKKyAqICAgIGlmIHRoZSBJQ1VfREFUQSBlbnZpcm9ubWVudCB2YXJpYWJsZSBp
cyBzZXQsIHVzZSB0aGF0LCBvdGhlcndpc2UKKyAqICAgIElmIGEgZGF0YSBkaXJlY3Rvcnkgd2Fz
IHNwZWNpZmVkIGF0IElDVSBidWlsZCB0aW1lCisgKiAgICAgICgjZGVmaW5lIElDVV9EQVRBX0RJ
UiAicGF0aCIpLCB1c2UgdGhhdCwKKyAqICAgIG90aGVyd2lzZSBubyBkYXRhIGRpcmVjdG9yeSBp
cyBhdmFpbGFibGUuCisgKgorICogQHJldHVybiB0aGUgZGF0YSBkaXJlY3RvcnksIG9yIGFuIGVt
cHR5IHN0cmluZyAoIiIpIGlmIG5vIGRhdGEgZGlyZWN0b3J5IGhhcworICogICAgICAgICBiZWVu
IHNwZWNpZmllZC4KKyAqICAgCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgY29u
c3QgY2hhciogVV9FWFBPUlQyIHVfZ2V0RGF0YURpcmVjdG9yeSh2b2lkKTsKKworLyoqIAorICog
U2V0IHRoZSBJQ1UgZGF0YSBkaXJlY3RvcnkuIAorICogVGhlIGRhdGEgZGlyZWN0b3J5IGlzIHdo
ZXJlIGNvbW1vbiBmb3JtYXQgSUNVIGRhdGEgZmlsZXMgKC5kYXQgZmlsZXMpCisgKiAgIGFyZSBs
b2FkZWQgZnJvbS4gIE5vdGUgdGhhdCBub3JtYWwgdXNlIG9mIHRoZSBidWlsdC1pbiBJQ1UKKyAq
ICAgZmFjaWxpdGllcyBkb2VzIG5vdCByZXF1aXJlIGxvYWRpbmcgb2YgYW4gZXh0ZXJuYWwgZGF0
YSBmaWxlOworICogICB1bmxlc3MgeW91IGFyZSBhZGRpbmcgY3VzdG9tIGRhdGEgdG8gSUNVLCB0
aGUgZGF0YSBkaXJlY3RvcnkKKyAqICAgZG9lcyBub3QgbmVlZCB0byBiZSBzZXQuCisgKgorICog
VGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGF0IG1vc3Qgb25jZSBpbiBhIHByb2Nlc3Ms
IGJlZm9yZSB0aGUKKyAqIGZpcnN0IElDVSBvcGVyYXRpb24gKGUuZy4sIHVfaW5pdCgpKSB0aGF0
IHdpbGwgcmVxdWlyZSB0aGUgbG9hZGluZyBvZiBhbgorICogSUNVIGRhdGEgZmlsZS4KKyAqIFRo
aXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZC1zYWZlLiBVc2UgaXQgYmVmb3JlIGNhbGxpbmcgSUNV
IEFQSXMgZnJvbQorICogbXVsdGlwbGUgdGhyZWFkcy4KKyAqCisgKiBAcGFyYW0gZGlyZWN0b3J5
IFRoZSBkaXJlY3RvcnkgdG8gYmUgc2V0LgorICoKKyAqIEBzZWUgdV9pbml0CisgKiBAc3RhYmxl
IElDVSAyLjAKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgdV9zZXREYXRhRGlyZWN0b3J5
KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSk7CisKKy8qKgorICogUGxlYXNlIHVzZSB1Y252X2dldERl
ZmF1bHROYW1lKCkgaW5zdGVhZC4KKyAqIFJldHVybiB0aGUgZGVmYXVsdCBjb2RlcGFnZSBmb3Ig
dGhpcyBwbGF0Zm9ybSBhbmQgbG9jYWxlLgorICogVGhpcyBmdW5jdGlvbiBjYW4gY2FsbCBzZXRs
b2NhbGUoKSBvbiBVbml4IHBsYXRmb3Jtcy4gUGxlYXNlIHJlYWQgdGhlCisgKiBwbGF0Zm9ybSBk
b2N1bWVudGF0aW9uIG9uIHNldGxvY2FsZSgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24u
CisgKiBAcmV0dXJuIHRoZSBkZWZhdWx0IGNvZGVwYWdlIGZvciB0aGlzIHBsYXRmb3JtIAorICog
QGludGVybmFsCisgKi8KK1VfSU5URVJOQUwgY29uc3QgY2hhciogIFVfRVhQT1JUMiB1cHJ2X2dl
dERlZmF1bHRDb2RlcGFnZSh2b2lkKTsKKworLyoqCisgKiBQbGVhc2UgdXNlIHVsb2NfZ2V0RGVm
YXVsdCgpIGluc3RlYWQuCisgKiBSZXR1cm4gdGhlIGRlZmF1bHQgbG9jYWxlIElEIHN0cmluZyBi
eSBxdWVyeWluZyB0aHMgc3lzdGVtLCBvcgorICogICAgIHplcm8gaWYgb25lIGNhbm5vdCBiZSBm
b3VuZC4gCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBjYWxsIHNldGxvY2FsZSgpIG9uIFVuaXggcGxh
dGZvcm1zLiBQbGVhc2UgcmVhZCB0aGUKKyAqIHBsYXRmb3JtIGRvY3VtZW50YXRpb24gb24gc2V0
bG9jYWxlKCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAqIEByZXR1cm4gdGhlIGRl
ZmF1bHQgbG9jYWxlIElEIHN0cmluZworICogQGludGVybmFsCisgKi8KK1VfSU5URVJOQUwgY29u
c3QgY2hhciogIFVfRVhQT1JUMiB1cHJ2X2dldERlZmF1bHRMb2NhbGVJRCh2b2lkKTsKKworLyoq
CisgKiBGaWxlc3lzdGVtIGZpbGUgYW5kIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCisgKiBF
eGFtcGxlOiAnLycgYW5kICc6JyBvbiBVbml4LCAnXFwnIGFuZCAnOycgb24gV2luZG93cy4KKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCisjaWZkZWYgWFBfTUFDCisjICAgZGVmaW5lIFVfRklMRV9T
RVBfQ0hBUiAnOicKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfQ0hBUiAnOicKKyMgICBkZWZp
bmUgVV9QQVRIX1NFUF9DSEFSICc7JworIyAgIGRlZmluZSBVX0ZJTEVfU0VQX1NUUklORyAiOiIK
KyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfU1RSSU5HICI6IgorIyAgIGRlZmluZSBVX1BBVEhf
U0VQX1NUUklORyAiOyIKKyNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoT1MyKQorIyAg
IGRlZmluZSBVX0ZJTEVfU0VQX0NIQVIgJ1xcJworIyAgIGRlZmluZSBVX0ZJTEVfQUxUX1NFUF9D
SEFSICcvJworIyAgIGRlZmluZSBVX1BBVEhfU0VQX0NIQVIgJzsnCisjICAgZGVmaW5lIFVfRklM
RV9TRVBfU1RSSU5HICJcXCIKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfU1RSSU5HICIvIgor
IyAgIGRlZmluZSBVX1BBVEhfU0VQX1NUUklORyAiOyIKKyNlbHNlCisjICAgZGVmaW5lIFVfRklM
RV9TRVBfQ0hBUiAnLycKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfQ0hBUiAnLycKKyMgICBk
ZWZpbmUgVV9QQVRIX1NFUF9DSEFSICc6JworIyAgIGRlZmluZSBVX0ZJTEVfU0VQX1NUUklORyAi
LyIKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfU1RSSU5HICIvIgorIyAgIGRlZmluZSBVX1BB
VEhfU0VQX1NUUklORyAiOiIKKyNlbmRpZgorCisvKioKKyAqIENvbnZlcnQgY2hhciBjaGFyYWN0
ZXJzIHRvIFVDaGFyIGNoYXJhY3RlcnMuCisgKiBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gaXMgdXNl
ZnVsIG9ubHkgZm9yICJpbnZhcmlhbnQgY2hhcmFjdGVycyIKKyAqIHRoYXQgYXJlIGVuY29kZWQg
aW4gdGhlIHBsYXRmb3JtIGRlZmF1bHQgZW5jb2RpbmcuCisgKiBUaGV5IGFyZSBhIHNtYWxsLCBj
b25zdGFudCBzdWJzZXQgb2YgdGhlIGVuY29kaW5nIGFuZCBpbmNsdWRlCisgKiBqdXN0IHRoZSBs
YXRpbiBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9uLgorICogRm9yIGRldGFp
bHMsIHNlZSBVX0NIQVJTRVRfRkFNSUxZLgorICoKKyAqIEBwYXJhbSBjcyBJbnB1dCBzdHJpbmcs
IHBvaW50cyB0byA8Y29kZT5sZW5ndGg8L2NvZGU+CisgKiAgICAgICAgICAgY2hhcmFjdGVyIGJ5
dGVzIGZyb20gYSBzdWJzZXQgb2YgdGhlIHBsYXRmb3JtIGVuY29kaW5nLgorICogQHBhcmFtIHVz
IE91dHB1dCBzdHJpbmcsIHBvaW50cyB0byBtZW1vcnkgZm9yIDxjb2RlPmxlbmd0aDwvY29kZT4K
KyAqICAgICAgICAgICBVbmljb2RlIGNoYXJhY3RlcnMuCisgKiBAcGFyYW0gbGVuZ3RoIFRoZSBu
dW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb252ZXJ0OyB0aGlzIG1heQorICogICAgICAgICAgICAg
ICBpbmNsdWRlIHRoZSB0ZXJtaW5hdGluZyA8Y29kZT5OVUw8L2NvZGU+LgorICoKKyAqIEBzZWUg
VV9DSEFSU0VUX0ZBTUlMWQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIHZvaWQg
VV9FWFBPUlQyCit1X2NoYXJzVG9VQ2hhcnMoY29uc3QgY2hhciAqY3MsIFVDaGFyICp1cywgaW50
MzJfdCBsZW5ndGgpOworCisvKioKKyAqIENvbnZlcnQgVUNoYXIgY2hhcmFjdGVycyB0byBjaGFy
IGNoYXJhY3RlcnMuCisgKiBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gaXMgdXNlZnVsIG9ubHkgZm9y
ICJpbnZhcmlhbnQgY2hhcmFjdGVycyIKKyAqIHRoYXQgY2FuIGJlIGVuY29kZWQgaW4gdGhlIHBs
YXRmb3JtIGRlZmF1bHQgZW5jb2RpbmcuCisgKiBUaGV5IGFyZSBhIHNtYWxsLCBjb25zdGFudCBz
dWJzZXQgb2YgdGhlIGVuY29kaW5nIGFuZCBpbmNsdWRlCisgKiBqdXN0IHRoZSBsYXRpbiBsZXR0
ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9uLgorICogRm9yIGRldGFpbHMsIHNlZSBV
X0NIQVJTRVRfRkFNSUxZLgorICoKKyAqIEBwYXJhbSB1cyBJbnB1dCBzdHJpbmcsIHBvaW50cyB0
byA8Y29kZT5sZW5ndGg8L2NvZGU+CisgKiAgICAgICAgICAgVW5pY29kZSBjaGFyYWN0ZXJzIHRo
YXQgY2FuIGJlIGVuY29kZWQgd2l0aCB0aGUKKyAqICAgICAgICAgICBjb2RlcGFnZS1pbnZhcmlh
bnQgc3Vic2V0IG9mIHRoZSBwbGF0Zm9ybSBlbmNvZGluZy4KKyAqIEBwYXJhbSBjcyBPdXRwdXQg
c3RyaW5nLCBwb2ludHMgdG8gbWVtb3J5IGZvciA8Y29kZT5sZW5ndGg8L2NvZGU+CisgKiAgICAg
ICAgICAgY2hhcmFjdGVyIGJ5dGVzLgorICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9mIGNo
YXJhY3RlcnMgdG8gY29udmVydDsgdGhpcyBtYXkKKyAqICAgICAgICAgICAgICAgaW5jbHVkZSB0
aGUgdGVybWluYXRpbmcgPGNvZGU+TlVMPC9jb2RlPi4KKyAqCisgKiBAc2VlIFVfQ0hBUlNFVF9G
QU1JTFkKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgor
dV9VQ2hhcnNUb0NoYXJzKGNvbnN0IFVDaGFyICp1cywgY2hhciAqY3MsIGludDMyX3QgbGVuZ3Ro
KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91Y2hh
ci5oIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWNoYXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43ZmQ0OTBjCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlw
dEdsdWUvaWN1L3VuaWNvZGUvdWNoYXIuaApAQCAtMCwwICsxLDI3OTggQEAKKy8qCisqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5l
c3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyoKKyogRmlsZSBVQ0hBUi5ICisqCisqIE1vZGlmaWNhdGlv
biBIaXN0b3J5OgorKgorKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisq
ICAgMDQvMDIvOTcgICAgYWxpdSAgICAgICAgQ3JlYXRpb24uCisqICAgMDMvMjkvOTkgICAgaGVs
ZW5hICAgICAgVXBkYXRlZCBmb3IgQyBBUElzLgorKiAgIDQvMTUvOTkgICAgIE1hZGh1ICAgICAg
IFVwZGF0ZWQgZm9yIEMgSW1wbGVtZW50YXRpb24gYW5kIEphdmFkb2MKKyogICA1LzIwLzk5ICAg
ICBNYWRodSAgICAgICBBZGRlZCB0aGUgZnVuY3Rpb24gdV9nZXRWZXJzaW9uKCkKKyogICA4LzE5
LzE5OTkgICBzcmwgICAgICAgICBVcGdyYWRlZCBzY3JpcHRzIHRvIFVuaWNvZGUgMy4wCisqICAg
OC8yNy8xOTk5ICAgc2NoZXJlcm0gICAgVUNoYXJEaXJlY3Rpb24gY29uc3RhbnRzOiBVXy4uLgor
KiAgIDExLzExLzE5OTkgIHdlaXYgICAgICAgIGFkZGVkIHVfaXNhbG51bSgpLCBjbGVhbmVkIGNv
bW1lbnRzCisqICAgMDEvMTEvMjAwMCAgaGVsZW5hICAgICAgUmVuYW1lZCB1X2dldFZlcnNpb24g
dG8gdV9nZXRVbmljb2RlVmVyc2lvbigpLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisj
aWZuZGVmIFVDSEFSX0gKKyNkZWZpbmUgVUNIQVJfSAorCisjaW5jbHVkZSAidW5pY29kZS91dHlw
ZXMuaCIKKworVV9DREVDTF9CRUdJTgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFVuaWNv
ZGUgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKioKKyAqIFVuaWNvZGUgdmVy
c2lvbiBudW1iZXIsIGRlZmF1bHQgZm9yIHRoZSBjdXJyZW50IElDVSB2ZXJzaW9uLgorICogVGhl
IGFjdHVhbCBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSBkYXRhIGlzIHN0b3JlZCBp
biB1cHJvcHMuZGF0CisgKiBhbmQgbWF5IGJlIGdlbmVyYXRlZCBmcm9tIFVDRCBmaWxlcyBmcm9t
IGEgZGlmZmVyZW50IFVuaWNvZGUgdmVyc2lvbi4KKyAqIENhbGwgdV9nZXRVbmljb2RlVmVyc2lv
biB0byBnZXQgdGhlIGFjdHVhbCBVbmljb2RlIHZlcnNpb24gb2YgdGhlIGRhdGEuCisgKgorICog
QHNlZSB1X2dldFVuaWNvZGVWZXJzaW9uCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworI2RlZmlu
ZSBVX1VOSUNPREVfVkVSU0lPTiAiNC4wLjEiCisKKy8qKgorICogXGZpbGUKKyAqIFxicmllZiBD
IEFQSTogVW5pY29kZSBQcm9wZXJ0aWVzCisgKgorICogVGhpcyBDIEFQSSBwcm92aWRlcyBsb3ct
bGV2ZWwgYWNjZXNzIHRvIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZS4KKyAqIEluIGFk
ZGl0aW9uIHRvIHJhdyBwcm9wZXJ0eSB2YWx1ZXMsIHNvbWUgY29udmVuaWVuY2UgZnVuY3Rpb25z
IGNhbGN1bGF0ZQorICogZGVyaXZlZCBwcm9wZXJ0aWVzLCBmb3IgZXhhbXBsZSBmb3IgSmF2YS1z
dHlsZSBwcm9ncmFtbWluZy4KKyAqCisgKiBVbmljb2RlIGFzc2lnbnMgZWFjaCBjb2RlIHBvaW50
IChub3QganVzdCBhc3NpZ25lZCBjaGFyYWN0ZXIpIHZhbHVlcyBmb3IKKyAqIG1hbnkgcHJvcGVy
dGllcy4KKyAqIE1vc3Qgb2YgdGhlbSBhcmUgc2ltcGxlIGJvb2xlYW4gZmxhZ3MsIG9yIGNvbnN0
YW50cyBmcm9tIGEgc21hbGwgZW51bWVyYXRlZCBsaXN0LgorICogRm9yIHNvbWUgcHJvcGVydGll
cywgdmFsdWVzIGFyZSBzdHJpbmdzIG9yIG90aGVyIHJlbGF0aXZlbHkgbW9yZSBjb21wbGV4IHR5
cGVzLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZQorICogIkFib3V0IHRoZSBVbmlj
b2RlIENoYXJhY3RlciBEYXRhYmFzZSIgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdWNkLykKKyAq
IGFuZCB0aGUgSUNVIFVzZXIgR3VpZGUgY2hhcHRlciBvbiBQcm9wZXJ0aWVzIChodHRwOi8vb3Nz
LnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS9wcm9wZXJ0aWVzLmh0bWwpLgorICoKKyAq
IE1hbnkgZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYXRjaCBqYXZhLmxhbmcuQ2hhcmFjdGVy
IGZ1bmN0aW9ucy4KKyAqIFNlZSB0aGUgaW5kaXZpZHVhbCBmdW5jdGlvbiBkb2N1bWVudGF0aW9u
LAorICogYW5kIHNlZSB0aGUgSkRLIDEuNC4xIGphdmEubGFuZy5DaGFyYWN0ZXIgZG9jdW1lbnRh
dGlvbgorICogYXQgaHR0cDovL2phdmEuc3VuLmNvbS9qMnNlLzEuNC4xL2RvY3MvYXBpL2phdmEv
bGFuZy9DaGFyYWN0ZXIuaHRtbAorICoKKyAqIFRoZXJlIGFyZSBhbHNvIGZ1bmN0aW9ucyB0aGF0
IHByb3ZpZGUgZWFzeSBtaWdyYXRpb24gZnJvbSBDL1BPU0lYIGZ1bmN0aW9ucworICogbGlrZSBp
c2JsYW5rKCkuIFRoZWlyIHVzZSBpcyBnZW5lcmFsbHkgZGlzY291cmFnZWQgYmVjYXVzZSB0aGUg
Qy9QT1NJWAorICogc3RhbmRhcmRzIGRvIG5vdCBkZWZpbmUgdGhlaXIgc2VtYW50aWNzIGJleW9u
ZCB0aGUgQVNDSUkgcmFuZ2UsIHdoaWNoIG1lYW5zCisgKiB0aGF0IGRpZmZlcmVudCBpbXBsZW1l
bnRhdGlvbnMgZXhoaWJpdCB2ZXJ5IGRpZmZlcmVudCBiZWhhdmlvci4KKyAqIEluc3RlYWQsIFVu
aWNvZGUgcHJvcGVydGllcyBzaG91bGQgYmUgdXNlZCBkaXJlY3RseS4KKyAqCisgKiBUaGVyZSBh
cmUgYWxzbyBvbmx5IGEgZmV3LCBicm9hZCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2VzLCBhbmQg
dGhleSB0ZW5kCisgKiB0byBiZSB1c2VkIGZvciBjb25mbGljdGluZyBwdXJwb3Nlcy4gRm9yIGV4
YW1wbGUsIHRoZSAiaXNhbHBoYSgpIiBjbGFzcworICogaXMgc29tZXRpbWVzIHVzZWQgdG8gZGV0
ZXJtaW5lIHdvcmQgYm91bmRhcmllcywgd2hpbGUgYSBtb3JlIHNvcGhpc3RpY2F0ZWQKKyAqIGFw
cHJvYWNoIHdvdWxkIGF0IGxlYXN0IGRpc3Rpbmd1aXNoIGluaXRpYWwgbGV0dGVycyBmcm9tIGNv
bnRpbnVhdGlvbgorICogY2hhcmFjdGVycyAodGhlIGxhdHRlciBpbmNsdWRpbmcgY29tYmluaW5n
IG1hcmtzKS4KKyAqIChJbiBJQ1UsIEJyZWFrSXRlcmF0b3IgaXMgdGhlIG1vc3Qgc29waGlzdGlj
YXRlZCBBUEkgZm9yIHdvcmQgYm91bmRhcmllcy4pCisgKiBBbm90aGVyIGV4YW1wbGU6IFRoZXJl
IGlzIG5vICJpc3RpdGxlKCkiIGNsYXNzIGZvciB0aXRsZWNhc2UgY2hhcmFjdGVycy4KKyAqCisg
KiBBIHN1bW1hcnkgb2YgdGhlIGJlaGF2aW9yIG9mIHNvbWUgQy9QT1NJWCBjaGFyYWN0ZXIgY2xh
c3NpZmljYXRpb24gaW1wbGVtZW50YXRpb25zCisgKiBmb3IgVW5pY29kZSBpcyBhdmFpbGFibGUg
YXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2N2cy9pY3UvfmNoZWNrb3V0fi9pY3VodG1s
L2Rlc2lnbi9wb3NpeF9jbGFzc2VzLmh0bWwKKyAqCisgKiA8c3Ryb25nPkltcG9ydGFudDwvc3Ry
b25nPjoKKyAqIFRoZSBiZWhhdmlvciBvZiB0aGUgSUNVIEMvUE9TSVgtc3R5bGUgY2hhcmFjdGVy
IGNsYXNzaWZpY2F0aW9uCisgKiBmdW5jdGlvbnMgaXMgc3ViamVjdCB0byBjaGFuZ2UgYWNjb3Jk
aW5nIHRvIGRpc2N1c3Npb24gb2YgdGhlIGFib3ZlIHN1bW1hcnkuCisgKgorICogTm90ZTogVGhl
cmUgYXJlIHNldmVyYWwgSUNVIHdoaXRlc3BhY2UgZnVuY3Rpb25zLgorICogQ29tcGFyaXNvbjoK
KyAqIC0gdV9pc1VXaGl0ZVNwYWNlPVVDSEFSX1dISVRFX1NQQUNFOiBVbmljb2RlIFdoaXRlX1Nw
YWNlIHByb3BlcnR5OworICogICAgICAgbW9zdCBvZiBnZW5lcmFsIGNhdGVnb3JpZXMgIloiIChz
ZXBhcmF0b3JzKSArIG1vc3Qgd2hpdGVzcGFjZSBJU08gY29udHJvbHMKKyAqICAgICAgIChpbmNs
dWRpbmcgbm8tYnJlYWsgc3BhY2VzLCBidXQgZXhjbHVkaW5nIElTMS4uSVM0IGFuZCBaV1NQKQor
ICogLSB1X2lzV2hpdGVzcGFjZTogSmF2YSBpc1doaXRlc3BhY2U7IFogKyB3aGl0ZXNwYWNlIElT
TyBjb250cm9scyBidXQgZXhjbHVkaW5nIG5vLWJyZWFrIHNwYWNlcworICogLSB1X2lzSmF2YVNw
YWNlQ2hhcjogSmF2YSBpc1NwYWNlQ2hhcjsganVzdCBaIChpbmNsdWRpbmcgbm8tYnJlYWsgc3Bh
Y2VzKQorICogLSB1X2lzc3BhY2U6IFogKyB3aGl0ZXNwYWNlIElTTyBjb250cm9scyAoaW5jbHVk
aW5nIG5vLWJyZWFrIHNwYWNlcykKKyAqIC0gdV9pc2JsYW5rOiAiaG9yaXpvbnRhbCBzcGFjZXMi
ID0gVEFCICsgWnMgLSBaV1NQCisgKi8KKworLyoqCisgKiBDb25zdGFudHMuCisgKi8KKworLyoq
IFRoZSBsb3dlc3QgVW5pY29kZSBjb2RlIHBvaW50IHZhbHVlLiBDb2RlIHBvaW50cyBhcmUgbm9u
LW5lZ2F0aXZlLiBAc3RhYmxlIElDVSAyLjAgKi8KKyNkZWZpbmUgVUNIQVJfTUlOX1ZBTFVFIDAK
KworLyoqCisgKiBUaGUgaGlnaGVzdCBVbmljb2RlIGNvZGUgcG9pbnQgdmFsdWUgKHNjYWxhciB2
YWx1ZSkgYWNjb3JkaW5nIHRvCisgKiBUaGUgVW5pY29kZSBTdGFuZGFyZC4gVGhpcyBpcyBhIDIx
LWJpdCB2YWx1ZSAoMjAuMSBiaXRzLCByb3VuZGVkIHVwKS4KKyAqIEZvciBhIHNpbmdsZSBjaGFy
YWN0ZXIsIFVDaGFyMzIgaXMgYSBzaW1wbGUgdHlwZSB0aGF0IGNhbiBob2xkIGFueSBjb2RlIHBv
aW50IHZhbHVlLgorICoKKyAqIEBzZWUgVUNoYXIzMgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8K
KyNkZWZpbmUgVUNIQVJfTUFYX1ZBTFVFIDB4MTBmZmZmCisKKy8qKgorICogR2V0IGEgc2luZ2xl
LWJpdCBiaXQgc2V0IChhIGZsYWcpIGZyb20gYSBiaXQgbnVtYmVyIDAuLjMxLgorICogQHN0YWJs
ZSBJQ1UgMi4xCisgKi8KKyNkZWZpbmUgVV9NQVNLKHgpICgodWludDMyX3QpMTw8KHgpKQorCisv
KgorICogISEgTm90ZTogU2V2ZXJhbCBjb21tZW50cyBpbiB0aGlzIGZpbGUgYXJlIG1hY2hpbmUt
cmVhZCBieSB0aGUKKyAqIGdlbnBuYW1lIHRvb2wuICBUaGVzZSBjb21tZW50cyBkZXNjcmliZSB0
aGUgY29ycmVzcG9uZGVuY2UgYmV0d2VlbgorICogaWN1IGVudW0gY29uc3RhbnRzIGFuZCBVQ0Qg
ZW50aXRpZXMuICBEbyBub3QgZGVsZXRlIHRoZW0uICBVcGRhdGUKKyAqIHRoZXNlIGNvbW1lbnRz
IGFzIG5lZWRlZC4KKyAqCisgKiBBbnkgY29tbWVudCBvZiB0aGUgZm9ybSAiLyAqW25hbWVdKiAv
IiAoc3BhY2VzIGFkZGVkKSBpcyBzdWNoCisgKiBhIGNvbW1lbnQuCisgKgorICogVGhlIFVfSkdf
KiBhbmQgVV9HQ18qX01BU0sgY29uc3RhbnRzIGFyZSBtYXRjaGVkIGJ5IHRoZWlyIHN5bWJvbGlj
CisgKiBuYW1lLCB3aGljaCBtdXN0IG1hdGNoIFByb3BlcnR5VmFsdWVBbGlhc2VzLnR4dC4KKyAq
LworCisvKioKKyAqIFNlbGVjdGlvbiBjb25zdGFudHMgZm9yIFVuaWNvZGUgcHJvcGVydGllcy4K
KyAqIFRoZXNlIGNvbnN0YW50cyBhcmUgdXNlZCBpbiBmdW5jdGlvbnMgbGlrZSB1X2hhc0JpbmFy
eVByb3BlcnR5IHRvIHNlbGVjdAorICogb25lIG9mIHRoZSBVbmljb2RlIHByb3BlcnRpZXMuCisg
KgorICogVGhlIHByb3BlcnRpZXMgQVBJcyBhcmUgaW50ZW5kZWQgdG8gcmVmbGVjdCBVbmljb2Rl
IHByb3BlcnRpZXMgYXMgZGVmaW5lZAorICogaW4gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFi
YXNlIChVQ0QpIGFuZCBVbmljb2RlIFRlY2huaWNhbCBSZXBvcnRzIChVVFIpLgorICogRm9yIGRl
dGFpbHMgYWJvdXQgdGhlIHByb3BlcnRpZXMgc2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdWNk
LyAuCisgKiBGb3IgbmFtZXMgb2YgVW5pY29kZSBwcm9wZXJ0aWVzIHNlZSB0aGUgVUNEIGZpbGUg
UHJvcGVydHlBbGlhc2VzLnR4dC4KKyAqCisgKiBJbXBvcnRhbnQ6IElmIElDVSBpcyBidWlsdCB3
aXRoIFVDRCBmaWxlcyBmcm9tIFVuaWNvZGUgdmVyc2lvbnMgYmVsb3csIGUuZy4sIDMuMiwKKyAq
IHRoZW4gcHJvcGVydGllcyBtYXJrZWQgd2l0aCAibmV3IGluIFVuaWNvZGUgMy4yIiBhcmUgbm90
IG9yIG5vdCBmdWxseSBhdmFpbGFibGUuCisgKiBDaGVjayB1X2dldFVuaWNvZGVWZXJzaW9uIHRv
IGJlIHN1cmUuCisgKgorICogQHNlZSB1X2hhc0JpbmFyeVByb3BlcnR5CisgKiBAc2VlIHVfZ2V0
SW50UHJvcGVydHlWYWx1ZQorICogQHNlZSB1X2dldFVuaWNvZGVWZXJzaW9uCisgKiBAc3RhYmxl
IElDVSAyLjEKKyAqLwordHlwZWRlZiBlbnVtIFVQcm9wZXJ0eSB7CisgICAgLyogIFNlZSBub3Rl
ICEhLiAgQ29tbWVudHMgb2YgdGhlIGZvcm0gIkJpbmFyeSBwcm9wZXJ0eSBEYXNoIiwKKyAgICAg
ICAgIkVudW1lcmF0ZWQgcHJvcGVydHkgU2NyaXB0IiwgIkRvdWJsZSBwcm9wZXJ0eSBOdW1lcmlj
X1ZhbHVlIiwKKyAgICAgICAgYW5kICJTdHJpbmcgcHJvcGVydHkgQWdlIiBhcmUgcmVhZCBieSBn
ZW5wbmFtZS4gKi8KKworICAgIC8qICBOb3RlOiBQbGFjZSBVQ0hBUl9BTFBIQUJFVElDIGJlZm9y
ZSBVQ0hBUl9CSU5BUllfU1RBUlQgc28gdGhhdAorICAgIGRlYnVnZ2VycyBkaXNwbGF5IFVDSEFS
X0FMUEhBQkVUSUMgYXMgdGhlIHN5bWJvbGljIG5hbWUgZm9yIDAsCisgICAgcmF0aGVyIHRoYW4g
VUNIQVJfQklOQVJZX1NUQVJULiAgTGlrZXdpc2UgZm9yIG90aGVyICpfU1RBUlQKKyAgICBpZGVu
dGlmaWVycy4gKi8KKworICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgQWxwaGFiZXRpYy4gU2FtZSBh
cyB1X2lzVUFscGhhYmV0aWMsIGRpZmZlcmVudCBmcm9tIHVfaXNhbHBoYS4KKyAgICAgICAgTHUr
TGwrTHQrTG0rTG8rTmwrT3RoZXJfQWxwaGFiZXRpYyBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBV
Q0hBUl9BTFBIQUJFVElDPTAsCisgICAgLyoqIEZpcnN0IGNvbnN0YW50IGZvciBiaW5hcnkgVW5p
Y29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9CSU5BUllfU1RB
UlQ9VUNIQVJfQUxQSEFCRVRJQywKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IEFTQ0lJX0hleF9E
aWdpdC4gMC05IEEtRiBhLWYgQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfQVNDSUlfSEVY
X0RJR0lULAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgQmlkaV9Db250cm9sLgorICAgICAgICBG
b3JtYXQgY29udHJvbHMgd2hpY2ggaGF2ZSBzcGVjaWZpYyBmdW5jdGlvbnMKKyAgICAgICAgaW4g
dGhlIEJpZGkgQWxnb3JpdGhtLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9CSURJX0NP
TlRST0wsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBCaWRpX01pcnJvcmVkLgorICAgICAgICBD
aGFyYWN0ZXJzIHRoYXQgbWF5IGNoYW5nZSBkaXNwbGF5IGluIFJUTCB0ZXh0LgorICAgICAgICBT
YW1lIGFzIHVfaXNNaXJyb3JlZC4KKyAgICAgICAgU2VlIEJpZGkgQWxnb3JpdGhtLCBVVFIgOS4g
QHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfQklESV9NSVJST1JFRCwKKyAgICAvKiogQmlu
YXJ5IHByb3BlcnR5IERhc2guIFZhcmlhdGlvbnMgb2YgZGFzaGVzLiBAc3RhYmxlIElDVSAyLjEg
Ki8KKyAgICBVQ0hBUl9EQVNILAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgRGVmYXVsdF9JZ25v
cmFibGVfQ29kZV9Qb2ludCAobmV3IGluIFVuaWNvZGUgMy4yKS4KKyAgICAgICAgSWdub3JhYmxl
IGluIG1vc3QgcHJvY2Vzc2luZy4KKyAgICAgICAgPDIwNjAuLjIwNkYsIEZGRjAuLkZGRkIsIEUw
MDAwLi5FMEZGRj4rT3RoZXJfRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCsoQ2YrQ2MrQ3Mt
V2hpdGVfU3BhY2UpIEBzdGFibGUgSUNVIDIuMSAqLworICAgIFVDSEFSX0RFRkFVTFRfSUdOT1JB
QkxFX0NPREVfUE9JTlQsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBEZXByZWNhdGVkIChuZXcg
aW4gVW5pY29kZSAzLjIpLgorICAgICAgICBUaGUgdXNhZ2Ugb2YgZGVwcmVjYXRlZCBjaGFyYWN0
ZXJzIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hB
Ul9ERVBSRUNBVEVELAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgRGlhY3JpdGljLiBDaGFyYWN0
ZXJzIHRoYXQgbGluZ3Vpc3RpY2FsbHkgbW9kaWZ5CisgICAgICAgIHRoZSBtZWFuaW5nIG9mIGFu
b3RoZXIgY2hhcmFjdGVyIHRvIHdoaWNoIHRoZXkgYXBwbHkuIEBzdGFibGUgSUNVIDIuMSAqLwor
ICAgIFVDSEFSX0RJQUNSSVRJQywKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IEV4dGVuZGVyLgor
ICAgICAgICBFeHRlbmQgdGhlIHZhbHVlIG9yIHNoYXBlIG9mIGEgcHJlY2VkaW5nIGFscGhhYmV0
aWMgY2hhcmFjdGVyLAorICAgICAgICBlLmcuLCBsZW5ndGggYW5kIGl0ZXJhdGlvbiBtYXJrcy4g
QHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfRVhURU5ERVIsCisgICAgLyoqIEJpbmFyeSBw
cm9wZXJ0eSBGdWxsX0NvbXBvc2l0aW9uX0V4Y2x1c2lvbi4KKyAgICAgICAgQ29tcG9zaXRpb25F
eGNsdXNpb25zLnR4dCtTaW5nbGV0b24gRGVjb21wb3NpdGlvbnMrCisgICAgICAgIE5vbi1TdGFy
dGVyIERlY29tcG9zaXRpb25zLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9GVUxMX0NP
TVBPU0lUSU9OX0VYQ0xVU0lPTiwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IEdyYXBoZW1lX0Jh
c2UgKG5ldyBpbiBVbmljb2RlIDMuMikuCisgICAgICAgIEZvciBwcm9ncmFtbWF0aWMgZGV0ZXJt
aW5hdGlvbiBvZiBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMuCisgICAgICAgIFswLi4xMEZG
RkZdLUNjLUNmLUNzLUNvLUNuLVpsLVpwLUdyYXBoZW1lX0xpbmstR3JhcGhlbWVfRXh0ZW5kLUNH
SiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9HUkFQSEVNRV9CQVNFLAorICAgIC8qKiBC
aW5hcnkgcHJvcGVydHkgR3JhcGhlbWVfRXh0ZW5kIChuZXcgaW4gVW5pY29kZSAzLjIpLgorICAg
ICAgICBGb3IgcHJvZ3JhbW1hdGljIGRldGVybWluYXRpb24gb2YgZ3JhcGhlbWUgY2x1c3RlciBi
b3VuZGFyaWVzLgorICAgICAgICBNZStNbitNYytPdGhlcl9HcmFwaGVtZV9FeHRlbmQtR3JhcGhl
bWVfTGluay1DR0ogQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfR1JBUEhFTUVfRVhURU5E
LAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgR3JhcGhlbWVfTGluayAobmV3IGluIFVuaWNvZGUg
My4yKS4KKyAgICAgICAgRm9yIHByb2dyYW1tYXRpYyBkZXRlcm1pbmF0aW9uIG9mIGdyYXBoZW1l
IGNsdXN0ZXIgYm91bmRhcmllcy4gQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfR1JBUEhF
TUVfTElOSywKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IEhleF9EaWdpdC4KKyAgICAgICAgQ2hh
cmFjdGVycyBjb21tb25seSB1c2VkIGZvciBoZXhhZGVjaW1hbCBudW1iZXJzLiBAc3RhYmxlIElD
VSAyLjEgKi8KKyAgICBVQ0hBUl9IRVhfRElHSVQsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBI
eXBoZW4uIERhc2hlcyB1c2VkIHRvIG1hcmsgY29ubmVjdGlvbnMKKyAgICAgICAgYmV0d2VlbiBw
aWVjZXMgb2Ygd29yZHMsIHBsdXMgdGhlIEthdGFrYW5hIG1pZGRsZSBkb3QuIEBzdGFibGUgSUNV
IDIuMSAqLworICAgIFVDSEFSX0hZUEhFTiwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IElEX0Nv
bnRpbnVlLgorICAgICAgICBDaGFyYWN0ZXJzIHRoYXQgY2FuIGNvbnRpbnVlIGFuIGlkZW50aWZp
ZXIuCisgICAgICAgIERlcml2ZWRDb3JlUHJvcGVydGllcy50eHQgYWxzbyBzYXlzICJOT1RFOiBD
ZiBjaGFyYWN0ZXJzIHNob3VsZCBiZSBmaWx0ZXJlZCBvdXQuIgorICAgICAgICBJRF9TdGFydCtN
bitNYytOZCtQYyBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9JRF9DT05USU5VRSwKKyAg
ICAvKiogQmluYXJ5IHByb3BlcnR5IElEX1N0YXJ0LgorICAgICAgICBDaGFyYWN0ZXJzIHRoYXQg
Y2FuIHN0YXJ0IGFuIGlkZW50aWZpZXIuCisgICAgICAgIEx1K0xsK0x0K0xtK0xvK05sIEBzdGFi
bGUgSUNVIDIuMSAqLworICAgIFVDSEFSX0lEX1NUQVJULAorICAgIC8qKiBCaW5hcnkgcHJvcGVy
dHkgSWRlb2dyYXBoaWMuCisgICAgICAgIENKS1YgaWRlb2dyYXBocy4gQHN0YWJsZSBJQ1UgMi4x
ICovCisgICAgVUNIQVJfSURFT0dSQVBISUMsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBJRFNf
QmluYXJ5X09wZXJhdG9yIChuZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBGb3IgcHJvZ3Jh
bW1hdGljIGRldGVybWluYXRpb24gb2YKKyAgICAgICAgSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24g
U2VxdWVuY2VzLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9JRFNfQklOQVJZX09QRVJB
VE9SLAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgSURTX1RyaW5hcnlfT3BlcmF0b3IgKG5ldyBp
biBVbmljb2RlIDMuMikuCisgICAgICAgIEZvciBwcm9ncmFtbWF0aWMgZGV0ZXJtaW5hdGlvbiBv
ZgorICAgICAgICBJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBTZXF1ZW5jZXMuIEBzdGFibGUgSUNV
IDIuMSAqLworICAgIFVDSEFSX0lEU19UUklOQVJZX09QRVJBVE9SLAorICAgIC8qKiBCaW5hcnkg
cHJvcGVydHkgSm9pbl9Db250cm9sLgorICAgICAgICBGb3JtYXQgY29udHJvbHMgZm9yIGN1cnNp
dmUgam9pbmluZyBhbmQgbGlnYXRpb24uIEBzdGFibGUgSUNVIDIuMSAqLworICAgIFVDSEFSX0pP
SU5fQ09OVFJPTCwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IExvZ2ljYWxfT3JkZXJfRXhjZXB0
aW9uIChuZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBDaGFyYWN0ZXJzIHRoYXQgZG8gbm90
IHVzZSBsb2dpY2FsIG9yZGVyIGFuZAorICAgICAgICByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcg
aW4gbW9zdCBwcm9jZXNzaW5nLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9MT0dJQ0FM
X09SREVSX0VYQ0VQVElPTiwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IExvd2VyY2FzZS4gU2Ft
ZSBhcyB1X2lzVUxvd2VyY2FzZSwgZGlmZmVyZW50IGZyb20gdV9pc2xvd2VyLgorICAgICAgICBM
bCtPdGhlcl9Mb3dlcmNhc2UgQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfTE9XRVJDQVNF
LAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgTWF0aC4gU20rT3RoZXJfTWF0aCBAc3RhYmxlIElD
VSAyLjEgKi8KKyAgICBVQ0hBUl9NQVRILAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgTm9uY2hh
cmFjdGVyX0NvZGVfUG9pbnQuCisgICAgICAgIENvZGUgcG9pbnRzIHRoYXQgYXJlIGV4cGxpY2l0
bHkgZGVmaW5lZCBhcyBpbGxlZ2FsCisgICAgICAgIGZvciB0aGUgZW5jb2Rpbmcgb2YgY2hhcmFj
dGVycy4gQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfTk9OQ0hBUkFDVEVSX0NPREVfUE9J
TlQsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBRdW90YXRpb25fTWFyay4gQHN0YWJsZSBJQ1Ug
Mi4xICovCisgICAgVUNIQVJfUVVPVEFUSU9OX01BUkssCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0
eSBSYWRpY2FsIChuZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBGb3IgcHJvZ3JhbW1hdGlj
IGRldGVybWluYXRpb24gb2YKKyAgICAgICAgSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gU2VxdWVu
Y2VzLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9SQURJQ0FMLAorICAgIC8qKiBCaW5h
cnkgcHJvcGVydHkgU29mdF9Eb3R0ZWQgKG5ldyBpbiBVbmljb2RlIDMuMikuCisgICAgICAgIENo
YXJhY3RlcnMgd2l0aCBhICJzb2Z0IGRvdCIsIGxpa2UgaSBvciBqLgorICAgICAgICBBbiBhY2Nl
bnQgcGxhY2VkIG9uIHRoZXNlIGNoYXJhY3RlcnMgY2F1c2VzCisgICAgICAgIHRoZSBkb3QgdG8g
ZGlzYXBwZWFyLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9TT0ZUX0RPVFRFRCwKKyAg
ICAvKiogQmluYXJ5IHByb3BlcnR5IFRlcm1pbmFsX1B1bmN0dWF0aW9uLgorICAgICAgICBQdW5j
dHVhdGlvbiBjaGFyYWN0ZXJzIHRoYXQgZ2VuZXJhbGx5IG1hcmsKKyAgICAgICAgdGhlIGVuZCBv
ZiB0ZXh0dWFsIHVuaXRzLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9URVJNSU5BTF9Q
VU5DVFVBVElPTiwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IFVuaWZpZWRfSWRlb2dyYXBoIChu
ZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBGb3IgcHJvZ3JhbW1hdGljIGRldGVybWluYXRp
b24gb2YKKyAgICAgICAgSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gU2VxdWVuY2VzLiBAc3RhYmxl
IElDVSAyLjEgKi8KKyAgICBVQ0hBUl9VTklGSUVEX0lERU9HUkFQSCwKKyAgICAvKiogQmluYXJ5
IHByb3BlcnR5IFVwcGVyY2FzZS4gU2FtZSBhcyB1X2lzVVVwcGVyY2FzZSwgZGlmZmVyZW50IGZy
b20gdV9pc3VwcGVyLgorICAgICAgICBMdStPdGhlcl9VcHBlcmNhc2UgQHN0YWJsZSBJQ1UgMi4x
ICovCisgICAgVUNIQVJfVVBQRVJDQVNFLAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgV2hpdGVf
U3BhY2UuCisgICAgICAgIFNhbWUgYXMgdV9pc1VXaGl0ZVNwYWNlLCBkaWZmZXJlbnQgZnJvbSB1
X2lzc3BhY2UgYW5kIHVfaXNXaGl0ZXNwYWNlLgorICAgICAgICBTcGFjZSBjaGFyYWN0ZXJzK1RB
QitDUitMRi1aV1NQLVpXTkJTUCBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9XSElURV9T
UEFDRSwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IFhJRF9Db250aW51ZS4KKyAgICAgICAgSURf
Q29udGludWUgbW9kaWZpZWQgdG8gYWxsb3cgY2xvc3VyZSB1bmRlcgorICAgICAgICBub3JtYWxp
emF0aW9uIGZvcm1zIE5GS0MgYW5kIE5GS0QuIEBzdGFibGUgSUNVIDIuMSAqLworICAgIFVDSEFS
X1hJRF9DT05USU5VRSwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IFhJRF9TdGFydC4gSURfU3Rh
cnQgbW9kaWZpZWQgdG8gYWxsb3cKKyAgICAgICAgY2xvc3VyZSB1bmRlciBub3JtYWxpemF0aW9u
IGZvcm1zIE5GS0MgYW5kIE5GS0QuIEBzdGFibGUgSUNVIDIuMSAqLworICAgIFVDSEFSX1hJRF9T
VEFSVCwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IENhc2VfU2Vuc2l0aXZlLiBFaXRoZXIgdGhl
IHNvdXJjZSBvZiBhIGNhc2UKKyAgICAgICAgbWFwcGluZyBvciBfaW5fIHRoZSB0YXJnZXQgb2Yg
YSBjYXNlIG1hcHBpbmcuIE5vdCB0aGUgc2FtZSBhcworICAgICAgICB0aGUgZ2VuZXJhbCBjYXRl
Z29yeSBDYXNlZF9MZXR0ZXIuIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVDSEFSX0NBU0VfU0VO
U0lUSVZFLAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgU1Rlcm0gKG5ldyBpbiBVbmljb2RlIDQu
MC4xKS4KKyAgICAgICAgU2VudGVuY2UgVGVybWluYWwuIFVzZWQgaW4gVUFYICMyOTogVGV4dCBC
b3VuZGFyaWVzCisgICAgICAgIChodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIyOS8p
CisgICAgICAgIEBkcmFmdCBJQ1UgMy4wICovCisgICAgVUNIQVJfU19URVJNLAorICAgIC8qKiBC
aW5hcnkgcHJvcGVydHkgVmFyaWF0aW9uX1NlbGVjdG9yIChuZXcgaW4gVW5pY29kZSA0LjAuMSku
CisgICAgICAgIEluZGljYXRlcyBhbGwgdGhvc2UgY2hhcmFjdGVycyB0aGF0IHF1YWxpZnkgYXMg
VmFyaWF0aW9uIFNlbGVjdG9ycy4KKyAgICAgICAgRm9yIGRldGFpbHMgb24gdGhlIGJlaGF2aW9y
IG9mIHRoZXNlIGNoYXJhY3RlcnMsCisgICAgICAgIHNlZSBTdGFuZGFyZGl6ZWRWYXJpYW50cy5o
dG1sIGFuZCAxNS42IFZhcmlhdGlvbiBTZWxlY3RvcnMuCisgICAgICAgIEBkcmFmdCBJQ1UgMy4w
ICovCisgICAgVUNIQVJfVkFSSUFUSU9OX1NFTEVDVE9SLAorICAgIC8qKiBCaW5hcnkgcHJvcGVy
dHkgTkZEX0luZXJ0LgorICAgICAgICBJQ1Utc3BlY2lmaWMgcHJvcGVydHkgZm9yIGNoYXJhY3Rl
cnMgdGhhdCBhcmUgaW5lcnQgdW5kZXIgTkZELAorICAgICAgICBpLmUuLCB0aGV5IGRvIG5vdCBp
bnRlcmFjdCB3aXRoIGFkamFjZW50IGNoYXJhY3RlcnMuCisgICAgICAgIFVzZWQgZm9yIGV4YW1w
bGUgaW4gbm9ybWFsaXppbmcgdHJhbnNmb3JtcyBpbiBpbmNyZW1lbnRhbCBtb2RlCisgICAgICAg
IHRvIGZpbmQgdGhlIGJvdW5kYXJ5IG9mIHNhZmVseSBub3JtYWxpemFibGUgdGV4dCBkZXNwaXRl
IHBvc3NpYmxlCisgICAgICAgIHRleHQgYWRkaXRpb25zLgorCisgICAgICAgIFRoZXJlIGlzIG9u
ZSBzdWNoIHByb3BlcnR5IHBlciBub3JtYWxpemF0aW9uIGZvcm0uCisgICAgICAgIFRoZXNlIHBy
b3BlcnRpZXMgYXJlIGNvbXB1dGVkIGFzIGZvbGxvd3MgLSBhbiBpbmVydCBjaGFyYWN0ZXIgaXM6
CisgICAgICAgIGEpIHVuYXNzaWduZWQsIG9yIEFMTCBvZiB0aGUgZm9sbG93aW5nOgorICAgICAg
ICBiKSBvZiBjb21iaW5pbmcgY2xhc3MgMC4KKyAgICAgICAgYykgbm90IGRlY29tcG9zZWQgYnkg
dGhpcyBub3JtYWxpemF0aW9uIGZvcm0uCisgICAgICAgIEFORCBpZiBORkMgb3IgTkZLQywKKyAg
ICAgICAgZCkgY2FuIG5ldmVyIGNvbXBvc2Ugd2l0aCBhIHByZXZpb3VzIGNoYXJhY3Rlci4KKyAg
ICAgICAgZSkgY2FuIG5ldmVyIGNvbXBvc2Ugd2l0aCBhIGZvbGxvd2luZyBjaGFyYWN0ZXIuCisg
ICAgICAgIGYpIGNhbiBuZXZlciBjaGFuZ2UgaWYgYW5vdGhlciBjaGFyYWN0ZXIgaXMgYWRkZWQu
CisgICAgICAgICAgIEV4YW1wbGU6IGEtYnJldmUgbWlnaHQgc2F0aXNmeSBhbGwgYnV0IGYsIGJ1
dCBpZiB5b3UKKyAgICAgICAgICAgYWRkIGFuIG9nb25layBpdCBjaGFuZ2VzIHRvIGEtb2dvbmVr
ICsgYnJldmUKKworICAgICAgICBTZWUgYWxzbyBjb20uaWJtLnRleHQuVUNELk5GU2tpcHBhYmxl
IGluIHRoZSBJQ1U0SiByZXBvc2l0b3J5LAorICAgICAgICBhbmQgaWN1L3NvdXJjZS9jb21tb24v
dW5vcm1pbXAuaCAuCisgICAgICAgIEBkcmFmdCBJQ1UgMy4wICovCisgICAgVUNIQVJfTkZEX0lO
RVJULAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgTkZLRF9JbmVydC4KKyAgICAgICAgSUNVLXNw
ZWNpZmljIHByb3BlcnR5IGZvciBjaGFyYWN0ZXJzIHRoYXQgYXJlIGluZXJ0IHVuZGVyIE5GS0Qs
CisgICAgICAgIGkuZS4sIHRoZXkgZG8gbm90IGludGVyYWN0IHdpdGggYWRqYWNlbnQgY2hhcmFj
dGVycy4KKyAgICAgICAgVXNlZCBmb3IgZXhhbXBsZSBpbiBub3JtYWxpemluZyB0cmFuc2Zvcm1z
IGluIGluY3JlbWVudGFsIG1vZGUKKyAgICAgICAgdG8gZmluZCB0aGUgYm91bmRhcnkgb2Ygc2Fm
ZWx5IG5vcm1hbGl6YWJsZSB0ZXh0IGRlc3BpdGUgcG9zc2libGUKKyAgICAgICAgdGV4dCBhZGRp
dGlvbnMuCisgICAgICAgIEBzZWUgVUNIQVJfTkZEX0lORVJUCisgICAgICAgIEBkcmFmdCBJQ1Ug
My4wICovCisgICAgVUNIQVJfTkZLRF9JTkVSVCwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IE5G
Q19JbmVydC4KKyAgICAgICAgSUNVLXNwZWNpZmljIHByb3BlcnR5IGZvciBjaGFyYWN0ZXJzIHRo
YXQgYXJlIGluZXJ0IHVuZGVyIE5GQywKKyAgICAgICAgaS5lLiwgdGhleSBkbyBub3QgaW50ZXJh
Y3Qgd2l0aCBhZGphY2VudCBjaGFyYWN0ZXJzLgorICAgICAgICBVc2VkIGZvciBleGFtcGxlIGlu
IG5vcm1hbGl6aW5nIHRyYW5zZm9ybXMgaW4gaW5jcmVtZW50YWwgbW9kZQorICAgICAgICB0byBm
aW5kIHRoZSBib3VuZGFyeSBvZiBzYWZlbHkgbm9ybWFsaXphYmxlIHRleHQgZGVzcGl0ZSBwb3Nz
aWJsZQorICAgICAgICB0ZXh0IGFkZGl0aW9ucy4KKyAgICAgICAgQHNlZSBVQ0hBUl9ORkRfSU5F
UlQKKyAgICAgICAgQGRyYWZ0IElDVSAzLjAgKi8KKyAgICBVQ0hBUl9ORkNfSU5FUlQsCisgICAg
LyoqIEJpbmFyeSBwcm9wZXJ0eSBORktDX0luZXJ0LgorICAgICAgICBJQ1Utc3BlY2lmaWMgcHJv
cGVydHkgZm9yIGNoYXJhY3RlcnMgdGhhdCBhcmUgaW5lcnQgdW5kZXIgTkZLQywKKyAgICAgICAg
aS5lLiwgdGhleSBkbyBub3QgaW50ZXJhY3Qgd2l0aCBhZGphY2VudCBjaGFyYWN0ZXJzLgorICAg
ICAgICBVc2VkIGZvciBleGFtcGxlIGluIG5vcm1hbGl6aW5nIHRyYW5zZm9ybXMgaW4gaW5jcmVt
ZW50YWwgbW9kZQorICAgICAgICB0byBmaW5kIHRoZSBib3VuZGFyeSBvZiBzYWZlbHkgbm9ybWFs
aXphYmxlIHRleHQgZGVzcGl0ZSBwb3NzaWJsZQorICAgICAgICB0ZXh0IGFkZGl0aW9ucy4KKyAg
ICAgICAgQHNlZSBVQ0hBUl9ORkRfSU5FUlQKKyAgICAgICAgQGRyYWZ0IElDVSAzLjAgKi8KKyAg
ICBVQ0hBUl9ORktDX0lORVJULAorICAgIC8qKiBCaW5hcnkgUHJvcGVydHkgU2VnbWVudF9TdGFy
dGVyLgorICAgICAgICBJQ1Utc3BlY2lmaWMgcHJvcGVydHkgZm9yIGNoYXJhY3RlcnMgdGhhdCBh
cmUgc3RhcnRlcnMgaW4gdGVybXMgb2YKKyAgICAgICAgVW5pY29kZSBub3JtYWxpemF0aW9uIGFu
ZCBjb21iaW5pbmcgY2hhcmFjdGVyIHNlcXVlbmNlcy4KKyAgICAgICAgVGhleSBoYXZlIGNjYz0w
IGFuZCBkbyBub3Qgb2NjdXIgaW4gbm9uLWluaXRpYWwgcG9zaXRpb24gb2YgdGhlCisgICAgICAg
IGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIG9mIGFueSBjaGFyYWN0ZXIKKyAgICAgICAgKGxpa2Ug
IiBpbiBORkQoYS11bWxhdXQpIGFuZCBhIEphbW8gVCBpbiBhbiBORkQoSGFuZ3VsIExWVCkpLgor
ICAgICAgICBJQ1UgdXNlcyB0aGlzIHByb3BlcnR5IGZvciBzZWdtZW50aW5nIGEgc3RyaW5nIGZv
ciBnZW5lcmF0aW5nIGEgc2V0IG9mCisgICAgICAgIGNhbm9uaWNhbGx5IGVxdWl2YWxlbnQgc3Ry
aW5ncywgZS5nLiBmb3IgY2Fub25pY2FsIGNsb3N1cmUgd2hpbGUKKyAgICAgICAgcHJvY2Vzc2lu
ZyBjb2xsYXRpb24gdGFpbG9yaW5nIHJ1bGVzLgorICAgICAgICBAZHJhZnQgSUNVIDMuMCAqLwor
ICAgIFVDSEFSX1NFR01FTlRfU1RBUlRFUiwKKyAgICAvKiogT25lIG1vcmUgdGhhbiB0aGUgbGFz
dCBjb25zdGFudCBmb3IgYmluYXJ5IFVuaWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1UgMi4x
ICovCisgICAgVUNIQVJfQklOQVJZX0xJTUlULAorCisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVy
dHkgQmlkaV9DbGFzcy4KKyAgICAgICAgU2FtZSBhcyB1X2NoYXJEaXJlY3Rpb24sIHJldHVybnMg
VUNoYXJEaXJlY3Rpb24gdmFsdWVzLiBAc3RhYmxlIElDVSAyLjIgKi8KKyAgICBVQ0hBUl9CSURJ
X0NMQVNTPTB4MTAwMCwKKyAgICAvKiogRmlyc3QgY29uc3RhbnQgZm9yIGVudW1lcmF0ZWQvaW50
ZWdlciBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFSX0lO
VF9TVEFSVD1VQ0hBUl9CSURJX0NMQVNTLAorICAgIC8qKiBFbnVtZXJhdGVkIHByb3BlcnR5IEJs
b2NrLgorICAgICAgICBTYW1lIGFzIHVibG9ja19nZXRDb2RlLCByZXR1cm5zIFVCbG9ja0NvZGUg
dmFsdWVzLiBAc3RhYmxlIElDVSAyLjIgKi8KKyAgICBVQ0hBUl9CTE9DSywKKyAgICAvKiogRW51
bWVyYXRlZCBwcm9wZXJ0eSBDYW5vbmljYWxfQ29tYmluaW5nX0NsYXNzLgorICAgICAgICBTYW1l
IGFzIHVfZ2V0Q29tYmluaW5nQ2xhc3MsIHJldHVybnMgOC1iaXQgbnVtZXJpYyB2YWx1ZXMuIEBz
dGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFSX0NBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MsCisg
ICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgRGVjb21wb3NpdGlvbl9UeXBlLgorICAgICAgICBS
ZXR1cm5zIFVEZWNvbXBvc2l0aW9uVHlwZSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLworICAg
IFVDSEFSX0RFQ09NUE9TSVRJT05fVFlQRSwKKyAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0eSBF
YXN0X0FzaWFuX1dpZHRoLgorICAgICAgICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBv
cnRzL3RyMTEvCisgICAgICAgIFJldHVybnMgVUVhc3RBc2lhbldpZHRoIHZhbHVlcy4gQHN0YWJs
ZSBJQ1UgMi4yICovCisgICAgVUNIQVJfRUFTVF9BU0lBTl9XSURUSCwKKyAgICAvKiogRW51bWVy
YXRlZCBwcm9wZXJ0eSBHZW5lcmFsX0NhdGVnb3J5LgorICAgICAgICBTYW1lIGFzIHVfY2hhclR5
cGUsIHJldHVybnMgVUNoYXJDYXRlZ29yeSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLworICAg
IFVDSEFSX0dFTkVSQUxfQ0FURUdPUlksCisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgSm9p
bmluZ19Hcm91cC4KKyAgICAgICAgUmV0dXJucyBVSm9pbmluZ0dyb3VwIHZhbHVlcy4gQHN0YWJs
ZSBJQ1UgMi4yICovCisgICAgVUNIQVJfSk9JTklOR19HUk9VUCwKKyAgICAvKiogRW51bWVyYXRl
ZCBwcm9wZXJ0eSBKb2luaW5nX1R5cGUuCisgICAgICAgIFJldHVybnMgVUpvaW5pbmdUeXBlIHZh
bHVlcy4gQHN0YWJsZSBJQ1UgMi4yICovCisgICAgVUNIQVJfSk9JTklOR19UWVBFLAorICAgIC8q
KiBFbnVtZXJhdGVkIHByb3BlcnR5IExpbmVfQnJlYWsuCisgICAgICAgIFJldHVybnMgVUxpbmVC
cmVhayB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFSX0xJTkVfQlJFQUssCisg
ICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgTnVtZXJpY19UeXBlLgorICAgICAgICBSZXR1cm5z
IFVOdW1lcmljVHlwZSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFSX05VTUVS
SUNfVFlQRSwKKyAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0eSBTY3JpcHQuCisgICAgICAgIFNh
bWUgYXMgdXNjcmlwdF9nZXRTY3JpcHQsIHJldHVybnMgVVNjcmlwdENvZGUgdmFsdWVzLiBAc3Rh
YmxlIElDVSAyLjIgKi8KKyAgICBVQ0hBUl9TQ1JJUFQsCisgICAgLyoqIEVudW1lcmF0ZWQgcHJv
cGVydHkgSGFuZ3VsX1N5bGxhYmxlX1R5cGUsIG5ldyBpbiBVbmljb2RlIDQuCisgICAgICAgIFJl
dHVybnMgVUhhbmd1bFN5bGxhYmxlVHlwZSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuNiAqLworICAg
IFVDSEFSX0hBTkdVTF9TWUxMQUJMRV9UWVBFLAorICAgIC8qKiBFbnVtZXJhdGVkIHByb3BlcnR5
IE5GRF9RdWlja19DaGVjay4KKyAgICAgICAgUmV0dXJucyBVTm9ybWFsaXphdGlvbkNoZWNrUmVz
dWx0IHZhbHVlcy4gQGRyYWZ0IElDVSAzLjAgKi8KKyAgICBVQ0hBUl9ORkRfUVVJQ0tfQ0hFQ0ss
CisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgTkZLRF9RdWlja19DaGVjay4KKyAgICAgICAg
UmV0dXJucyBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0IHZhbHVlcy4gQGRyYWZ0IElDVSAzLjAg
Ki8KKyAgICBVQ0hBUl9ORktEX1FVSUNLX0NIRUNLLAorICAgIC8qKiBFbnVtZXJhdGVkIHByb3Bl
cnR5IE5GQ19RdWlja19DaGVjay4KKyAgICAgICAgUmV0dXJucyBVTm9ybWFsaXphdGlvbkNoZWNr
UmVzdWx0IHZhbHVlcy4gQGRyYWZ0IElDVSAzLjAgKi8KKyAgICBVQ0hBUl9ORkNfUVVJQ0tfQ0hF
Q0ssCisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgTkZLQ19RdWlja19DaGVjay4KKyAgICAg
ICAgUmV0dXJucyBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0IHZhbHVlcy4gQGRyYWZ0IElDVSAz
LjAgKi8KKyAgICBVQ0hBUl9ORktDX1FVSUNLX0NIRUNLLAorICAgIC8qKiBFbnVtZXJhdGVkIHBy
b3BlcnR5IExlYWRfQ2Fub25pY2FsX0NvbWJpbmluZ19DbGFzcy4KKyAgICAgICAgSUNVLXNwZWNp
ZmljIHByb3BlcnR5IGZvciB0aGUgY2NjIG9mIHRoZSBmaXJzdCBjb2RlIHBvaW50CisgICAgICAg
IG9mIHRoZSBkZWNvbXBvc2l0aW9uLCBvciBsY2NjKGMpPWNjYyhORkQoYylbMF0pLgorICAgICAg
ICBVc2VmdWwgZm9yIGNoZWNraW5nIGZvciBjYW5vbmljYWxseSBvcmRlcmVkIHRleHQ7CisgICAg
ICAgIHNlZSBVTk9STV9GQ0QgYW5kIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvbm90ZXMvdG41LyNG
Q0QgLgorICAgICAgICBSZXR1cm5zIDgtYml0IG51bWVyaWMgdmFsdWVzIGxpa2UgVUNIQVJfQ0FO
T05JQ0FMX0NPTUJJTklOR19DTEFTUy4gQGRyYWZ0IElDVSAzLjAgKi8KKyAgICBVQ0hBUl9MRUFE
X0NBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MsCisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkg
VHJhaWxfQ2Fub25pY2FsX0NvbWJpbmluZ19DbGFzcy4KKyAgICAgICAgSUNVLXNwZWNpZmljIHBy
b3BlcnR5IGZvciB0aGUgY2NjIG9mIHRoZSBsYXN0IGNvZGUgcG9pbnQKKyAgICAgICAgb2YgdGhl
IGRlY29tcG9zaXRpb24sIG9yIHRjY2MoYyk9Y2NjKE5GRChjKVtsYXN0XSkuCisgICAgICAgIFVz
ZWZ1bCBmb3IgY2hlY2tpbmcgZm9yIGNhbm9uaWNhbGx5IG9yZGVyZWQgdGV4dDsKKyAgICAgICAg
c2VlIFVOT1JNX0ZDRCBhbmQgaHR0cDovL3d3dy51bmljb2RlLm9yZy9ub3Rlcy90bjUvI0ZDRCAu
CisgICAgICAgIFJldHVybnMgOC1iaXQgbnVtZXJpYyB2YWx1ZXMgbGlrZSBVQ0hBUl9DQU5PTklD
QUxfQ09NQklOSU5HX0NMQVNTLiBAZHJhZnQgSUNVIDMuMCAqLworICAgIFVDSEFSX1RSQUlMX0NB
Tk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MsCisgICAgLyoqIE9uZSBtb3JlIHRoYW4gdGhlIGxhc3Qg
Y29uc3RhbnQgZm9yIGVudW1lcmF0ZWQvaW50ZWdlciBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFi
bGUgSUNVIDIuMiAqLworICAgIFVDSEFSX0lOVF9MSU1JVCwKKworICAgIC8qKiBCaXRtYXNrIHBy
b3BlcnR5IEdlbmVyYWxfQ2F0ZWdvcnlfTWFzay4KKyAgICAgICAgVGhpcyBpcyB0aGUgR2VuZXJh
bF9DYXRlZ29yeSBwcm9wZXJ0eSByZXR1cm5lZCBhcyBhIGJpdCBtYXNrLgorICAgICAgICBXaGVu
IHVzZWQgaW4gdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMpLCBzYW1lIGFzIFVfTUFTSyh1X2NoYXJU
eXBlKGMpKSwKKyAgICAgICAgcmV0dXJucyBiaXQgbWFza3MgZm9yIFVDaGFyQ2F0ZWdvcnkgdmFs
dWVzIHdoZXJlIGV4YWN0bHkgb25lIGJpdCBpcyBzZXQuCisgICAgICAgIFdoZW4gdXNlZCB3aXRo
IHVfZ2V0UHJvcGVydHlWYWx1ZU5hbWUoKSBhbmQgdV9nZXRQcm9wZXJ0eVZhbHVlRW51bSgpLAor
ICAgICAgICBhIG11bHRpLWJpdCBtYXNrIGlzIHVzZWQgZm9yIHNldHMgb2YgY2F0ZWdvcmllcyBs
aWtlICJMZXR0ZXJzIi4KKyAgICAgICAgTWFzayB2YWx1ZXMgc2hvdWxkIGJlIGNhc3QgdG8gdWlu
dDMyX3QuCisgICAgICAgIEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX0dFTkVSQUxfQ0FU
RUdPUllfTUFTSz0weDIwMDAsCisgICAgLyoqIEZpcnN0IGNvbnN0YW50IGZvciBiaXQtbWFzayBV
bmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX01BU0tfU1RB
UlQ9VUNIQVJfR0VORVJBTF9DQVRFR09SWV9NQVNLLAorICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRo
ZSBsYXN0IGNvbnN0YW50IGZvciBiaXQtbWFzayBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUg
SUNVIDIuNCAqLworICAgIFVDSEFSX01BU0tfTElNSVQsCisKKyAgICAvKiogRG91YmxlIHByb3Bl
cnR5IE51bWVyaWNfVmFsdWUuCisgICAgICAgIENvcnJlc3BvbmRzIHRvIHVfZ2V0TnVtZXJpY1Zh
bHVlLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9OVU1FUklDX1ZBTFVFPTB4MzAwMCwK
KyAgICAvKiogRmlyc3QgY29uc3RhbnQgZm9yIGRvdWJsZSBVbmljb2RlIHByb3BlcnRpZXMuIEBz
dGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX0RPVUJMRV9TVEFSVD1VQ0hBUl9OVU1FUklDX1ZB
TFVFLAorICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0IGNvbnN0YW50IGZvciBkb3VibGUg
VW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9ET1VCTEVf
TElNSVQsCisKKyAgICAvKiogU3RyaW5nIHByb3BlcnR5IEFnZS4KKyAgICAgICAgQ29ycmVzcG9u
ZHMgdG8gdV9jaGFyQWdlLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9BR0U9MHg0MDAw
LAorICAgIC8qKiBGaXJzdCBjb25zdGFudCBmb3Igc3RyaW5nIFVuaWNvZGUgcHJvcGVydGllcy4g
QHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNIQVJfU1RSSU5HX1NUQVJUPVVDSEFSX0FHRSwKKyAg
ICAvKiogU3RyaW5nIHByb3BlcnR5IEJpZGlfTWlycm9yaW5nX0dseXBoLgorICAgICAgICBDb3Jy
ZXNwb25kcyB0byB1X2NoYXJNaXJyb3IuIEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX0JJ
RElfTUlSUk9SSU5HX0dMWVBILAorICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgQ2FzZV9Gb2xkaW5n
LgorICAgICAgICBDb3JyZXNwb25kcyB0byB1X3N0ckZvbGRDYXNlIGluIHVzdHJpbmcuaC4gQHN0
YWJsZSBJQ1UgMi40ICovCisgICAgVUNIQVJfQ0FTRV9GT0xESU5HLAorICAgIC8qKiBTdHJpbmcg
cHJvcGVydHkgSVNPX0NvbW1lbnQuCisgICAgICAgIENvcnJlc3BvbmRzIHRvIHVfZ2V0SVNPQ29t
bWVudC4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNIQVJfSVNPX0NPTU1FTlQsCisgICAgLyoq
IFN0cmluZyBwcm9wZXJ0eSBMb3dlcmNhc2VfTWFwcGluZy4KKyAgICAgICAgQ29ycmVzcG9uZHMg
dG8gdV9zdHJUb0xvd2VyIGluIHVzdHJpbmcuaC4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNI
QVJfTE9XRVJDQVNFX01BUFBJTkcsCisgICAgLyoqIFN0cmluZyBwcm9wZXJ0eSBOYW1lLgorICAg
ICAgICBDb3JyZXNwb25kcyB0byB1X2NoYXJOYW1lLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBV
Q0hBUl9OQU1FLAorICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgU2ltcGxlX0Nhc2VfRm9sZGluZy4K
KyAgICAgICAgQ29ycmVzcG9uZHMgdG8gdV9mb2xkQ2FzZS4gQHN0YWJsZSBJQ1UgMi40ICovCisg
ICAgVUNIQVJfU0lNUExFX0NBU0VfRk9MRElORywKKyAgICAvKiogU3RyaW5nIHByb3BlcnR5IFNp
bXBsZV9Mb3dlcmNhc2VfTWFwcGluZy4KKyAgICAgICAgQ29ycmVzcG9uZHMgdG8gdV90b2xvd2Vy
LiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9TSU1QTEVfTE9XRVJDQVNFX01BUFBJTkcs
CisgICAgLyoqIFN0cmluZyBwcm9wZXJ0eSBTaW1wbGVfVGl0bGVjYXNlX01hcHBpbmcuCisgICAg
ICAgIENvcnJlc3BvbmRzIHRvIHVfdG90aXRsZS4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNI
QVJfU0lNUExFX1RJVExFQ0FTRV9NQVBQSU5HLAorICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgU2lt
cGxlX1VwcGVyY2FzZV9NYXBwaW5nLgorICAgICAgICBDb3JyZXNwb25kcyB0byB1X3RvdXBwZXIu
IEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX1NJTVBMRV9VUFBFUkNBU0VfTUFQUElORywK
KyAgICAvKiogU3RyaW5nIHByb3BlcnR5IFRpdGxlY2FzZV9NYXBwaW5nLgorICAgICAgICBDb3Jy
ZXNwb25kcyB0byB1X3N0clRvVGl0bGUgaW4gdXN0cmluZy5oLiBAc3RhYmxlIElDVSAyLjQgKi8K
KyAgICBVQ0hBUl9USVRMRUNBU0VfTUFQUElORywKKyAgICAvKiogU3RyaW5nIHByb3BlcnR5IFVu
aWNvZGVfMV9OYW1lLgorICAgICAgICBDb3JyZXNwb25kcyB0byB1X2NoYXJOYW1lLiBAc3RhYmxl
IElDVSAyLjQgKi8KKyAgICBVQ0hBUl9VTklDT0RFXzFfTkFNRSwKKyAgICAvKiogU3RyaW5nIHBy
b3BlcnR5IFVwcGVyY2FzZV9NYXBwaW5nLgorICAgICAgICBDb3JyZXNwb25kcyB0byB1X3N0clRv
VXBwZXIgaW4gdXN0cmluZy5oLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9VUFBFUkNB
U0VfTUFQUElORywKKyAgICAvKiogT25lIG1vcmUgdGhhbiB0aGUgbGFzdCBjb25zdGFudCBmb3Ig
c3RyaW5nIFVuaWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNIQVJf
U1RSSU5HX0xJTUlULAorCisgICAgLyoqIFJlcHJlc2VudHMgYSBub25leGlzdGVudCBvciBpbnZh
bGlkIHByb3BlcnR5IG9yIHByb3BlcnR5IHZhbHVlLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBV
Q0hBUl9JTlZBTElEX0NPREUgPSAtMQorfSBVUHJvcGVydHk7CisKKy8qKgorICogRGF0YSBmb3Ig
ZW51bWVyYXRlZCBVbmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkgdHlwZXMuCisgKiBTZWUgaHR0cDov
L3d3dy51bmljb2RlLm9yZy9QdWJsaWMvVU5JREFUQS9Vbmljb2RlRGF0YS5odG1sIC4KKyAqIEBz
dGFibGUgSUNVIDIuMAorICovCit0eXBlZGVmIGVudW0gVUNoYXJDYXRlZ29yeQoreworICAgIC8q
KiBTZWUgbm90ZSAhIS4gIENvbW1lbnRzIG9mIHRoZSBmb3JtICJDbiIgYXJlIHJlYWQgYnkgZ2Vu
cG5hbWUuICovCisKKyAgICAvKiogTm9uLWNhdGVnb3J5IGZvciB1bmFzc2lnbmVkIGFuZCBub24t
Y2hhcmFjdGVyIGNvZGUgcG9pbnRzLiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1VOQVNTSUdO
RUQgICAgICAgICAgICAgID0gMCwKKyAgICAvKiogQ24gIk90aGVyLCBOb3QgQXNzaWduZWQgKG5v
IGNoYXJhY3RlcnMgaW4gW1VuaWNvZGVEYXRhLnR4dF0gaGF2ZSB0aGlzIHByb3BlcnR5KSIgKHNh
bWUgYXMgVV9VTkFTU0lHTkVEISkgQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9HRU5FUkFMX09U
SEVSX1RZUEVTICAgICA9IDAsCisgICAgLyoqIEx1IEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVf
VVBQRVJDQVNFX0xFVFRFUiAgICAgICAgPSAxLAorICAgIC8qKiBMbCBAc3RhYmxlIElDVSAyLjAg
Ki8KKyAgICBVX0xPV0VSQ0FTRV9MRVRURVIgICAgICAgID0gMiwKKyAgICAvKiogTHQgQHN0YWJs
ZSBJQ1UgMi4wICovCisgICAgVV9USVRMRUNBU0VfTEVUVEVSICAgICAgICA9IDMsCisgICAgLyoq
IExtIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfTU9ESUZJRVJfTEVUVEVSICAgICAgICAgPSA0
LAorICAgIC8qKiBMbyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX09USEVSX0xFVFRFUiAgICAg
ICAgICAgID0gNSwKKyAgICAvKiogTW4gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9OT05fU1BB
Q0lOR19NQVJLICAgICAgICA9IDYsCisgICAgLyoqIE1lIEBzdGFibGUgSUNVIDIuMCAqLworICAg
IFVfRU5DTE9TSU5HX01BUksgICAgICAgICAgPSA3LAorICAgIC8qKiBNYyBAc3RhYmxlIElDVSAy
LjAgKi8KKyAgICBVX0NPTUJJTklOR19TUEFDSU5HX01BUksgID0gOCwKKyAgICAvKiogTmQgQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVV9ERUNJTUFMX0RJR0lUX05VTUJFUiAgICA9IDksCisgICAg
LyoqIE5sIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfTEVUVEVSX05VTUJFUiAgICAgICAgICAg
PSAxMCwKKyAgICAvKiogTm8gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9PVEhFUl9OVU1CRVIg
ICAgICAgICAgICA9IDExLAorICAgIC8qKiBacyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1NQ
QUNFX1NFUEFSQVRPUiAgICAgICAgID0gMTIsCisgICAgLyoqIFpsIEBzdGFibGUgSUNVIDIuMCAq
LworICAgIFVfTElORV9TRVBBUkFUT1IgICAgICAgICAgPSAxMywKKyAgICAvKiogWnAgQHN0YWJs
ZSBJQ1UgMi4wICovCisgICAgVV9QQVJBR1JBUEhfU0VQQVJBVE9SICAgICA9IDE0LAorICAgIC8q
KiBDYyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX0NPTlRST0xfQ0hBUiAgICAgICAgICAgID0g
MTUsCisgICAgLyoqIENmIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfRk9STUFUX0NIQVIgICAg
ICAgICAgICAgPSAxNiwKKyAgICAvKiogQ28gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9QUklW
QVRFX1VTRV9DSEFSICAgICAgICA9IDE3LAorICAgIC8qKiBDcyBAc3RhYmxlIElDVSAyLjAgKi8K
KyAgICBVX1NVUlJPR0FURSAgICAgICAgICAgICAgID0gMTgsCisgICAgLyoqIFBkIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVfREFTSF9QVU5DVFVBVElPTiAgICAgICAgPSAxOSwKKyAgICAvKiog
UHMgQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9TVEFSVF9QVU5DVFVBVElPTiAgICAgICA9IDIw
LAorICAgIC8qKiBQZSBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX0VORF9QVU5DVFVBVElPTiAg
ICAgICAgID0gMjEsCisgICAgLyoqIFBjIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfQ09OTkVD
VE9SX1BVTkNUVUFUSU9OICAgPSAyMiwKKyAgICAvKiogUG8gQHN0YWJsZSBJQ1UgMi4wICovCisg
ICAgVV9PVEhFUl9QVU5DVFVBVElPTiAgICAgICA9IDIzLAorICAgIC8qKiBTbSBAc3RhYmxlIElD
VSAyLjAgKi8KKyAgICBVX01BVEhfU1lNQk9MICAgICAgICAgICAgID0gMjQsCisgICAgLyoqIFNj
IEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfQ1VSUkVOQ1lfU1lNQk9MICAgICAgICAgPSAyNSwK
KyAgICAvKiogU2sgQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9NT0RJRklFUl9TWU1CT0wgICAg
ICAgICA9IDI2LAorICAgIC8qKiBTbyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX09USEVSX1NZ
TUJPTCAgICAgICAgICAgID0gMjcsCisgICAgLyoqIFBpIEBzdGFibGUgSUNVIDIuMCAqLworICAg
IFVfSU5JVElBTF9QVU5DVFVBVElPTiAgICAgPSAyOCwKKyAgICAvKiogUGYgQHN0YWJsZSBJQ1Ug
Mi4wICovCisgICAgVV9GSU5BTF9QVU5DVFVBVElPTiAgICAgICA9IDI5LAorICAgIC8qKiBPbmUg
aGlnaGVyIHRoYW4gdGhlIGxhc3QgZW51bSBVQ2hhckNhdGVnb3J5IGNvbnN0YW50LiBAc3RhYmxl
IElDVSAyLjAgKi8KKyAgICBVX0NIQVJfQ0FURUdPUllfQ09VTlQKK30gVUNoYXJDYXRlZ29yeTsK
KworLyoqCisgKiBVX0dDX1hYX01BU0sgY29uc3RhbnRzIGFyZSBiaXQgZmxhZ3MgY29ycmVzcG9u
ZGluZyB0byBVbmljb2RlCisgKiBnZW5lcmFsIGNhdGVnb3J5IHZhbHVlcy4KKyAqIEZvciBlYWNo
IGNhdGVnb3J5LCB0aGUgbnRoIGJpdCBpcyBzZXQgaWYgdGhlIG51bWVyaWMgdmFsdWUgb2YgdGhl
CisgKiBjb3JyZXNwb25kaW5nIFVDaGFyQ2F0ZWdvcnkgY29uc3RhbnQgaXMgbi4KKyAqCisgKiBU
aGVyZSBhcmUgYWxzbyBzb21lIFVfR0NfWV9NQVNLIGNvbnN0YW50cyBmb3IgZ3JvdXBzIG9mIGdl
bmVyYWwgY2F0ZWdvcmllcworICogbGlrZSBMIGZvciBhbGwgbGV0dGVyIGNhdGVnb3JpZXMuCisg
KgorICogQHNlZSB1X2NoYXJUeXBlCisgKiBAc2VlIFVfR0VUX0dDX01BU0sKKyAqIEBzZWUgVUNo
YXJDYXRlZ29yeQorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KKyNkZWZpbmUgVV9HQ19DTl9NQVNL
ICAgIFVfTUFTSyhVX0dFTkVSQUxfT1RIRVJfVFlQRVMpCisKKy8qKiBNYXNrIGNvbnN0YW50IGZv
ciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xVX01B
U0sgICAgVV9NQVNLKFVfVVBQRVJDQVNFX0xFVFRFUikKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBh
IFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xMX01BU0sg
ICAgVV9NQVNLKFVfTE9XRVJDQVNFX0xFVFRFUikKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVD
aGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xUX01BU0sgICAg
VV9NQVNLKFVfVElUTEVDQVNFX0xFVFRFUikKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFy
Q2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xNX01BU0sgICAgVV9N
QVNLKFVfTU9ESUZJRVJfTEVUVEVSKQorLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRl
Z29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfTE9fTUFTSyAgICBVX01BU0so
VV9PVEhFUl9MRVRURVIpCisKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnku
IEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX01OX01BU0sgICAgVV9NQVNLKFVfTk9O
X1NQQUNJTkdfTUFSSykKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBz
dGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX01FX01BU0sgICAgVV9NQVNLKFVfRU5DTE9T
SU5HX01BUkspCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxl
IElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19NQ19NQVNLICAgIFVfTUFTSyhVX0NPTUJJTklOR19T
UEFDSU5HX01BUkspCisKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBz
dGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX05EX01BU0sgICAgVV9NQVNLKFVfREVDSU1B
TF9ESUdJVF9OVU1CRVIpCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBA
c3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19OTF9NQVNLICAgIFVfTUFTSyhVX0xFVFRF
Ul9OVU1CRVIpCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxl
IElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19OT19NQVNLICAgIFVfTUFTSyhVX09USEVSX05VTUJF
UikKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1Ug
Mi4xICovCisjZGVmaW5lIFVfR0NfWlNfTUFTSyAgICBVX01BU0soVV9TUEFDRV9TRVBBUkFUT1Ip
CisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEg
Ki8KKyNkZWZpbmUgVV9HQ19aTF9NQVNLICAgIFVfTUFTSyhVX0xJTkVfU0VQQVJBVE9SKQorLyoq
IE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCisj
ZGVmaW5lIFVfR0NfWlBfTUFTSyAgICBVX01BU0soVV9QQVJBR1JBUEhfU0VQQVJBVE9SKQorCisv
KiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8K
KyNkZWZpbmUgVV9HQ19DQ19NQVNLICAgIFVfTUFTSyhVX0NPTlRST0xfQ0hBUikKKy8qKiBNYXNr
IGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmlu
ZSBVX0dDX0NGX01BU0sgICAgVV9NQVNLKFVfRk9STUFUX0NIQVIpCisvKiogTWFzayBjb25zdGFu
dCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19D
T19NQVNLICAgIFVfTUFTSyhVX1BSSVZBVEVfVVNFX0NIQVIpCisvKiogTWFzayBjb25zdGFudCBm
b3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19DU19N
QVNLICAgIFVfTUFTSyhVX1NVUlJPR0FURSkKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNo
YXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfUERfTUFTSyAgICBV
X01BU0soVV9EQVNIX1BVTkNUVUFUSU9OKQorLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJD
YXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfUFNfTUFTSyAgICBVX01B
U0soVV9TVEFSVF9QVU5DVFVBVElPTikKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0
ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX1BFX01BU0sgICAgVV9NQVNL
KFVfRU5EX1BVTkNUVUFUSU9OKQorLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29y
eS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfUENfTUFTSyAgICBVX01BU0soVV9D
T05ORUNUT1JfUFVOQ1RVQVRJT04pCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVn
b3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19QT19NQVNLICAgIFVfTUFTSyhV
X09USEVSX1BVTkNUVUFUSU9OKQorCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVn
b3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19TTV9NQVNLICAgIFVfTUFTSyhV
X01BVEhfU1lNQk9MKQorLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0
YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfU0NfTUFTSyAgICBVX01BU0soVV9DVVJSRU5D
WV9TWU1CT0wpCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxl
IElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19TS19NQVNLICAgIFVfTUFTSyhVX01PRElGSUVSX1NZ
TUJPTCkKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNV
IDIuMSAqLworI2RlZmluZSBVX0dDX1NPX01BU0sgICAgVV9NQVNLKFVfT1RIRVJfU1lNQk9MKQor
CisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEg
Ki8KKyNkZWZpbmUgVV9HQ19QSV9NQVNLICAgIFVfTUFTSyhVX0lOSVRJQUxfUFVOQ1RVQVRJT04p
CisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEg
Ki8KKyNkZWZpbmUgVV9HQ19QRl9NQVNLICAgIFVfTUFTSyhVX0ZJTkFMX1BVTkNUVUFUSU9OKQor
CisKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBtdWx0aXBsZSBVQ2hhckNhdGVnb3J5IGJpdHMgKEwg
TGV0dGVycykuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xfTUFTSyBcCisgICAg
ICAgICAgICAoVV9HQ19MVV9NQVNLfFVfR0NfTExfTUFTS3xVX0dDX0xUX01BU0t8VV9HQ19MTV9N
QVNLfFVfR0NfTE9fTUFTSykKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIG11bHRpcGxlIFVDaGFy
Q2F0ZWdvcnkgYml0cyAoTEMgQ2FzZWQgTGV0dGVycykuIEBzdGFibGUgSUNVIDIuMSAqLworI2Rl
ZmluZSBVX0dDX0xDX01BU0sgXAorICAgICAgICAgICAgKFVfR0NfTFVfTUFTS3xVX0dDX0xMX01B
U0t8VV9HQ19MVF9NQVNLKQorCisvKiogTWFzayBjb25zdGFudCBmb3IgbXVsdGlwbGUgVUNoYXJD
YXRlZ29yeSBiaXRzIChNIE1hcmtzKS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0Nf
TV9NQVNLIChVX0dDX01OX01BU0t8VV9HQ19NRV9NQVNLfFVfR0NfTUNfTUFTSykKKworLyoqIE1h
c2sgY29uc3RhbnQgZm9yIG11bHRpcGxlIFVDaGFyQ2F0ZWdvcnkgYml0cyAoTiBOdW1iZXJzKS4g
QHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfTl9NQVNLIChVX0dDX05EX01BU0t8VV9H
Q19OTF9NQVNLfFVfR0NfTk9fTUFTSykKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIG11bHRpcGxl
IFVDaGFyQ2F0ZWdvcnkgYml0cyAoWiBTZXBhcmF0b3JzKS4gQHN0YWJsZSBJQ1UgMi4xICovCisj
ZGVmaW5lIFVfR0NfWl9NQVNLIChVX0dDX1pTX01BU0t8VV9HQ19aTF9NQVNLfFVfR0NfWlBfTUFT
SykKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIG11bHRpcGxlIFVDaGFyQ2F0ZWdvcnkgYml0cyAo
QyBPdGhlcnMpLiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19DX01BU0sgXAorICAg
ICAgICAgICAgKFVfR0NfQ05fTUFTS3xVX0dDX0NDX01BU0t8VV9HQ19DRl9NQVNLfFVfR0NfQ09f
TUFTS3xVX0dDX0NTX01BU0spCisKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBtdWx0aXBsZSBVQ2hh
ckNhdGVnb3J5IGJpdHMgKFAgUHVuY3R1YXRpb24pLiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZp
bmUgVV9HQ19QX01BU0sgXAorICAgICAgICAgICAgKFVfR0NfUERfTUFTS3xVX0dDX1BTX01BU0t8
VV9HQ19QRV9NQVNLfFVfR0NfUENfTUFTS3xVX0dDX1BPX01BU0t8IFwKKyAgICAgICAgICAgICBV
X0dDX1BJX01BU0t8VV9HQ19QRl9NQVNLKQorCisvKiogTWFzayBjb25zdGFudCBmb3IgbXVsdGlw
bGUgVUNoYXJDYXRlZ29yeSBiaXRzIChTIFN5bWJvbHMpLiBAc3RhYmxlIElDVSAyLjEgKi8KKyNk
ZWZpbmUgVV9HQ19TX01BU0sgKFVfR0NfU01fTUFTS3xVX0dDX1NDX01BU0t8VV9HQ19TS19NQVNL
fFVfR0NfU09fTUFTSykKKworLyoqCisgKiBUaGlzIHNwZWNpZmllcyB0aGUgbGFuZ3VhZ2UgZGly
ZWN0aW9uYWwgcHJvcGVydHkgb2YgYSBjaGFyYWN0ZXIgc2V0LgorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KK3R5cGVkZWYgZW51bSBVQ2hhckRpcmVjdGlvbiB7CisgICAgLyoqIFNlZSBub3RlICEh
LiAgQ29tbWVudHMgb2YgdGhlIGZvcm0gIkVOIiBhcmUgcmVhZCBieSBnZW5wbmFtZS4gKi8KKwor
ICAgIC8qKiBMIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfTEVGVF9UT19SSUdIVCAgICAgICAg
ICAgICAgID0gMCwKKyAgICAvKiogUiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1JJR0hUX1RP
X0xFRlQgICAgICAgICAgICAgICA9IDEsCisgICAgLyoqIEVOIEBzdGFibGUgSUNVIDIuMCAqLwor
ICAgIFVfRVVST1BFQU5fTlVNQkVSICAgICAgICAgICAgID0gMiwKKyAgICAvKiogRVMgQHN0YWJs
ZSBJQ1UgMi4wICovCisgICAgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SICAgPSAzLAorICAg
IC8qKiBFVCBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX0VVUk9QRUFOX05VTUJFUl9URVJNSU5B
VE9SICA9IDQsCisgICAgLyoqIEFOIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfQVJBQklDX05V
TUJFUiAgICAgICAgICAgICAgID0gNSwKKyAgICAvKiogQ1MgQHN0YWJsZSBJQ1UgMi4wICovCisg
ICAgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUiAgICAgPSA2LAorICAgIC8qKiBCIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVfQkxPQ0tfU0VQQVJBVE9SICAgICAgICAgICAgID0gNywKKyAgICAv
KiogUyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1NFR01FTlRfU0VQQVJBVE9SICAgICAgICAg
ICA9IDgsCisgICAgLyoqIFdTIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfV0hJVEVfU1BBQ0Vf
TkVVVFJBTCAgICAgICAgID0gOSwKKyAgICAvKiogT04gQHN0YWJsZSBJQ1UgMi4wICovCisgICAg
VV9PVEhFUl9ORVVUUkFMICAgICAgICAgICAgICAgPSAxMCwKKyAgICAvKiogTFJFIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcgICAgID0gMTEsCisgICAg
LyoqIExSTyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUg
ICAgICA9IDEyLAorICAgIC8qKiBBTCBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1JJR0hUX1RP
X0xFRlRfQVJBQklDICAgICAgICA9IDEzLAorICAgIC8qKiBSTEUgQHN0YWJsZSBJQ1UgMi4wICov
CisgICAgVV9SSUdIVF9UT19MRUZUX0VNQkVERElORyAgICAgPSAxNCwKKyAgICAvKiogUkxPIEBz
dGFibGUgSUNVIDIuMCAqLworICAgIFVfUklHSFRfVE9fTEVGVF9PVkVSUklERSAgICAgID0gMTUs
CisgICAgLyoqIFBERiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1BPUF9ESVJFQ1RJT05BTF9G
T1JNQVQgICAgICA9IDE2LAorICAgIC8qKiBOU00gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9E
SVJfTk9OX1NQQUNJTkdfTUFSSyAgICAgICAgPSAxNywKKyAgICAvKiogQk4gQHN0YWJsZSBJQ1Ug
Mi4wICovCisgICAgVV9CT1VOREFSWV9ORVVUUkFMICAgICAgICAgICAgPSAxOCwKKyAgICAvKiog
QHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9DSEFSX0RJUkVDVElPTl9DT1VOVAorfSBVQ2hhckRp
cmVjdGlvbjsKKworLyoqCisgKiBDb25zdGFudHMgZm9yIFVuaWNvZGUgYmxvY2tzLCBzZWUgdGhl
IFVuaWNvZGUgRGF0YSBmaWxlIEJsb2Nrcy50eHQKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitl
bnVtIFVCbG9ja0NvZGUgeworCisgICAgLyoqIE5ldyBOb19CbG9jayB2YWx1ZSBpbiBVbmljb2Rl
IDQuIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9DS19OT19CTE9DSyA9IDAsIC8qW25vbmVd
Ki8gLyogU3BlY2lhbCByYW5nZSBpbmRpY2F0aW5nIE5vX0Jsb2NrICovCisKKyAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0JBU0lDX0xBVElOID0gMSwgLypbMDAwMF0qLyAv
KlNlZSBub3RlICEhKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tf
TEFUSU5fMV9TVVBQTEVNRU5UPTIsIC8qWzAwODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAy
LjAgKi8KKyAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURfQSA9MywgLypbMDEwMF0qLworCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19MQVRJTl9FWFRFTkRFRF9CID00LCAv
KlswMTgwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0lQQV9F
WFRFTlNJT05TID01LCAvKlswMjUwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisg
ICAgVUJMT0NLX1NQQUNJTkdfTU9ESUZJRVJfTEVUVEVSUyA9NiwgLypbMDJCMF0qLworCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19DT01CSU5JTkdfRElBQ1JJVElDQUxf
TUFSS1MgPTcsIC8qWzAzMDBdKi8KKworICAgIC8qKgorICAgICAqIFVuaWNvZGUgMy4yIHJlbmFt
ZXMgdGhpcyBibG9jayB0byAiR3JlZWsgYW5kIENvcHRpYyIuCisgICAgICogQHN0YWJsZSBJQ1Ug
Mi4wCisgICAgICovCisgICAgVUJMT0NLX0dSRUVLID04LCAvKlswMzcwXSovCisKKyAgICAvKiog
QHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0NZUklMTElDID05LCAvKlswNDAwXSovCisK
KyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0FSTUVOSUFOID0xMCwgLypb
MDUzMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19IRUJSRVcg
PTExLCAvKlswNTkwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NL
X0FSQUJJQyA9MTIsIC8qWzA2MDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAg
ICBVQkxPQ0tfU1lSSUFDID0xMywgLypbMDcwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIu
MCAqLworICAgIFVCTE9DS19USEFBTkEgPTE0LCAvKlswNzgwXSovCisKKyAgICAvKiogQHN0YWJs
ZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0RFVkFOQUdBUkkgPTE1LCAvKlswOTAwXSovCisKKyAg
ICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0JFTkdBTEkgPTE2LCAvKlswOTgw
XSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0dVUk1VS0hJID0x
NywgLypbMEEwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19H
VUpBUkFUSSA9MTgsIC8qWzBBODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAg
ICBVQkxPQ0tfT1JJWUEgPTE5LCAvKlswQjAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4w
ICovCisgICAgVUJMT0NLX1RBTUlMID0yMCwgLypbMEI4MF0qLworCisgICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVCTE9DS19URUxVR1UgPTIxLCAvKlswQzAwXSovCisKKyAgICAvKiog
QHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0tBTk5BREEgPTIyLCAvKlswQzgwXSovCisK
KyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX01BTEFZQUxBTSA9MjMsIC8q
WzBEMDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfU0lOSEFM
QSA9MjQsIC8qWzBEODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxP
Q0tfVEhBSSA9MjUsIC8qWzBFMDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAg
ICBVQkxPQ0tfTEFPID0yNiwgLypbMEU4MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAq
LworICAgIFVCTE9DS19USUJFVEFOID0yNywgLypbMEYwMF0qLworCisgICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVCTE9DS19NWUFOTUFSID0yOCwgLypbMTAwMF0qLworCisgICAgLyoq
IEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19HRU9SR0lBTiA9MjksIC8qWzEwQTBdKi8K
KworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfSEFOR1VMX0pBTU8gPTMw
LCAvKlsxMTAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0VU
SElPUElDID0zMSwgLypbMTIwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAg
IFVCTE9DS19DSEVST0tFRSA9MzIsIC8qWzEzQTBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAy
LjAgKi8KKyAgICBVQkxPQ0tfVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklDUyA9
MzMsIC8qWzE0MDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tf
T0dIQU0gPTM0LCAvKlsxNjgwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAg
VUJMT0NLX1JVTklDID0zNSwgLypbMTZBMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAq
LworICAgIFVCTE9DS19LSE1FUiA9MzYsIC8qWzE3ODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElD
VSAyLjAgKi8KKyAgICBVQkxPQ0tfTU9OR09MSUFOID0zNywgLypbMTgwMF0qLworCisgICAgLyoq
IEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19MQVRJTl9FWFRFTkRFRF9BRERJVElPTkFM
ID0zOCwgLypbMUUwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9D
S19HUkVFS19FWFRFTkRFRCA9MzksIC8qWzFGMDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAy
LjAgKi8KKyAgICBVQkxPQ0tfR0VORVJBTF9QVU5DVFVBVElPTiA9NDAsIC8qWzIwMDBdKi8KKwor
ICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfU1VQRVJTQ1JJUFRTX0FORF9T
VUJTQ1JJUFRTID00MSwgLypbMjA3MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwor
ICAgIFVCTE9DS19DVVJSRU5DWV9TWU1CT0xTID00MiwgLypbMjBBMF0qLworCisgICAgLyoqCisg
ICAgICogVW5pY29kZSAzLjIgcmVuYW1lcyB0aGlzIGJsb2NrIHRvICJDb21iaW5pbmcgRGlhY3Jp
dGljYWwgTWFya3MgZm9yIFN5bWJvbHMiLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAq
LworICAgIFVCTE9DS19DT01CSU5JTkdfTUFSS1NfRk9SX1NZTUJPTFMgPTQzLCAvKlsyMEQwXSov
CisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0xFVFRFUkxJS0VfU1lN
Qk9MUyA9NDQsIC8qWzIxMDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBV
QkxPQ0tfTlVNQkVSX0ZPUk1TID00NSwgLypbMjE1MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNV
IDIuMCAqLworICAgIFVCTE9DS19BUlJPV1MgPTQ2LCAvKlsyMTkwXSovCisKKyAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX01BVEhFTUFUSUNBTF9PUEVSQVRPUlMgPTQ3LCAv
KlsyMjAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX01JU0NF
TExBTkVPVVNfVEVDSE5JQ0FMID00OCwgLypbMjMwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNV
IDIuMCAqLworICAgIFVCTE9DS19DT05UUk9MX1BJQ1RVUkVTID00OSwgLypbMjQwMF0qLworCisg
ICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19PUFRJQ0FMX0NIQVJBQ1RFUl9S
RUNPR05JVElPTiA9NTAsIC8qWzI0NDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8K
KyAgICBVQkxPQ0tfRU5DTE9TRURfQUxQSEFOVU1FUklDUyA9NTEsIC8qWzI0NjBdKi8KKworICAg
IC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQk9YX0RSQVdJTkcgPTUyLCAvKlsy
NTAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0JMT0NLX0VM
RU1FTlRTID01MywgLypbMjU4MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAg
IFVCTE9DS19HRU9NRVRSSUNfU0hBUEVTID01NCwgLypbMjVBMF0qLworCisgICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19NSVNDRUxMQU5FT1VTX1NZTUJPTFMgPTU1LCAvKlsy
NjAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0RJTkdCQVRT
ID01NiwgLypbMjcwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9D
S19CUkFJTExFX1BBVFRFUk5TID01NywgLypbMjgwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNV
IDIuMCAqLworICAgIFVCTE9DS19DSktfUkFESUNBTFNfU1VQUExFTUVOVCA9NTgsIC8qWzJFODBd
Ki8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfS0FOR1hJX1JBRElD
QUxTID01OSwgLypbMkYwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVC
TE9DS19JREVPR1JBUEhJQ19ERVNDUklQVElPTl9DSEFSQUNURVJTID02MCwgLypbMkZGMF0qLwor
CisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19DSktfU1lNQk9MU19BTkRf
UFVOQ1RVQVRJT04gPTYxLCAvKlszMDAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICov
CisgICAgVUJMT0NLX0hJUkFHQU5BID02MiwgLypbMzA0MF0qLworCisgICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVCTE9DS19LQVRBS0FOQSA9NjMsIC8qWzMwQTBdKi8KKworICAgIC8q
KiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQk9QT01PRk8gPTY0LCAvKlszMTAwXSov
CisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0hBTkdVTF9DT01QQVRJ
QklMSVRZX0pBTU8gPTY1LCAvKlszMTMwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICov
CisgICAgVUJMT0NLX0tBTkJVTiA9NjYsIC8qWzMxOTBdKi8KKworICAgIC8qKiBAc3RhYmxlIElD
VSAyLjAgKi8KKyAgICBVQkxPQ0tfQk9QT01PRk9fRVhURU5ERUQgPTY3LCAvKlszMUEwXSovCisK
KyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0VOQ0xPU0VEX0NKS19MRVRU
RVJTX0FORF9NT05USFMgPTY4LCAvKlszMjAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4w
ICovCisgICAgVUJMT0NLX0NKS19DT01QQVRJQklMSVRZID02OSwgLypbMzMwMF0qLworCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19DSktfVU5JRklFRF9JREVPR1JBUEhT
X0VYVEVOU0lPTl9BID03MCwgLypbMzQwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAq
LworICAgIFVCTE9DS19DSktfVU5JRklFRF9JREVPR1JBUEhTID03MSwgLypbNEUwMF0qLworCisg
ICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19ZSV9TWUxMQUJMRVMgPTcyLCAv
KltBMDAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX1lJX1JB
RElDQUxTID03MywgLypbQTQ5MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAg
IFVCTE9DS19IQU5HVUxfU1lMTEFCTEVTID03NCwgLypbQUMwMF0qLworCisgICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19ISUdIX1NVUlJPR0FURVMgPTc1LCAvKltEODAwXSov
CisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0hJR0hfUFJJVkFURV9V
U0VfU1VSUk9HQVRFUyA9NzYsIC8qW0RCODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAg
Ki8KKyAgICBVQkxPQ0tfTE9XX1NVUlJPR0FURVMgPTc3LCAvKltEQzAwXSovCisKKyAgICAvKioK
KyAgICAgKiBTYW1lIGFzIFVCTE9DS19QUklWQVRFX1VTRV9BUkVBLgorICAgICAqIFVudGlsIFVu
aWNvZGUgMy4xLjEsIHRoZSBjb3JyZXNwb25kaW5nIGJsb2NrIG5hbWUgd2FzICJQcml2YXRlIFVz
ZSIsCisgICAgICogYW5kIG11bHRpcGxlIGNvZGUgcG9pbnQgcmFuZ2VzIGhhZCB0aGlzIGJsb2Nr
LgorICAgICAqIFVuaWNvZGUgMy4yIHJlbmFtZXMgdGhlIGJsb2NrIGZvciB0aGUgQk1QIFBVQSB0
byAiUHJpdmF0ZSBVc2UgQXJlYSIgYW5kCisgICAgICogYWRkcyBzZXBhcmF0ZSBibG9ja3MgZm9y
IHRoZSBzdXBwbGVtZW50YXJ5IFBVQXMuCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICAgKi8KKyAgICBVQkxPQ0tfUFJJVkFURV9VU0UgPSA3OCwKKyAgICAvKioKKyAgICAgKiBT
YW1lIGFzIFVCTE9DS19QUklWQVRFX1VTRS4KKyAgICAgKiBVbnRpbCBVbmljb2RlIDMuMS4xLCB0
aGUgY29ycmVzcG9uZGluZyBibG9jayBuYW1lIHdhcyAiUHJpdmF0ZSBVc2UiLAorICAgICAqIGFu
ZCBtdWx0aXBsZSBjb2RlIHBvaW50IHJhbmdlcyBoYWQgdGhpcyBibG9jay4KKyAgICAgKiBVbmlj
b2RlIDMuMiByZW5hbWVzIHRoZSBibG9jayBmb3IgdGhlIEJNUCBQVUEgdG8gIlByaXZhdGUgVXNl
IEFyZWEiIGFuZAorICAgICAqIGFkZHMgc2VwYXJhdGUgYmxvY2tzIGZvciB0aGUgc3VwcGxlbWVu
dGFyeSBQVUFzLgorICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisgICAg
VUJMT0NLX1BSSVZBVEVfVVNFX0FSRUEgPVVCTE9DS19QUklWQVRFX1VTRSwgLypbRTAwMF0qLwor
CisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19DSktfQ09NUEFUSUJJTElU
WV9JREVPR1JBUEhTID03OSwgLypbRjkwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAq
LworICAgIFVCTE9DS19BTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNUyA9ODAsIC8qW0ZCMDBd
Ki8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQVJBQklDX1BSRVNF
TlRBVElPTl9GT1JNU19BID04MSwgLypbRkI1MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIu
MCAqLworICAgIFVCTE9DS19DT01CSU5JTkdfSEFMRl9NQVJLUyA9ODIsIC8qW0ZFMjBdKi8KKwor
ICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQ0pLX0NPTVBBVElCSUxJVFlf
Rk9STVMgPTgzLCAvKltGRTMwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAg
VUJMT0NLX1NNQUxMX0ZPUk1fVkFSSUFOVFMgPTg0LCAvKltGRTUwXSovCisKKyAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0FSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQiA9
ODUsIC8qW0ZFNzBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tf
U1BFQ0lBTFMgPTg2LCAvKltGRkYwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisg
ICAgVUJMT0NLX0hBTEZXSURUSF9BTkRfRlVMTFdJRFRIX0ZPUk1TID04NywgLypbRkYwMF0qLwor
CisgICAgLyogTmV3IGJsb2NrcyBpbiBVbmljb2RlIDMuMSAqLworCisgICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVCTE9DS19PTERfSVRBTElDID0gODggICwgLypbMTAzMDBdKi8KKyAg
ICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0dPVEhJQyA9IDg5ICwgLypbMTAz
MzBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0RFU0VSRVQgPSA5
MCAsIC8qWzEwNDAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19C
WVpBTlRJTkVfTVVTSUNBTF9TWU1CT0xTID0gOTEgLCAvKlsxRDAwMF0qLworICAgIC8qKiBAc3Rh
YmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfTVVTSUNBTF9TWU1CT0xTID0gOTIgLCAvKlsxRDEw
MF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfTUFUSEVNQVRJQ0FM
X0FMUEhBTlVNRVJJQ19TWU1CT0xTID0gOTMgICwgLypbMUQ0MDBdKi8KKyAgICAvKiogQHN0YWJs
ZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0NKS19VTklGSUVEX0lERU9HUkFQSFNfRVhURU5TSU9O
X0IgID0gOTQgLCAvKlsyMDAwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBV
QkxPQ0tfQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIU19TVVBQTEVNRU5UID0gOTUgLCAvKlsy
RjgwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfVEFHUyA9IDk2
LCAvKltFMDAwMF0qLworCisgICAgLyogTmV3IGJsb2NrcyBpbiBVbmljb2RlIDMuMiAqLworCisg
ICAgLyoqCisgICAgICogVW5pY29kZSA0LjAuMSByZW5hbWVzIHRoZSAiQ3lyaWxsaWMgU3VwcGxl
bWVudGFyeSIgYmxvY2sgdG8gIkN5cmlsbGljIFN1cHBsZW1lbnQiLgorICAgICAqIEBzdGFibGUg
SUNVIDIuMgorICAgICAqLworICAgIFVCTE9DS19DWVJJTExJQ19TVVBQTEVNRU5UQVJZID0gOTcs
IAorICAgIC8qKiBAZHJhZnQgSUNVIDMuMCAgKi8KKyAgICBVQkxPQ0tfQ1lSSUxMSUNfU1VQUExF
TUVOVCA9IFVCTE9DS19DWVJJTExJQ19TVVBQTEVNRU5UQVJZLCAvKlswNTAwXSovCisgICAgLyoq
IEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19UQUdBTE9HID0gOTgsIC8qWzE3MDBdKi8K
KyAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCisgICAgVUJMT0NLX0hBTlVOT08gPSA5OSwgLypb
MTcyMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjIgKi8KKyAgICBVQkxPQ0tfQlVISUQgPSAx
MDAsIC8qWzE3NDBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCisgICAgVUJMT0NLX1RB
R0JBTldBID0gMTAxLCAvKlsxNzYwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLworICAg
IFVCTE9DS19NSVNDRUxMQU5FT1VTX01BVEhFTUFUSUNBTF9TWU1CT0xTX0EgPSAxMDIsIC8qWzI3
QzBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCisgICAgVUJMT0NLX1NVUFBMRU1FTlRB
TF9BUlJPV1NfQSA9IDEwMywgLypbMjdGMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjIgKi8K
KyAgICBVQkxPQ0tfU1VQUExFTUVOVEFMX0FSUk9XU19CID0gMTA0LCAvKlsyOTAwXSovCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19NSVNDRUxMQU5FT1VTX01BVEhFTUFU
SUNBTF9TWU1CT0xTX0IgPSAxMDUsIC8qWzI5ODBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4y
ICovCisgICAgVUJMT0NLX1NVUFBMRU1FTlRBTF9NQVRIRU1BVElDQUxfT1BFUkFUT1JTID0gMTA2
LCAvKlsyQTAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19LQVRB
S0FOQV9QSE9ORVRJQ19FWFRFTlNJT05TID0gMTA3LCAvKlszMUYwXSovCisgICAgLyoqIEBzdGFi
bGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19WQVJJQVRJT05fU0VMRUNUT1JTID0gMTA4LCAvKltG
RTAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19TVVBQTEVNRU5U
QVJZX1BSSVZBVEVfVVNFX0FSRUFfQSA9IDEwOSwgLypbRjAwMDBdKi8KKyAgICAvKiogQHN0YWJs
ZSBJQ1UgMi4yICovCisgICAgVUJMT0NLX1NVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9C
ID0gMTEwLCAvKlsxMDAwMDBdKi8KKworICAgIC8qIE5ldyBibG9ja3MgaW4gVW5pY29kZSA0ICov
CisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCisgICAgVUJMT0NLX0xJTUJVID0gMTExLCAv
KlsxOTAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9DS19UQUlfTEUg
PSAxMTIsIC8qWzE5NTBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCisgICAgVUJMT0NL
X0tITUVSX1NZTUJPTFMgPSAxMTMsIC8qWzE5RTBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi42
ICovCisgICAgVUJMT0NLX1BIT05FVElDX0VYVEVOU0lPTlMgPSAxMTQsIC8qWzFEMDBdKi8KKyAg
ICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCisgICAgVUJMT0NLX01JU0NFTExBTkVPVVNfU1lNQk9M
U19BTkRfQVJST1dTID0gMTE1LCAvKlsyQjAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAq
LworICAgIFVCTE9DS19ZSUpJTkdfSEVYQUdSQU1fU1lNQk9MUyA9IDExNiwgLypbNERDMF0qLwor
ICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KKyAgICBVQkxPQ0tfTElORUFSX0JfU1lMTEFCQVJZ
ID0gMTE3LCAvKlsxMDAwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KKyAgICBVQkxP
Q0tfTElORUFSX0JfSURFT0dSQU1TID0gMTE4LCAvKlsxMDA4MF0qLworICAgIC8qKiBAc3RhYmxl
IElDVSAyLjYgKi8KKyAgICBVQkxPQ0tfQUVHRUFOX05VTUJFUlMgPSAxMTksIC8qWzEwMTAwXSov
CisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9DS19VR0FSSVRJQyA9IDEyMCwg
LypbMTAzODBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCisgICAgVUJMT0NLX1NIQVZJ
QU4gPSAxMjEsIC8qWzEwNDUwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVC
TE9DS19PU01BTllBID0gMTIyLCAvKlsxMDQ4MF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjYg
Ki8KKyAgICBVQkxPQ0tfQ1lQUklPVF9TWUxMQUJBUlkgPSAxMjMsIC8qWzEwODAwXSovCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9DS19UQUlfWFVBTl9KSU5HX1NZTUJPTFMg
PSAxMjQsIC8qWzFEMzAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9D
S19WQVJJQVRJT05fU0VMRUNUT1JTX1NVUFBMRU1FTlQgPSAxMjUsIC8qW0UwMTAwXSovCisKKyAg
ICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0NPVU5ULAorCisgICAgLyoqIEBz
dGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19JTlZBTElEX0NPREU9LTEKK307CisKKy8qKiBA
c3RhYmxlIElDVSAyLjAgKi8KK3R5cGVkZWYgZW51bSBVQmxvY2tDb2RlIFVCbG9ja0NvZGU7CisK
Ky8qKgorICogRWFzdCBBc2lhbiBXaWR0aCBjb25zdGFudHMuCisgKgorICogQHNlZSBVQ0hBUl9F
QVNUX0FTSUFOX1dJRFRICisgKiBAc2VlIHVfZ2V0SW50UHJvcGVydHlWYWx1ZQorICogQHN0YWJs
ZSBJQ1UgMi4yCisgKi8KK3R5cGVkZWYgZW51bSBVRWFzdEFzaWFuV2lkdGggeworICAgIFVfRUFf
TkVVVFJBTCwgICAvKltOXSovIC8qU2VlIG5vdGUgISEqLworICAgIFVfRUFfQU1CSUdVT1VTLCAv
KltBXSovCisgICAgVV9FQV9IQUxGV0lEVEgsIC8qW0hdKi8KKyAgICBVX0VBX0ZVTExXSURUSCwg
LypbRl0qLworICAgIFVfRUFfTkFSUk9XLCAgICAvKltOYV0qLworICAgIFVfRUFfV0lERSwgICAg
ICAvKltXXSovCisgICAgVV9FQV9DT1VOVAorfSBVRWFzdEFzaWFuV2lkdGg7CisvKgorICogSW1w
bGVtZW50YXRpb24gbm90ZToKKyAqIEtlZXAgVUVhc3RBc2lhbldpZHRoIGNvbnN0YW50IHZhbHVl
cyBpbiBzeW5jIHdpdGggbmFtZXMgbGlzdCBpbiBnZW5wcm9wcy9wcm9wczIuYy4KKyAqLworCisv
KioKKyAqIFNlbGVjdG9yIGNvbnN0YW50cyBmb3IgdV9jaGFyTmFtZSgpLgorICogdV9jaGFyTmFt
ZSgpIHJldHVybnMgdGhlICJtb2Rlcm4iIG5hbWUgb2YgYQorICogVW5pY29kZSBjaGFyYWN0ZXI7
IG9yIHRoZSBuYW1lIHRoYXQgd2FzIGRlZmluZWQgaW4KKyAqIFVuaWNvZGUgdmVyc2lvbiAxLjAs
IGJlZm9yZSB0aGUgVW5pY29kZSBzdGFuZGFyZCBtZXJnZWQKKyAqIHdpdGggSVNPLTEwNjQ2OyBv
ciBhbiAiZXh0ZW5kZWQiIG5hbWUgdGhhdCBnaXZlcyBlYWNoCisgKiBVbmljb2RlIGNvZGUgcG9p
bnQgYSB1bmlxdWUgbmFtZS4KKyAqCisgKiBAc2VlIHVfY2hhck5hbWUKKyAqIEBzdGFibGUgSUNV
IDIuMAorICovCit0eXBlZGVmIGVudW0gVUNoYXJOYW1lQ2hvaWNlIHsKKyAgICBVX1VOSUNPREVf
Q0hBUl9OQU1FLAorICAgIFVfVU5JQ09ERV8xMF9DSEFSX05BTUUsCisgICAgVV9FWFRFTkRFRF9D
SEFSX05BTUUsCisgICAgVV9DSEFSX05BTUVfQ0hPSUNFX0NPVU5UCit9IFVDaGFyTmFtZUNob2lj
ZTsKKworLyoqCisgKiBTZWxlY3RvciBjb25zdGFudHMgZm9yIHVfZ2V0UHJvcGVydHlOYW1lKCkg
YW5kCisgKiB1X2dldFByb3BlcnR5VmFsdWVOYW1lKCkuICBUaGVzZSBzZWxlY3RvcnMgYXJlIHVz
ZWQgdG8gY2hvb3NlIHdoaWNoCisgKiBuYW1lIGlzIHJldHVybmVkIGZvciBhIGdpdmVuIHByb3Bl
cnR5IG9yIHZhbHVlLiAgQWxsIHByb3BlcnRpZXMgYW5kCisgKiB2YWx1ZXMgaGF2ZSBhIGxvbmcg
bmFtZS4gIE1vc3QgaGF2ZSBhIHNob3J0IG5hbWUsIGJ1dCBzb21lIGRvIG5vdC4KKyAqIFVuaWNv
ZGUgYWxsb3dzIGZvciBhZGRpdGlvbmFsIG5hbWVzLCBiZXlvbmQgdGhlIGxvbmcgYW5kIHNob3J0
CisgKiBuYW1lLCB3aGljaCB3b3VsZCBiZSBpbmRpY2F0ZWQgYnkgVV9MT05HX1BST1BFUlRZX05B
TUUgKyBpLCB3aGVyZQorICogaT0xLCAyLC4uLgorICoKKyAqIEBzZWUgdV9nZXRQcm9wZXJ0eU5h
bWUoKQorICogQHNlZSB1X2dldFByb3BlcnR5VmFsdWVOYW1lKCkKKyAqIEBzdGFibGUgSUNVIDIu
NAorICovCit0eXBlZGVmIGVudW0gVVByb3BlcnR5TmFtZUNob2ljZSB7CisgICAgVV9TSE9SVF9Q
Uk9QRVJUWV9OQU1FLAorICAgIFVfTE9OR19QUk9QRVJUWV9OQU1FLAorICAgIFVfUFJPUEVSVFlf
TkFNRV9DSE9JQ0VfQ09VTlQKK30gVVByb3BlcnR5TmFtZUNob2ljZTsKKworLyoqCisgKiBEZWNv
bXBvc2l0aW9uIFR5cGUgY29uc3RhbnRzLgorICoKKyAqIEBzZWUgVUNIQVJfREVDT01QT1NJVElP
Tl9UWVBFCisgKiBAc3RhYmxlIElDVSAyLjIKKyAqLwordHlwZWRlZiBlbnVtIFVEZWNvbXBvc2l0
aW9uVHlwZSB7CisgICAgVV9EVF9OT05FLCAgICAgICAgICAgICAgLypbbm9uZV0qLyAvKlNlZSBu
b3RlICEhKi8KKyAgICBVX0RUX0NBTk9OSUNBTCwgICAgICAgICAvKltjYW5dKi8KKyAgICBVX0RU
X0NPTVBBVCwgICAgICAgICAgICAvKltjb21dKi8KKyAgICBVX0RUX0NJUkNMRSwgICAgICAgICAg
ICAvKltlbmNdKi8KKyAgICBVX0RUX0ZJTkFMLCAgICAgICAgICAgICAvKltmaW5dKi8KKyAgICBV
X0RUX0ZPTlQsICAgICAgICAgICAgICAvKltmb250XSovCisgICAgVV9EVF9GUkFDVElPTiwgICAg
ICAgICAgLypbZnJhXSovCisgICAgVV9EVF9JTklUSUFMLCAgICAgICAgICAgLypbaW5pdF0qLwor
ICAgIFVfRFRfSVNPTEFURUQsICAgICAgICAgIC8qW2lzb10qLworICAgIFVfRFRfTUVESUFMLCAg
ICAgICAgICAgIC8qW21lZF0qLworICAgIFVfRFRfTkFSUk9XLCAgICAgICAgICAgIC8qW25hcl0q
LworICAgIFVfRFRfTk9CUkVBSywgICAgICAgICAgIC8qW25iXSovCisgICAgVV9EVF9TTUFMTCwg
ICAgICAgICAgICAgLypbc21sXSovCisgICAgVV9EVF9TUVVBUkUsICAgICAgICAgICAgLypbc3Fy
XSovCisgICAgVV9EVF9TVUIsICAgICAgICAgICAgICAgLypbc3ViXSovCisgICAgVV9EVF9TVVBF
UiwgICAgICAgICAgICAgLypbc3VwXSovCisgICAgVV9EVF9WRVJUSUNBTCwgICAgICAgICAgLypb
dmVydF0qLworICAgIFVfRFRfV0lERSwgICAgICAgICAgICAgIC8qW3dpZGVdKi8KKyAgICBVX0RU
X0NPVU5UIC8qIDE4ICovCit9IFVEZWNvbXBvc2l0aW9uVHlwZTsKKworLyoqCisgKiBKb2luaW5n
IFR5cGUgY29uc3RhbnRzLgorICoKKyAqIEBzZWUgVUNIQVJfSk9JTklOR19UWVBFCisgKiBAc3Rh
YmxlIElDVSAyLjIKKyAqLwordHlwZWRlZiBlbnVtIFVKb2luaW5nVHlwZSB7CisgICAgVV9KVF9O
T05fSk9JTklORywgICAgICAgLypbVV0qLyAvKlNlZSBub3RlICEhKi8KKyAgICBVX0pUX0pPSU5f
Q0FVU0lORywgICAgICAvKltDXSovCisgICAgVV9KVF9EVUFMX0pPSU5JTkcsICAgICAgLypbRF0q
LworICAgIFVfSlRfTEVGVF9KT0lOSU5HLCAgICAgIC8qW0xdKi8KKyAgICBVX0pUX1JJR0hUX0pP
SU5JTkcsICAgICAvKltSXSovCisgICAgVV9KVF9UUkFOU1BBUkVOVCwgICAgICAgLypbVF0qLwor
ICAgIFVfSlRfQ09VTlQgLyogNiAqLworfSBVSm9pbmluZ1R5cGU7CisKKy8qKgorICogSm9pbmlu
ZyBHcm91cCBjb25zdGFudHMuCisgKgorICogQHNlZSBVQ0hBUl9KT0lOSU5HX0dST1VQCisgKiBA
c3RhYmxlIElDVSAyLjIKKyAqLwordHlwZWRlZiBlbnVtIFVKb2luaW5nR3JvdXAgeworICAgIFVf
SkdfTk9fSk9JTklOR19HUk9VUCwKKyAgICBVX0pHX0FJTiwKKyAgICBVX0pHX0FMQVBILAorICAg
IFVfSkdfQUxFRiwKKyAgICBVX0pHX0JFSCwKKyAgICBVX0pHX0JFVEgsCisgICAgVV9KR19EQUws
CisgICAgVV9KR19EQUxBVEhfUklTSCwKKyAgICBVX0pHX0UsCisgICAgVV9KR19GRUgsCisgICAg
VV9KR19GSU5BTF9TRU1LQVRILAorICAgIFVfSkdfR0FGLAorICAgIFVfSkdfR0FNQUwsCisgICAg
VV9KR19IQUgsCisgICAgVV9KR19IQU1aQV9PTl9IRUhfR09BTCwKKyAgICBVX0pHX0hFLAorICAg
IFVfSkdfSEVILAorICAgIFVfSkdfSEVIX0dPQUwsCisgICAgVV9KR19IRVRILAorICAgIFVfSkdf
S0FGLAorICAgIFVfSkdfS0FQSCwKKyAgICBVX0pHX0tOT1RURURfSEVILAorICAgIFVfSkdfTEFN
LAorICAgIFVfSkdfTEFNQURILAorICAgIFVfSkdfTUVFTSwKKyAgICBVX0pHX01JTSwKKyAgICBV
X0pHX05PT04sCisgICAgVV9KR19OVU4sCisgICAgVV9KR19QRSwKKyAgICBVX0pHX1FBRiwKKyAg
ICBVX0pHX1FBUEgsCisgICAgVV9KR19SRUgsCisgICAgVV9KR19SRVZFUlNFRF9QRSwKKyAgICBV
X0pHX1NBRCwKKyAgICBVX0pHX1NBREhFLAorICAgIFVfSkdfU0VFTiwKKyAgICBVX0pHX1NFTUtB
VEgsCisgICAgVV9KR19TSElOLAorICAgIFVfSkdfU1dBU0hfS0FGLAorICAgIFVfSkdfU1lSSUFD
X1dBVywKKyAgICBVX0pHX1RBSCwKKyAgICBVX0pHX1RBVywKKyAgICBVX0pHX1RFSF9NQVJCVVRB
LAorICAgIFVfSkdfVEVUSCwKKyAgICBVX0pHX1dBVywKKyAgICBVX0pHX1lFSCwKKyAgICBVX0pH
X1lFSF9CQVJSRUUsCisgICAgVV9KR19ZRUhfV0lUSF9UQUlMLAorICAgIFVfSkdfWVVESCwKKyAg
ICBVX0pHX1lVREhfSEUsCisgICAgVV9KR19aQUlOLAorICAgIFVfSkdfRkUsICAgICAgICAvKio8
IEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVfSkdfS0hBUEgsICAgICAvKio8IEBzdGFibGUgSUNV
IDIuNiAqLworICAgIFVfSkdfWkhBSU4sICAgICAvKio8IEBzdGFibGUgSUNVIDIuNiAqLworICAg
IFVfSkdfQ09VTlQKK30gVUpvaW5pbmdHcm91cDsKKworLyoqCisgKiBMaW5lIEJyZWFrIGNvbnN0
YW50cy4KKyAqCisgKiBAc2VlIFVDSEFSX0xJTkVfQlJFQUsKKyAqIEBzdGFibGUgSUNVIDIuMgor
ICovCit0eXBlZGVmIGVudW0gVUxpbmVCcmVhayB7CisgICAgVV9MQl9VTktOT1dOLCAgICAgICAg
ICAgLypbWFhdKi8gLypTZWUgbm90ZSAhISovCisgICAgVV9MQl9BTUJJR1VPVVMsICAgICAgICAg
LypbQUldKi8KKyAgICBVX0xCX0FMUEhBQkVUSUMsICAgICAgICAvKltBTF0qLworICAgIFVfTEJf
QlJFQUtfQk9USCwgICAgICAgIC8qW0IyXSovCisgICAgVV9MQl9CUkVBS19BRlRFUiwgICAgICAg
LypbQkFdKi8KKyAgICBVX0xCX0JSRUFLX0JFRk9SRSwgICAgICAvKltCQl0qLworICAgIFVfTEJf
TUFOREFUT1JZX0JSRUFLLCAgIC8qW0JLXSovCisgICAgVV9MQl9DT05USU5HRU5UX0JSRUFLLCAg
LypbQ0JdKi8KKyAgICBVX0xCX0NMT1NFX1BVTkNUVUFUSU9OLCAvKltDTF0qLworICAgIFVfTEJf
Q09NQklOSU5HX01BUkssICAgIC8qW0NNXSovCisgICAgVV9MQl9DQVJSSUFHRV9SRVRVUk4sICAg
LypbQ1JdKi8KKyAgICBVX0xCX0VYQ0xBTUFUSU9OLCAgICAgICAvKltFWF0qLworICAgIFVfTEJf
R0xVRSwgICAgICAgICAgICAgIC8qW0dMXSovCisgICAgVV9MQl9IWVBIRU4sICAgICAgICAgICAg
LypbSFldKi8KKyAgICBVX0xCX0lERU9HUkFQSElDLCAgICAgICAvKltJRF0qLworICAgIFVfTEJf
SU5TRVBFUkFCTEUsCisgICAgLyoqIFJlbmFtZWQgZnJvbSB0aGUgbWlzc3BlbGxlZCAiaW5zZXBl
cmFibGUiIGluIFVuaWNvZGUgNC4wLjEvSUNVIDMuMCBAZHJhZnQgSUNVIDMuMCAqLworICAgIFVf
TEJfSU5TRVBBUkFCTEU9VV9MQl9JTlNFUEVSQUJMRSwvKltJTl0qLworICAgIFVfTEJfSU5GSVhf
TlVNRVJJQywgICAgIC8qW0lTXSovCisgICAgVV9MQl9MSU5FX0ZFRUQsICAgICAgICAgLypbTEZd
Ki8KKyAgICBVX0xCX05PTlNUQVJURVIsICAgICAgICAvKltOU10qLworICAgIFVfTEJfTlVNRVJJ
QywgICAgICAgICAgIC8qW05VXSovCisgICAgVV9MQl9PUEVOX1BVTkNUVUFUSU9OLCAgLypbT1Bd
Ki8KKyAgICBVX0xCX1BPU1RGSVhfTlVNRVJJQywgICAvKltQT10qLworICAgIFVfTEJfUFJFRklY
X05VTUVSSUMsICAgIC8qW1BSXSovCisgICAgVV9MQl9RVU9UQVRJT04sICAgICAgICAgLypbUVVd
Ki8KKyAgICBVX0xCX0NPTVBMRVhfQ09OVEVYVCwgICAvKltTQV0qLworICAgIFVfTEJfU1VSUk9H
QVRFLCAgICAgICAgIC8qW1NHXSovCisgICAgVV9MQl9TUEFDRSwgICAgICAgICAgICAgLypbU1Bd
Ki8KKyAgICBVX0xCX0JSRUFLX1NZTUJPTFMsICAgICAvKltTWV0qLworICAgIFVfTEJfWldTUEFD
RSwgICAgICAgICAgIC8qW1pXXSovCisgICAgVV9MQl9ORVhUX0xJTkUsICAgICAgICAgLypbTkxd
Ki8gLyogZnJvbSBoZXJlIG9uOiBuZXcgaW4gVW5pY29kZSA0L0lDVSAyLjYgKi8KKyAgICBVX0xC
X1dPUkRfSk9JTkVSLCAgICAgICAvKltXSl0qLworICAgIFVfTEJfQ09VTlQKK30gVUxpbmVCcmVh
azsKKworLyoqCisgKiBOdW1lcmljIFR5cGUgY29uc3RhbnRzLgorICoKKyAqIEBzZWUgVUNIQVJf
TlVNRVJJQ19UWVBFCisgKiBAc3RhYmxlIElDVSAyLjIKKyAqLwordHlwZWRlZiBlbnVtIFVOdW1l
cmljVHlwZSB7CisgICAgVV9OVF9OT05FLCAgICAgICAgICAgICAgLypbTm9uZV0qLyAvKlNlZSBu
b3RlICEhKi8KKyAgICBVX05UX0RFQ0lNQUwsICAgICAgICAgICAvKltkZV0qLworICAgIFVfTlRf
RElHSVQsICAgICAgICAgICAgIC8qW2RpXSovCisgICAgVV9OVF9OVU1FUklDLCAgICAgICAgICAg
LypbbnVdKi8KKyAgICBVX05UX0NPVU5UCit9IFVOdW1lcmljVHlwZTsKKworLyoqCisgKiBIYW5n
dWwgU3lsbGFibGUgVHlwZSBjb25zdGFudHMuCisgKgorICogQHNlZSBVQ0hBUl9IQU5HVUxfU1lM
TEFCTEVfVFlQRQorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK3R5cGVkZWYgZW51bSBVSGFuZ3Vs
U3lsbGFibGVUeXBlIHsKKyAgICBVX0hTVF9OT1RfQVBQTElDQUJMRSwgICAvKltOQV0qLyAvKlNl
ZSBub3RlICEhKi8KKyAgICBVX0hTVF9MRUFESU5HX0pBTU8sICAgICAvKltMXSovCisgICAgVV9I
U1RfVk9XRUxfSkFNTywgICAgICAgLypbVl0qLworICAgIFVfSFNUX1RSQUlMSU5HX0pBTU8sICAg
IC8qW1RdKi8KKyAgICBVX0hTVF9MVl9TWUxMQUJMRSwgICAgICAvKltMVl0qLworICAgIFVfSFNU
X0xWVF9TWUxMQUJMRSwgICAgIC8qW0xWVF0qLworICAgIFVfSFNUX0NPVU5UCit9IFVIYW5ndWxT
eWxsYWJsZVR5cGU7CisKKy8qKgorICogQ2hlY2sgYSBiaW5hcnkgVW5pY29kZSBwcm9wZXJ0eSBm
b3IgYSBjb2RlIHBvaW50LgorICoKKyAqIFVuaWNvZGUsIGVzcGVjaWFsbHkgaW4gdmVyc2lvbiAz
LjIsIGRlZmluZXMgbWFueSBtb3JlIHByb3BlcnRpZXMgdGhhbiB0aGUKKyAqIG9yaWdpbmFsIHNl
dCBpbiBVbmljb2RlRGF0YS50eHQuCisgKgorICogVGhlIHByb3BlcnRpZXMgQVBJcyBhcmUgaW50
ZW5kZWQgdG8gcmVmbGVjdCBVbmljb2RlIHByb3BlcnRpZXMgYXMgZGVmaW5lZAorICogaW4gdGhl
IFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIGFuZCBVbmljb2RlIFRlY2huaWNhbCBS
ZXBvcnRzIChVVFIpLgorICogRm9yIGRldGFpbHMgYWJvdXQgdGhlIHByb3BlcnRpZXMgc2VlIGh0
dHA6Ly93d3cudW5pY29kZS5vcmcvdWNkLyAuCisgKiBGb3IgbmFtZXMgb2YgVW5pY29kZSBwcm9w
ZXJ0aWVzIHNlZSB0aGUgVUNEIGZpbGUgUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAqCisgKiBJbXBv
cnRhbnQ6IElmIElDVSBpcyBidWlsdCB3aXRoIFVDRCBmaWxlcyBmcm9tIFVuaWNvZGUgdmVyc2lv
bnMgYmVsb3cgMy4yLAorICogdGhlbiBwcm9wZXJ0aWVzIG1hcmtlZCB3aXRoICJuZXcgaW4gVW5p
Y29kZSAzLjIiIGFyZSBub3Qgb3Igbm90IGZ1bGx5IGF2YWlsYWJsZS4KKyAqCisgKiBAcGFyYW0g
YyBDb2RlIHBvaW50IHRvIHRlc3QuCisgKiBAcGFyYW0gd2hpY2ggVVByb3BlcnR5IHNlbGVjdG9y
IGNvbnN0YW50LCBpZGVudGlmaWVzIHdoaWNoIGJpbmFyeSBwcm9wZXJ0eSB0byBjaGVjay4KKyAq
ICAgICAgICBNdXN0IGJlIFVDSEFSX0JJTkFSWV9TVEFSVDw9d2hpY2g8VUNIQVJfQklOQVJZX0xJ
TUlULgorICogQHJldHVybiBUUlVFIG9yIEZBTFNFIGFjY29yZGluZyB0byB0aGUgYmluYXJ5IFVu
aWNvZGUgcHJvcGVydHkgdmFsdWUgZm9yIGMuCisgKiAgICAgICAgIEFsc28gRkFMU0UgaWYgJ3do
aWNoJyBpcyBvdXQgb2YgYm91bmRzIG9yIGlmIHRoZSBVbmljb2RlIHZlcnNpb24KKyAqICAgICAg
ICAgZG9lcyBub3QgaGF2ZSBkYXRhIGZvciB0aGUgcHJvcGVydHkgYXQgYWxsLCBvciBub3QgZm9y
IHRoaXMgY29kZSBwb2ludC4KKyAqCisgKiBAc2VlIFVQcm9wZXJ0eQorICogQHNlZSB1X2dldElu
dFByb3BlcnR5VmFsdWUKKyAqIEBzZWUgdV9nZXRVbmljb2RlVmVyc2lvbgorICogQHN0YWJsZSBJ
Q1UgMi4xCisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9oYXNCaW5hcnlQcm9wZXJ0
eShVQ2hhcjMyIGMsIFVQcm9wZXJ0eSB3aGljaCk7CisKKy8qKgorICogQ2hlY2sgaWYgYSBjb2Rl
IHBvaW50IGhhcyB0aGUgQWxwaGFiZXRpYyBVbmljb2RlIHByb3BlcnR5LgorICogU2FtZSBhcyB1
X2hhc0JpbmFyeVByb3BlcnR5KGMsIFVDSEFSX0FMUEhBQkVUSUMpLgorICogVGhpcyBpcyBkaWZm
ZXJlbnQgZnJvbSB1X2lzYWxwaGEhCisgKiBAcGFyYW0gYyBDb2RlIHBvaW50IHRvIHRlc3QKKyAq
IEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBoYXMgdGhlIEFscGhhYmV0aWMgVW5pY29k
ZSBwcm9wZXJ0eSwgZmFsc2Ugb3RoZXJ3aXNlCisgKgorICogQHNlZSBVQ0hBUl9BTFBIQUJFVElD
CisgKiBAc2VlIHVfaXNhbHBoYQorICogQHNlZSB1X2hhc0JpbmFyeVByb3BlcnR5CisgKiBAc3Rh
YmxlIElDVSAyLjEKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzVUFscGhhYmV0
aWMoVUNoYXIzMiBjKTsKKworLyoqCisgKiBDaGVjayBpZiBhIGNvZGUgcG9pbnQgaGFzIHRoZSBM
b3dlcmNhc2UgVW5pY29kZSBwcm9wZXJ0eS4KKyAqIFNhbWUgYXMgdV9oYXNCaW5hcnlQcm9wZXJ0
eShjLCBVQ0hBUl9MT1dFUkNBU0UpLgorICogVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB1X2lzbG93
ZXIhCisgKiBAcGFyYW0gYyBDb2RlIHBvaW50IHRvIHRlc3QKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0
aGUgY29kZSBwb2ludCBoYXMgdGhlIExvd2VyY2FzZSBVbmljb2RlIHByb3BlcnR5LCBmYWxzZSBv
dGhlcndpc2UKKyAqCisgKiBAc2VlIFVDSEFSX0xPV0VSQ0FTRQorICogQHNlZSB1X2lzbG93ZXIK
KyAqIEBzZWUgdV9oYXNCaW5hcnlQcm9wZXJ0eQorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK1Vf
U1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc1VMb3dlcmNhc2UoVUNoYXIzMiBjKTsKKworLyoq
CisgKiBDaGVjayBpZiBhIGNvZGUgcG9pbnQgaGFzIHRoZSBVcHBlcmNhc2UgVW5pY29kZSBwcm9w
ZXJ0eS4KKyAqIFNhbWUgYXMgdV9oYXNCaW5hcnlQcm9wZXJ0eShjLCBVQ0hBUl9VUFBFUkNBU0Up
LgorICogVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB1X2lzdXBwZXIhCisgKiBAcGFyYW0gYyBDb2Rl
IHBvaW50IHRvIHRlc3QKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBoYXMgdGhl
IFVwcGVyY2FzZSBVbmljb2RlIHByb3BlcnR5LCBmYWxzZSBvdGhlcndpc2UKKyAqCisgKiBAc2Vl
IFVDSEFSX1VQUEVSQ0FTRQorICogQHNlZSB1X2lzdXBwZXIKKyAqIEBzZWUgdV9oYXNCaW5hcnlQ
cm9wZXJ0eQorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JU
MgordV9pc1VVcHBlcmNhc2UoVUNoYXIzMiBjKTsKKworLyoqCisgKiBDaGVjayBpZiBhIGNvZGUg
cG9pbnQgaGFzIHRoZSBXaGl0ZV9TcGFjZSBVbmljb2RlIHByb3BlcnR5LgorICogU2FtZSBhcyB1
X2hhc0JpbmFyeVByb3BlcnR5KGMsIFVDSEFSX1dISVRFX1NQQUNFKS4KKyAqIFRoaXMgaXMgZGlm
ZmVyZW50IGZyb20gYm90aCB1X2lzc3BhY2UgYW5kIHVfaXNXaGl0ZXNwYWNlIQorICoKKyAqIE5v
dGU6IFRoZXJlIGFyZSBzZXZlcmFsIElDVSB3aGl0ZXNwYWNlIGZ1bmN0aW9uczsgcGxlYXNlIHNl
ZSB0aGUgdWNoYXIuaAorICogZmlsZSBkb2N1bWVudGF0aW9uIGZvciBhIGRldGFpbGVkIGNvbXBh
cmlzb24uCisgKgorICogQHBhcmFtIGMgQ29kZSBwb2ludCB0byB0ZXN0CisgKiBAcmV0dXJuIHRy
dWUgaWYgdGhlIGNvZGUgcG9pbnQgaGFzIHRoZSBXaGl0ZV9TcGFjZSBVbmljb2RlIHByb3BlcnR5
LCBmYWxzZSBvdGhlcndpc2UuCisgKgorICogQHNlZSBVQ0hBUl9XSElURV9TUEFDRQorICogQHNl
ZSB1X2lzV2hpdGVzcGFjZQorICogQHNlZSB1X2lzc3BhY2UKKyAqIEBzZWUgdV9pc0phdmFTcGFj
ZUNoYXIKKyAqIEBzZWUgdV9oYXNCaW5hcnlQcm9wZXJ0eQorICogQHN0YWJsZSBJQ1UgMi4xCisg
Ki8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc1VXaGl0ZVNwYWNlKFVDaGFyMzIgYyk7
CisKKy8qKgorICogR2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBmb3IgYW4gZW51bWVyYXRlZCBvciBp
bnRlZ2VyIFVuaWNvZGUgcHJvcGVydHkgZm9yIGEgY29kZSBwb2ludC4KKyAqIEFsc28gcmV0dXJu
cyBiaW5hcnkgYW5kIG1hc2sgcHJvcGVydHkgdmFsdWVzLgorICoKKyAqIFVuaWNvZGUsIGVzcGVj
aWFsbHkgaW4gdmVyc2lvbiAzLjIsIGRlZmluZXMgbWFueSBtb3JlIHByb3BlcnRpZXMgdGhhbiB0
aGUKKyAqIG9yaWdpbmFsIHNldCBpbiBVbmljb2RlRGF0YS50eHQuCisgKgorICogVGhlIHByb3Bl
cnRpZXMgQVBJcyBhcmUgaW50ZW5kZWQgdG8gcmVmbGVjdCBVbmljb2RlIHByb3BlcnRpZXMgYXMg
ZGVmaW5lZAorICogaW4gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIGFuZCBV
bmljb2RlIFRlY2huaWNhbCBSZXBvcnRzIChVVFIpLgorICogRm9yIGRldGFpbHMgYWJvdXQgdGhl
IHByb3BlcnRpZXMgc2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvIC4KKyAqIEZvciBuYW1lcyBv
ZiBVbmljb2RlIHByb3BlcnRpZXMgc2VlIHRoZSBVQ0QgZmlsZSBQcm9wZXJ0eUFsaWFzZXMudHh0
LgorICoKKyAqIFNhbXBsZSB1c2FnZToKKyAqIFVFYXN0QXNpYW5XaWR0aCBlYT0oVUVhc3RBc2lh
bldpZHRoKXVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBVQ0hBUl9FQVNUX0FTSUFOX1dJRFRIKTsK
KyAqIFVCb29sIGI9KFVCb29sKXVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBVQ0hBUl9JREVPR1JB
UEhJQyk7CisgKgorICogQHBhcmFtIGMgQ29kZSBwb2ludCB0byB0ZXN0LgorICogQHBhcmFtIHdo
aWNoIFVQcm9wZXJ0eSBzZWxlY3RvciBjb25zdGFudCwgaWRlbnRpZmllcyB3aGljaCBwcm9wZXJ0
eSB0byBjaGVjay4KKyAqICAgICAgICBNdXN0IGJlIFVDSEFSX0JJTkFSWV9TVEFSVDw9d2hpY2g8
VUNIQVJfQklOQVJZX0xJTUlUCisgKiAgICAgICAgb3IgVUNIQVJfSU5UX1NUQVJUPD13aGljaDxV
Q0hBUl9JTlRfTElNSVQKKyAqICAgICAgICBvciBVQ0hBUl9NQVNLX1NUQVJUPD13aGljaDxVQ0hB
Ul9NQVNLX0xJTUlULgorICogQHJldHVybiBOdW1lcmljIHZhbHVlIHRoYXQgaXMgZGlyZWN0bHkg
dGhlIHByb3BlcnR5IHZhbHVlIG9yLAorICogICAgICAgICBmb3IgZW51bWVyYXRlZCBwcm9wZXJ0
aWVzLCBjb3JyZXNwb25kcyB0byB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgZW51bWVyYXRlZAor
ICogICAgICAgICBjb25zdGFudCBvZiB0aGUgcmVzcGVjdGl2ZSBwcm9wZXJ0eSB2YWx1ZSBlbnVt
ZXJhdGlvbiB0eXBlCisgKiAgICAgICAgIChjYXN0IHRvIGVudW0gdHlwZSBpZiBuZWNlc3Nhcnkp
LgorICogICAgICAgICBSZXR1cm5zIDAgb3IgMSAoZm9yIEZBTFNFL1RSVUUpIGZvciBiaW5hcnkg
VW5pY29kZSBwcm9wZXJ0aWVzLgorICogICAgICAgICBSZXR1cm5zIGEgYml0LW1hc2sgZm9yIG1h
c2sgcHJvcGVydGllcy4KKyAqICAgICAgICAgUmV0dXJucyAwIGlmICd3aGljaCcgaXMgb3V0IG9m
IGJvdW5kcyBvciBpZiB0aGUgVW5pY29kZSB2ZXJzaW9uCisgKiAgICAgICAgIGRvZXMgbm90IGhh
dmUgZGF0YSBmb3IgdGhlIHByb3BlcnR5IGF0IGFsbCwgb3Igbm90IGZvciB0aGlzIGNvZGUgcG9p
bnQuCisgKgorICogQHNlZSBVUHJvcGVydHkKKyAqIEBzZWUgdV9oYXNCaW5hcnlQcm9wZXJ0eQor
ICogQHNlZSB1X2dldEludFByb3BlcnR5TWluVmFsdWUKKyAqIEBzZWUgdV9nZXRJbnRQcm9wZXJ0
eU1heFZhbHVlCisgKiBAc2VlIHVfZ2V0VW5pY29kZVZlcnNpb24KKyAqIEBzdGFibGUgSUNVIDIu
MgorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9nZXRJbnRQcm9wZXJ0eVZhbHVl
KFVDaGFyMzIgYywgVVByb3BlcnR5IHdoaWNoKTsKKworLyoqCisgKiBHZXQgdGhlIG1pbmltdW0g
dmFsdWUgZm9yIGFuIGVudW1lcmF0ZWQvaW50ZWdlci9iaW5hcnkgVW5pY29kZSBwcm9wZXJ0eS4K
KyAqIENhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVlCisg
KiB0byBhbGxvY2F0ZSBhcnJheXMgb2YgVW5pY29kZVNldCBvciBzaW1pbGFyLgorICoKKyAqIEBw
YXJhbSB3aGljaCBVUHJvcGVydHkgc2VsZWN0b3IgY29uc3RhbnQsIGlkZW50aWZpZXMgd2hpY2gg
YmluYXJ5IHByb3BlcnR5IHRvIGNoZWNrLgorICogICAgICAgIE11c3QgYmUgVUNIQVJfQklOQVJZ
X1NUQVJUPD13aGljaDxVQ0hBUl9CSU5BUllfTElNSVQKKyAqICAgICAgICBvciBVQ0hBUl9JTlRf
U1RBUlQ8PXdoaWNoPFVDSEFSX0lOVF9MSU1JVC4KKyAqIEByZXR1cm4gTWluaW11bSB2YWx1ZSBy
ZXR1cm5lZCBieSB1X2dldEludFByb3BlcnR5VmFsdWUgZm9yIGEgVW5pY29kZSBwcm9wZXJ0eS4K
KyAqICAgICAgICAgMCBpZiB0aGUgcHJvcGVydHkgc2VsZWN0b3IgaXMgb3V0IG9mIHJhbmdlLgor
ICoKKyAqIEBzZWUgVVByb3BlcnR5CisgKiBAc2VlIHVfaGFzQmluYXJ5UHJvcGVydHkKKyAqIEBz
ZWUgdV9nZXRVbmljb2RlVmVyc2lvbgorICogQHNlZSB1X2dldEludFByb3BlcnR5TWF4VmFsdWUK
KyAqIEBzZWUgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlCisgKiBAc3RhYmxlIElDVSAyLjIKKyAqLwor
VV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZShVUHJv
cGVydHkgd2hpY2gpOworCisvKioKKyAqIEdldCB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgYW4gZW51
bWVyYXRlZC9pbnRlZ2VyL2JpbmFyeSBVbmljb2RlIHByb3BlcnR5LgorICogQ2FuIGJlIHVzZWQg
dG9nZXRoZXIgd2l0aCB1X2dldEludFByb3BlcnR5TWluVmFsdWUKKyAqIHRvIGFsbG9jYXRlIGFy
cmF5cyBvZiBVbmljb2RlU2V0IG9yIHNpbWlsYXIuCisgKgorICogRXhhbXBsZXMgZm9yIG1pbi9t
YXggdmFsdWVzIChmb3IgVW5pY29kZSAzLjIpOgorICoKKyAqIC0gVUNIQVJfQklESV9DTEFTUzog
ICAgMC8xOCAoVV9MRUZUX1RPX1JJR0hUL1VfQk9VTkRBUllfTkVVVFJBTCkKKyAqIC0gVUNIQVJf
U0NSSVBUOiAgICAgICAgMC80NSAoVVNDUklQVF9DT01NT04vVVNDUklQVF9UQUdCQU5XQSkKKyAq
IC0gVUNIQVJfSURFT0dSQVBISUM6ICAgMC8xICAoRkFMU0UvVFJVRSkKKyAqCisgKiBGb3IgdW5k
ZWZpbmVkIFVQcm9wZXJ0eSBjb25zdGFudCB2YWx1ZXMsIG1pbi9tYXggdmFsdWVzIHdpbGwgYmUg
MC8tMS4KKyAqCisgKiBAcGFyYW0gd2hpY2ggVVByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50LCBp
ZGVudGlmaWVzIHdoaWNoIGJpbmFyeSBwcm9wZXJ0eSB0byBjaGVjay4KKyAqICAgICAgICBNdXN0
IGJlIFVDSEFSX0JJTkFSWV9TVEFSVDw9d2hpY2g8VUNIQVJfQklOQVJZX0xJTUlUCisgKiAgICAg
ICAgb3IgVUNIQVJfSU5UX1NUQVJUPD13aGljaDxVQ0hBUl9JTlRfTElNSVQuCisgKiBAcmV0dXJu
IE1heGltdW0gdmFsdWUgcmV0dXJuZWQgYnkgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlIGZvciBhIFVu
aWNvZGUgcHJvcGVydHkuCisgKiAgICAgICAgIDw9MCBpZiB0aGUgcHJvcGVydHkgc2VsZWN0b3Ig
aXMgb3V0IG9mIHJhbmdlLgorICoKKyAqIEBzZWUgVVByb3BlcnR5CisgKiBAc2VlIHVfaGFzQmlu
YXJ5UHJvcGVydHkKKyAqIEBzZWUgdV9nZXRVbmljb2RlVmVyc2lvbgorICogQHNlZSB1X2dldElu
dFByb3BlcnR5TWF4VmFsdWUKKyAqIEBzZWUgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlCisgKiBAc3Rh
YmxlIElDVSAyLjIKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VfZ2V0SW50UHJv
cGVydHlNYXhWYWx1ZShVUHJvcGVydHkgd2hpY2gpOworCisvKioKKyAqIEdldCB0aGUgbnVtZXJp
YyB2YWx1ZSBmb3IgYSBVbmljb2RlIGNvZGUgcG9pbnQgYXMgZGVmaW5lZCBpbiB0aGUKKyAqIFVu
aWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlLgorICoKKyAqIEEgImRvdWJsZSIgcmV0dXJuIHR5cGUg
aXMgbmVjZXNzYXJ5IGJlY2F1c2UKKyAqIHNvbWUgbnVtZXJpYyB2YWx1ZXMgYXJlIGZyYWN0aW9u
cywgbmVnYXRpdmUsIG9yIHRvbyBsYXJnZSBmb3IgaW50MzJfdC4KKyAqCisgKiBGb3IgY2hhcmFj
dGVycyB3aXRob3V0IGFueSBudW1lcmljIHZhbHVlcyBpbiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIg
RGF0YWJhc2UsCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIFVfTk9fTlVNRVJJQ19WQUxV
RS4KKyAqCisgKiBTaW1pbGFyIHRvIGphdmEubGFuZy5DaGFyYWN0ZXIuZ2V0TnVtZXJpY1ZhbHVl
KCksIGJ1dCB1X2dldE51bWVyaWNWYWx1ZSgpCisgKiBhbHNvIHN1cHBvcnRzIG5lZ2F0aXZlIHZh
bHVlcywgbGFyZ2UgdmFsdWVzLCBhbmQgZnJhY3Rpb25zLAorICogd2hpbGUgSmF2YSdzIGdldE51
bWVyaWNWYWx1ZSgpIHJldHVybnMgdmFsdWVzIDEwLi4zNSBmb3IgQVNDSUkgbGV0dGVycy4KKyAq
CisgKiBAcGFyYW0gYyBDb2RlIHBvaW50IHRvIGdldCB0aGUgbnVtZXJpYyB2YWx1ZSBmb3IuCisg
KiBAcmV0dXJuIE51bWVyaWMgdmFsdWUgb2YgYywgb3IgVV9OT19OVU1FUklDX1ZBTFVFIGlmIG5v
bmUgaXMgZGVmaW5lZC4KKyAqCisgKiBAc2VlIFVfTk9fTlVNRVJJQ19WQUxVRQorICogQHN0YWJs
ZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxFIGRvdWJsZSBVX0VYUE9SVDIKK3VfZ2V0TnVtZXJpY1Zh
bHVlKFVDaGFyMzIgYyk7CisKKy8qKgorICogU3BlY2lhbCB2YWx1ZSB0aGF0IGlzIHJldHVybmVk
IGJ5IHVfZ2V0TnVtZXJpY1ZhbHVlIHdoZW4KKyAqIG5vIG51bWVyaWMgdmFsdWUgaXMgZGVmaW5l
ZCBmb3IgYSBjb2RlIHBvaW50LgorICoKKyAqIEBzZWUgdV9nZXROdW1lcmljVmFsdWUKKyAqIEBz
dGFibGUgSUNVIDIuMgorICovCisjZGVmaW5lIFVfTk9fTlVNRVJJQ19WQUxVRSAoKGRvdWJsZSkt
MTIzNDU2Nzg5LikKKworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBj
b2RlIHBvaW50IGhhcyB0aGUgZ2VuZXJhbCBjYXRlZ29yeSAiTGwiCisgKiAobG93ZXJjYXNlIGxl
dHRlcikuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzTG93ZXJDYXNlKCku
CisgKgorICogVGhpcyBtaXNzZXMgc29tZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsc28gbG93ZXJj
YXNlIGJ1dAorICogaGF2ZSBhIGRpZmZlcmVudCBnZW5lcmFsIGNhdGVnb3J5IHZhbHVlLgorICog
SW4gb3JkZXIgdG8gaW5jbHVkZSB0aG9zZSwgdXNlIFVDSEFSX0xPV0VSQ0FTRS4KKyAqCisgKiBJ
biBhZGRpdGlvbiB0byBiZWluZyBlcXVpdmFsZW50IHRvIGEgSmF2YSBmdW5jdGlvbiwgdGhpcyBh
bHNvIHNlcnZlcworICogYXMgYSBDL1BPU0lYIG1pZ3JhdGlvbiBmdW5jdGlvbi4KKyAqIFNlZSB0
aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rp
b25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgaGVhZGVyIGZp
bGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0
dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYW4gTGwgbG93ZXJjYXNlIGxldHRlcgorICoK
KyAqIEBzZWUgVUNIQVJfTE9XRVJDQVNFCisgKiBAc2VlIHVfaXN1cHBlcgorICogQHNlZSB1X2lz
dGl0bGUKKyAqIEBzZWUgdV9pc2xvd2VyCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFC
TEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzbG93ZXIoVUNoYXIzMiBjKTsKKworLyoqCisgKiBEZXRl
cm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGhhcyB0aGUgZ2VuZXJhbCBj
YXRlZ29yeSAiTHUiCisgKiAodXBwZXJjYXNlIGxldHRlcikuCisgKgorICogU2FtZSBhcyBqYXZh
LmxhbmcuQ2hhcmFjdGVyLmlzVXBwZXJDYXNlKCkuCisgKgorICogVGhpcyBtaXNzZXMgc29tZSBj
aGFyYWN0ZXJzIHRoYXQgYXJlIGFsc28gdXBwZXJjYXNlIGJ1dAorICogaGF2ZSBhIGRpZmZlcmVu
dCBnZW5lcmFsIGNhdGVnb3J5IHZhbHVlLgorICogSW4gb3JkZXIgdG8gaW5jbHVkZSB0aG9zZSwg
dXNlIFVDSEFSX1VQUEVSQ0FTRS4KKyAqCisgKiBJbiBhZGRpdGlvbiB0byBiZWluZyBlcXVpdmFs
ZW50IHRvIGEgSmF2YSBmdW5jdGlvbiwgdGhpcyBhbHNvIHNlcnZlcworICogYXMgYSBDL1BPU0lY
IG1pZ3JhdGlvbiBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBj
aGFyYWN0ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlv
biBhdCB0aGUgdG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNv
ZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQg
aXMgYW4gTHUgdXBwZXJjYXNlIGxldHRlcgorICoKKyAqIEBzZWUgVUNIQVJfVVBQRVJDQVNFCisg
KiBAc2VlIHVfaXNsb3dlcgorICogQHNlZSB1X2lzdGl0bGUKKyAqIEBzZWUgdV90b2xvd2VyCisg
KiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzdXBw
ZXIoVUNoYXIzMiBjKTsKKworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmll
ZCBjb2RlIHBvaW50IGlzIGEgdGl0bGVjYXNlIGxldHRlci4KKyAqIFRydWUgZm9yIGdlbmVyYWwg
Y2F0ZWdvcnkgIkx0IiAodGl0bGVjYXNlIGxldHRlcikuCisgKgorICogU2FtZSBhcyBqYXZhLmxh
bmcuQ2hhcmFjdGVyLmlzVGl0bGVDYXNlKCkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9p
bnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYW4g
THQgdGl0bGVjYXNlIGxldHRlcgorICoKKyAqIEBzZWUgdV9pc3VwcGVyCisgKiBAc2VlIHVfaXNs
b3dlcgorICogQHNlZSB1X3RvdGl0bGUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJM
RSBVQm9vbCBVX0VYUE9SVDIKK3VfaXN0aXRsZShVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVy
bWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBkaWdpdCBjaGFyYWN0
ZXIgYWNjb3JkaW5nIHRvIEphdmEuCisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGggZ2VuZXJh
bCBjYXRlZ29yeSAiTmQiIChkZWNpbWFsIGRpZ2l0IG51bWJlcnMpLgorICogQmVnaW5uaW5nIHdp
dGggVW5pY29kZSA0LCB0aGlzIGlzIHRoZSBzYW1lIGFzCisgKiB0ZXN0aW5nIGZvciB0aGUgTnVt
ZXJpY19UeXBlIG9mIERlY2ltYWwuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVy
LmlzRGlnaXQoKS4KKyAqCisgKiBJbiBhZGRpdGlvbiB0byBiZWluZyBlcXVpdmFsZW50IHRvIGEg
SmF2YSBmdW5jdGlvbiwgdGhpcyBhbHNvIHNlcnZlcworICogYXMgYSBDL1BPU0lYIG1pZ3JhdGlv
biBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIg
Y2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0aGUg
dG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQg
dG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSBkaWdp
dCBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRvIENoYXJhY3Rlci5pc0RpZ2l0KCkKKyAqCisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzZGlnaXQoVUNo
YXIzMiBjKTsKKworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2Rl
IHBvaW50IGlzIGEgbGV0dGVyIGNoYXJhY3Rlci4KKyAqIFRydWUgZm9yIGdlbmVyYWwgY2F0ZWdv
cmllcyAiTCIgKGxldHRlcnMpLgorICoKKyAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5p
c0xldHRlcigpLgorICoKKyAqIEluIGFkZGl0aW9uIHRvIGJlaW5nIGVxdWl2YWxlbnQgdG8gYSBK
YXZhIGZ1bmN0aW9uLCB0aGlzIGFsc28gc2VydmVzCisgKiBhcyBhIEMvUE9TSVggbWlncmF0aW9u
IGZ1bmN0aW9uLgorICogU2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3RlciBj
bGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGF0IHRoZSB0
b3Agb2YgdGhpcyBoZWFkZXIgZmlsZS4KKyAqCisgKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0
byBiZSB0ZXN0ZWQKKyAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhIGxldHRl
ciBjaGFyYWN0ZXIKKyAqCisgKiBAc2VlIHVfaXNkaWdpdAorICogQHNlZSB1X2lzYWxudW0KKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNhbHBo
YShVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVk
IGNvZGUgcG9pbnQgaXMgYW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcgorICogKGxldHRlciBvciBk
aWdpdCkgYWNjb3JkaW5nIHRvIEphdmEuCisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGggZ2Vu
ZXJhbCBjYXRlZ29yaWVzCisgKiAiTCIgKGxldHRlcnMpIGFuZCAiTmQiIChkZWNpbWFsIGRpZ2l0
IG51bWJlcnMpLgorICoKKyAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5pc0xldHRlck9y
RGlnaXQoKS4KKyAqCisgKiBJbiBhZGRpdGlvbiB0byBiZWluZyBlcXVpdmFsZW50IHRvIGEgSmF2
YSBmdW5jdGlvbiwgdGhpcyBhbHNvIHNlcnZlcworICogYXMgYSBDL1BPU0lYIG1pZ3JhdGlvbiBm
dW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIgY2xh
c3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0aGUgdG9w
IG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8g
YmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYW4gYWxwaGFu
dW1lcmljIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gQ2hhcmFjdGVyLmlzTGV0dGVyT3JEaWdpdCgp
CisgKgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgor
dV9pc2FsbnVtKFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBz
cGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIGhleGFkZWNpbWFsIGRpZ2l0LgorICogVGhpcyBpcyBl
cXVpdmFsZW50IHRvIHVfZGlnaXQoYywgMTYpPj0wLgorICogVHJ1ZSBmb3IgY2hhcmFjdGVycyB3
aXRoIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIiAoZGVjaW1hbCBkaWdpdCBudW1iZXJzKQorICogYXMg
d2VsbCBhcyBMYXRpbiBsZXR0ZXJzIGEtZiBhbmQgQS1GIGluIGJvdGggQVNDSUkgYW5kIEZ1bGx3
aWR0aCBBU0NJSS4KKyAqIChUaGF0IGlzLCBmb3IgbGV0dGVycyB3aXRoIGNvZGUgcG9pbnRzCisg
KiAwMDQxLi4wMDQ2LCAwMDYxLi4wMDY2LCBGRjIxLi5GRjI2LCBGRjQxLi5GRjQ2LikKKyAqCisg
KiBJbiBvcmRlciB0byBuYXJyb3cgdGhlIGRlZmluaXRpb24gb2YgaGV4YWRlY2ltYWwgZGlnaXRz
IHRvIG9ubHkgQVNDSUkKKyAqIGNoYXJhY3RlcnMsIHVzZSAoYzw9MHg3ZiAmJiB1X2lzeGRpZ2l0
KGMpKS4KKyAqCisgKiBUaGlzIGlzIGEgQy9QT1NJWCBtaWdyYXRpb24gZnVuY3Rpb24uCisgKiBT
ZWUgdGhlIGNvbW1lbnRzIGFib3V0IEMvUE9TSVggY2hhcmFjdGVyIGNsYXNzaWZpY2F0aW9uIGZ1
bmN0aW9ucyBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGhlYWRl
ciBmaWxlLgorICoKKyAqIEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICog
QHJldHVybiBUUlVFIGlmIHRoZSBjb2RlIHBvaW50IGlzIGEgaGV4YWRlY2ltYWwgZGlnaXQKKyAq
CisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lz
eGRpZ2l0KFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVj
aWZpZWQgY29kZSBwb2ludCBpcyBhIHB1bmN0dWF0aW9uIGNoYXJhY3Rlci4KKyAqIFRydWUgZm9y
IGNoYXJhY3RlcnMgd2l0aCBnZW5lcmFsIGNhdGVnb3JpZXMgIlAiIChwdW5jdHVhdGlvbikuCisg
KgorICogVGhpcyBpcyBhIEMvUE9TSVggbWlncmF0aW9uIGZ1bmN0aW9uLgorICogU2VlIHRoZSBj
b21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMg
aW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBoZWFkZXIgZmlsZS4K
KyAqCisgKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKKyAqIEByZXR1cm4g
VFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhIHB1bmN0dWF0aW9uIGNoYXJhY3RlcgorICoKKyAq
IEBzdGFibGUgSUNVIDIuNgorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNwdW5j
dChVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVk
IGNvZGUgcG9pbnQgaXMgYSAiZ3JhcGhpYyIgY2hhcmFjdGVyCisgKiAocHJpbnRhYmxlLCBleGNs
dWRpbmcgc3BhY2VzKS4KKyAqIFRSVUUgZm9yIGFsbCBjaGFyYWN0ZXJzIGV4Y2VwdCB0aG9zZSB3
aXRoIGdlbmVyYWwgY2F0ZWdvcmllcworICogIkNjIiAoY29udHJvbCBjb2RlcyksICJDZiIgKGZv
cm1hdCBjb250cm9scyksICJDcyIgKHN1cnJvZ2F0ZXMpLAorICogIkNuIiAodW5hc3NpZ25lZCks
IGFuZCAiWiIgKHNlcGFyYXRvcnMpLgorICoKKyAqIFRoaXMgaXMgYSBDL1BPU0lYIG1pZ3JhdGlv
biBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIg
Y2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0aGUg
dG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQg
dG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSAiZ3Jh
cGhpYyIgY2hhcmFjdGVyCisgKgorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIFVC
b29sIFVfRVhQT1JUMgordV9pc2dyYXBoKFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5l
cyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhICJibGFuayIgb3IgImhvcml6
b250YWwgc3BhY2UiLAorICogYSBjaGFyYWN0ZXIgdGhhdCB2aXNpYmx5IHNlcGFyYXRlcyB3b3Jk
cyBvbiBhIGxpbmUuCisgKiBUaGUgZm9sbG93aW5nIGFyZSBlcXVpdmFsZW50IGRlZmluaXRpb25z
OgorICoKKyAqIFRSVUUgZm9yIFVuaWNvZGUgV2hpdGVfU3BhY2UgY2hhcmFjdGVycyBleGNlcHQg
Zm9yICJ2ZXJ0aWNhbCBzcGFjZSBjb250cm9scyIKKyAqIHdoZXJlICJ2ZXJ0aWNhbCBzcGFjZSBj
b250cm9scyIgYXJlIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczoKKyAqIFUrMDAwQSAoTEYpIFUr
MDAwQiAoVlQpIFUrMDAwQyAoRkYpIFUrMDAwRCAoQ1IpIFUrMDA4NSAoTkVMKSBVKzIwMjggKExT
KSBVKzIwMjkgKFBTKQorICoKKyAqIHNhbWUgYXMKKyAqCisgKiBUUlVFIGZvciBVKzAwMDkgKFRB
QikgYW5kIGNoYXJhY3RlcnMgd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICJacyIgKHNwYWNlIHNlcGFy
YXRvcnMpCisgKiBleGNlcHQgWmVybyBXaWR0aCBTcGFjZSAoWldTUCwgVSsyMDBCKS4KKyAqCisg
KiBOb3RlOiBUaGVyZSBhcmUgc2V2ZXJhbCBJQ1Ugd2hpdGVzcGFjZSBmdW5jdGlvbnM7IHBsZWFz
ZSBzZWUgdGhlIHVjaGFyLmgKKyAqIGZpbGUgZG9jdW1lbnRhdGlvbiBmb3IgYSBkZXRhaWxlZCBj
b21wYXJpc29uLgorICoKKyAqIFRoaXMgaXMgYSBDL1BPU0lYIG1pZ3JhdGlvbiBmdW5jdGlvbi4K
KyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIgY2xhc3NpZmljYXRp
b24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMg
aGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVk
CisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSAiYmxhbmsiCisgKgorICog
QHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc2JsYW5r
KFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQg
Y29kZSBwb2ludCBpcyAiZGVmaW5lZCIsCisgKiB3aGljaCB1c3VhbGx5IG1lYW5zIHRoYXQgaXQg
aXMgYXNzaWduZWQgYSBjaGFyYWN0ZXIuCisgKiBUcnVlIGZvciBnZW5lcmFsIGNhdGVnb3JpZXMg
b3RoZXIgdGhhbiAiQ24iIChvdGhlciwgbm90IGFzc2lnbmVkKSwKKyAqIGkuZS4sIHRydWUgZm9y
IGFsbCBjb2RlIHBvaW50cyBtZW50aW9uZWQgaW4gVW5pY29kZURhdGEudHh0LgorICoKKyAqIE5v
dGUgdGhhdCBub24tY2hhcmFjdGVyIGNvZGUgcG9pbnRzIChlLmcuLCBVK0ZERDApIGFyZSBub3Qg
ImRlZmluZWQiCisgKiAodGhleSBhcmUgQ24pLCBidXQgc3Vycm9nYXRlIGNvZGUgcG9pbnRzIGFy
ZSAiZGVmaW5lZCIgKENzKS4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNE
ZWZpbmVkKCkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisg
KiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYXNzaWduZWQgYSBjaGFyYWN0ZXIK
KyAqCisgKiBAc2VlIHVfaXNkaWdpdAorICogQHNlZSB1X2lzYWxwaGEKKyAqIEBzZWUgdV9pc2Fs
bnVtCisgKiBAc2VlIHVfaXN1cHBlcgorICogQHNlZSB1X2lzbG93ZXIKKyAqIEBzZWUgdV9pc3Rp
dGxlCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1
X2lzZGVmaW5lZChVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgaWYgdGhlIHNwZWNp
ZmllZCBjaGFyYWN0ZXIgaXMgYSBzcGFjZSBjaGFyYWN0ZXIgb3Igbm90LgorICoKKyAqIE5vdGU6
IFRoZXJlIGFyZSBzZXZlcmFsIElDVSB3aGl0ZXNwYWNlIGZ1bmN0aW9uczsgcGxlYXNlIHNlZSB0
aGUgdWNoYXIuaAorICogZmlsZSBkb2N1bWVudGF0aW9uIGZvciBhIGRldGFpbGVkIGNvbXBhcmlz
b24uCisgKgorICogVGhpcyBpcyBhIEMvUE9TSVggbWlncmF0aW9uIGZ1bmN0aW9uLgorICogU2Vl
IHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiBmdW5j
dGlvbnMgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBoZWFkZXIg
ZmlsZS4KKyAqCisgKiBAcGFyYW0gYyAgICB0aGUgY2hhcmFjdGVyIHRvIGJlIHRlc3RlZAorICog
QHJldHVybiAgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIGEgc3BhY2UgY2hhcmFjdGVyOyBmYWxz
ZSBvdGhlcndpc2UuCisgKgorICogQHNlZSB1X2lzSmF2YVNwYWNlQ2hhcgorICogQHNlZSB1X2lz
V2hpdGVzcGFjZQorICogQHNlZSB1X2lzVVdoaXRlU3BhY2UKKyAqIEBzdGFibGUgSUNVIDIuMAor
ICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNzcGFjZShVQ2hhcjMyIGMpOworCisv
KioKKyAqIERldGVybWluZSBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBzcGFjZSBj
aGFyYWN0ZXIgYWNjb3JkaW5nIHRvIEphdmEuCisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGgg
Z2VuZXJhbCBjYXRlZ29yaWVzICJaIiAoc2VwYXJhdG9ycyksCisgKiB3aGljaCBkb2VzIG5vdCBp
bmNsdWRlIGNvbnRyb2wgY29kZXMgKGUuZy4sIFRBQiBvciBMaW5lIEZlZWQpLgorICoKKyAqIFNh
bWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5pc1NwYWNlQ2hhcigpLgorICoKKyAqIE5vdGU6IFRo
ZXJlIGFyZSBzZXZlcmFsIElDVSB3aGl0ZXNwYWNlIGZ1bmN0aW9uczsgcGxlYXNlIHNlZSB0aGUg
dWNoYXIuaAorICogZmlsZSBkb2N1bWVudGF0aW9uIGZvciBhIGRldGFpbGVkIGNvbXBhcmlzb24u
CisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJu
IFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSBzcGFjZSBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRv
IENoYXJhY3Rlci5pc1NwYWNlQ2hhcigpCisgKgorICogQHNlZSB1X2lzc3BhY2UKKyAqIEBzZWUg
dV9pc1doaXRlc3BhY2UKKyAqIEBzZWUgdV9pc1VXaGl0ZVNwYWNlCisgKiBAc3RhYmxlIElDVSAy
LjYKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzSmF2YVNwYWNlQ2hhcihVQ2hh
cjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50
IGlzIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRvIEphdmEvSUNVLgorICogQSBj
aGFyYWN0ZXIgaXMgY29uc2lkZXJlZCB0byBiZSBhIEphdmEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIg
aWYgYW5kIG9ubHkKKyAqIGlmIGl0IHNhdGlzZmllcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBjcml0
ZXJpYToKKyAqCisgKiAtIEl0IGlzIGEgVW5pY29kZSBzZXBhcmF0b3IgKGNhdGVnb3JpZXMgIloi
KSwgYnV0IGlzIG5vdAorICogICAgICBhIG5vLWJyZWFrIHNwYWNlIChVKzAwQTAgTkJTUCBvciBV
KzIwMDcgRmlndXJlIFNwYWNlIG9yIFUrMjAyRiBOYXJyb3cgTkJTUCkuCisgKiAtIEl0IGlzIFUr
MDAwOSBIT1JJWk9OVEFMIFRBQlVMQVRJT04uCisgKiAtIEl0IGlzIFUrMDAwQSBMSU5FIEZFRUQu
CisgKiAtIEl0IGlzIFUrMDAwQiBWRVJUSUNBTCBUQUJVTEFUSU9OLgorICogLSBJdCBpcyBVKzAw
MEMgRk9STSBGRUVELgorICogLSBJdCBpcyBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOLgorICogLSBJ
dCBpcyBVKzAwMUMgRklMRSBTRVBBUkFUT1IuCisgKiAtIEl0IGlzIFUrMDAxRCBHUk9VUCBTRVBB
UkFUT1IuCisgKiAtIEl0IGlzIFUrMDAxRSBSRUNPUkQgU0VQQVJBVE9SLgorICogLSBJdCBpcyBV
KzAwMUYgVU5JVCBTRVBBUkFUT1IuCisgKiAtIEl0IGlzIFUrMDA4NSBORVhUIExJTkUuCisgKgor
ICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZSgpIGV4Y2VwdCB0aGF0
IEphdmEgb21pdHMgVSswMDg1LgorICoKKyAqIE5vdGU6IFRoZXJlIGFyZSBzZXZlcmFsIElDVSB3
aGl0ZXNwYWNlIGZ1bmN0aW9uczsgcGxlYXNlIHNlZSB0aGUgdWNoYXIuaAorICogZmlsZSBkb2N1
bWVudGF0aW9uIGZvciBhIGRldGFpbGVkIGNvbXBhcmlzb24uCisgKgorICogQHBhcmFtIGMgdGhl
IGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9p
bnQgaXMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gSmF2YS9JQ1UKKyAqCisg
KiBAc2VlIHVfaXNzcGFjZQorICogQHNlZSB1X2lzSmF2YVNwYWNlQ2hhcgorICogQHNlZSB1X2lz
VVdoaXRlU3BhY2UKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQm9vbCBVX0VY
UE9SVDIKK3VfaXNXaGl0ZXNwYWNlKFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3
aGV0aGVyIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIGNvbnRyb2wgY2hhcmFjdGVyCisg
KiAoYXMgZGVmaW5lZCBieSB0aGlzIGZ1bmN0aW9uKS4KKyAqIEEgY29udHJvbCBjaGFyYWN0ZXIg
aXMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgKiAtIElTTyA4LWJpdCBjb250cm9sIGNoYXJhY3Rl
ciAoVSswMDAwLi5VKzAwMWYgYW5kIFUrMDA3Zi4uVSswMDlmKQorICogLSBVX0NPTlRST0xfQ0hB
UiAoQ2MpCisgKiAtIFVfRk9STUFUX0NIQVIgKENmKQorICogLSBVX0xJTkVfU0VQQVJBVE9SICha
bCkKKyAqIC0gVV9QQVJBR1JBUEhfU0VQQVJBVE9SIChacCkKKyAqCisgKiBUaGlzIGlzIGEgQy9Q
T1NJWCBtaWdyYXRpb24gZnVuY3Rpb24uCisgKiBTZWUgdGhlIGNvbW1lbnRzIGFib3V0IEMvUE9T
SVggY2hhcmFjdGVyIGNsYXNzaWZpY2F0aW9uIGZ1bmN0aW9ucyBpbiB0aGUKKyAqIGRvY3VtZW50
YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGhlYWRlciBmaWxlLgorICoKKyAqIEBwYXJhbSBjIHRo
ZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICogQHJldHVybiBUUlVFIGlmIHRoZSBjb2RlIHBv
aW50IGlzIGEgY29udHJvbCBjaGFyYWN0ZXIKKyAqCisgKiBAc2VlIFVDSEFSX0RFRkFVTFRfSUdO
T1JBQkxFX0NPREVfUE9JTlQKKyAqIEBzZWUgdV9pc3ByaW50CisgKiBAc3RhYmxlIElDVSAyLjAK
KyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzY250cmwoVUNoYXIzMiBjKTsKKwor
LyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGFu
IElTTyBjb250cm9sIGNvZGUuCisgKiBUcnVlIGZvciBVKzAwMDAuLlUrMDAxZiBhbmQgVSswMDdm
Li5VKzAwOWYgKGdlbmVyYWwgY2F0ZWdvcnkgIkNjIikuCisgKgorICogU2FtZSBhcyBqYXZhLmxh
bmcuQ2hhcmFjdGVyLmlzSVNPQ29udHJvbCgpLgorICoKKyAqIEBwYXJhbSBjIHRoZSBjb2RlIHBv
aW50IHRvIGJlIHRlc3RlZAorICogQHJldHVybiBUUlVFIGlmIHRoZSBjb2RlIHBvaW50IGlzIGFu
IElTTyBjb250cm9sIGNvZGUKKyAqCisgKiBAc2VlIHVfaXNjbnRybAorICogQHN0YWJsZSBJQ1Ug
Mi42CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc0lTT0NvbnRyb2woVUNoYXIz
MiBjKTsKKworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2RlIHBv
aW50IGlzIGEgcHJpbnRhYmxlIGNoYXJhY3Rlci4KKyAqIFRydWUgZm9yIGdlbmVyYWwgY2F0ZWdv
cmllcyA8ZW0+b3RoZXI8L2VtPiB0aGFuICJDIiAoY29udHJvbHMpLgorICoKKyAqIFRoaXMgaXMg
YSBDL1BPU0lYIG1pZ3JhdGlvbiBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQg
Qy9QT1NJWCBjaGFyYWN0ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9j
dW1lbnRhdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFt
IGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNv
ZGUgcG9pbnQgaXMgYSBwcmludGFibGUgY2hhcmFjdGVyCisgKgorICogQHNlZSBVQ0hBUl9ERUZB
VUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UCisgKiBAc2VlIHVfaXNjbnRybAorICogQHN0YWJsZSBJ
Q1UgMi4wCisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc3ByaW50KFVDaGFyMzIg
Yyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY29kZSBwb2lu
dCBpcyBhIGJhc2UgY2hhcmFjdGVyLgorICogVHJ1ZSBmb3IgZ2VuZXJhbCBjYXRlZ29yaWVzICJM
IiAobGV0dGVycyksICJOIiAobnVtYmVycyksCisgKiAiTWMiIChzcGFjaW5nIGNvbWJpbmluZyBt
YXJrcyksIGFuZCAiTWUiIChlbmNsb3NpbmcgbWFya3MpLgorICoKKyAqIE5vdGUgdGhhdCB0aGlz
IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBVbmljb2RlIGRlZmluaXRpb24gaW4KKyAqIGNoYXB0ZXIg
My41LCBjb25mb3JtYW5jZSBjbGF1c2UgRDEzLAorICogd2hpY2ggZGVmaW5lcyBiYXNlIGNoYXJh
Y3RlcnMgdG8gYmUgYWxsIGNoYXJhY3RlcnMgKG5vdCBDbikKKyAqIHRoYXQgZG8gbm90IGdyYXBo
aWNhbGx5IGNvbWJpbmUgd2l0aCBwcmVjZWRpbmcgY2hhcmFjdGVycyAoTSkKKyAqIGFuZCB0aGF0
IGFyZSBuZWl0aGVyIGNvbnRyb2wgKENjKSBvciBmb3JtYXQgKENmKSBjaGFyYWN0ZXJzLgorICoK
KyAqIEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICogQHJldHVybiBUUlVF
IGlmIHRoZSBjb2RlIHBvaW50IGlzIGEgYmFzZSBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRvIHRoaXMg
ZnVuY3Rpb24KKyAqCisgKiBAc2VlIHVfaXNhbHBoYQorICogQHNlZSB1X2lzZGlnaXQKKyAqIEBz
dGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNiYXNlKFVD
aGFyMzIgYyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgYmlkaXJlY3Rpb25hbCBjYXRlZ29yeSB2
YWx1ZSBmb3IgdGhlIGNvZGUgcG9pbnQsCisgKiB3aGljaCBpcyB1c2VkIGluIHRoZSBVbmljb2Rl
IGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtCisgKiAoVUFYICM5IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvcmVwb3J0cy90cjkvKS4KKyAqIE5vdGUgdGhhdCBzb21lIDxlbT51bmFzc2lnbmVkPC9lbT4g
Y29kZSBwb2ludHMgaGF2ZSBiaWRpIHZhbHVlcworICogb2YgUiBvciBBTCBiZWNhdXNlIHRoZXkg
YXJlIGluIGJsb2NrcyB0aGF0IGFyZSByZXNlcnZlZAorICogZm9yIFJpZ2h0LVRvLUxlZnQgc2Ny
aXB0cy4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuZ2V0RGlyZWN0aW9uYWxp
dHkoKQorICoKKyAqIEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICogQHJl
dHVybiB0aGUgYmlkaXJlY3Rpb25hbCBjYXRlZ29yeSAoVUNoYXJEaXJlY3Rpb24pIHZhbHVlCisg
KgorICogQHNlZSBVQ2hhckRpcmVjdGlvbgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RB
QkxFIFVDaGFyRGlyZWN0aW9uIFVfRVhQT1JUMgordV9jaGFyRGlyZWN0aW9uKFVDaGFyMzIgYyk7
CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb2RlIHBvaW50IGhhcyB0aGUgQmlk
aV9NaXJyb3JlZCBwcm9wZXJ0eS4KKyAqIFRoaXMgcHJvcGVydHkgaXMgc2V0IGZvciBjaGFyYWN0
ZXJzIHRoYXQgYXJlIGNvbW1vbmx5IHVzZWQgaW4KKyAqIFJpZ2h0LVRvLUxlZnQgY29udGV4dHMg
YW5kIG5lZWQgdG8gYmUgZGlzcGxheWVkIHdpdGggYSAibWlycm9yZWQiCisgKiBnbHlwaC4KKyAq
CisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNNaXJyb3JlZCgpLgorICogU2FtZSBh
cyBVQ0hBUl9CSURJX01JUlJPUkVECisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8g
YmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNoYXJhY3RlciBoYXMgdGhlIEJpZGlf
TWlycm9yZWQgcHJvcGVydHkKKyAqCisgKiBAc2VlIFVDSEFSX0JJRElfTUlSUk9SRUQKKyAqIEBz
dGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNNaXJyb3Jl
ZChVQ2hhcjMyIGMpOworCisvKioKKyAqIE1hcHMgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgdG8g
YSAibWlycm9yLWltYWdlIiBjaGFyYWN0ZXIuCisgKiBGb3IgY2hhcmFjdGVycyB3aXRoIHRoZSBC
aWRpX01pcnJvcmVkIHByb3BlcnR5LCBpbXBsZW1lbnRhdGlvbnMKKyAqIHNvbWV0aW1lcyBuZWVk
IGEgInBvb3IgbWFuJ3MiIG1hcHBpbmcgdG8gYW5vdGhlciBVbmljb2RlCisgKiBjaGFyYWN0ZXIg
KGNvZGUgcG9pbnQpIHN1Y2ggdGhhdCB0aGUgZGVmYXVsdCBnbHlwaCBtYXkgc2VydmUKKyAqIGFz
IHRoZSBtaXJyb3ItaW1hZ2Ugb2YgdGhlIGRlZmF1bHQgZ2x5cGggb2YgdGhlIHNwZWNpZmllZAor
ICogY2hhcmFjdGVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGV4dCBjb252ZXJzaW9uIHRvIGFuZCBm
cm9tCisgKiBjb2RlcGFnZXMgd2l0aCB2aXN1YWwgb3JkZXIsIGFuZCBmb3IgZGlzcGxheXMgd2l0
aG91dCBnbHlwaAorICogc2VsZWNldGlvbiBjYXBhYmlsaXRpZXMuCisgKgorICogQHBhcmFtIGMg
dGhlIGNvZGUgcG9pbnQgdG8gYmUgbWFwcGVkCisgKiBAcmV0dXJuIGFub3RoZXIgVW5pY29kZSBj
b2RlIHBvaW50IHRoYXQgbWF5IHNlcnZlIGFzIGEgbWlycm9yLWltYWdlCisgKiAgICAgICAgIHN1
YnN0aXR1dGUsIG9yIGMgaXRzZWxmIGlmIHRoZXJlIGlzIG5vIHN1Y2ggbWFwcGluZyBvciBjCisg
KiAgICAgICAgIGRvZXMgbm90IGhhdmUgdGhlIEJpZGlfTWlycm9yZWQgcHJvcGVydHkKKyAqCisg
KiBAc2VlIFVDSEFSX0JJRElfTUlSUk9SRUQKKyAqIEBzZWUgdV9pc01pcnJvcmVkCisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3VfY2hhck1pcnJv
cihVQ2hhcjMyIGMpOworCisvKioKKyAqIFJldHVybnMgdGhlIGdlbmVyYWwgY2F0ZWdvcnkgdmFs
dWUgZm9yIHRoZSBjb2RlIHBvaW50LgorICoKKyAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rl
ci5nZXRUeXBlKCkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVk
CisgKiBAcmV0dXJuIHRoZSBnZW5lcmFsIGNhdGVnb3J5IChVQ2hhckNhdGVnb3J5KSB2YWx1ZQor
ICoKKyAqIEBzZWUgVUNoYXJDYXRlZ29yeQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RB
QkxFIGludDhfdCBVX0VYUE9SVDIKK3VfY2hhclR5cGUoVUNoYXIzMiBjKTsKKworLyoqCisgKiBH
ZXQgYSBzaW5nbGUtYml0IGJpdCBzZXQgZm9yIHRoZSBnZW5lcmFsIGNhdGVnb3J5IG9mIGEgY2hh
cmFjdGVyLgorICogVGhpcyBiaXQgc2V0IGNhbiBiZSBjb21wYXJlZCBiaXR3aXNlIHdpdGggVV9H
Q19TTV9NQVNLLCBVX0dDX0xfTUFTSywgZXRjLgorICogU2FtZSBhcyBVX01BU0sodV9jaGFyVHlw
ZShjKSkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBA
cmV0dXJuIGEgc2luZ2xlLWJpdCBtYXNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdlbmVyYWwgY2F0
ZWdvcnkgKFVDaGFyQ2F0ZWdvcnkpIHZhbHVlCisgKgorICogQHNlZSB1X2NoYXJUeXBlCisgKiBA
c2VlIFVDaGFyQ2F0ZWdvcnkKKyAqIEBzZWUgVV9HQ19DTl9NQVNLCisgKiBAc3RhYmxlIElDVSAy
LjEKKyAqLworI2RlZmluZSBVX0dFVF9HQ19NQVNLKGMpIFVfTUFTSyh1X2NoYXJUeXBlKGMpKQor
CisvKioKKyAqIENhbGxiYWNrIGZyb20gdV9lbnVtQ2hhclR5cGVzKCksIGlzIGNhbGxlZCBmb3Ig
ZWFjaCBjb250aWd1b3VzIHJhbmdlCisgKiBvZiBjb2RlIHBvaW50cyBjICh3aGVyZSBzdGFydDw9
YzxsaW1pdCkKKyAqIHdpdGggdGhlIHNhbWUgVW5pY29kZSBnZW5lcmFsIGNhdGVnb3J5ICgiY2hh
cmFjdGVyIHR5cGUiKS4KKyAqCisgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIHN0b3AgdGhl
IGVudW1lcmF0aW9uIGJ5IHJldHVybmluZyBGQUxTRS4KKyAqCisgKiBAcGFyYW0gY29udGV4dCBh
biBvcGFxdWUgcG9pbnRlciwgYXMgcGFzc2VkIGludG8gdXRyaWVfZW51bSgpCisgKiBAcGFyYW0g
c3RhcnQgdGhlIGZpcnN0IGNvZGUgcG9pbnQgaW4gYSBjb250aWd1b3VzIHJhbmdlIHdpdGggdmFs
dWUKKyAqIEBwYXJhbSBsaW1pdCBvbmUgcGFzdCB0aGUgbGFzdCBjb2RlIHBvaW50IGluIGEgY29u
dGlndW91cyByYW5nZSB3aXRoIHZhbHVlCisgKiBAcGFyYW0gdHlwZSB0aGUgZ2VuZXJhbCBjYXRl
Z29yeSBmb3IgYWxsIGNvZGUgcG9pbnRzIGluIFtzdGFydC4ubGltaXRbCisgKiBAcmV0dXJuIEZB
TFNFIHRvIHN0b3AgdGhlIGVudW1lcmF0aW9uCisgKgorICogQHN0YWJsZSBJQ1UgMi4xCisgKiBA
c2VlIFVDaGFyQ2F0ZWdvcnkKKyAqIEBzZWUgdV9lbnVtQ2hhclR5cGVzCisgKi8KK3R5cGVkZWYg
VUJvb2wgVV9DQUxMQ09OVgorVUNoYXJFbnVtVHlwZVJhbmdlKGNvbnN0IHZvaWQgKmNvbnRleHQs
IFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgbGltaXQsIFVDaGFyQ2F0ZWdvcnkgdHlwZSk7CisKKy8q
KgorICogRW51bWVyYXRlIGVmZmljaWVudGx5IGFsbCBjb2RlIHBvaW50cyB3aXRoIHRoZWlyIFVu
aWNvZGUgZ2VuZXJhbCBjYXRlZ29yaWVzLgorICoKKyAqIFRoaXMgaXMgdXNlZnVsIGZvciBidWls
ZGluZyBkYXRhIHN0cnVjdHVyZXMgKGUuZy4sIFVuaWNvZGVTZXQncyksCisgKiBmb3IgZW51bWVy
YXRpbmcgYWxsIGFzc2lnbmVkIGNvZGUgcG9pbnRzICh0eXBlIT1VX1VOQVNTSUdORUQpLCBldGMu
CisgKgorICogRm9yIGVhY2ggY29udGlndW91cyByYW5nZSBvZiBjb2RlIHBvaW50cyB3aXRoIGEg
Z2l2ZW4gZ2VuZXJhbCBjYXRlZ29yeSAoImNoYXJhY3RlciB0eXBlIiksCisgKiB0aGUgVUNoYXJF
bnVtVHlwZVJhbmdlIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAqIEFkamFjZW50IHJhbmdlcyBoYXZl
IGRpZmZlcmVudCB0eXBlcy4KKyAqIFRoZSBVbmljb2RlIFN0YW5kYXJkIGd1YXJhbnRlZXMgdGhh
dCB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgdHlwZSBpcyAwLi4zMS4KKyAqCisgKiBAcGFyYW0g
ZW51bVJhbmdlIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGZvciBlYWNo
IGNvbnRpZ3VvdXMgcmFuZ2UKKyAqICAgICAgICAgICAgICAgICAgb2YgY29kZSBwb2ludHMgd2l0
aCB0aGUgc2FtZSBnZW5lcmFsIGNhdGVnb3J5CisgKiBAcGFyYW0gY29udGV4dCBhbiBvcGFxdWUg
cG9pbnRlciB0aGF0IGlzIHBhc3NlZCBvbiB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KKyAqCisg
KiBAc3RhYmxlIElDVSAyLjEKKyAqIEBzZWUgVUNoYXJDYXRlZ29yeQorICogQHNlZSBVQ2hhckVu
dW1UeXBlUmFuZ2UKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VfZW51bUNoYXJUeXBl
cyhVQ2hhckVudW1UeXBlUmFuZ2UgKmVudW1SYW5nZSwgY29uc3Qgdm9pZCAqY29udGV4dCk7CisK
KyNpZiAhVUNPTkZJR19OT19OT1JNQUxJWkFUSU9OCisKKy8qKgorICogUmV0dXJucyB0aGUgY29t
YmluaW5nIGNsYXNzIG9mIHRoZSBjb2RlIHBvaW50IGFzIHNwZWNpZmllZCBpbiBVbmljb2RlRGF0
YS50eHQuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgb2YgdGhlIGNoYXJhY3Rlcgor
ICogQHJldHVybiB0aGUgY29tYmluaW5nIGNsYXNzIG9mIHRoZSBjaGFyYWN0ZXIKKyAqIEBzdGFi
bGUgSUNVIDIuMAorICovCitVX1NUQUJMRSB1aW50OF90IFVfRVhQT1JUMgordV9nZXRDb21iaW5p
bmdDbGFzcyhVQ2hhcjMyIGMpOworCisjZW5kaWYKKworLyoqCisgKiBSZXR1cm5zIHRoZSBkZWNp
bWFsIGRpZ2l0IHZhbHVlIG9mIGEgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuCisgKiBTdWNoIGNo
YXJhY3RlcnMgaGF2ZSB0aGUgZ2VuZXJhbCBjYXRlZ29yeSAiTmQiIChkZWNpbWFsIGRpZ2l0IG51
bWJlcnMpCisgKiBhbmQgYSBOdW1lcmljX1R5cGUgb2YgRGVjaW1hbC4KKyAqCisgKiBVbmxpa2Ug
SUNVIHJlbGVhc2VzIGJlZm9yZSAyLjYsIG5vIGRpZ2l0IHZhbHVlcyBhcmUgcmV0dXJuZWQgZm9y
IGFueQorICogSGFuIGNoYXJhY3RlcnMgYmVjYXVzZSBIYW4gbnVtYmVyIGNoYXJhY3RlcnMgYXJl
IG9mdGVuIHVzZWQgd2l0aCBhIHNwZWNpYWwKKyAqIENoaW5lc2Utc3R5bGUgbnVtYmVyIGZvcm1h
dCAod2l0aCBjaGFyYWN0ZXJzIGZvciBwb3dlcnMgb2YgMTAgaW4gYmV0d2VlbikKKyAqIGluc3Rl
YWQgb2YgaW4gZGVjaW1hbC1wb3NpdGlvbmFsIG5vdGF0aW9uLgorICogVW5pY29kZSA0IGV4cGxp
Y2l0bHkgYXNzaWducyBIYW4gbnVtYmVyIGNoYXJhY3RlcnMgdGhlIE51bWVyaWNfVHlwZQorICog
TnVtZXJpYyBpbnN0ZWFkIG9mIERlY2ltYWwuCisgKiBTZWUgSml0dGVyYnVnIDE0ODMgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBVc2UgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIFVDSEFSX05V
TUVSSUNfVFlQRSkgYW5kIHVfZ2V0TnVtZXJpY1ZhbHVlKCkKKyAqIGZvciBjb21wbGV0ZSBudW1l
cmljIFVuaWNvZGUgcHJvcGVydGllcy4KKyAqCisgKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCBm
b3Igd2hpY2ggdG8gZ2V0IHRoZSBkZWNpbWFsIGRpZ2l0IHZhbHVlCisgKiBAcmV0dXJuIHRoZSBk
ZWNpbWFsIGRpZ2l0IHZhbHVlIG9mIGMsCisgKiAgICAgICAgIG9yIC0xIGlmIGMgaXMgbm90IGEg
ZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIKKyAqCisgKiBAc2VlIHVfZ2V0TnVtZXJpY1ZhbHVlCisg
KiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VfY2hh
ckRpZ2l0VmFsdWUoVUNoYXIzMiBjKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBVbmljb2RlIGFs
bG9jYXRpb24gYmxvY2sgdGhhdCBjb250YWlucyB0aGUgY2hhcmFjdGVyLgorICoKKyAqIEBwYXJh
bSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICogQHJldHVybiB0aGUgYmxvY2sgdmFs
dWUgKFVCbG9ja0NvZGUpIGZvciBjCisgKgorICogQHNlZSBVQmxvY2tDb2RlCisgKiBAc3RhYmxl
IElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJsb2NrQ29kZSBVX0VYUE9SVDIKK3VibG9ja19nZXRD
b2RlKFVDaGFyMzIgYyk7CisKKy8qKgorICogUmV0cmlldmUgdGhlIG5hbWUgb2YgYSBVbmljb2Rl
IGNoYXJhY3Rlci4KKyAqIERlcGVuZGluZyBvbiA8Y29kZT5uYW1lQ2hvaWNlPC9jb2RlPiwgdGhl
IGNoYXJhY3RlciBuYW1lIHdyaXR0ZW4KKyAqIGludG8gdGhlIGJ1ZmZlciBpcyB0aGUgIm1vZGVy
biIgbmFtZSBvciB0aGUgbmFtZSB0aGF0IHdhcyBkZWZpbmVkCisgKiBpbiBVbmljb2RlIHZlcnNp
b24gMS4wLgorICogVGhlIG5hbWUgY29udGFpbnMgb25seSAiaW52YXJpYW50IiBjaGFyYWN0ZXJz
CisgKiBsaWtlIEEtWiwgMC05LCBzcGFjZSwgYW5kICctJy4KKyAqIFVuaWNvZGUgMS4wIG5hbWVz
IGFyZSBvbmx5IHJldHJpZXZlZCBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUgbW9kZXJu
CisgKiBuYW1lcyBhbmQgaWYgdGhlIGRhdGEgZmlsZSBjb250YWlucyB0aGUgZGF0YSBmb3IgdGhl
bS4gZ2VubmFtZXMgbWF5IG9yIG1heQorICogbm90IGJlIGNhbGxlZCB3aXRoIGEgY29tbWFuZCBs
aW5lIG9wdGlvbiB0byBpbmNsdWRlIDEuMCBuYW1lcyBpbiB1bmFtZXMuZGF0LgorICoKKyAqIEBw
YXJhbSBjb2RlIFRoZSBjaGFyYWN0ZXIgKGNvZGUgcG9pbnQpIGZvciB3aGljaCB0byBnZXQgdGhl
IG5hbWUuCisgKiAgICAgICAgICAgICBJdCBtdXN0IGJlIDxjb2RlPjA8PWNvZGU8PTB4MTBmZmZm
PC9jb2RlPi4KKyAqIEBwYXJhbSBuYW1lQ2hvaWNlIFNlbGVjdG9yIGZvciB3aGljaCBuYW1lIHRv
IGdldC4KKyAqIEBwYXJhbSBidWZmZXIgRGVzdGluYXRpb24gYWRkcmVzcyBmb3IgY29weWluZyB0
aGUgbmFtZS4KKyAqICAgICAgICAgICAgICAgVGhlIG5hbWUgd2lsbCBhbHdheXMgYmUgemVyby10
ZXJtaW5hdGVkLgorICogICAgICAgICAgICAgICBJZiB0aGVyZSBpcyBubyBuYW1lLCB0aGVuIHRo
ZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy4KKyAqIEBwYXJhbSBidWZm
ZXJMZW5ndGggPGNvZGU+PT1zaXplb2YoYnVmZmVyKTwvY29kZT4KKyAqIEBwYXJhbSBwRXJyb3JD
b2RlIFBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHZhcmlhYmxlOworICogICAgICAgIGNoZWNrIGZv
ciA8Y29kZT5VX1NVQ0NFU1MoKTwvY29kZT4gYWZ0ZXIgPGNvZGU+dV9jaGFyTmFtZSgpPC9jb2Rl
PgorICogICAgICAgIHJldHVybnMuCisgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIG5hbWUs
IG9yIDAgaWYgdGhlcmUgaXMgbm8gbmFtZSBmb3IgdGhpcyBjaGFyYWN0ZXIuCisgKiAgICAgICAg
IElmIHRoZSBidWZmZXJMZW5ndGggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsZW5ndGgs
IHRoZW4gdGhlIGJ1ZmZlcgorICogICAgICAgICBjb250YWlucyB0aGUgdHJ1bmNhdGVkIG5hbWUg
YW5kIHRoZSByZXR1cm5lZCBsZW5ndGggaW5kaWNhdGVzIHRoZSBmdWxsCisgKiAgICAgICAgIGxl
bmd0aCBvZiB0aGUgbmFtZS4KKyAqICAgICAgICAgVGhlIGxlbmd0aCBkb2VzIG5vdCBpbmNsdWRl
IHRoZSB6ZXJvLXRlcm1pbmF0aW9uLgorICoKKyAqIEBzZWUgVUNoYXJOYW1lQ2hvaWNlCisgKiBA
c2VlIHVfY2hhckZyb21OYW1lCisgKiBAc2VlIHVfZW51bUNoYXJOYW1lcworICogQHN0YWJsZSBJ
Q1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X2NoYXJOYW1lKFVDaGFy
MzIgY29kZSwgVUNoYXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2UsCisgICAgICAgICAgIGNoYXIgKmJ1
ZmZlciwgaW50MzJfdCBidWZmZXJMZW5ndGgsCisgICAgICAgICAgIFVFcnJvckNvZGUgKnBFcnJv
ckNvZGUpOworCisvKioKKyAqIEdldCB0aGUgSVNPIDEwNjQ2IGNvbW1lbnQgZm9yIGEgY2hhcmFj
dGVyLgorICogVGhlIElTTyAxMDY0NiBjb21tZW50IGlzIGFuIGluZm9ybWF0aXZlIGZpZWxkIGlu
IHRoZSBVbmljb2RlIENoYXJhY3RlcgorICogRGF0YWJhc2UgKFVuaWNvZGVEYXRhLnR4dCBmaWVs
ZCAxMSkgYW5kIGlzIGZyb20gdGhlIElTTyAxMDY0NiBuYW1lcyBsaXN0LgorICoKKyAqIEBwYXJh
bSBjIFRoZSBjaGFyYWN0ZXIgKGNvZGUgcG9pbnQpIGZvciB3aGljaCB0byBnZXQgdGhlIElTTyBj
b21tZW50LgorICogICAgICAgICAgICAgSXQgbXVzdCBiZSA8Y29kZT4wPD1jPD0weDEwZmZmZjwv
Y29kZT4uCisgKiBAcGFyYW0gZGVzdCBEZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBjb3B5aW5nIHRo
ZSBjb21tZW50LgorICogICAgICAgICAgICAgVGhlIGNvbW1lbnQgd2lsbCBiZSB6ZXJvLXRlcm1p
bmF0ZWQgaWYgcG9zc2libGUuCisgKiAgICAgICAgICAgICBJZiB0aGVyZSBpcyBubyBjb21tZW50
LCB0aGVuIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy4KKyAqIEBw
YXJhbSBkZXN0Q2FwYWNpdHkgPGNvZGU+PT1zaXplb2YoZGVzdCk8L2NvZGU+CisgKiBAcGFyYW0g
cEVycm9yQ29kZSBQb2ludGVyIHRvIGEgVUVycm9yQ29kZSB2YXJpYWJsZTsKKyAqICAgICAgICBj
aGVjayBmb3IgPGNvZGU+VV9TVUNDRVNTKCk8L2NvZGU+IGFmdGVyIDxjb2RlPnVfZ2V0SVNPQ29t
bWVudCgpPC9jb2RlPgorICogICAgICAgIHJldHVybnMuCisgKiBAcmV0dXJuIFRoZSBsZW5ndGgg
b2YgdGhlIGNvbW1lbnQsIG9yIDAgaWYgdGhlcmUgaXMgbm8gY29tbWVudCBmb3IgdGhpcyBjaGFy
YWN0ZXIuCisgKiAgICAgICAgIElmIHRoZSBkZXN0Q2FwYWNpdHkgaXMgbGVzcyB0aGFuIG9yIGVx
dWFsIHRvIHRoZSBsZW5ndGgsIHRoZW4gdGhlIGJ1ZmZlcgorICogICAgICAgICBjb250YWlucyB0
aGUgdHJ1bmNhdGVkIG5hbWUgYW5kIHRoZSByZXR1cm5lZCBsZW5ndGggaW5kaWNhdGVzIHRoZSBm
dWxsCisgKiAgICAgICAgIGxlbmd0aCBvZiB0aGUgbmFtZS4KKyAqICAgICAgICAgVGhlIGxlbmd0
aCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB6ZXJvLXRlcm1pbmF0aW9uLgorICoKKyAqIEBzdGFibGUg
SUNVIDIuMgorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9nZXRJU09Db21tZW50
KFVDaGFyMzIgYywKKyAgICAgICAgICAgICAgICBjaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBh
Y2l0eSwKKyAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisg
KiBGaW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIgYnkgaXRzIG5hbWUgYW5kIHJldHVybiBpdHMgY29k
ZSBwb2ludCB2YWx1ZS4KKyAqIFRoZSBuYW1lIGlzIG1hdGNoZWQgZXhhY3RseSBhbmQgY29tcGxl
dGVseS4KKyAqIElmIHRoZSBuYW1lIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBjb2RlIHBvaW50
LCA8aT5wRXJyb3JDb2RlPC9pPgorICogaXMgc2V0IHRvIDxjb2RlPlVfSU5WQUxJRF9DSEFSX0ZP
VU5EPC9jb2RlPi4KKyAqIEEgVW5pY29kZSAxLjAgbmFtZSBpcyBtYXRjaGVkIG9ubHkgaWYgaXQg
ZGlmZmVycyBmcm9tIHRoZSBtb2Rlcm4gbmFtZS4KKyAqIFVuaWNvZGUgbmFtZXMgYXJlIGFsbCB1
cHBlcmNhc2UuIEV4dGVuZGVkIG5hbWVzIGFyZSBsb3dlcmNhc2UgZm9sbG93ZWQKKyAqIGJ5IGFu
IHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBudW1iZXIsIGFuZCB3aXRoaW4gYW5nbGUgYnJhY2tldHMu
CisgKgorICogQHBhcmFtIG5hbWVDaG9pY2UgU2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUgdG8gbWF0
Y2guCisgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSB0byBtYXRjaC4KKyAqIEBwYXJhbSBwRXJyb3JD
b2RlIFBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHZhcmlhYmxlCisgKiBAcmV0dXJuIFRoZSBVbmlj
b2RlIHZhbHVlIG9mIHRoZSBjb2RlIHBvaW50IHdpdGggdGhlIGdpdmVuIG5hbWUsCisgKiAgICAg
ICAgIG9yIGFuIHVuZGVmaW5lZCB2YWx1ZSBpZiB0aGVyZSBpcyBubyBzdWNoIGNvZGUgcG9pbnQu
CisgKgorICogQHNlZSBVQ2hhck5hbWVDaG9pY2UKKyAqIEBzZWUgdV9jaGFyTmFtZQorICogQHNl
ZSB1X2VudW1DaGFyTmFtZXMKKyAqIEBzdGFibGUgSUNVIDEuNworICovCitVX1NUQUJMRSBVQ2hh
cjMyIFVfRVhQT1JUMgordV9jaGFyRnJvbU5hbWUoVUNoYXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2Us
CisgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgVUVycm9y
Q29kZSAqcEVycm9yQ29kZSk7CisKKy8qKgorICogVHlwZSBvZiBhIGNhbGxiYWNrIGZ1bmN0aW9u
IGZvciB1X2VudW1DaGFyTmFtZXMoKSB0aGF0IGdldHMgY2FsbGVkCisgKiBmb3IgZWFjaCBVbmlj
b2RlIGNoYXJhY3RlciB3aXRoIHRoZSBjb2RlIHBvaW50IHZhbHVlIGFuZAorICogdGhlIGNoYXJh
Y3RlciBuYW1lLgorICogSWYgc3VjaCBhIGZ1bmN0aW9uIHJldHVybnMgRkFMU0UsIHRoZW4gdGhl
IGVudW1lcmF0aW9uIGlzIHN0b3BwZWQuCisgKgorICogQHBhcmFtIGNvbnRleHQgVGhlIGNvbnRl
eHQgcG9pbnRlciB0aGF0IHdhcyBwYXNzZWQgdG8gdV9lbnVtQ2hhck5hbWVzKCkuCisgKiBAcGFy
YW0gY29kZSBUaGUgVW5pY29kZSBjb2RlIHBvaW50IGZvciB0aGUgY2hhcmFjdGVyIHdpdGggdGhp
cyBuYW1lLgorICogQHBhcmFtIG5hbWVDaG9pY2UgU2VsZWN0b3IgZm9yIHdoaWNoIGtpbmQgb2Yg
bmFtZXMgaXMgZW51bWVyYXRlZC4KKyAqIEBwYXJhbSBuYW1lIFRoZSBjaGFyYWN0ZXIncyBuYW1l
LCB6ZXJvLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIG5h
bWUuCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGVudW1lcmF0aW9uIHNob3VsZCBjb250aW51ZSwg
RkFMU0UgdG8gc3RvcCBpdC4KKyAqCisgKiBAc2VlIFVDaGFyTmFtZUNob2ljZQorICogQHNlZSB1
X2VudW1DaGFyTmFtZXMKKyAqIEBzdGFibGUgSUNVIDEuNworICovCit0eXBlZGVmIFVCb29sIFVF
bnVtQ2hhck5hbWVzRm4odm9pZCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVQ2hhcjMyIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJO
YW1lQ2hvaWNlIG5hbWVDaG9pY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGxl
bmd0aCk7CisKKy8qKgorICogRW51bWVyYXRlIGFsbCBhc3NpZ25lZCBVbmljb2RlIGNoYXJhY3Rl
cnMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGxpbWl0CisgKiBjb2RlIHBvaW50cyAoc3RhcnQgaW5j
bHVzaXZlLCBsaW1pdCBleGNsdXNpdmUpIGFuZCBjYWxsIGEgZnVuY3Rpb24KKyAqIGZvciBlYWNo
LCBwYXNzaW5nIHRoZSBjb2RlIHBvaW50IHZhbHVlIGFuZCB0aGUgY2hhcmFjdGVyIG5hbWUuCisg
KiBGb3IgVW5pY29kZSAxLjAgbmFtZXMsIG9ubHkgdGhvc2UgYXJlIGVudW1lcmF0ZWQgdGhhdCBk
aWZmZXIgZnJvbSB0aGUKKyAqIG1vZGVybiBuYW1lcy4KKyAqCisgKiBAcGFyYW0gc3RhcnQgVGhl
IGZpcnN0IGNvZGUgcG9pbnQgaW4gdGhlIGVudW1lcmF0aW9uIHJhbmdlLgorICogQHBhcmFtIGxp
bWl0IE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29kZSBwb2ludCBpbiB0aGUgZW51bWVyYXRpb24g
cmFuZ2UKKyAqICAgICAgICAgICAgICAodGhlIGZpcnN0IG9uZSBhZnRlciB0aGUgcmFuZ2UpLgor
ICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0aGF0IGlzIHRvIGJlIGNhbGxlZCBmb3IgZWFjaCBj
aGFyYWN0ZXIgbmFtZS4KKyAqIEBwYXJhbSBjb250ZXh0IEFuIGFyYml0cmFyeSBwb2ludGVyIHRo
YXQgaXMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KKyAqIEBwYXJhbSBuYW1lQ2hvaWNlIFNlbGVj
dG9yIGZvciB3aGljaCBraW5kIG9mIG5hbWVzIHRvIGVudW1lcmF0ZS4KKyAqIEBwYXJhbSBwRXJy
b3JDb2RlIFBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHZhcmlhYmxlCisgKgorICogQHNlZSBVQ2hh
ck5hbWVDaG9pY2UKKyAqIEBzZWUgVUVudW1DaGFyTmFtZXNGbgorICogQHNlZSB1X2NoYXJOYW1l
CisgKiBAc2VlIHVfY2hhckZyb21OYW1lCisgKiBAc3RhYmxlIElDVSAxLjcKKyAqLworVV9TVEFC
TEUgdm9pZCBVX0VYUE9SVDIKK3VfZW51bUNoYXJOYW1lcyhVQ2hhcjMyIHN0YXJ0LCBVQ2hhcjMy
IGxpbWl0LAorICAgICAgICAgICAgICAgIFVFbnVtQ2hhck5hbWVzRm4gKmZuLAorICAgICAgICAg
ICAgICAgIHZvaWQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgVUNoYXJOYW1lQ2hvaWNlIG5h
bWVDaG9pY2UsCisgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisKKy8q
KgorICogUmV0dXJuIHRoZSBVbmljb2RlIG5hbWUgZm9yIGEgZ2l2ZW4gcHJvcGVydHksIGFzIGdp
dmVuIGluIHRoZQorICogVW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5QWxpYXNlcy50eHQu
CisgKgorICogSW4gYWRkaXRpb24sIHRoaXMgZnVuY3Rpb24gbWFwcyB0aGUgcHJvcGVydHkKKyAq
IFVDSEFSX0dFTkVSQUxfQ0FURUdPUllfTUFTSyB0byB0aGUgc3ludGhldGljIG5hbWVzICJnY20i
IC8KKyAqICJHZW5lcmFsX0NhdGVnb3J5X01hc2siLiAgVGhlc2UgbmFtZXMgYXJlIG5vdCBpbgor
ICogUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAqCisgKiBAcGFyYW0gcHJvcGVydHkgVVByb3BlcnR5
IHNlbGVjdG9yIG90aGVyIHRoYW4gVUNIQVJfSU5WQUxJRF9DT0RFLgorICogICAgICAgICBJZiBv
dXQgb2YgcmFuZ2UsIE5VTEwgaXMgcmV0dXJuZWQuCisgKgorICogQHBhcmFtIG5hbWVDaG9pY2Ug
c2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUgdG8gZ2V0LiAgSWYgb3V0IG9mIHJhbmdlLAorICogICAg
ICAgICBOVUxMIGlzIHJldHVybmVkLiAgQWxsIHByb3BlcnRpZXMgaGF2ZSBhIGxvbmcgbmFtZS4g
IE1vc3QKKyAqICAgICAgICAgaGF2ZSBhIHNob3J0IG5hbWUsIGJ1dCBzb21lIGRvIG5vdC4gIFVu
aWNvZGUgYWxsb3dzIGZvcgorICogICAgICAgICBhZGRpdGlvbmFsIG5hbWVzOyBpZiBwcmVzZW50
IHRoZXNlIHdpbGwgYmUgcmV0dXJuZWQgYnkKKyAqICAgICAgICAgVV9MT05HX1BST1BFUlRZX05B
TUUgKyBpLCB3aGVyZSBpPTEsIDIsLi4uCisgKgorICogQHJldHVybiBhIHBvaW50ZXIgdG8gdGhl
IG5hbWUsIG9yIE5VTEwgaWYgZWl0aGVyIHRoZQorICogICAgICAgICBwcm9wZXJ0eSBvciB0aGUg
bmFtZUNob2ljZSBpcyBvdXQgb2YgcmFuZ2UuICBJZiBhIGdpdmVuCisgKiAgICAgICAgIG5hbWVD
aG9pY2UgcmV0dXJucyBOVUxMLCB0aGVuIGFsbCBsYXJnZXIgdmFsdWVzIG9mCisgKiAgICAgICAg
IG5hbWVDaG9pY2Ugd2lsbCByZXR1cm4gTlVMTCwgd2l0aCBvbmUgZXhjZXB0aW9uOiBpZiBOVUxM
IGlzCisgKiAgICAgICAgIHJldHVybmVkIGZvciBVX1NIT1JUX1BST1BFUlRZX05BTUUsIHRoZW4K
KyAqICAgICAgICAgVV9MT05HX1BST1BFUlRZX05BTUUgKGFuZCBoaWdoZXIpIG1heSBzdGlsbCBy
ZXR1cm4gYQorICogICAgICAgICBub24tTlVMTCB2YWx1ZS4gIFRoZSByZXR1cm5lZCBwb2ludGVy
IGlzIHZhbGlkIHVudGlsCisgKiAgICAgICAgIHVfY2xlYW51cCgpIGlzIGNhbGxlZC4KKyAqCisg
KiBAc2VlIFVQcm9wZXJ0eQorICogQHNlZSBVUHJvcGVydHlOYW1lQ2hvaWNlCisgKiBAc3RhYmxl
IElDVSAyLjQKKyAqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1X2dldFByb3Bl
cnR5TmFtZShVUHJvcGVydHkgcHJvcGVydHksCisgICAgICAgICAgICAgICAgICBVUHJvcGVydHlO
YW1lQ2hvaWNlIG5hbWVDaG9pY2UpOworCisvKioKKyAqIFJldHVybiB0aGUgVVByb3BlcnR5IGVu
dW0gZm9yIGEgZ2l2ZW4gcHJvcGVydHkgbmFtZSwgYXMgc3BlY2lmaWVkCisgKiBpbiB0aGUgVW5p
Y29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5QWxpYXNlcy50eHQuICBTaG9ydCwgbG9uZywgYW5k
CisgKiBhbnkgb3RoZXIgdmFyaWFudHMgYXJlIHJlY29nbml6ZWQuCisgKgorICogSW4gYWRkaXRp
b24sIHRoaXMgZnVuY3Rpb24gbWFwcyB0aGUgc3ludGhldGljIG5hbWVzICJnY20iIC8KKyAqICJH
ZW5lcmFsX0NhdGVnb3J5X01hc2siIHRvIHRoZSBwcm9wZXJ0eQorICogVUNIQVJfR0VORVJBTF9D
QVRFR09SWV9NQVNLLiAgVGhlc2UgbmFtZXMgYXJlIG5vdCBpbgorICogUHJvcGVydHlBbGlhc2Vz
LnR4dC4KKyAqCisgKiBAcGFyYW0gYWxpYXMgdGhlIHByb3BlcnR5IG5hbWUgdG8gYmUgbWF0Y2hl
ZC4gIFRoZSBuYW1lIGlzIGNvbXBhcmVkCisgKiAgICAgICAgIHVzaW5nICJsb29zZSBtYXRjaGlu
ZyIgYXMgZGVzY3JpYmVkIGluIFByb3BlcnR5QWxpYXNlcy50eHQuCisgKgorICogQHJldHVybiBh
IFVQcm9wZXJ0eSBlbnVtLCBvciBVQ0hBUl9JTlZBTElEX0NPREUgaWYgdGhlIGdpdmVuIG5hbWUK
KyAqICAgICAgICAgZG9lcyBub3QgbWF0Y2ggYW55IHByb3BlcnR5LgorICoKKyAqIEBzZWUgVVBy
b3BlcnR5CisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworVV9TVEFCTEUgVVByb3BlcnR5IFVfRVhQ
T1JUMgordV9nZXRQcm9wZXJ0eUVudW0oY29uc3QgY2hhciogYWxpYXMpOworCisvKioKKyAqIFJl
dHVybiB0aGUgVW5pY29kZSBuYW1lIGZvciBhIGdpdmVuIHByb3BlcnR5IHZhbHVlLCBhcyBnaXZl
biBpbiB0aGUKKyAqIFVuaWNvZGUgZGF0YWJhc2UgZmlsZSBQcm9wZXJ0eVZhbHVlQWxpYXNlcy50
eHQuCisgKgorICogTm90ZTogU29tZSBvZiB0aGUgbmFtZXMgaW4gUHJvcGVydHlWYWx1ZUFsaWFz
ZXMudHh0IGNhbiBvbmx5IGJlCisgKiByZXRyaWV2ZWQgdXNpbmcgVUNIQVJfR0VORVJBTF9DQVRF
R09SWV9NQVNLLCBub3QKKyAqIFVDSEFSX0dFTkVSQUxfQ0FURUdPUlkuICBUaGVzZSBpbmNsdWRl
OiAiQyIgLyAiT3RoZXIiLCAiTCIgLworICogIkxldHRlciIsICJMQyIgLyAiQ2FzZWRfTGV0dGVy
IiwgIk0iIC8gIk1hcmsiLCAiTiIgLyAiTnVtYmVyIiwgIlAiCisgKiAvICJQdW5jdHVhdGlvbiIs
ICJTIiAvICJTeW1ib2wiLCBhbmQgIloiIC8gIlNlcGFyYXRvciIuCisgKgorICogQHBhcmFtIHBy
b3BlcnR5IFVQcm9wZXJ0eSBzZWxlY3RvciBjb25zdGFudC4KKyAqICAgICAgICBNdXN0IGJlIFVD
SEFSX0JJTkFSWV9TVEFSVDw9d2hpY2g8VUNIQVJfQklOQVJZX0xJTUlUCisgKiAgICAgICAgb3Ig
VUNIQVJfSU5UX1NUQVJUPD13aGljaDxVQ0hBUl9JTlRfTElNSVQKKyAqICAgICAgICBvciBVQ0hB
Ul9NQVNLX1NUQVJUPD13aGljaDxVQ0hBUl9NQVNLX0xJTUlULgorICogICAgICAgIElmIG91dCBv
ZiByYW5nZSwgTlVMTCBpcyByZXR1cm5lZC4KKyAqCisgKiBAcGFyYW0gdmFsdWUgc2VsZWN0b3Ig
Zm9yIGEgdmFsdWUgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eS4gIElmIG91dAorICogICAgICAgICBv
ZiByYW5nZSwgTlVMTCBpcyByZXR1cm5lZC4gIEluIGdlbmVyYWwsIHZhbGlkIHZhbHVlcyByYW5n
ZQorICogICAgICAgICBmcm9tIDAgdXAgdG8gc29tZSBtYXhpbXVtLiAgVGhlcmUgYXJlIGEgZmV3
IGV4Y2VwdGlvbnM6CisgKiAgICAgICAgICgxLikgVUNIQVJfQkxPQ0sgdmFsdWVzIGJlZ2luIGF0
IHRoZSBub24temVybyB2YWx1ZQorICogICAgICAgICBVQkxPQ0tfQkFTSUNfTEFUSU4uICAoMi4p
ICBVQ0hBUl9DQU5PTklDQUxfQ09NQklOSU5HX0NMQVNTCisgKiAgICAgICAgIHZhbHVlcyBhcmUg
bm90IGNvbnRpZ3VvdXMgYW5kIHJhbmdlIGZyb20gMC4uMjQwLiAgKDMuKQorICogICAgICAgICBV
Q0hBUl9HRU5FUkFMX0NBVEVHT1JZX01BU0sgdmFsdWVzIGFyZSBub3QgdmFsdWVzIG9mCisgKiAg
ICAgICAgIFVDaGFyQ2F0ZWdvcnksIGJ1dCByYXRoZXIgbWFzayB2YWx1ZXMgcHJvZHVjZWQgYnkK
KyAqICAgICAgICAgVV9HRVRfR0NfTUFTSygpLiAgVGhpcyBhbGxvd3MgZ3JvdXBlZCBjYXRlZ29y
aWVzIHN1Y2ggYXMKKyAqICAgICAgICAgWzpMOl0gdG8gYmUgcmVwcmVzZW50ZWQuICBNYXNrIHZh
bHVlcyByYW5nZQorICogICAgICAgICBub24tY29udGlndW91c2x5IGZyb20gMS4uVV9HQ19QX01B
U0suCisgKgorICogQHBhcmFtIG5hbWVDaG9pY2Ugc2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUgdG8g
Z2V0LiAgSWYgb3V0IG9mIHJhbmdlLAorICogICAgICAgICBOVUxMIGlzIHJldHVybmVkLiAgQWxs
IHZhbHVlcyBoYXZlIGEgbG9uZyBuYW1lLiAgTW9zdCBoYXZlCisgKiAgICAgICAgIGEgc2hvcnQg
bmFtZSwgYnV0IHNvbWUgZG8gbm90LiAgVW5pY29kZSBhbGxvd3MgZm9yCisgKiAgICAgICAgIGFk
ZGl0aW9uYWwgbmFtZXM7IGlmIHByZXNlbnQgdGhlc2Ugd2lsbCBiZSByZXR1cm5lZCBieQorICog
ICAgICAgICBVX0xPTkdfUFJPUEVSVFlfTkFNRSArIGksIHdoZXJlIGk9MSwgMiwuLi4KKworICog
QHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5hbWUsIG9yIE5VTEwgaWYgZWl0aGVyIHRoZQorICog
ICAgICAgICBwcm9wZXJ0eSBvciB0aGUgbmFtZUNob2ljZSBpcyBvdXQgb2YgcmFuZ2UuICBJZiBh
IGdpdmVuCisgKiAgICAgICAgIG5hbWVDaG9pY2UgcmV0dXJucyBOVUxMLCB0aGVuIGFsbCBsYXJn
ZXIgdmFsdWVzIG9mCisgKiAgICAgICAgIG5hbWVDaG9pY2Ugd2lsbCByZXR1cm4gTlVMTCwgd2l0
aCBvbmUgZXhjZXB0aW9uOiBpZiBOVUxMIGlzCisgKiAgICAgICAgIHJldHVybmVkIGZvciBVX1NI
T1JUX1BST1BFUlRZX05BTUUsIHRoZW4KKyAqICAgICAgICAgVV9MT05HX1BST1BFUlRZX05BTUUg
KGFuZCBoaWdoZXIpIG1heSBzdGlsbCByZXR1cm4gYQorICogICAgICAgICBub24tTlVMTCB2YWx1
ZS4gIFRoZSByZXR1cm5lZCBwb2ludGVyIGlzIHZhbGlkIHVudGlsCisgKiAgICAgICAgIHVfY2xl
YW51cCgpIGlzIGNhbGxlZC4KKyAqCisgKiBAc2VlIFVQcm9wZXJ0eQorICogQHNlZSBVUHJvcGVy
dHlOYW1lQ2hvaWNlCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworVV9TVEFCTEUgY29uc3QgY2hh
ciogVV9FWFBPUlQyCit1X2dldFByb3BlcnR5VmFsdWVOYW1lKFVQcm9wZXJ0eSBwcm9wZXJ0eSwK
KyAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgVVByb3BlcnR5TmFtZUNob2ljZSBuYW1lQ2hvaWNlKTsKKworLyoqCisgKiBSZXR1cm4g
dGhlIHByb3BlcnR5IHZhbHVlIGludGVnZXIgZm9yIGEgZ2l2ZW4gdmFsdWUgbmFtZSwgYXMKKyAq
IHNwZWNpZmllZCBpbiB0aGUgVW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5VmFsdWVBbGlh
c2VzLnR4dC4KKyAqIFNob3J0LCBsb25nLCBhbmQgYW55IG90aGVyIHZhcmlhbnRzIGFyZSByZWNv
Z25pemVkLgorICoKKyAqIE5vdGU6IFNvbWUgb2YgdGhlIG5hbWVzIGluIFByb3BlcnR5VmFsdWVB
bGlhc2VzLnR4dCB3aWxsIG9ubHkgYmUKKyAqIHJlY29nbml6ZWQgd2l0aCBVQ0hBUl9HRU5FUkFM
X0NBVEVHT1JZX01BU0ssIG5vdAorICogVUNIQVJfR0VORVJBTF9DQVRFR09SWS4gIFRoZXNlIGlu
Y2x1ZGU6ICJDIiAvICJPdGhlciIsICJMIiAvCisgKiAiTGV0dGVyIiwgIkxDIiAvICJDYXNlZF9M
ZXR0ZXIiLCAiTSIgLyAiTWFyayIsICJOIiAvICJOdW1iZXIiLCAiUCIKKyAqIC8gIlB1bmN0dWF0
aW9uIiwgIlMiIC8gIlN5bWJvbCIsIGFuZCAiWiIgLyAiU2VwYXJhdG9yIi4KKyAqCisgKiBAcGFy
YW0gcHJvcGVydHkgVVByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50LgorICogICAgICAgIE11c3Qg
YmUgVUNIQVJfQklOQVJZX1NUQVJUPD13aGljaDxVQ0hBUl9CSU5BUllfTElNSVQKKyAqICAgICAg
ICBvciBVQ0hBUl9JTlRfU1RBUlQ8PXdoaWNoPFVDSEFSX0lOVF9MSU1JVAorICogICAgICAgIG9y
IFVDSEFSX01BU0tfU1RBUlQ8PXdoaWNoPFVDSEFSX01BU0tfTElNSVQuCisgKiAgICAgICAgSWYg
b3V0IG9mIHJhbmdlLCBVQ0hBUl9JTlZBTElEX0NPREUgaXMgcmV0dXJuZWQuCisgKgorICogQHBh
cmFtIGFsaWFzIHRoZSB2YWx1ZSBuYW1lIHRvIGJlIG1hdGNoZWQuICBUaGUgbmFtZSBpcyBjb21w
YXJlZAorICogICAgICAgICB1c2luZyAibG9vc2UgbWF0Y2hpbmciIGFzIGRlc2NyaWJlZCBpbgor
ICogICAgICAgICBQcm9wZXJ0eVZhbHVlQWxpYXNlcy50eHQuCisgKgorICogQHJldHVybiBhIHZh
bHVlIGludGVnZXIgb3IgVUNIQVJfSU5WQUxJRF9DT0RFIGlmIHRoZSBnaXZlbiBuYW1lCisgKiAg
ICAgICAgIGRvZXMgbm90IG1hdGNoIGFueSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gcHJvcGVydHksIG9y
IGlmIHRoZQorICogICAgICAgICBwcm9wZXJ0eSBpcyBpbnZhbGlkLiAgTm90ZTogVSBDSEFSX0dF
TkVSQUxfQ0FURUdPUlkgdmFsdWVzCisgKiAgICAgICAgIGFyZSBub3QgdmFsdWVzIG9mIFVDaGFy
Q2F0ZWdvcnksIGJ1dCByYXRoZXIgbWFzayB2YWx1ZXMKKyAqICAgICAgICAgcHJvZHVjZWQgYnkg
VV9HRVRfR0NfTUFTSygpLiAgVGhpcyBhbGxvd3MgZ3JvdXBlZAorICogICAgICAgICBjYXRlZ29y
aWVzIHN1Y2ggYXMgWzpMOl0gdG8gYmUgcmVwcmVzZW50ZWQuCisgKgorICogQHNlZSBVUHJvcGVy
dHkKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgor
dV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVUHJvcGVydHkgcHJvcGVydHksCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIqIGFsaWFzKTsKKworLyoqCisgKiBEZXRlcm1pbmVzIGlmIHRo
ZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGlzIHBlcm1pc3NpYmxlIGFzIHRoZQorICogZmlyc3QgY2hh
cmFjdGVyIGluIGFuIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIFVuaWNvZGUKKyAqIChUaGUgVW5p
Y29kZSBTdGFuZGFyZCwgVmVyc2lvbiAzLjAsIGNoYXB0ZXIgNS4xNiBJZGVudGlmaWVycykuCisg
KiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGggZ2VuZXJhbCBjYXRlZ29yaWVzICJMIiAobGV0dGVy
cykgYW5kICJObCIgKGxldHRlciBudW1iZXJzKS4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5D
aGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KCkuCisgKiBTYW1lIGFzIFVDSEFSX0lE
X1NUQVJUCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBA
cmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgbWF5IHN0YXJ0IGFuIGlkZW50aWZpZXIKKyAq
CisgKiBAc2VlIFVDSEFSX0lEX1NUQVJUCisgKiBAc2VlIHVfaXNhbHBoYQorICogQHNlZSB1X2lz
SURQYXJ0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQy
Cit1X2lzSURTdGFydChVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgaWYgdGhlIHNw
ZWNpZmllZCBjaGFyYWN0ZXIgaXMgcGVybWlzc2libGUKKyAqIGluIGFuIGlkZW50aWZpZXIgYWNj
b3JkaW5nIHRvIEphdmEuCisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGggZ2VuZXJhbCBjYXRl
Z29yaWVzICJMIiAobGV0dGVycyksCisgKiAiTmwiIChsZXR0ZXIgbnVtYmVycyksICJOZCIgKGRl
Y2ltYWwgZGlnaXRzKSwKKyAqICJNYyIgYW5kICJNbiIgKGNvbWJpbmluZyBtYXJrcyksICJQYyIg
KGNvbm5lY3RpbmcgcHVuY3R1YXRpb24pLCBhbmQKKyAqIHVfaXNJRElnbm9yYWJsZShjKS4KKyAq
CisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBhcnQo
KS4KKyAqIEFsbW9zdCB0aGUgc2FtZSBhcyBVbmljb2RlJ3MgSURfQ29udGludWUgKFVDSEFSX0lE
X0NPTlRJTlVFKQorICogZXhjZXB0IHRoYXQgVW5pY29kZSByZWNvbW1lbmRzIHRvIGlnbm9yZSBD
ZiB3aGljaCBpcyBsZXNzIHRoYW4KKyAqIHVfaXNJRElnbm9yYWJsZShjKS4KKyAqCisgKiBAcGFy
YW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKKyAqIEByZXR1cm4gVFJVRSBpZiB0aGUg
Y29kZSBwb2ludCBtYXkgb2NjdXIgaW4gYW4gaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gSmF2YQor
ICoKKyAqIEBzZWUgVUNIQVJfSURfQ09OVElOVUUKKyAqIEBzZWUgdV9pc0lEU3RhcnQKKyAqIEBz
ZWUgdV9pc0lESWdub3JhYmxlCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJv
b2wgVV9FWFBPUlQyCit1X2lzSURQYXJ0KFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5l
cyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBzaG91bGQgYmUgcmVnYXJkZWQKKyAqIGFzIGFu
IGlnbm9yYWJsZSBjaGFyYWN0ZXIgaW4gYW4gaWRlbnRpZmllciwKKyAqIGFjY29yZGluZyB0byBK
YXZhLgorICogVHJ1ZSBmb3IgY2hhcmFjdGVycyB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgIkNmIiAo
Zm9ybWF0IGNvbnRyb2xzKSBhcyB3ZWxsIGFzCisgKiBub24td2hpdGVzcGFjZSBJU08gY29udHJv
bHMKKyAqIChVKzAwMDAuLlUrMDAwOCwgVSswMDBFLi5VKzAwMUIsIFUrMDA3Ri4uVSswMDg0LCBV
KzAwODYuLlUrMDA5RikuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzSWRl
bnRpZmllcklnbm9yYWJsZSgpCisgKiBleGNlcHQgdGhhdCBKYXZhIGFsc28gcmV0dXJucyBUUlVF
IGZvciBVKzAwODUgTmV4dCBMaW5lCisgKiAoaXQgb21pdHMgVSswMDg1IGZyb20gd2hpdGVzcGFj
ZSBJU08gY29udHJvbHMpLgorICoKKyAqIE5vdGUgdGhhdCBVbmljb2RlIGp1c3QgcmVjb21tZW5k
cyB0byBpZ25vcmUgQ2YgKGZvcm1hdCBjb250cm9scykuCisgKgorICogQHBhcmFtIGMgdGhlIGNv
ZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQg
aXMgaWdub3JhYmxlIGluIGlkZW50aWZpZXJzIGFjY29yZGluZyB0byBKYXZhCisgKgorICogQHNl
ZSBVQ0hBUl9ERUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UCisgKiBAc2VlIHVfaXNJRFN0YXJ0
CisgKiBAc2VlIHVfaXNJRFBhcnQKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBV
Qm9vbCBVX0VYUE9SVDIKK3VfaXNJRElnbm9yYWJsZShVQ2hhcjMyIGMpOworCisvKioKKyAqIERl
dGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgaXMgcGVybWlzc2libGUgYXMgdGhl
CisgKiBmaXJzdCBjaGFyYWN0ZXIgaW4gYSBKYXZhIGlkZW50aWZpZXIuCisgKiBJbiBhZGRpdGlv
biB0byB1X2lzSURTdGFydChjKSwgdHJ1ZSBmb3IgY2hhcmFjdGVycyB3aXRoCisgKiBnZW5lcmFs
IGNhdGVnb3JpZXMgIlNjIiAoY3VycmVuY3kgc3ltYm9scykgYW5kICJQYyIgKGNvbm5lY3Rpbmcg
cHVuY3R1YXRpb24pLgorICoKKyAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5pc0phdmFJ
ZGVudGlmaWVyU3RhcnQoKS4KKyAqCisgKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0
ZXN0ZWQKKyAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBtYXkgc3RhcnQgYSBKYXZh
IGlkZW50aWZpZXIKKyAqCisgKiBAc2VlICAgICB1X2lzSmF2YUlEUGFydAorICogQHNlZSAgICAg
dV9pc2FscGhhCisgKiBAc2VlICAgICB1X2lzSURTdGFydAorICogQHN0YWJsZSBJQ1UgMi4wCisg
Ki8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc0phdmFJRFN0YXJ0KFVDaGFyMzIgYyk7
CisKKy8qKgorICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBpcyBwZXJt
aXNzaWJsZQorICogaW4gYSBKYXZhIGlkZW50aWZpZXIuCisgKiBJbiBhZGRpdGlvbiB0byB1X2lz
SURQYXJ0KGMpLCB0cnVlIGZvciBjaGFyYWN0ZXJzIHdpdGgKKyAqIGdlbmVyYWwgY2F0ZWdvcnkg
IlNjIiAoY3VycmVuY3kgc3ltYm9scykuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFj
dGVyLmlzSmF2YUlkZW50aWZpZXJQYXJ0KCkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9p
bnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgbWF5IG9j
Y3VyIGluIGEgSmF2YSBpZGVudGlmaWVyCisgKgorICogQHNlZSAgICAgdV9pc0lESWdub3JhYmxl
CisgKiBAc2VlICAgICB1X2lzSmF2YUlEU3RhcnQKKyAqIEBzZWUgICAgIHVfaXNhbHBoYQorICog
QHNlZSAgICAgdV9pc2RpZ2l0CisgKiBAc2VlICAgICB1X2lzSURQYXJ0CisgKiBAc3RhYmxlIElD
VSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzSmF2YUlEUGFydChVQ2hh
cjMyIGMpOworCisvKioKKyAqIFRoZSBnaXZlbiBjaGFyYWN0ZXIgaXMgbWFwcGVkIHRvIGl0cyBs
b3dlcmNhc2UgZXF1aXZhbGVudCBhY2NvcmRpbmcgdG8KKyAqIFVuaWNvZGVEYXRhLnR4dDsgaWYg
dGhlIGNoYXJhY3RlciBoYXMgbm8gbG93ZXJjYXNlIGVxdWl2YWxlbnQsIHRoZSBjaGFyYWN0ZXIK
KyAqIGl0c2VsZiBpcyByZXR1cm5lZC4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0
ZXIudG9Mb3dlckNhc2UoKS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyB0aGUg
c2ltcGxlLCBzaW5nbGUtY29kZSBwb2ludCBjYXNlIG1hcHBpbmcuCisgKiBGdWxsIGNhc2UgbWFw
cGluZ3MgbWF5IHJlc3VsdCBpbiB6ZXJvLCBvbmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhbmQgZGVw
ZW5kCisgKiBvbiBjb250ZXh0IG9yIGxhbmd1YWdlIGV0Yy4KKyAqIEZ1bGwgY2FzZSBtYXBwaW5n
cyBhcmUgYXBwbGllZCBieSB0aGUgc3RyaW5nIGNhc2UgbWFwcGluZyBmdW5jdGlvbnMsCisgKiBz
ZWUgdXN0cmluZy5oIGFuZCB0aGUgVW5pY29kZVN0cmluZyBjbGFzcy4KKyAqCisgKiBAcGFyYW0g
YyB0aGUgY29kZSBwb2ludCB0byBiZSBtYXBwZWQKKyAqIEByZXR1cm4gdGhlIFNpbXBsZV9Mb3dl
cmNhc2VfTWFwcGluZyBvZiB0aGUgY29kZSBwb2ludCwgaWYgYW55OworICogICAgICAgICBvdGhl
cndpc2UgdGhlIGNvZGUgcG9pbnQgaXRzZWxmLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1Vf
U1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1X3RvbG93ZXIoVUNoYXIzMiBjKTsKKworLyoqCisg
KiBUaGUgZ2l2ZW4gY2hhcmFjdGVyIGlzIG1hcHBlZCB0byBpdHMgdXBwZXJjYXNlIGVxdWl2YWxl
bnQgYWNjb3JkaW5nIHRvIFVuaWNvZGVEYXRhLnR4dDsKKyAqIGlmIHRoZSBjaGFyYWN0ZXIgaGFz
IG5vIHVwcGVyY2FzZSBlcXVpdmFsZW50LCB0aGUgY2hhcmFjdGVyIGl0c2VsZiBpcworICogcmV0
dXJuZWQuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKCku
CisgKgorICogVGhpcyBmdW5jdGlvbiBvbmx5IHJldHVybnMgdGhlIHNpbXBsZSwgc2luZ2xlLWNv
ZGUgcG9pbnQgY2FzZSBtYXBwaW5nLgorICogRnVsbCBjYXNlIG1hcHBpbmdzIG1heSByZXN1bHQg
aW4gemVybywgb25lIG9yIG1vcmUgY29kZSBwb2ludHMgYW5kIGRlcGVuZAorICogb24gY29udGV4
dCBvciBsYW5ndWFnZSBldGMuCisgKiBGdWxsIGNhc2UgbWFwcGluZ3MgYXJlIGFwcGxpZWQgYnkg
dGhlIHN0cmluZyBjYXNlIG1hcHBpbmcgZnVuY3Rpb25zLAorICogc2VlIHVzdHJpbmcuaCBhbmQg
dGhlIFVuaWNvZGVTdHJpbmcgY2xhc3MuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQg
dG8gYmUgbWFwcGVkCisgKiBAcmV0dXJuIHRoZSBTaW1wbGVfVXBwZXJjYXNlX01hcHBpbmcgb2Yg
dGhlIGNvZGUgcG9pbnQsIGlmIGFueTsKKyAqICAgICAgICAgb3RoZXJ3aXNlIHRoZSBjb2RlIHBv
aW50IGl0c2VsZi4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQ2hhcjMyIFVf
RVhQT1JUMgordV90b3VwcGVyKFVDaGFyMzIgYyk7CisKKy8qKgorICogVGhlIGdpdmVuIGNoYXJh
Y3RlciBpcyBtYXBwZWQgdG8gaXRzIHRpdGxlY2FzZSBlcXVpdmFsZW50CisgKiBhY2NvcmRpbmcg
dG8gVW5pY29kZURhdGEudHh0OworICogaWYgbm9uZSBpcyBkZWZpbmVkLCB0aGUgY2hhcmFjdGVy
IGl0c2VsZiBpcyByZXR1cm5lZC4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIu
dG9UaXRsZUNhc2UoKS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyB0aGUgc2lt
cGxlLCBzaW5nbGUtY29kZSBwb2ludCBjYXNlIG1hcHBpbmcuCisgKiBGdWxsIGNhc2UgbWFwcGlu
Z3MgbWF5IHJlc3VsdCBpbiB6ZXJvLCBvbmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhbmQgZGVwZW5k
CisgKiBvbiBjb250ZXh0IG9yIGxhbmd1YWdlIGV0Yy4KKyAqIEZ1bGwgY2FzZSBtYXBwaW5ncyBh
cmUgYXBwbGllZCBieSB0aGUgc3RyaW5nIGNhc2UgbWFwcGluZyBmdW5jdGlvbnMsCisgKiBzZWUg
dXN0cmluZy5oIGFuZCB0aGUgVW5pY29kZVN0cmluZyBjbGFzcy4KKyAqCisgKiBAcGFyYW0gYyB0
aGUgY29kZSBwb2ludCB0byBiZSBtYXBwZWQKKyAqIEByZXR1cm4gdGhlIFNpbXBsZV9UaXRsZWNh
c2VfTWFwcGluZyBvZiB0aGUgY29kZSBwb2ludCwgaWYgYW55OworICogICAgICAgICBvdGhlcndp
c2UgdGhlIGNvZGUgcG9pbnQgaXRzZWxmLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RB
QkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1X3RvdGl0bGUoVUNoYXIzMiBjKTsKKworLyoqIE9wdGlv
biB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nOiB1c2UgZGVmYXVsdCBtYXBwaW5ncyBkZWZpbmVkIGlu
IENhc2VGb2xkaW5nLnR4dC4gQHN0YWJsZSBJQ1UgMi4wICovCisjZGVmaW5lIFVfRk9MRF9DQVNF
X0RFRkFVTFQgMAorCisvKioKKyAqIE9wdGlvbiB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nOgorICoK
KyAqIFVzZSB0aGUgbW9kaWZpZWQgc2V0IG9mIG1hcHBpbmdzIHByb3ZpZGVkIGluIENhc2VGb2xk
aW5nLnR4dCB0byBoYW5kbGUgZG90dGVkIEkKKyAqIGFuZCBkb3RsZXNzIGkgYXBwcm9wcmlhdGVs
eSBmb3IgVHVya2ljIGxhbmd1YWdlcyAodHIsIGF6KS4KKyAqCisgKiBCZWZvcmUgVW5pY29kZSAz
LjIsIENhc2VGb2xkaW5nLnR4dCBjb250YWlucyBtYXBwaW5ncyBtYXJrZWQgd2l0aCAnSScgdGhh
dAorICogYXJlIHRvIGJlIGluY2x1ZGVkIGZvciBkZWZhdWx0IG1hcHBpbmdzIGFuZAorICogZXhj
bHVkZWQgZm9yIHRoZSBUdXJraWMtc3BlY2lmaWMgbWFwcGluZ3MuCisgKgorICogVW5pY29kZSAz
LjIgQ2FzZUZvbGRpbmcudHh0IGluc3RlYWQgY29udGFpbnMgbWFwcGluZ3MgbWFya2VkIHdpdGgg
J1QnIHRoYXQKKyAqIGFyZSB0byBiZSBleGNsdWRlZCBmb3IgZGVmYXVsdCBtYXBwaW5ncyBhbmQK
KyAqIGluY2x1ZGVkIGZvciB0aGUgVHVya2ljLXNwZWNpZmljIG1hcHBpbmdzLgorICoKKyAqIEBz
dGFibGUgSUNVIDIuMAorICovCisjZGVmaW5lIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lBTF9J
IDEKKworLyoqCisgKiBUaGUgZ2l2ZW4gY2hhcmFjdGVyIGlzIG1hcHBlZCB0byBpdHMgY2FzZSBm
b2xkaW5nIGVxdWl2YWxlbnQgYWNjb3JkaW5nIHRvCisgKiBVbmljb2RlRGF0YS50eHQgYW5kIENh
c2VGb2xkaW5nLnR4dDsKKyAqIGlmIHRoZSBjaGFyYWN0ZXIgaGFzIG5vIGNhc2UgZm9sZGluZyBl
cXVpdmFsZW50LCB0aGUgY2hhcmFjdGVyCisgKiBpdHNlbGYgaXMgcmV0dXJuZWQuCisgKgorICog
VGhpcyBmdW5jdGlvbiBvbmx5IHJldHVybnMgdGhlIHNpbXBsZSwgc2luZ2xlLWNvZGUgcG9pbnQg
Y2FzZSBtYXBwaW5nLgorICogRnVsbCBjYXNlIG1hcHBpbmdzIG1heSByZXN1bHQgaW4gemVybywg
b25lIG9yIG1vcmUgY29kZSBwb2ludHMgYW5kIGRlcGVuZAorICogb24gY29udGV4dCBvciBsYW5n
dWFnZSBldGMuCisgKiBGdWxsIGNhc2UgbWFwcGluZ3MgYXJlIGFwcGxpZWQgYnkgdGhlIHN0cmlu
ZyBjYXNlIG1hcHBpbmcgZnVuY3Rpb25zLAorICogc2VlIHVzdHJpbmcuaCBhbmQgdGhlIFVuaWNv
ZGVTdHJpbmcgY2xhc3MuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgbWFw
cGVkCisgKiBAcGFyYW0gb3B0aW9ucyBFaXRoZXIgVV9GT0xEX0NBU0VfREVGQVVMVCBvciBVX0ZP
TERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICogQHJldHVybiB0aGUgU2ltcGxlX0Nhc2VfRm9s
ZGluZyBvZiB0aGUgY29kZSBwb2ludCwgaWYgYW55OworICogICAgICAgICBvdGhlcndpc2UgdGhl
IGNvZGUgcG9pbnQgaXRzZWxmLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVD
aGFyMzIgVV9FWFBPUlQyCit1X2ZvbGRDYXNlKFVDaGFyMzIgYywgdWludDMyX3Qgb3B0aW9ucyk7
CisKKy8qKgorICogUmV0dXJucyB0aGUgZGVjaW1hbCBkaWdpdCB2YWx1ZSBvZiB0aGUgY29kZSBw
b2ludCBpbiB0aGUKKyAqIHNwZWNpZmllZCByYWRpeC4KKyAqCisgKiBJZiB0aGUgcmFkaXggaXMg
bm90IGluIHRoZSByYW5nZSA8Y29kZT4yPD1yYWRpeDw9MzY8L2NvZGU+IG9yIGlmIHRoZQorICog
dmFsdWUgb2YgPGNvZGU+YzwvY29kZT4gaXMgbm90IGEgdmFsaWQgZGlnaXQgaW4gdGhlIHNwZWNp
ZmllZAorICogcmFkaXgsIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC4gQSBjaGFyYWN0ZXIg
aXMgYSB2YWxpZCBkaWdpdAorICogaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMg
dHJ1ZToKKyAqIDx1bD4KKyAqIDxsaT5UaGUgY2hhcmFjdGVyIGhhcyBhIGRlY2ltYWwgZGlnaXQg
dmFsdWUuCisgKiAgICAgU3VjaCBjaGFyYWN0ZXJzIGhhdmUgdGhlIGdlbmVyYWwgY2F0ZWdvcnkg
Ik5kIiAoZGVjaW1hbCBkaWdpdCBudW1iZXJzKQorICogICAgIGFuZCBhIE51bWVyaWNfVHlwZSBv
ZiBEZWNpbWFsLgorICogICAgIEluIHRoaXMgY2FzZSB0aGUgdmFsdWUgaXMgdGhlIGNoYXJhY3Rl
cidzIGRlY2ltYWwgZGlnaXQgdmFsdWUuPC9saT4KKyAqIDxsaT5UaGUgY2hhcmFjdGVyIGlzIG9u
ZSBvZiB0aGUgdXBwZXJjYXNlIExhdGluIGxldHRlcnMKKyAqICAgICA8Y29kZT4nQSc8L2NvZGU+
IHRocm91Z2ggPGNvZGU+J1onPC9jb2RlPi4KKyAqICAgICBJbiB0aGlzIGNhc2UgdGhlIHZhbHVl
IGlzIDxjb2RlPmMtJ0EnKzEwPC9jb2RlPi48L2xpPgorICogPGxpPlRoZSBjaGFyYWN0ZXIgaXMg
b25lIG9mIHRoZSBsb3dlcmNhc2UgTGF0aW4gbGV0dGVycworICogICAgIDxjb2RlPidhJzwvY29k
ZT4gdGhyb3VnaCA8Y29kZT4neic8L2NvZGU+LgorICogICAgIEluIHRoaXMgY2FzZSB0aGUgdmFs
dWUgaXMgPGNvZGU+Y2gtJ2EnKzEwPC9jb2RlPi48L2xpPgorICogPGxpPkxhdGluIGxldHRlcnMg
ZnJvbSBib3RoIHRoZSBBU0NJSSByYW5nZSAoMDA2MS4uMDA3QSwgMDA0MS4uMDA1QSkKKyAqICAg
ICBhcyB3ZWxsIGFzIGZyb20gdGhlIEZ1bGx3aWR0aCBBU0NJSSByYW5nZSAoRkY0MS4uRkY1QSwg
RkYyMS4uRkYzQSkKKyAqICAgICBhcmUgcmVjb2duaXplZC48L2xpPgorICogPC91bD4KKyAqCisg
KiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuZGlnaXQoKS4KKyAqCisgKiBAcGFyYW0gICBj
aCAgICAgIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZC4KKyAqIEBwYXJhbSAgIHJhZGl4ICAg
dGhlIHJhZGl4LgorICogQHJldHVybiAgdGhlIG51bWVyaWMgdmFsdWUgcmVwcmVzZW50ZWQgYnkg
dGhlIGNoYXJhY3RlciBpbiB0aGUKKyAqICAgICAgICAgIHNwZWNpZmllZCByYWRpeCwKKyAqICAg
ICAgICAgIG9yIC0xIGlmIHRoZXJlIGlzIG5vIHZhbHVlIG9yIGlmIHRoZSB2YWx1ZSBleGNlZWRz
IHRoZSByYWRpeC4KKyAqCisgKiBAc2VlICAgICBVQ0hBUl9OVU1FUklDX1RZUEUKKyAqIEBzZWUg
ICAgIHVfZm9yRGlnaXQKKyAqIEBzZWUgICAgIHVfY2hhckRpZ2l0VmFsdWUKKyAqIEBzZWUgICAg
IHVfaXNkaWdpdAorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9F
WFBPUlQyCit1X2RpZ2l0KFVDaGFyMzIgY2gsIGludDhfdCByYWRpeCk7CisKKy8qKgorICogRGV0
ZXJtaW5lcyB0aGUgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9uIGZvciBhIHNwZWNpZmljIGRpZ2l0
IGluCisgKiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiB0aGUgdmFsdWUgb2YgPGNvZGU+cmFkaXg8
L2NvZGU+IGlzIG5vdCBhCisgKiB2YWxpZCByYWRpeCwgb3IgdGhlIHZhbHVlIG9mIDxjb2RlPmRp
Z2l0PC9jb2RlPiBpcyBub3QgYSB2YWxpZAorICogZGlnaXQgaW4gdGhlIHNwZWNpZmllZCByYWRp
eCwgdGhlIG51bGwgY2hhcmFjdGVyCisgKiAoPGNvZGU+VSswMDAwPC9jb2RlPikgaXMgcmV0dXJu
ZWQuCisgKiA8cD4KKyAqIFRoZSA8Y29kZT5yYWRpeDwvY29kZT4gYXJndW1lbnQgaXMgdmFsaWQg
aWYgaXQgaXMgZ3JlYXRlciB0aGFuIG9yCisgKiBlcXVhbCB0byAyIGFuZCBsZXNzIHRoYW4gb3Ig
ZXF1YWwgdG8gMzYuCisgKiBUaGUgPGNvZGU+ZGlnaXQ8L2NvZGU+IGFyZ3VtZW50IGlzIHZhbGlk
IGlmCisgKiA8Y29kZT4wIDw9IGRpZ2l0IDwgcmFkaXg8L2NvZGU+LgorICogPHA+CisgKiBJZiB0
aGUgZGlnaXQgaXMgbGVzcyB0aGFuIDEwLCB0aGVuCisgKiA8Y29kZT4nMCcgKyBkaWdpdDwvY29k
ZT4gaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgdGhlIHZhbHVlCisgKiA8Y29kZT4nYScgKyBkaWdp
dCAtIDEwPC9jb2RlPiBpcyByZXR1cm5lZC4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFy
YWN0ZXIuZm9yRGlnaXQoKS4KKyAqCisgKiBAcGFyYW0gICBkaWdpdCAgIHRoZSBudW1iZXIgdG8g
Y29udmVydCB0byBhIGNoYXJhY3Rlci4KKyAqIEBwYXJhbSAgIHJhZGl4ICAgdGhlIHJhZGl4Lgor
ICogQHJldHVybiAgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBz
cGVjaWZpZWQgZGlnaXQKKyAqICAgICAgICAgIGluIHRoZSBzcGVjaWZpZWQgcmFkaXguCisgKgor
ICogQHNlZSAgICAgdV9kaWdpdAorICogQHNlZSAgICAgdV9jaGFyRGlnaXRWYWx1ZQorICogQHNl
ZSAgICAgdV9pc2RpZ2l0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUNoYXIz
MiBVX0VYUE9SVDIKK3VfZm9yRGlnaXQoaW50MzJfdCBkaWdpdCwgaW50OF90IHJhZGl4KTsKKwor
LyoqCisgKiBHZXQgdGhlICJhZ2UiIG9mIHRoZSBjb2RlIHBvaW50LgorICogVGhlICJhZ2UiIGlz
IHRoZSBVbmljb2RlIHZlcnNpb24gd2hlbiB0aGUgY29kZSBwb2ludCB3YXMgZmlyc3QKKyAqIGRl
c2lnbmF0ZWQgKGFzIGEgbm9uLWNoYXJhY3RlciBvciBmb3IgUHJpdmF0ZSBVc2UpCisgKiBvciBh
c3NpZ25lZCBhIGNoYXJhY3Rlci4KKyAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBhdm9pZCBlbWl0
dGluZyBjb2RlIHBvaW50cyB0byByZWNlaXZpbmcKKyAqIHByb2Nlc3NlcyB0aGF0IGRvIG5vdCBh
Y2NlcHQgbmV3ZXIgY2hhcmFjdGVycy4KKyAqIFRoZSBkYXRhIGlzIGZyb20gdGhlIFVDRCBmaWxl
IERlcml2ZWRBZ2UudHh0LgorICoKKyAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50LgorICogQHBh
cmFtIHZlcnNpb25BcnJheSBUaGUgVW5pY29kZSB2ZXJzaW9uIG51bWJlciBhcnJheSwgdG8gYmUg
ZmlsbGVkIGluLgorICoKKyAqIEBzdGFibGUgSUNVIDIuMQorICovCitVX1NUQUJMRSB2b2lkIFVf
RVhQT1JUMgordV9jaGFyQWdlKFVDaGFyMzIgYywgVVZlcnNpb25JbmZvIHZlcnNpb25BcnJheSk7
CisKKy8qKgorICogR2V0cyB0aGUgVW5pY29kZSB2ZXJzaW9uIGluZm9ybWF0aW9uLgorICogVGhl
IHZlcnNpb24gYXJyYXkgaXMgZmlsbGVkIGluIHdpdGggdGhlIHZlcnNpb24gaW5mb3JtYXRpb24K
KyAqIGZvciB0aGUgVW5pY29kZSBzdGFuZGFyZCB0aGF0IGlzIGN1cnJlbnRseSB1c2VkIGJ5IElD
VS4KKyAqIEZvciBleGFtcGxlLCBVbmljb2RlIHZlcnNpb24gMy4xLjEgaXMgcmVwcmVzZW50ZWQg
YXMgYW4gYXJyYXkgd2l0aAorICogdGhlIHZhbHVlcyB7IDMsIDEsIDEsIDAgfS4KKyAqCisgKiBA
cGFyYW0gdmVyc2lvbkFycmF5IGFuIG91dHB1dCBhcnJheSB0aGF0IHdpbGwgYmUgZmlsbGVkIGlu
IHdpdGgKKyAqICAgICAgICAgICAgICAgICAgICAgdGhlIFVuaWNvZGUgdmVyc2lvbiBudW1iZXIK
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgordV9nZXRV
bmljb2RlVmVyc2lvbihVVmVyc2lvbkluZm8gdmVyc2lvbkFycmF5KTsKKworLyoqCisgKiBHZXQg
dGhlIEZDX05GS0NfQ2xvc3VyZSBwcm9wZXJ0eSBzdHJpbmcgZm9yIGEgY2hhcmFjdGVyLgorICog
U2VlIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXggIzE1IGZvciBkZXRhaWxzLCBzZWFyY2ggZm9yICJG
Q19ORktDX0Nsb3N1cmUiCisgKiBvciBmb3IgIkZOQyI6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
cmVwb3J0cy90cjE1LworICoKKyAqIEBwYXJhbSBjIFRoZSBjaGFyYWN0ZXIgKGNvZGUgcG9pbnQp
IGZvciB3aGljaCB0byBnZXQgdGhlIEZDX05GS0NfQ2xvc3VyZSBzdHJpbmcuCisgKiAgICAgICAg
ICAgICBJdCBtdXN0IGJlIDxjb2RlPjA8PWM8PTB4MTBmZmZmPC9jb2RlPi4KKyAqIEBwYXJhbSBk
ZXN0IERlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIGNvcHlpbmcgdGhlIHN0cmluZy4KKyAqICAgICAg
ICAgICAgIFRoZSBzdHJpbmcgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0ZWQgaWYgcG9zc2libGUuCisg
KiAgICAgICAgICAgICBJZiB0aGVyZSBpcyBubyBGQ19ORktDX0Nsb3N1cmUgc3RyaW5nLAorICog
ICAgICAgICAgICAgdGhlbiB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIHRoZSBlbXB0eSBzdHJp
bmcuCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5IDxjb2RlPj09c2l6ZW9mKGRlc3QpPC9jb2RlPgor
ICogQHBhcmFtIHBFcnJvckNvZGUgUG9pbnRlciB0byBhIFVFcnJvckNvZGUgdmFyaWFibGUuCisg
KiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZywgb3IgMCBpZiB0aGVyZSBpcyBubyBG
Q19ORktDX0Nsb3N1cmUgc3RyaW5nIGZvciB0aGlzIGNoYXJhY3Rlci4KKyAqICAgICAgICAgSWYg
dGhlIGRlc3RDYXBhY2l0eSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCwgdGhl
biB0aGUgYnVmZmVyCisgKiAgICAgICAgIGNvbnRhaW5zIHRoZSB0cnVuY2F0ZWQgbmFtZSBhbmQg
dGhlIHJldHVybmVkIGxlbmd0aCBpbmRpY2F0ZXMgdGhlIGZ1bGwKKyAqICAgICAgICAgbGVuZ3Ro
IG9mIHRoZSBuYW1lLgorICogICAgICAgICBUaGUgbGVuZ3RoIGRvZXMgbm90IGluY2x1ZGUgdGhl
IHplcm8tdGVybWluYXRpb24uCisgKgorICogQHN0YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxF
IGludDMyX3QgVV9FWFBPUlQyCit1X2dldEZDX05GS0NfQ2xvc3VyZShVQ2hhcjMyIGMsIFVDaGFy
ICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisK
K1VfQ0RFQ0xfRU5ECisKKyNlbmRpZiAvKl9VQ0hBUiovCisvKmVvZiovCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91Y29uZmlnLmggYi9KYXZhU2NyaXB0R2x1ZS9pY3Uv
dW5pY29kZS91Y29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk3
Y2Y2OAotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3Vjb25m
aWcuaApAQCAtMCwwICsxLDE4NiBAQAorLyogIAorKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIENvcHlyaWdo
dCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29y
cG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CisqICAgZmlsZSBuYW1lOiAgdWNvbmZpZy5oCisqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyog
ICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0CisqCisqICAgY3Jl
YXRlZCBvbjogMjAwMnNlcDE5CisqICAgY3JlYXRlZCBieTogTWFya3VzIFcuIFNjaGVyZXIKKyov
CisKKyNpZm5kZWYgX19VQ09ORklHX0hfXworI2RlZmluZSBfX1VDT05GSUdfSF9fCisKKy8qIQor
ICogXGZpbGUKKyAqIFxicmllZiBTd2l0Y2hlcyBmb3IgZXhjbHVkaW5nIHBhcnRzIG9mIElDVSBs
aWJyYXJ5IGNvZGUgbW9kdWxlcy4KKyAqCisgKiBBbGxvd3MgdG8gYnVpbGQgcGFydGlhbCwgc21h
bGxlciBsaWJyYXJpZXMgZm9yIHNwZWNpYWwgcHVycG9zZXMuCisgKiBCeSBkZWZhdWx0LCBhbGwg
bW9kdWxlcyBhcmUgYnVpbHQuCisgKiBUaGUgc3dpdGNoZXMgYXJlIGZhaXJseSBjb2Fyc2UsIGNv
bnRyb2xsaW5nIGxhcmdlIG1vZHVsZXMuCisgKiBCYXNpYyBzZXJ2aWNlcyBjYW5ub3QgYmUgdHVy
bmVkIG9mZi4KKyAqCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworCisvKioKKyAqIFxkZWYgVUNP
TkZJR19PTkxZX0NPTExBVElPTgorICogVGhpcyBzd2l0Y2ggdHVybnMgb2ZmIG1vZHVsZXMgdGhh
dCBhcmUgbm90IG5lZWRlZCBmb3IgY29sbGF0aW9uLgorICoKKyAqIEl0IGRvZXMgbm90IHR1cm4g
b2ZmIGxlZ2FjeSBjb252ZXJzaW9uIGJlY2F1c2UgdGhhdCBpcyBuZWNlc3NhcnkKKyAqIGZvciBJ
Q1UgdG8gd29yayBvbiBFQkNESUMgcGxhdGZvcm1zIChmb3IgdGhlIGRlZmF1bHQgY29udmVydGVy
KS4KKyAqIElmIHlvdSB3YW50ICJvbmx5IGNvbGxhdGlvbiIgYW5kIGRvIG5vdCBidWlsZCBmb3Ig
RUJDRElDLAorICogdGhlbiB5b3UgY2FuICNkZWZpbmUgVUNPTkZJR19OT19MRUdBQ1lfQ09OVkVS
U0lPTiAxIGFzIHdlbGwuCisgKgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNpZm5kZWYgVUNP
TkZJR19PTkxZX0NPTExBVElPTgorIyAgIGRlZmluZSBVQ09ORklHX09OTFlfQ09MTEFUSU9OIDAK
KyNlbmRpZgorCisjaWYgVUNPTkZJR19PTkxZX0NPTExBVElPTgorICAgIC8qIGNvbW1vbiBsaWJy
YXJ5ICovCisjICAgZGVmaW5lIFVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OIDEKKyMgICBkZWZp
bmUgVUNPTkZJR19OT19JRE5BIDEKKworICAgIC8qIGkxOG4gbGlicmFyeSAqLworIyAgIGlmIFVD
T05GSUdfTk9fQ09MTEFUSU9OCisjICAgICAgIGVycm9yIENvbnRyYWRpY3RvcnkgY29sbGF0aW9u
IHN3aXRjaGVzIGluIHVjb25maWcuaC4KKyMgICBlbmRpZgorIyAgIGRlZmluZSBVQ09ORklHX05P
X0ZPUk1BVFRJTkcgMQorIyAgIGRlZmluZSBVQ09ORklHX05PX1RSQU5TTElURVJBVElPTiAxCisj
ICAgZGVmaW5lIFVDT05GSUdfTk9fUkVHVUxBUl9FWFBSRVNTSU9OUyAxCisjZW5kaWYKKworLyog
Y29tbW9uIGxpYnJhcnkgc3dpdGNoZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBcZGVmIFVDT05GSUdfTk9fQ09OVkVSU0lP
TgorICogSUNVIHdpbGwgbm90IGNvbXBsZXRlbHkgYnVpbGQgd2l0aCB0aGlzIHN3aXRjaCB0dXJu
ZWQgb24uCisgKiBUaGlzIHN3aXRjaCB0dXJucyBvZmYgYWxsIGNvbnZlcnRlcnMuCisgKgorICog
QGRyYWZ0IElDVSAzLjIKKyAqLworI2lmbmRlZiBVQ09ORklHX05PX0NPTlZFUlNJT04KKyMgICBk
ZWZpbmUgVUNPTkZJR19OT19DT05WRVJTSU9OIDAKKyNlbmRpZgorCisjaWYgVUNPTkZJR19OT19D
T05WRVJTSU9OCisjICAgZGVmaW5lIFVDT05GSUdfTk9fTEVHQUNZX0NPTlZFUlNJT04gMQorI2Vu
ZGlmCisKKy8qKgorICogXGRlZiBVQ09ORklHX05PX0xFR0FDWV9DT05WRVJTSU9OCisgKiBUaGlz
IHN3aXRjaCB0dXJucyBvZmYgYWxsIGNvbnZlcnRlcnMgZXhjZXB0IGZvcgorICogLSBVbmljb2Rl
IGNoYXJzZXRzIChVVEYtNy84LzE2LzMyLCBDRVNVLTgsIFNDU1UsIEJPQ1UtMSkKKyAqIC0gVVMt
QVNDSUkKKyAqIC0gSVNPLTg4NTktMQorICoKKyAqIFR1cm5pbmcgb2ZmIGxlZ2FjeSBjb252ZXJz
aW9uIGlzIG5vdCBwb3NzaWJsZSBvbiBFQkNESUMgcGxhdGZvcm1zCisgKiBiZWNhdXNlIHRoZXkg
bmVlZCBpYm0tMzcgb3IgaWJtLTEwNDcgZGVmYXVsdCBjb252ZXJ0ZXJzLgorICoKKyAqIEBzdGFi
bGUgSUNVIDIuNAorICovCisjaWZuZGVmIFVDT05GSUdfTk9fTEVHQUNZX0NPTlZFUlNJT04KKyMg
ICBkZWZpbmUgVUNPTkZJR19OT19MRUdBQ1lfQ09OVkVSU0lPTiAwCisjZW5kaWYKKworLyoqCisg
KiBcZGVmIFVDT05GSUdfTk9fTk9STUFMSVpBVElPTgorICogVGhpcyBzd2l0Y2ggdHVybnMgb2Zm
IG5vcm1hbGl6YXRpb24uCisgKiBJdCBpbXBsaWVzIHR1cm5pbmcgb2ZmIHNldmVyYWwgb3RoZXIg
c2VydmljZXMgYXMgd2VsbCwgZm9yIGV4YW1wbGUKKyAqIGNvbGxhdGlvbiBhbmQgSUROQS4KKyAq
CisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworI2lmbmRlZiBVQ09ORklHX05PX05PUk1BTElaQVRJ
T04KKyMgICBkZWZpbmUgVUNPTkZJR19OT19OT1JNQUxJWkFUSU9OIDAKKyNlbGlmIFVDT05GSUdf
Tk9fTk9STUFMSVpBVElPTgorICAgIC8qIGNvbW1vbiBsaWJyYXJ5ICovCisjICAgZGVmaW5lIFVD
T05GSUdfTk9fSUROQSAxCisKKyAgICAvKiBpMThuIGxpYnJhcnkgKi8KKyMgICBpZiBVQ09ORklH
X09OTFlfQ09MTEFUSU9OCisjICAgICAgIGVycm9yIENvbnRyYWRpY3RvcnkgY29sbGF0aW9uIHN3
aXRjaGVzIGluIHVjb25maWcuaC4KKyMgICBlbmRpZgorIyAgIGRlZmluZSBVQ09ORklHX05PX0NP
TExBVElPTiAxCisjICAgZGVmaW5lIFVDT05GSUdfTk9fVFJBTlNMSVRFUkFUSU9OIDEKKyNlbmRp
ZgorCisvKioKKyAqIFxkZWYgVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04KKyAqIFRoaXMgc3dp
dGNoIHR1cm5zIG9mZiBicmVhayBpdGVyYXRpb24uCisgKgorICogQHN0YWJsZSBJQ1UgMi40Cisg
Ki8KKyNpZm5kZWYgVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04KKyMgICBkZWZpbmUgVUNPTkZJ
R19OT19CUkVBS19JVEVSQVRJT04gMAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVQ09ORklHX05P
X0lETkEKKyAqIFRoaXMgc3dpdGNoIHR1cm5zIG9mZiBJRE5BLgorICoKKyAqIEBzdGFibGUgSUNV
IDIuNgorICovCisjaWZuZGVmIFVDT05GSUdfTk9fSUROQQorIyAgIGRlZmluZSBVQ09ORklHX05P
X0lETkEgMAorI2VuZGlmCisKKy8qIGkxOG4gbGlicmFyeSBzd2l0Y2hlcyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorICogXGRl
ZiBVQ09ORklHX05PX0NPTExBVElPTgorICogVGhpcyBzd2l0Y2ggdHVybnMgb2ZmIGNvbGxhdGlv
biBhbmQgY29sbGF0aW9uLWJhc2VkIHN0cmluZyBzZWFyY2guCisgKgorICogQHN0YWJsZSBJQ1Ug
Mi40CisgKi8KKyNpZm5kZWYgVUNPTkZJR19OT19DT0xMQVRJT04KKyMgICBkZWZpbmUgVUNPTkZJ
R19OT19DT0xMQVRJT04gMAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVQ09ORklHX05PX0ZPUk1B
VFRJTkcKKyAqIFRoaXMgc3dpdGNoIHR1cm5zIG9mZiBmb3JtYXR0aW5nIGFuZCBjYWxlbmRhci90
aW1lem9uZSBzZXJ2aWNlcy4KKyAqCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2lmbmRlZiBV
Q09ORklHX05PX0ZPUk1BVFRJTkcKKyMgICBkZWZpbmUgVUNPTkZJR19OT19GT1JNQVRUSU5HIDAK
KyNlbmRpZgorCisvKioKKyAqIFxkZWYgVUNPTkZJR19OT19UUkFOU0xJVEVSQVRJT04KKyAqIFRo
aXMgc3dpdGNoIHR1cm5zIG9mZiB0cmFuc2xpdGVyYXRpb24uCisgKgorICogQHN0YWJsZSBJQ1Ug
Mi40CisgKi8KKyNpZm5kZWYgVUNPTkZJR19OT19UUkFOU0xJVEVSQVRJT04KKyMgICBkZWZpbmUg
VUNPTkZJR19OT19UUkFOU0xJVEVSQVRJT04gMAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVQ09O
RklHX05PX1JFR1VMQVJfRVhQUkVTU0lPTlMKKyAqIFRoaXMgc3dpdGNoIHR1cm5zIG9mZiByZWd1
bGFyIGV4cHJlc3Npb25zLgorICoKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjaWZuZGVmIFVD
T05GSUdfTk9fUkVHVUxBUl9FWFBSRVNTSU9OUworIyAgIGRlZmluZSBVQ09ORklHX05PX1JFR1VM
QVJfRVhQUkVTU0lPTlMgMAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVQ09ORklHX05PX1NFUlZJ
Q0UKKyAqIFRoaXMgc3dpdGNoIHR1cm5zIG9mZiBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KKyAqCisg
KiBAZHJhZnQgSUNVIDMuMgorICovCisjaWZuZGVmIFVDT05GSUdfTk9fU0VSVklDRQorIyAgIGRl
ZmluZSBVQ09ORklHX05PX1NFUlZJQ0UgMAorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWl0ZXIuaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91
bmljb2RlL3VpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYzZGY1
YwotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VpdGVyLmgK
QEAgLTAsMCArMSw3MDcgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29w
eXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyog
ICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKKyogICBmaWxlIG5hbWU6ICB1aXRlci5oCisqICAgZW5jb2Rpbmc6
ICAgVVMtQVNDSUkKKyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlv
bjo0CisqCisqICAgY3JlYXRlZCBvbjogMjAwMmphbjE4CisqICAgY3JlYXRlZCBieTogTWFya3Vz
IFcuIFNjaGVyZXIKKyovCisKKyNpZm5kZWYgX19VSVRFUl9IX18KKyNkZWZpbmUgX19VSVRFUl9I
X18KKworLyoqCisgKiBcZmlsZQorICogXGJyaWVmIEMgQVBJOiBVbmljb2RlIENoYXJhY3RlciBJ
dGVyYXRpb24KKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqLworCisjaW5jbHVkZSAidW5p
Y29kZS91dHlwZXMuaCIKKworI2lmZGVmIFhQX0NQTFVTUExVUworICAgIFVfTkFNRVNQQUNFX0JF
R0lOCisKKyAgICBjbGFzcyBDaGFyYWN0ZXJJdGVyYXRvcjsKKyAgICBjbGFzcyBSZXBsYWNlYWJs
ZTsKKworICAgIFVfTkFNRVNQQUNFX0VORAorI2VuZGlmCisKK1VfQ0RFQ0xfQkVHSU4KKworc3Ry
dWN0IFVDaGFySXRlcmF0b3I7Cit0eXBlZGVmIHN0cnVjdCBVQ2hhckl0ZXJhdG9yIFVDaGFySXRl
cmF0b3I7IC8qKjwgQyB0eXBlZGVmIGZvciBzdHJ1Y3QgVUNoYXJJdGVyYXRvci4gQHN0YWJsZSBJ
Q1UgMi4xICovCisKKy8qKgorICogT3JpZ2luIGNvbnN0YW50cyBmb3IgVUNoYXJJdGVyYXRvci5n
ZXRJbmRleCgpIGFuZCBVQ2hhckl0ZXJhdG9yLm1vdmUoKS4KKyAqIEBzZWUgVUNoYXJJdGVyYXRv
ck1vdmUKKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK3R5
cGVkZWYgZW51bSBVQ2hhckl0ZXJhdG9yT3JpZ2luIHsKKyAgICBVSVRFUl9TVEFSVCwgVUlURVJf
Q1VSUkVOVCwgVUlURVJfTElNSVQsIFVJVEVSX1pFUk8sIFVJVEVSX0xFTkdUSAorfSBVQ2hhckl0
ZXJhdG9yT3JpZ2luOworCisvKiogQ29uc3RhbnRzIGZvciBVQ2hhckl0ZXJhdG9yLiBAc3RhYmxl
IElDVSAyLjYgKi8KK2VudW0geworICAgIC8qKgorICAgICAqIENvbnN0YW50IHZhbHVlIHRoYXQg
bWF5IGJlIHJldHVybmVkIGJ5IFVDaGFySXRlcmF0b3JNb3ZlCisgICAgICogaW5kaWNhdGluZyB0
aGF0IHRoZSBmaW5hbCBVVEYtMTYgaW5kZXggaXMgbm90IGtub3duLCBidXQgdGhhdCB0aGUgbW92
ZSBzdWNjZWVkZWQuCisgICAgICogVGhpcyBjYW4gb2NjdXIgd2hlbiBtb3ZpbmcgcmVsYXRpdmUg
dG8gbGltaXQgb3IgbGVuZ3RoLCBvcgorICAgICAqIHdoZW4gbW92aW5nIHJlbGF0aXZlIHRvIHRo
ZSBjdXJyZW50IGluZGV4IGFmdGVyIGEgc2V0U3RhdGUoKQorICAgICAqIHdoZW4gdGhlIGN1cnJl
bnQgVVRGLTE2IGluZGV4IGlzIG5vdCBrbm93bi4KKyAgICAgKgorICAgICAqIEl0IHdvdWxkIGJl
IHZlcnkgaW5lZmZpY2llbnQgdG8gaGF2ZSB0byBjb3VudCBmcm9tIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIHRleHQKKyAgICAgKiBqdXN0IHRvIGdldCB0aGUgY3VycmVudC9saW1pdC9sZW5ndGggaW5k
ZXggYWZ0ZXIgbW92aW5nIHJlbGF0aXZlIHRvIGl0LgorICAgICAqIFRoZSBhY3R1YWwgaW5kZXgg
Y2FuIGJlIGRldGVybWluZWQgd2l0aCBnZXRJbmRleChVSVRFUl9DVVJSRU5UKQorICAgICAqIHdo
aWNoIHdpbGwgY291bnQgdGhlIFVDaGFycyBpZiBuZWNlc3NhcnkuCisgICAgICoKKyAgICAgKiBA
c3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICBVSVRFUl9VTktOT1dOX0lOREVYPS0yCit9Owor
CisKKy8qKgorICogQ29uc3RhbnQgZm9yIFVDaGFySXRlcmF0b3IgZ2V0U3RhdGUoKSBpbmRpY2F0
aW5nIGFuIGVycm9yIG9yCisgKiBhbiB1bmtub3duIHN0YXRlLgorICogUmV0dXJuZWQgYnkgdWl0
ZXJfZ2V0U3RhdGUoKS9VQ2hhckl0ZXJhdG9yR2V0U3RhdGUKKyAqIHdoZW4gYW4gZXJyb3Igb2Nj
dXJzLgorICogQWxzbywgc29tZSBVQ2hhckl0ZXJhdG9yIGltcGxlbWVudGF0aW9ucyBtYXkgbm90
IGJlIGFibGUgdG8gcmV0dXJuCisgKiBhIHZhbGlkIHN0YXRlIGZvciBlYWNoIHBvc2l0aW9uLiBU
aGlzIHdpbGwgYmUgY2xlYXJseSBkb2N1bWVudGVkCisgKiBmb3IgZWFjaCBzdWNoIGl0ZXJhdG9y
IChub25lIG9mIHRoZSBwdWJsaWMgb25lcyBoZXJlKS4KKyAqCisgKiBAc3RhYmxlIElDVSAyLjYK
KyAqLworI2RlZmluZSBVSVRFUl9OT19TVEFURSAoKHVpbnQzMl90KTB4ZmZmZmZmZmYpCisKKy8q
KgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVUNoYXJJdGVyYXRvci5nZXRJbmRl
eCgpLgorICoKKyAqIEdldHMgdGhlIGN1cnJlbnQgcG9zaXRpb24sIG9yIHRoZSBzdGFydCBvciBs
aW1pdCBvZiB0aGUKKyAqIGl0ZXJhdGlvbiByYW5nZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG1h
eSBwZXJmb3JtIHNsb3dseSBmb3IgVUlURVJfQ1VSUkVOVCBhZnRlciBzZXRTdGF0ZSgpIHdhcyBj
YWxsZWQsCisgKiBvciBmb3IgVUlURVJfTEVOR1RILCBiZWNhdXNlIGFuIGl0ZXJhdG9yIGltcGxl
bWVudGF0aW9uIG1heSBoYXZlIHRvIGNvdW50CisgKiBVQ2hhcnMgaWYgdGhlIHVuZGVybHlpbmcg
c3RvcmFnZSBpcyBub3QgVVRGLTE2LgorICoKKyAqIEBwYXJhbSBpdGVyIHRoZSBVQ2hhckl0ZXJh
dG9yIHN0cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCisgKiBAcGFyYW0gb3JpZ2luIGdldCB0aGUg
MCwgc3RhcnQsIGxpbWl0LCBsZW5ndGgsIG9yIGN1cnJlbnQgaW5kZXgKKyAqIEByZXR1cm4gdGhl
IHJlcXVlc3RlZCBpbmRleCwgb3IgVV9TRU5USU5FTCBpbiBhbiBlcnJvciBjb25kaXRpb24KKyAq
CisgKiBAc2VlIFVDaGFySXRlcmF0b3JPcmlnaW4KKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICog
QHN0YWJsZSBJQ1UgMi4xCisgKi8KK3R5cGVkZWYgaW50MzJfdCBVX0NBTExDT05WCitVQ2hhckl0
ZXJhdG9yR2V0SW5kZXgoVUNoYXJJdGVyYXRvciAqaXRlciwgVUNoYXJJdGVyYXRvck9yaWdpbiBv
cmlnaW4pOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVDaGFySXRl
cmF0b3IubW92ZSgpLgorICoKKyAqIFVzZSBpdGVyLT5tb3ZlKGl0ZXIsIGluZGV4LCBVSVRFUl9a
RVJPKSBsaWtlIENoYXJhY3Rlckl0ZXJhdG9yOjpzZXRJbmRleChpbmRleCkuCisgKgorICogTW92
ZXMgdGhlIGN1cnJlbnQgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9yIGxpbWl0IG9m
IHRoZQorICogaXRlcmF0aW9uIHJhbmdlLCBvciByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb3Np
dGlvbiBpdHNlbGYuCisgKiBUaGUgbW92ZW1lbnQgaXMgZXhwcmVzc2VkIGluIG51bWJlcnMgb2Yg
Y29kZSB1bml0cyBmb3J3YXJkCisgKiBvciBiYWNrd2FyZCBieSBzcGVjaWZ5aW5nIGEgcG9zaXRp
dmUgb3IgbmVnYXRpdmUgZGVsdGEuCisgKiBPdXQgb2YgYm91bmRzIG1vdmVtZW50IHdpbGwgYmUg
cGlubmVkIHRvIHRoZSBzdGFydCBvciBsaW1pdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG1heSBw
ZXJmb3JtIHNsb3dseSBmb3IgbW92aW5nIHJlbGF0aXZlIHRvIFVJVEVSX0xFTkdUSAorICogYmVj
YXVzZSBhbiBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbiBtYXkgaGF2ZSB0byBjb3VudCB0aGUgcmVz
dCBvZiB0aGUKKyAqIFVDaGFycyBpZiB0aGUgbmF0aXZlIHN0b3JhZ2UgaXMgbm90IFVURi0xNi4K
KyAqCisgKiBXaGVuIG1vdmluZyByZWxhdGl2ZSB0byB0aGUgbGltaXQgb3IgbGVuZ3RoLCBvcgor
ICogcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24gYWZ0ZXIgc2V0U3RhdGUoKSB3YXMg
Y2FsbGVkLAorICogbW92ZSgpIG1heSByZXR1cm4gVUlURVJfVU5LTk9XTl9JTkRFWCAoLTIpIHRv
IGF2b2lkIGFuIGluZWZmaWNpZW50CisgKiBkZXRlcm1pbmF0aW9uIG9mIHRoZSBhY3R1YWwgVVRG
LTE2IGluZGV4LgorICogVGhlIGFjdHVhbCBpbmRleCBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRoIGdl
dEluZGV4KFVJVEVSX0NVUlJFTlQpCisgKiB3aGljaCB3aWxsIGNvdW50IHRoZSBVQ2hhcnMgaWYg
bmVjZXNzYXJ5LgorICogU2VlIFVJVEVSX1VOS05PV05fSU5ERVggZm9yIGRldGFpbHMuCisgKgor
ICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVy
IikKKyAqIEBwYXJhbSBkZWx0YSBjYW4gYmUgcG9zaXRpdmUsIHplcm8sIG9yIG5lZ2F0aXZlCisg
KiBAcGFyYW0gb3JpZ2luIG1vdmUgcmVsYXRpdmUgdG8gdGhlIDAsIHN0YXJ0LCBsaW1pdCwgbGVu
Z3RoLCBvciBjdXJyZW50IGluZGV4CisgKiBAcmV0dXJuIHRoZSBuZXcgaW5kZXgsIG9yIFVfU0VO
VElORUwgb24gYW4gZXJyb3IgY29uZGl0aW9uLAorICogICAgICAgICBvciBVSVRFUl9VTktOT1dO
X0lOREVYIHdoZW4gdGhlIGluZGV4IGlzIG5vdCBrbm93bi4KKyAqCisgKiBAc2VlIFVDaGFySXRl
cmF0b3JPcmlnaW4KKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICogQHNlZSBVSVRFUl9VTktOT1dO
X0lOREVYCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLwordHlwZWRlZiBpbnQzMl90IFVfQ0FMTENP
TlYKK1VDaGFySXRlcmF0b3JNb3ZlKFVDaGFySXRlcmF0b3IgKml0ZXIsIGludDMyX3QgZGVsdGEs
IFVDaGFySXRlcmF0b3JPcmlnaW4gb3JpZ2luKTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBlIGRl
Y2xhcmF0aW9uIGZvciBVQ2hhckl0ZXJhdG9yLmhhc05leHQoKS4KKyAqCisgKiBDaGVjayBpZiBj
dXJyZW50KCkgYW5kIG5leHQoKSBjYW4gc3RpbGwKKyAqIHJldHVybiBhbm90aGVyIGNvZGUgdW5p
dC4KKyAqCisgKiBAcGFyYW0gaXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlz
IHBvaW50ZXIiKQorICogQHJldHVybiBib29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIGN1cnJlbnQo
KSBhbmQgbmV4dCgpIGNhbiBzdGlsbCByZXR1cm4gYW5vdGhlciBjb2RlIHVuaXQKKyAqCisgKiBA
c2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzdGFibGUgSUNVIDIuMQorICovCit0eXBlZGVmIFVCb29s
IFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JIYXNOZXh0KFVDaGFySXRlcmF0b3IgKml0ZXIpOwor
CisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVDaGFySXRlcmF0b3IuaGFz
UHJldmlvdXMoKS4KKyAqCisgKiBDaGVjayBpZiBwcmV2aW91cygpIGNhbiBzdGlsbCByZXR1cm4g
YW5vdGhlciBjb2RlIHVuaXQuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRlcmF0b3Ig
c3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gYm9vbGVhbiB2YWx1ZSBmb3Ig
d2hldGhlciBwcmV2aW91cygpIGNhbiBzdGlsbCByZXR1cm4gYW5vdGhlciBjb2RlIHVuaXQKKyAq
CisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzdGFibGUgSUNVIDIuMQorICovCit0eXBlZGVm
IFVCb29sIFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JIYXNQcmV2aW91cyhVQ2hhckl0ZXJhdG9y
ICppdGVyKTsKKyAKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVUNoYXJJ
dGVyYXRvci5jdXJyZW50KCkuCisgKgorICogUmV0dXJuIHRoZSBjb2RlIHVuaXQgYXQgdGhlIGN1
cnJlbnQgcG9zaXRpb24sCisgKiBvciBVX1NFTlRJTkVMIGlmIHRoZXJlIGlzIG5vbmUgKGluZGV4
IGlzIGF0IHRoZSBsaW1pdCkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRlcmF0b3Ig
c3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIGN1cnJlbnQgY29kZSB1
bml0CisgKgorICogQHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLwor
dHlwZWRlZiBVQ2hhcjMyIFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JDdXJyZW50KFVDaGFySXRl
cmF0b3IgKml0ZXIpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVD
aGFySXRlcmF0b3IubmV4dCgpLgorICoKKyAqIFJldHVybiB0aGUgY29kZSB1bml0IGF0IHRoZSBj
dXJyZW50IGluZGV4IGFuZCBpbmNyZW1lbnQKKyAqIHRoZSBpbmRleCAocG9zdC1pbmNyZW1lbnQs
IGxpa2Ugc1tpKytdKSwKKyAqIG9yIHJldHVybiBVX1NFTlRJTkVMIGlmIHRoZXJlIGlzIG5vbmUg
KGluZGV4IGlzIGF0IHRoZSBsaW1pdCkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRl
cmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIGN1cnJlbnQg
Y29kZSB1bml0IChhbmQgcG9zdC1pbmNyZW1lbnQgdGhlIGN1cnJlbnQgaW5kZXgpCisgKgorICog
QHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLwordHlwZWRlZiBVQ2hh
cjMyIFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JOZXh0KFVDaGFySXRlcmF0b3IgKml0ZXIpOwor
CisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVDaGFySXRlcmF0b3IucHJl
dmlvdXMoKS4KKyAqCisgKiBEZWNyZW1lbnQgdGhlIGluZGV4IGFuZCByZXR1cm4gdGhlIGNvZGUg
dW5pdCBmcm9tIHRoZXJlCisgKiAocHJlLWRlY3JlbWVudCwgbGlrZSBzWy0taV0pLAorICogb3Ig
cmV0dXJuIFVfU0VOVElORUwgaWYgdGhlcmUgaXMgbm9uZSAoaW5kZXggaXMgYXQgdGhlIHN0YXJ0
KS4KKyAqCisgKiBAcGFyYW0gaXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlz
IHBvaW50ZXIiKQorICogQHJldHVybiB0aGUgcHJldmlvdXMgY29kZSB1bml0IChhZnRlciBwcmUt
ZGVjcmVtZW50aW5nIHRoZSBjdXJyZW50IGluZGV4KQorICoKKyAqIEBzZWUgVUNoYXJJdGVyYXRv
cgorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK3R5cGVkZWYgVUNoYXIzMiBVX0NBTExDT05WCitV
Q2hhckl0ZXJhdG9yUHJldmlvdXMoVUNoYXJJdGVyYXRvciAqaXRlcik7CisKKy8qKgorICogRnVu
Y3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVUNoYXJJdGVyYXRvci5yZXNlcnZlZEZuKCkuCisg
KiBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4KKyAqCisgKiBAcGFyYW0gaXRlciB0aGUgVUNoYXJJ
dGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQorICogQHBhcmFtIHNvbWV0aGluZyBz
b21lIGludGVnZXIgYXJndW1lbnQKKyAqIEByZXR1cm4gc29tZSBpbnRlZ2VyCisgKgorICogQHNl
ZSBVQ2hhckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLwordHlwZWRlZiBpbnQzMl90
IFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JSZXNlcnZlZChVQ2hhckl0ZXJhdG9yICppdGVyLCBp
bnQzMl90IHNvbWV0aGluZyk7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBm
b3IgVUNoYXJJdGVyYXRvci5nZXRTdGF0ZSgpLgorICoKKyAqIEdldCB0aGUgInN0YXRlIiBvZiB0
aGUgaXRlcmF0b3IgaW4gdGhlIGZvcm0gb2YgYSBzaW5nbGUgMzItYml0IHdvcmQuCisgKiBJdCBp
cyByZWNvbW1lbmRlZCB0aGF0IHRoZSBzdGF0ZSB2YWx1ZSBiZSBjYWxjdWxhdGVkIHRvIGJlIGFz
IHNtYWxsIGFzCisgKiBpcyBmZWFzaWJsZS4gRm9yIHN0cmluZ3Mgd2l0aCBsaW1pdGVkIGxlbmd0
aHMsIGZld2VyIHRoYW4gMzIgYml0cyBtYXkKKyAqIGJlIHN1ZmZpY2llbnQuCisgKgorICogVGhp
cyBpcyB1c2VkIHRvZ2V0aGVyIHdpdGggc2V0U3RhdGUoKS9VQ2hhckl0ZXJhdG9yU2V0U3RhdGUK
KyAqIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIG1vcmUgZWZmaWNp
ZW50bHkgdGhhbiB3aXRoCisgKiBnZXRJbmRleCgpL21vdmUoKS4KKyAqCisgKiBUaGUgaXRlcmF0
b3Igc3RhdGUgaXMgZGVmaW5lZCBhcyBhIHVpbnQzMl90IHZhbHVlIGJlY2F1c2UgaXQgaXMgZGVz
aWduZWQKKyAqIGZvciB1c2UgaW4gdWNvbF9uZXh0U29ydEtleVBhcnQoKSB3aGljaCBwcm92aWRl
cyAzMiBiaXRzIHRvIHN0b3JlIHRoZSBzdGF0ZQorICogb2YgdGhlIGNoYXJhY3RlciBpdGVyYXRv
ci4KKyAqCisgKiBXaXRoIHNvbWUgVUNoYXJJdGVyYXRvciBpbXBsZW1lbnRhdGlvbnMgKGUuZy4s
IFVURi04KSwKKyAqIGdldHRpbmcgYW5kIHNldHRpbmcgdGhlIFVURi0xNiBpbmRleCB3aXRoIGV4
aXN0aW5nIGZ1bmN0aW9ucworICogKGdldEluZGV4KFVJVEVSX0NVUlJFTlQpIGZvbGxvd2VkIGJ5
IG1vdmUocG9zLCBVSVRFUl9aRVJPKSkgaXMgcG9zc2libGUgYnV0CisgKiByZWxhdGl2ZWx5IHNs
b3cgYmVjYXVzZSB0aGUgaXRlcmF0b3IgaGFzIHRvICJ3YWxrIiBmcm9tIGEga25vd24gaW5kZXgK
KyAqIHRvIHRoZSByZXF1ZXN0ZWQgb25lLgorICogVGhpcyB0YWtlcyBtb3JlIHRpbWUgdGhlIGZh
cnRoZXIgaXQgbmVlZHMgdG8gZ28uCisgKgorICogQW4gb3BhcXVlIHN0YXRlIHZhbHVlIGFsbG93
cyBhbiBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbiB0byBwcm92aWRlCisgKiBhbiBpbnRlcm5hbCBp
bmRleCAoVVRGLTg6IHRoZSBzb3VyY2UgYnl0ZSBhcnJheSBpbmRleCkgZm9yCisgKiBmYXN0LCBj
b25zdGFudC10aW1lIHJlc3RvcmF0aW9uLgorICoKKyAqIEFmdGVyIGNhbGxpbmcgc2V0U3RhdGUo
KSwgYSBnZXRJbmRleChVSVRFUl9DVVJSRU5UKSBtYXkgYmUgc2xvdyBiZWNhdXNlCisgKiB0aGUg
VVRGLTE2IGluZGV4IG1heSBub3QgYmUgcmVzdG9yZWQgYXMgd2VsbCwgYnV0IHRoZSBpdGVyYXRv
ciBjYW4gZGVsaXZlcgorICogdGhlIGNvcnJlY3QgdGV4dCBjb250ZW50cyBhbmQgbW92ZSByZWxh
dGl2ZSB0byB0aGUgY3VycmVudCBwb3NpdGlvbgorICogd2l0aG91dCBwZXJmb3JtYW5jZSBkZWdy
YWRhdGlvbi4KKyAqCisgKiBTb21lIFVDaGFySXRlcmF0b3IgaW1wbGVtZW50YXRpb25zIG1heSBu
b3QgYmUgYWJsZSB0byByZXR1cm4KKyAqIGEgdmFsaWQgc3RhdGUgZm9yIGVhY2ggcG9zaXRpb24s
IGluIHdoaWNoIGNhc2UgdGhleSByZXR1cm4gVUlURVJfTk9fU1RBVEUgaW5zdGVhZC4KKyAqIFRo
aXMgd2lsbCBiZSBjbGVhcmx5IGRvY3VtZW50ZWQgZm9yIGVhY2ggc3VjaCBpdGVyYXRvciAobm9u
ZSBvZiB0aGUgcHVibGljIG9uZXMgaGVyZSkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFy
SXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIHN0YXRl
IHdvcmQKKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzZWUgVUNoYXJJdGVyYXRvclNl
dFN0YXRlCisgKiBAc2VlIFVJVEVSX05PX1NUQVRFCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLwor
dHlwZWRlZiB1aW50MzJfdCBVX0NBTExDT05WCitVQ2hhckl0ZXJhdG9yR2V0U3RhdGUoY29uc3Qg
VUNoYXJJdGVyYXRvciAqaXRlcik7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlv
biBmb3IgVUNoYXJJdGVyYXRvci5zZXRTdGF0ZSgpLgorICoKKyAqIFJlc3RvcmUgdGhlICJzdGF0
ZSIgb2YgdGhlIGl0ZXJhdG9yIHVzaW5nIGEgc3RhdGUgd29yZCBmcm9tIGEgZ2V0U3RhdGUoKSBj
YWxsLgorICogVGhlIGl0ZXJhdG9yIG9iamVjdCBuZWVkIG5vdCBiZSB0aGUgc2FtZSBvbmUgYXMg
Zm9yIHdoaWNoIGdldFN0YXRlKCkgd2FzIGNhbGxlZCwKKyAqIGJ1dCBpdCBtdXN0IGJlIG9mIHRo
ZSBzYW1lIHR5cGUgKHNldCB1cCB1c2luZyB0aGUgc2FtZSB1aXRlcl9zZXRYWVogZnVuY3Rpb24p
CisgKiBhbmQgaXQgbXVzdCBpdGVyYXRlIG92ZXIgdGhlIHNhbWUgc3RyaW5nCisgKiAoYmluYXJ5
IGlkZW50aWNhbCByZWdhcmRsZXNzIG9mIG1lbW9yeSBhZGRyZXNzKS4KKyAqIEZvciBtb3JlIGFi
b3V0IHRoZSBzdGF0ZSB3b3JkIHNlZSBVQ2hhckl0ZXJhdG9yR2V0U3RhdGUuCisgKgorICogQWZ0
ZXIgY2FsbGluZyBzZXRTdGF0ZSgpLCBhIGdldEluZGV4KFVJVEVSX0NVUlJFTlQpIG1heSBiZSBz
bG93IGJlY2F1c2UKKyAqIHRoZSBVVEYtMTYgaW5kZXggbWF5IG5vdCBiZSByZXN0b3JlZCBhcyB3
ZWxsLCBidXQgdGhlIGl0ZXJhdG9yIGNhbiBkZWxpdmVyCisgKiB0aGUgY29ycmVjdCB0ZXh0IGNv
bnRlbnRzIGFuZCBtb3ZlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uCisgKiB3aXRo
b3V0IHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLgorICoKKyAqIEBwYXJhbSBpdGVyIHRoZSBVQ2hh
ckl0ZXJhdG9yIHN0cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCisgKiBAcGFyYW0gc3RhdGUgdGhl
IHN0YXRlIHdvcmQgZnJvbSBhIGdldFN0YXRlKCkgY2FsbAorICogICAgICAgICAgICAgIG9uIGEg
c2FtZS10eXBlLCBzYW1lLXN0cmluZyBpdGVyYXRvcgorICogQHBhcmFtIHBFcnJvckNvZGUgTXVz
dCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKKyAqICAgICAgICAg
ICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1
bmN0aW9uIGNhbGwuCisgKgorICogQHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc2VlIFVDaGFySXRl
cmF0b3JHZXRTdGF0ZQorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK3R5cGVkZWYgdm9pZCBVX0NB
TExDT05WCitVQ2hhckl0ZXJhdG9yU2V0U3RhdGUoVUNoYXJJdGVyYXRvciAqaXRlciwgdWludDMy
X3Qgc3RhdGUsIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOworCisKKy8qKgorICogQyBBUEkgZm9y
IGNvZGUgdW5pdCBpdGVyYXRpb24uCisgKiBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgQyB3cmFwcGVy
IGFyb3VuZAorICogQ2hhcmFjdGVySXRlcmF0b3IsIFJlcGxhY2VhYmxlLCBvciBpbXBsZW1lbnRl
ZCB1c2luZyBzaW1wbGUgc3RyaW5ncywgZXRjLgorICoKKyAqIFRoZXJlIGFyZSB0d28gcm9sZXMg
Zm9yIHVzaW5nIFVDaGFySXRlcmF0b3I6CisgKgorICogQSAicHJvdmlkZXIiIHNldHMgdGhlIG5l
Y2Vzc2FyeSBmdW5jdGlvbiBwb2ludGVycyBhbmQgY29udHJvbHMgdGhlICJwcm90ZWN0ZWQiCisg
KiBmaWVsZHMgb2YgdGhlIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlLiBBICJwcm92aWRlciIgcGFz
c2VzIGEgVUNoYXJJdGVyYXRvcgorICogaW50byBDIEFQSXMgdGhhdCBuZWVkIGEgVUNoYXJJdGVy
YXRvciBhcyBhbiBhYnN0cmFjdCwgZmxleGlibGUgc3RyaW5nIGludGVyZmFjZS4KKyAqCisgKiBJ
bXBsZW1lbnRhdGlvbnMgb2Ygc3VjaCBDIEFQSXMgYXJlICJjYWxsZXJzIiBvZiBVQ2hhckl0ZXJh
dG9yIGZ1bmN0aW9uczsKKyAqIHRoZXkgb25seSB1c2UgdGhlICJwdWJsaWMiIGZ1bmN0aW9uIHBv
aW50ZXJzIGFuZCBuZXZlciBhY2Nlc3MgdGhlICJwcm90ZWN0ZWQiCisgKiBmaWVsZHMgZGlyZWN0
bHkuCisgKgorICogVGhlIGN1cnJlbnQoKSBhbmQgbmV4dCgpIGZ1bmN0aW9ucyBvbmx5IGNoZWNr
IHRoZSBjdXJyZW50IGluZGV4IGFnYWluc3QgdGhlCisgKiBsaW1pdCwgYW5kIHByZXZpb3VzKCkg
b25seSBjaGVja3MgdGhlIGN1cnJlbnQgaW5kZXggYWdhaW5zdCB0aGUgc3RhcnQsCisgKiB0byBz
ZWUgaWYgdGhlIGl0ZXJhdG9yIGFscmVhZHkgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpdGVyYXRp
b24gcmFuZ2UuCisgKgorICogVGhlIGFzc3VtcHRpb24gLSBpbiBhbGwgaXRlcmF0b3JzIC0gaXMg
dGhhdCB0aGUgaW5kZXggaXMgbW92ZWQgdmlhIHRoZSBBUEksCisgKiB3aGljaCBtZWFucyBpdCB3
b24ndCBnbyBvdXQgb2YgYm91bmRzLCBvciB0aGUgaW5kZXggaXMgbW9kaWZpZWQgYnkKKyAqIHVz
ZXIgY29kZSB0aGF0IGtub3dzIGVub3VnaCBhYm91dCB0aGUgaXRlcmF0b3IgaW1wbGVtZW50YXRp
b24gdG8gc2V0IHZhbGlkCisgKiBpbmRleCB2YWx1ZXMuCisgKgorICogVUNoYXJJdGVyYXRvciBm
dW5jdGlvbnMgcmV0dXJuIGNvZGUgdW5pdCB2YWx1ZXMgMC4uMHhmZmZmLAorICogb3IgVV9TRU5U
SU5FTCBpZiB0aGUgaXRlcmF0aW9uIGJvdW5kcyBhcmUgcmVhY2hlZC4KKyAqCisgKiBAc3RhYmxl
IElDVSAyLjEKKyAqLworc3RydWN0IFVDaGFySXRlcmF0b3IgeworICAgIC8qKgorICAgICAqIChw
cm90ZWN0ZWQpIFBvaW50ZXIgdG8gc3RyaW5nIG9yIHdyYXBwZWQgb2JqZWN0IG9yIHNpbWlsYXIu
CisgICAgICogTm90IHVzZWQgYnkgY2FsbGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAg
ICAqLworICAgIGNvbnN0IHZvaWQgKmNvbnRleHQ7CisKKyAgICAvKioKKyAgICAgKiAocHJvdGVj
dGVkKSBMZW5ndGggb2Ygc3RyaW5nIG9yIHNpbWlsYXIuCisgICAgICogTm90IHVzZWQgYnkgY2Fs
bGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIGludDMyX3QgbGVuZ3Ro
OworCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgU3RhcnQgaW5kZXggb3Igc2ltaWxhci4K
KyAgICAgKiBOb3QgdXNlZCBieSBjYWxsZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAg
ICovCisgICAgaW50MzJfdCBzdGFydDsKKworICAgIC8qKgorICAgICAqIChwcm90ZWN0ZWQpIEN1
cnJlbnQgaW5kZXggb3Igc2ltaWxhci4KKyAgICAgKiBOb3QgdXNlZCBieSBjYWxsZXIuCisgICAg
ICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgaW50MzJfdCBpbmRleDsKKworICAgIC8q
KgorICAgICAqIChwcm90ZWN0ZWQpIExpbWl0IGluZGV4IG9yIHNpbWlsYXIuCisgICAgICogTm90
IHVzZWQgYnkgY2FsbGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIGlu
dDMyX3QgbGltaXQ7CisKKyAgICAvKioKKyAgICAgKiAocHJvdGVjdGVkKSBVc2VkIGJ5IFVURi04
IGl0ZXJhdG9ycyBhbmQgcG9zc2libHkgb3RoZXJzLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQor
ICAgICAqLworICAgIGludDMyX3QgcmVzZXJ2ZWRGaWVsZDsKKworICAgIC8qKgorICAgICAqIChw
dWJsaWMpIFJldHVybnMgdGhlIGN1cnJlbnQgcG9zaXRpb24gb3IgdGhlCisgICAgICogc3RhcnQg
b3IgbGltaXQgaW5kZXggb2YgdGhlIGl0ZXJhdGlvbiByYW5nZS4KKyAgICAgKgorICAgICAqIEBz
ZWUgVUNoYXJJdGVyYXRvckdldEluZGV4CisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICov
CisgICAgVUNoYXJJdGVyYXRvckdldEluZGV4ICpnZXRJbmRleDsKKworICAgIC8qKgorICAgICAq
IChwdWJsaWMpIE1vdmVzIHRoZSBjdXJyZW50IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBzdGFy
dCBvciBsaW1pdCBvZiB0aGUKKyAgICAgKiBpdGVyYXRpb24gcmFuZ2UsIG9yIHJlbGF0aXZlIHRv
IHRoZSBjdXJyZW50IHBvc2l0aW9uIGl0c2VsZi4KKyAgICAgKiBUaGUgbW92ZW1lbnQgaXMgZXhw
cmVzc2VkIGluIG51bWJlcnMgb2YgY29kZSB1bml0cyBmb3J3YXJkCisgICAgICogb3IgYmFja3dh
cmQgYnkgc3BlY2lmeWluZyBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGRlbHRhLgorICAgICAqCisg
ICAgICogQHNlZSBVQ2hhckl0ZXJhdG9yTW92ZQorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAg
ICAqLworICAgIFVDaGFySXRlcmF0b3JNb3ZlICptb3ZlOworCisgICAgLyoqCisgICAgICogKHB1
YmxpYykgQ2hlY2sgaWYgY3VycmVudCgpIGFuZCBuZXh0KCkgY2FuIHN0aWxsCisgICAgICogcmV0
dXJuIGFub3RoZXIgY29kZSB1bml0LgorICAgICAqCisgICAgICogQHNlZSBVQ2hhckl0ZXJhdG9y
SGFzTmV4dAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIFVDaGFySXRlcmF0
b3JIYXNOZXh0ICpoYXNOZXh0OworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgQ2hlY2sgaWYg
cHJldmlvdXMoKSBjYW4gc3RpbGwgcmV0dXJuIGFub3RoZXIgY29kZSB1bml0LgorICAgICAqCisg
ICAgICogQHNlZSBVQ2hhckl0ZXJhdG9ySGFzUHJldmlvdXMKKyAgICAgKiBAc3RhYmxlIElDVSAy
LjEKKyAgICAgKi8KKyAgICBVQ2hhckl0ZXJhdG9ySGFzUHJldmlvdXMgKmhhc1ByZXZpb3VzOwor
CisgICAgLyoqCisgICAgICogKHB1YmxpYykgUmV0dXJuIHRoZSBjb2RlIHVuaXQgYXQgdGhlIGN1
cnJlbnQgcG9zaXRpb24sCisgICAgICogb3IgVV9TRU5USU5FTCBpZiB0aGVyZSBpcyBub25lIChp
bmRleCBpcyBhdCB0aGUgbGltaXQpLgorICAgICAqCisgICAgICogQHNlZSBVQ2hhckl0ZXJhdG9y
Q3VycmVudAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIFVDaGFySXRlcmF0
b3JDdXJyZW50ICpjdXJyZW50OworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgUmV0dXJuIHRo
ZSBjb2RlIHVuaXQgYXQgdGhlIGN1cnJlbnQgaW5kZXggYW5kIGluY3JlbWVudAorICAgICAqIHRo
ZSBpbmRleCAocG9zdC1pbmNyZW1lbnQsIGxpa2Ugc1tpKytdKSwKKyAgICAgKiBvciByZXR1cm4g
VV9TRU5USU5FTCBpZiB0aGVyZSBpcyBub25lIChpbmRleCBpcyBhdCB0aGUgbGltaXQpLgorICAg
ICAqCisgICAgICogQHNlZSBVQ2hhckl0ZXJhdG9yTmV4dAorICAgICAqIEBzdGFibGUgSUNVIDIu
MQorICAgICAqLworICAgIFVDaGFySXRlcmF0b3JOZXh0ICpuZXh0OworCisgICAgLyoqCisgICAg
ICogKHB1YmxpYykgRGVjcmVtZW50IHRoZSBpbmRleCBhbmQgcmV0dXJuIHRoZSBjb2RlIHVuaXQg
ZnJvbSB0aGVyZQorICAgICAqIChwcmUtZGVjcmVtZW50LCBsaWtlIHNbLS1pXSksCisgICAgICog
b3IgcmV0dXJuIFVfU0VOVElORUwgaWYgdGhlcmUgaXMgbm9uZSAoaW5kZXggaXMgYXQgdGhlIHN0
YXJ0KS4KKyAgICAgKgorICAgICAqIEBzZWUgVUNoYXJJdGVyYXRvclByZXZpb3VzCisgICAgICog
QHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgVUNoYXJJdGVyYXRvclByZXZpb3VzICpwcmV2
aW91czsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIFJlc2VydmVkIGZvciBmdXR1cmUgdXNl
LiBDdXJyZW50bHkgTlVMTC4KKyAgICAgKgorICAgICAqIEBzZWUgVUNoYXJJdGVyYXRvclJlc2Vy
dmVkCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgVUNoYXJJdGVyYXRvclJl
c2VydmVkICpyZXNlcnZlZEZuOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgUmV0dXJuIHRo
ZSBzdGF0ZSBvZiB0aGUgaXRlcmF0b3IsIHRvIGJlIHJlc3RvcmVkIGxhdGVyIHdpdGggc2V0U3Rh
dGUoKS4KKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgaXMgTlVMTCBpZiB0aGUgaXRlcmF0
b3IgZG9lcyBub3QgaW1wbGVtZW50IGl0LgorICAgICAqCisgICAgICogQHNlZSBVQ2hhckl0ZXJh
dG9yR2V0CisgICAgICogQHN0YWJsZSBJQ1UgMi42CisgICAgICovCisgICAgVUNoYXJJdGVyYXRv
ckdldFN0YXRlICpnZXRTdGF0ZTsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIFJlc3RvcmUg
dGhlIGl0ZXJhdG9yIHN0YXRlIGZyb20gdGhlIHN0YXRlIHdvcmQgZnJvbSBhIGNhbGwKKyAgICAg
KiB0byBnZXRTdGF0ZSgpLgorICAgICAqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxMIGlm
IHRoZSBpdGVyYXRvciBkb2VzIG5vdCBpbXBsZW1lbnQgaXQuCisgICAgICoKKyAgICAgKiBAc2Vl
IFVDaGFySXRlcmF0b3JTZXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICBV
Q2hhckl0ZXJhdG9yU2V0U3RhdGUgKnNldFN0YXRlOworfTsKKworLyoqCisgKiBIZWxwZXIgZnVu
Y3Rpb24gZm9yIFVDaGFySXRlcmF0b3IgdG8gZ2V0IHRoZSBjb2RlIHBvaW50CisgKiBhdCB0aGUg
Y3VycmVudCBpbmRleC4KKyAqCisgKiBSZXR1cm4gdGhlIGNvZGUgcG9pbnQgdGhhdCBpbmNsdWRl
cyB0aGUgY29kZSB1bml0IGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLAorICogb3IgVV9TRU5USU5F
TCBpZiB0aGVyZSBpcyBub25lIChpbmRleCBpcyBhdCB0aGUgbGltaXQpLgorICogSWYgdGhlIGN1
cnJlbnQgY29kZSB1bml0IGlzIGEgbGVhZCBvciB0cmFpbCBzdXJyb2dhdGUsCisgKiB0aGVuIHRo
ZSBmb2xsb3dpbmcgb3IgcHJlY2VkaW5nIHN1cnJvZ2F0ZSBpcyB1c2VkIHRvIGZvcm0KKyAqIHRo
ZSBjb2RlIHBvaW50IHZhbHVlLgorICoKKyAqIEBwYXJhbSBpdGVyIHRoZSBVQ2hhckl0ZXJhdG9y
IHN0cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCisgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGNvZGUg
cG9pbnQKKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzZWUgVTE2X0dFVAorICogQHNl
ZSBVbmljb2RlU3RyaW5nOjpjaGFyMzJBdCgpCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLworVV9T
VEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3VpdGVyX2N1cnJlbnQzMihVQ2hhckl0ZXJhdG9yICpp
dGVyKTsKKworLyoqCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFVDaGFySXRlcmF0b3IgdG8gZ2V0
IHRoZSBuZXh0IGNvZGUgcG9pbnQuCisgKgorICogUmV0dXJuIHRoZSBjb2RlIHBvaW50IGF0IHRo
ZSBjdXJyZW50IGluZGV4IGFuZCBpbmNyZW1lbnQKKyAqIHRoZSBpbmRleCAocG9zdC1pbmNyZW1l
bnQsIGxpa2Ugc1tpKytdKSwKKyAqIG9yIHJldHVybiBVX1NFTlRJTkVMIGlmIHRoZXJlIGlzIG5v
bmUgKGluZGV4IGlzIGF0IHRoZSBsaW1pdCkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFy
SXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIGN1cnJl
bnQgY29kZSBwb2ludCAoYW5kIHBvc3QtaW5jcmVtZW50IHRoZSBjdXJyZW50IGluZGV4KQorICoK
KyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICogQHNlZSBVMTZfTkVYVAorICogQHN0YWJsZSBJQ1Ug
Mi4xCisgKi8KK1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1aXRlcl9uZXh0MzIoVUNoYXJJ
dGVyYXRvciAqaXRlcik7CisKKy8qKgorICogSGVscGVyIGZ1bmN0aW9uIGZvciBVQ2hhckl0ZXJh
dG9yIHRvIGdldCB0aGUgcHJldmlvdXMgY29kZSBwb2ludC4KKyAqCisgKiBEZWNyZW1lbnQgdGhl
IGluZGV4IGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgZnJvbSB0aGVyZQorICogKHByZS1kZWNy
ZW1lbnQsIGxpa2Ugc1stLWldKSwKKyAqIG9yIHJldHVybiBVX1NFTlRJTkVMIGlmIHRoZXJlIGlz
IG5vbmUgKGluZGV4IGlzIGF0IHRoZSBzdGFydCkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVD
aGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIHBy
ZXZpb3VzIGNvZGUgcG9pbnQgKGFmdGVyIHByZS1kZWNyZW1lbnRpbmcgdGhlIGN1cnJlbnQgaW5k
ZXgpCisgKgorICogQHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc2VlIFUxNl9QUkVWCisgKiBAc3Rh
YmxlIElDVSAyLjEKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3VpdGVyX3ByZXZp
b3VzMzIoVUNoYXJJdGVyYXRvciAqaXRlcik7CisKKy8qKgorICogR2V0IHRoZSAic3RhdGUiIG9m
IHRoZSBpdGVyYXRvciBpbiB0aGUgZm9ybSBvZiBhIHNpbmdsZSAzMi1iaXQgd29yZC4KKyAqIFRo
aXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIGl0ZXItPmdldFN0YXRlKGl0
ZXIpCisgKiBpZiBpdGVyLT5nZXRTdGF0ZSBpcyBub3QgTlVMTDsKKyAqIGlmIGl0IGlzIE5VTEwg
b3IgYW55IG90aGVyIGVycm9yIG9jY3VycywgdGhlbiBVSVRFUl9OT19TVEFURSBpcyByZXR1cm5l
ZC4KKyAqCisgKiBTb21lIFVDaGFySXRlcmF0b3IgaW1wbGVtZW50YXRpb25zIG1heSBub3QgYmUg
YWJsZSB0byByZXR1cm4KKyAqIGEgdmFsaWQgc3RhdGUgZm9yIGVhY2ggcG9zaXRpb24sIGluIHdo
aWNoIGNhc2UgdGhleSByZXR1cm4gVUlURVJfTk9fU1RBVEUgaW5zdGVhZC4KKyAqIFRoaXMgd2ls
bCBiZSBjbGVhcmx5IGRvY3VtZW50ZWQgZm9yIGVhY2ggc3VjaCBpdGVyYXRvciAobm9uZSBvZiB0
aGUgcHVibGljIG9uZXMgaGVyZSkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRlcmF0
b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIHN0YXRlIHdvcmQK
KyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzZWUgVUNoYXJJdGVyYXRvckdldFN0YXRl
CisgKiBAc2VlIFVJVEVSX05PX1NUQVRFCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworVV9TVEFC
TEUgdWludDMyX3QgVV9FWFBPUlQyCit1aXRlcl9nZXRTdGF0ZShjb25zdCBVQ2hhckl0ZXJhdG9y
ICppdGVyKTsKKworLyoqCisgKiBSZXN0b3JlIHRoZSAic3RhdGUiIG9mIHRoZSBpdGVyYXRvciB1
c2luZyBhIHN0YXRlIHdvcmQgZnJvbSBhIGdldFN0YXRlKCkgY2FsbC4KKyAqIFRoaXMgaXMgYSBj
b252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIGl0ZXItPnNldFN0YXRlKGl0ZXIsIHN0YXRl
LCBwRXJyb3JDb2RlKQorICogaWYgaXRlci0+c2V0U3RhdGUgaXMgbm90IE5VTEw7IGlmIGl0IGlz
IE5VTEwsIHRoZW4gVV9VTlNVUFBPUlRFRF9FUlJPUiBpcyBzZXQuCisgKgorICogQHBhcmFtIGl0
ZXIgdGhlIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEBwYXJh
bSBzdGF0ZSB0aGUgc3RhdGUgd29yZCBmcm9tIGEgZ2V0U3RhdGUoKSBjYWxsCisgKiAgICAgICAg
ICAgICAgb24gYSBzYW1lLXR5cGUsIHNhbWUtc3RyaW5nIGl0ZXJhdG9yCisgKiBAcGFyYW0gcEVy
cm9yQ29kZSBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLAor
ICogICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJl
Zm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBz
ZWUgVUNoYXJJdGVyYXRvclNldFN0YXRlCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworVV9TVEFC
TEUgdm9pZCBVX0VYUE9SVDIKK3VpdGVyX3NldFN0YXRlKFVDaGFySXRlcmF0b3IgKml0ZXIsIHVp
bnQzMl90IHN0YXRlLCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisgKiBTZXQgdXAg
YSBVQ2hhckl0ZXJhdG9yIHRvIGl0ZXJhdGUgb3ZlciBhIHN0cmluZy4KKyAqCisgKiBTZXRzIHRo
ZSBVQ2hhckl0ZXJhdG9yIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBpdGVyYXRpb24gb3ZlciB0aGUg
c3RyaW5nIHMKKyAqIHdpdGggaXRlcmF0aW9uIGJvdW5kYXJpZXMgc3RhcnQ9aW5kZXg9MCBhbmQg
bGVuZ3RoPWxpbWl0PXN0cmluZyBsZW5ndGguCisgKiBUaGUgInByb3ZpZGVyIiBtYXkgc2V0IHRo
ZSBzdGFydCwgaW5kZXgsIGFuZCBsaW1pdCB2YWx1ZXMgYXQgYW55IHRpbWUKKyAqIHdpdGhpbiB0
aGUgcmFuZ2UgMC4ubGVuZ3RoLgorICogVGhlIGxlbmd0aCBmaWVsZCB3aWxsIGJlIGlnbm9yZWQu
CisgKgorICogVGhlIHN0cmluZyBwb2ludGVyIHMgaXMgc2V0IGludG8gVUNoYXJJdGVyYXRvci5j
b250ZXh0IHdpdGhvdXQgY29weWluZworICogb3IgcmVhbGxvY2F0aW5nIHRoZSBzdHJpbmcgY29u
dGVudHMuCisgKgorICogZ2V0U3RhdGUoKSBzaW1wbHkgcmV0dXJucyB0aGUgY3VycmVudCBpbmRl
eC4KKyAqIG1vdmUoKSB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIGZpbmFsIGluZGV4LgorICoKKyAq
IEBwYXJhbSBpdGVyIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlIHRvIGJlIHNldCBmb3IgaXRlcmF0
aW9uCisgKiBAcGFyYW0gcyBTdHJpbmcgdG8gaXRlcmF0ZSBvdmVyCisgKiBAcGFyYW0gbGVuZ3Ro
IExlbmd0aCBvZiBzLCBvciAtMSBpZiBOVUwtdGVybWluYXRlZAorICoKKyAqIEBzZWUgVUNoYXJJ
dGVyYXRvcgorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQy
Cit1aXRlcl9zZXRTdHJpbmcoVUNoYXJJdGVyYXRvciAqaXRlciwgY29uc3QgVUNoYXIgKnMsIGlu
dDMyX3QgbGVuZ3RoKTsKKworLyoqCisgKiBTZXQgdXAgYSBVQ2hhckl0ZXJhdG9yIHRvIGl0ZXJh
dGUgb3ZlciBhIFVURi0xNkJFIHN0cmluZworICogKGJ5dGUgdmVjdG9yIHdpdGggYSBiaWctZW5k
aWFuIHBhaXIgb2YgYnl0ZXMgcGVyIFVDaGFyKS4KKyAqCisgKiBFdmVyeXRoaW5nIHdvcmtzIGp1
c3QgbGlrZSB3aXRoIGEgbm9ybWFsIFVDaGFyIGl0ZXJhdG9yICh1aXRlcl9zZXRTdHJpbmcpLAor
ICogZXhjZXB0IHRoYXQgVUNoYXJzIGFyZSBhc3NlbWJsZWQgZnJvbSBieXRlIHBhaXJzLAorICog
YW5kIHRoYXQgdGhlIGxlbmd0aCBhcmd1bWVudCBoZXJlIGluZGljYXRlcyBhbiBldmVuIG51bWJl
ciBvZiBieXRlcy4KKyAqCisgKiBnZXRTdGF0ZSgpIHNpbXBseSByZXR1cm5zIHRoZSBjdXJyZW50
IGluZGV4LgorICogbW92ZSgpIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgZmluYWwgaW5kZXguCisg
KgorICogQHBhcmFtIGl0ZXIgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgdG8gYmUgc2V0IGZvciBp
dGVyYXRpb24KKyAqIEBwYXJhbSBzIFVURi0xNkJFIHN0cmluZyB0byBpdGVyYXRlIG92ZXIKKyAq
IEBwYXJhbSBsZW5ndGggTGVuZ3RoIG9mIHMgYXMgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXMsIG9y
IC0xIGlmIE5VTC10ZXJtaW5hdGVkCisgKiAgICAgICAgICAgICAgIChOVUwgbWVhbnMgcGFpciBv
ZiAwIGJ5dGVzIGF0IGV2ZW4gaW5kZXggZnJvbSBzKQorICoKKyAqIEBzZWUgVUNoYXJJdGVyYXRv
cgorICogQHNlZSB1aXRlcl9zZXRTdHJpbmcKKyAqIEBzdGFibGUgSUNVIDIuNgorICovCitVX1NU
QUJMRSB2b2lkIFVfRVhQT1JUMgordWl0ZXJfc2V0VVRGMTZCRShVQ2hhckl0ZXJhdG9yICppdGVy
LCBjb25zdCBjaGFyICpzLCBpbnQzMl90IGxlbmd0aCk7CisKKy8qKgorICogU2V0IHVwIGEgVUNo
YXJJdGVyYXRvciB0byBpdGVyYXRlIG92ZXIgYSBVVEYtOCBzdHJpbmcuCisgKgorICogU2V0cyB0
aGUgVUNoYXJJdGVyYXRvciBmdW5jdGlvbiBwb2ludGVycyBmb3IgaXRlcmF0aW9uIG92ZXIgdGhl
IFVURi04IHN0cmluZyBzCisgKiB3aXRoIFVURi04IGl0ZXJhdGlvbiBib3VuZGFyaWVzIDAgYW5k
IGxlbmd0aC4KKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBjb3VudHMgdGhlIFVURi0xNiBpbmRleCBv
biB0aGUgZmx5IGFuZAorICogbGF6aWx5IGV2YWx1YXRlcyB0aGUgVVRGLTE2IGxlbmd0aCBvZiB0
aGUgdGV4dC4KKyAqCisgKiBUaGUgc3RhcnQgZmllbGQgaXMgdXNlZCBhcyB0aGUgVVRGLTggb2Zm
c2V0LCB0aGUgbGltaXQgZmllbGQgYXMgdGhlIFVURi04IGxlbmd0aC4KKyAqIFdoZW4gdGhlIHJl
c2VydmVkRmllbGQgaXMgbm90IDAsIHRoZW4gaXQgY29udGFpbnMgYSBzdXBwbGVtZW50YXJ5IGNv
ZGUgcG9pbnQKKyAqIGFuZCB0aGUgVVRGLTE2IGluZGV4IGlzIGJldHdlZW4gdGhlIHR3byBjb3Jy
ZXNwb25kaW5nIHN1cnJvZ2F0ZXMuCisgKiBBdCB0aGF0IHBvaW50LCB0aGUgVVRGLTggaW5kZXgg
aXMgYmVoaW5kIHRoYXQgY29kZSBwb2ludC4KKyAqCisgKiBUaGUgVVRGLTggc3RyaW5nIHBvaW50
ZXIgcyBpcyBzZXQgaW50byBVQ2hhckl0ZXJhdG9yLmNvbnRleHQgd2l0aG91dCBjb3B5aW5nCisg
KiBvciByZWFsbG9jYXRpbmcgdGhlIHN0cmluZyBjb250ZW50cy4KKyAqCisgKiBnZXRTdGF0ZSgp
IHJldHVybnMgYSBzdGF0ZSB2YWx1ZSBjb25zaXN0aW5nIG9mCisgKiAtIHRoZSBjdXJyZW50IFVU
Ri04IHNvdXJjZSBieXRlIGluZGV4IChiaXRzIDMxLi4xKQorICogLSBhIGZsYWcgKGJpdCAwKSB0
aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBVQ2hhciBwb3NpdGlvbiBpcyBpbiB0aGUgbWlkZGxl
CisgKiAgIG9mIGEgc3Vycm9nYXRlIHBhaXIKKyAqICAgKGZyb20gYSA0LWJ5dGUgVVRGLTggc2Vx
dWVuY2UgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCkKKyAq
CisgKiBnZXRTdGF0ZSgpIGNhbm5vdCBhbHNvIGVuY29kZSB0aGUgVVRGLTE2IGluZGV4IGluIHRo
ZSBzdGF0ZSB2YWx1ZS4KKyAqIG1vdmUocmVsYXRpdmUgdG8gbGltaXQgb3IgbGVuZ3RoKSwgb3IK
KyAqIG1vdmUocmVsYXRpdmUgdG8gY3VycmVudCkgYWZ0ZXIgc2V0U3RhdGUoKSwgbWF5IHJldHVy
biBVSVRFUl9VTktOT1dOX0lOREVYLgorICoKKyAqIEBwYXJhbSBpdGVyIFVDaGFySXRlcmF0b3Ig
c3RydWN0dXJlIHRvIGJlIHNldCBmb3IgaXRlcmF0aW9uCisgKiBAcGFyYW0gcyBVVEYtOCBzdHJp
bmcgdG8gaXRlcmF0ZSBvdmVyCisgKiBAcGFyYW0gbGVuZ3RoIExlbmd0aCBvZiBzIGluIGJ5dGVz
LCBvciAtMSBpZiBOVUwtdGVybWluYXRlZAorICoKKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICog
QHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1aXRlcl9zZXRV
VEY4KFVDaGFySXRlcmF0b3IgKml0ZXIsIGNvbnN0IGNoYXIgKnMsIGludDMyX3QgbGVuZ3RoKTsK
KworI2lmZGVmIFhQX0NQTFVTUExVUworCisvKioKKyAqIFNldCB1cCBhIFVDaGFySXRlcmF0b3Ig
dG8gd3JhcCBhcm91bmQgYSBDKysgQ2hhcmFjdGVySXRlcmF0b3IuCisgKgorICogU2V0cyB0aGUg
VUNoYXJJdGVyYXRvciBmdW5jdGlvbiBwb2ludGVycyBmb3IgaXRlcmF0aW9uIHVzaW5nIHRoZQor
ICogQ2hhcmFjdGVySXRlcmF0b3IgY2hhckl0ZXIuCisgKgorICogVGhlIENoYXJhY3Rlckl0ZXJh
dG9yIHBvaW50ZXIgY2hhckl0ZXIgaXMgc2V0IGludG8gVUNoYXJJdGVyYXRvci5jb250ZXh0Cisg
KiB3aXRob3V0IGNvcHlpbmcgb3IgY2xvbmluZyB0aGUgQ2hhcmFjdGVySXRlcmF0b3Igb2JqZWN0
LgorICogVGhlIG90aGVyICJwcm90ZWN0ZWQiIFVDaGFySXRlcmF0b3IgZmllbGRzIGFyZSBzZXQg
dG8gMCBhbmQgd2lsbCBiZSBpZ25vcmVkLgorICogVGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQgYm91
bmRhcmllcyBhcmUgY29udHJvbGxlZCBieSB0aGUgQ2hhcmFjdGVySXRlcmF0b3IuCisgKgorICog
Z2V0U3RhdGUoKSBzaW1wbHkgcmV0dXJucyB0aGUgY3VycmVudCBpbmRleC4KKyAqIG1vdmUoKSB3
aWxsIGFsd2F5cyByZXR1cm4gdGhlIGZpbmFsIGluZGV4LgorICoKKyAqIEBwYXJhbSBpdGVyIFVD
aGFySXRlcmF0b3Igc3RydWN0dXJlIHRvIGJlIHNldCBmb3IgaXRlcmF0aW9uCisgKiBAcGFyYW0g
Y2hhckl0ZXIgQ2hhcmFjdGVySXRlcmF0b3IgdG8gd3JhcAorICoKKyAqIEBzZWUgVUNoYXJJdGVy
YXRvcgorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1
aXRlcl9zZXRDaGFyYWN0ZXJJdGVyYXRvcihVQ2hhckl0ZXJhdG9yICppdGVyLCBDaGFyYWN0ZXJJ
dGVyYXRvciAqY2hhckl0ZXIpOworCisvKioKKyAqIFNldCB1cCBhIFVDaGFySXRlcmF0b3IgdG8g
aXRlcmF0ZSBvdmVyIGEgQysrIFJlcGxhY2VhYmxlLgorICoKKyAqIFNldHMgdGhlIFVDaGFySXRl
cmF0b3IgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIGl0ZXJhdGlvbiBvdmVyIHRoZQorICogUmVwbGFj
ZWFibGUgcmVwIHdpdGggaXRlcmF0aW9uIGJvdW5kYXJpZXMgc3RhcnQ9aW5kZXg9MCBhbmQKKyAq
IGxlbmd0aD1saW1pdD1yZXAtPmxlbmd0aCgpLgorICogVGhlICJwcm92aWRlciIgbWF5IHNldCB0
aGUgc3RhcnQsIGluZGV4LCBhbmQgbGltaXQgdmFsdWVzIGF0IGFueSB0aW1lCisgKiB3aXRoaW4g
dGhlIHJhbmdlIDAuLmxlbmd0aD1yZXAtPmxlbmd0aCgpLgorICogVGhlIGxlbmd0aCBmaWVsZCB3
aWxsIGJlIGlnbm9yZWQuCisgKgorICogVGhlIFJlcGxhY2VhYmxlIHBvaW50ZXIgcmVwIGlzIHNl
dCBpbnRvIFVDaGFySXRlcmF0b3IuY29udGV4dCB3aXRob3V0IGNvcHlpbmcKKyAqIG9yIGNsb25p
bmcvcmVhbGxvY2F0aW5nIHRoZSBSZXBsYWNlYWJsZSBvYmplY3QuCisgKgorICogZ2V0U3RhdGUo
KSBzaW1wbHkgcmV0dXJucyB0aGUgY3VycmVudCBpbmRleC4KKyAqIG1vdmUoKSB3aWxsIGFsd2F5
cyByZXR1cm4gdGhlIGZpbmFsIGluZGV4LgorICoKKyAqIEBwYXJhbSBpdGVyIFVDaGFySXRlcmF0
b3Igc3RydWN0dXJlIHRvIGJlIHNldCBmb3IgaXRlcmF0aW9uCisgKiBAcGFyYW0gcmVwIFJlcGxh
Y2VhYmxlIHRvIGl0ZXJhdGUgb3ZlcgorICoKKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICogQHN0
YWJsZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1aXRlcl9zZXRSZXBs
YWNlYWJsZShVQ2hhckl0ZXJhdG9yICppdGVyLCBjb25zdCBSZXBsYWNlYWJsZSAqcmVwKTsKKwor
I2VuZGlmCisKK1VfQ0RFQ0xfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEds
dWUvaWN1L3VuaWNvZGUvdW1hY2hpbmUuaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3Vt
YWNoaW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg0MWY1MwotLS0g
L2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VtYWNoaW5lLmgKQEAg
LTAsMCArMSwzNzEgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5cmln
aHQgKEMpIDE5OTktMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENv
cnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqICAgZmlsZSBuYW1lOiAgdW1hY2hpbmUuaAorKiAgIGVuY29kaW5nOiAg
IFVTLUFTQ0lJCisqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50YXRpb246
NAorKgorKiAgIGNyZWF0ZWQgb246IDE5OTlzZXAxMworKiAgIGNyZWF0ZWQgYnk6IE1hcmt1cyBX
LiBTY2hlcmVyCisqCisqICAgVGhpcyBmaWxlIGRlZmluZXMgYmFzaWMgdHlwZXMgYW5kIGNvbnN0
YW50cyBmb3IgdXRmLmggdG8gYmUKKyogICBwbGF0Zm9ybS1pbmRlcGVuZGVudC4gdW1hY2hpbmUu
aCBhbmQgdXRmLmggYXJlIGluY2x1ZGVkIGludG8KKyogICB1dHlwZXMuaCB0byBwcm92aWRlIGFs
bCB0aGUgZ2VuZXJhbCBkZWZpbml0aW9ucyBmb3IgSUNVLgorKiAgIEFsbCBvZiB0aGVzZSBkZWZp
bml0aW9ucyB1c2VkIHRvIGJlIGluIHV0eXBlcy5oIGJlZm9yZQorKiAgIHRoZSBVVEYtaGFuZGxp
bmcgbWFjcm9zIG1hZGUgdGhpcyB1bm1haW50YWluYWJsZS4KKyovCisKKyNpZm5kZWYgX19VTUFD
SElORV9IX18KKyNkZWZpbmUgX19VTUFDSElORV9IX18KKworCisvKioKKyAqIFxmaWxlCisgKiBc
YnJpZWYgQmFzaWMgdHlwZXMgYW5kIGNvbnN0YW50cyBmb3IgVVRGIAorICogCisgKiA8aDI+IEJh
c2ljIHR5cGVzIGFuZCBjb25zdGFudHMgZm9yIFVURiA8L2gyPgorICogICBUaGlzIGZpbGUgZGVm
aW5lcyBiYXNpYyB0eXBlcyBhbmQgY29uc3RhbnRzIGZvciB1dGYuaCB0byBiZQorICogICBwbGF0
Zm9ybS1pbmRlcGVuZGVudC4gdW1hY2hpbmUuaCBhbmQgdXRmLmggYXJlIGluY2x1ZGVkIGludG8K
KyAqICAgdXR5cGVzLmggdG8gcHJvdmlkZSBhbGwgdGhlIGdlbmVyYWwgZGVmaW5pdGlvbnMgZm9y
IElDVS4KKyAqICAgQWxsIG9mIHRoZXNlIGRlZmluaXRpb25zIHVzZWQgdG8gYmUgaW4gdXR5cGVz
LmggYmVmb3JlCisgKiAgIHRoZSBVVEYtaGFuZGxpbmcgbWFjcm9zIG1hZGUgdGhpcyB1bm1haW50
YWluYWJsZS4KKyAqIAorICovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEluY2x1ZGUgcGxh
dGZvcm0tZGVwZW5kZW50IGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLworLyogd2hpY2ggYXJlIGNvbnRhaW5lZCBpbiB0aGUgcGxhdGZvcm0tc3BlY2lmaWMg
ZmlsZSBwbGF0Zm9ybS5oICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwor
I2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKFdJTjY0KSB8
fCBkZWZpbmVkKF9XSU42NCkKKyMgICBpbmNsdWRlICJ1bmljb2RlL3B3aW4zMi5oIgorI2Vsc2UK
KyMgICBpbmNsdWRlICJ1bmljb2RlL3BsYXRmb3JtLmgiCisjZW5kaWYKKworLyoKKyAqIEFOU0kg
QyBoZWFkZXJzOgorICogc3RkZGVmLmggZGVmaW5lcyB3Y2hhcl90CisgKi8KKyNpbmNsdWRlIDxz
dGRkZWYuaD4KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBYUF9DUExVU1BMVVMgaXMgYSBj
cm9zcy1wbGF0Zm9ybSBzeW1ib2wgd2hpY2ggc2hvdWxkIGJlIGRlZmluZWQgd2hlbiAgICAgKi8K
Ky8qIHVzaW5nIEMrKy4gIEl0IHNob3VsZCBub3QgYmUgZGVmaW5lZCB3aGVuIGNvbXBpbGluZyB1
bmRlciBDLiAgICAgICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNpZmRlZiBf
X2NwbHVzcGx1cworIyAgIGlmbmRlZiBYUF9DUExVU1BMVVMKKyMgICAgICAgZGVmaW5lIFhQX0NQ
TFVTUExVUworIyAgIGVuZGlmCisjZWxzZQorIyAgIHVuZGVmIFhQX0NQTFVTUExVUworI2VuZGlm
CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRm9yIEMgd3JhcHBlcnMsIHdlIHVzZSB0aGUg
c3ltYm9sIFVfU1RBQkxFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIFRo
aXMgd29ya3MgcHJvcGVybHkgaWYgdGhlIGluY2x1ZGVyIGlzIEMgb3IgQysrLiAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworLyogRnVuY3Rpb25zIGFyZSBkZWNsYXJlZCAgIFVfU1RBQkxFIHJl
dHVybi10eXBlIFVfRVhQT1JUMiBmdW5jdGlvbi1uYW1lKCkuLi4gKi8KKy8qPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0qLworCisvKioKKyAqIFxkZWYgVV9DRlVOQworICogVGhpcyBpcyB1c2VkIGluIGEgZGVj
bGFyYXRpb24gb2YgYSBsaWJyYXJ5IHByaXZhdGUgSUNVIEMgZnVuY3Rpb24uCisgKiBAc3RhYmxl
IElDVSAyLjQKKyAqLworCisvKioKKyAqIFxkZWYgVV9DREVDTF9CRUdJTgorICogVGhpcyBpcyB1
c2VkIHRvIGJlZ2luIGEgZGVjbGFyYXRpb24gb2YgYSBsaWJyYXJ5IHByaXZhdGUgSUNVIEMgQVBJ
LgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKworLyoqCisgKiBcZGVmIFVfQ0RFQ0xfRU5ECisg
KiBUaGlzIGlzIHVzZWQgdG8gZW5kIGEgZGVjbGFyYXRpb24gb2YgYSBsaWJyYXJ5IHByaXZhdGUg
SUNVIEMgQVBJIAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKworI2lmZGVmIFhQX0NQTFVTUExV
UworIyAgIGRlZmluZSBVX0NGVU5DIGV4dGVybiAiQyIKKyMgICBkZWZpbmUgVV9DREVDTF9CRUdJ
TiBleHRlcm4gIkMiIHsKKyMgICBkZWZpbmUgVV9DREVDTF9FTkQgICB9CisjZWxzZQorIyAgIGRl
ZmluZSBVX0NGVU5DIGV4dGVybgorIyAgIGRlZmluZSBVX0NERUNMX0JFR0lOCisjICAgZGVmaW5l
IFVfQ0RFQ0xfRU5ECisjZW5kaWYKKworLyoqCisgKiBcZGVmIFVfTkFNRVNQQUNFX0JFR0lOCisg
KiBUaGlzIGlzIHVzZWQgdG8gYmVnaW4gYSBkZWNsYXJhdGlvbiBvZiBhIHB1YmxpYyBJQ1UgQysr
IEFQSS4KKyAqIElmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgbmFtZXNwYWNlcywgdGhp
cyBkb2VzIG5vdGhpbmcuCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworCisvKioKKyAqIFxkZWYg
VV9OQU1FU1BBQ0VfRU5ECisgKiBUaGlzIGlzIHVzZWQgdG8gZW5kIGEgZGVjbGFyYXRpb24gb2Yg
YSBwdWJsaWMgSUNVIEMrKyBBUEkgCisgKiBJZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0
IG5hbWVzcGFjZXMsIHRoaXMgZG9lcyBub3RoaW5nLgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8K
KworLyoqCisgKiBcZGVmIFVfTkFNRVNQQUNFX1VTRQorICogVGhpcyBpcyB1c2VkIHRvIHNwZWNp
ZnkgdGhhdCB0aGUgcmVzdCBvZiB0aGUgY29kZSB1c2VzIHRoZQorICogcHVibGljIElDVSBDKysg
QVBJIG5hbWVzcGFjZS4KKyAqIElmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgbmFtZXNw
YWNlcywgdGhpcyBkb2VzIG5vdGhpbmcuCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworCisvKioK
KyAqIFxkZWYgVV9OQU1FU1BBQ0VfUVVBTElGSUVSCisgKiBUaGlzIGlzIHVzZWQgdG8gcXVhbGlm
eSB0aGF0IGEgZnVuY3Rpb24gb3IgY2xhc3MgaXMgcGFydCBvZgorICogdGhlIHB1YmxpYyBJQ1Ug
QysrIEFQSSBuYW1lc3BhY2UuCisgKiBJZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IG5h
bWVzcGFjZXMsIHRoaXMgZG9lcyBub3RoaW5nLgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKwor
LyogRGVmaW5lIG5hbWVzcGFjZSBzeW1ib2xzIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBpdC4g
Ki8KKyNpZiBVX0hBVkVfTkFNRVNQQUNFCisjICAgZGVmaW5lIFVfTkFNRVNQQUNFX0JFR0lOIG5h
bWVzcGFjZSBVX0lDVV9OQU1FU1BBQ0UgeworIyAgIGRlZmluZSBVX05BTUVTUEFDRV9FTkQgIH0K
KyMgICBkZWZpbmUgVV9OQU1FU1BBQ0VfVVNFIHVzaW5nIG5hbWVzcGFjZSBVX0lDVV9OQU1FU1BB
Q0U7CisjICAgZGVmaW5lIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVX0lDVV9OQU1FU1BBQ0U6Ogor
I2Vsc2UKKyMgICBkZWZpbmUgVV9OQU1FU1BBQ0VfQkVHSU4KKyMgICBkZWZpbmUgVV9OQU1FU1BB
Q0VfRU5ECisjICAgZGVmaW5lIFVfTkFNRVNQQUNFX1VTRQorIyAgIGRlZmluZSBVX05BTUVTUEFD
RV9RVUFMSUZJRVIKKyNlbmRpZgorCisvKiogVGhpcyBpcyB1c2VkIHRvIGRlY2xhcmUgYSBmdW5j
dGlvbiBhcyBhIHB1YmxpYyBJQ1UgQyBBUEkgQHN0YWJsZSBJQ1UgMi4wKi8KKyNkZWZpbmUgVV9D
QVBJIFVfQ0ZVTkMgVV9FWFBPUlQKKyNkZWZpbmUgVV9TVEFCTEUgVV9DQVBJCisjZGVmaW5lIFVf
RFJBRlQgIFVfQ0FQSQorI2RlZmluZSBVX0RFUFJFQ0FURUQgVV9DQVBJCisjZGVmaW5lIFVfT0JT
T0xFVEUgVV9DQVBJCisjZGVmaW5lIFVfSU5URVJOQUwgVV9DQVBJCisKKy8qPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0qLworLyogbGltaXRzIGZvciBpbnQzMl90IGV0Yy4sIGxpa2UgaW4gUE9TSVggaW50dHlw
ZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwor
I2lmbmRlZiBJTlQ4X01JTgorLyoqIFRoZSBzbWFsbGVzdCB2YWx1ZSBhbiA4IGJpdCBzaWduZWQg
aW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjAgKi8KKyMgICBkZWZpbmUgSU5UOF9NSU4g
ICAgICAgICgoaW50OF90KSgtMTI4KSkKKyNlbmRpZgorI2lmbmRlZiBJTlQxNl9NSU4KKy8qKiBU
aGUgc21hbGxlc3QgdmFsdWUgYSAxNiBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJs
ZSBJQ1UgMi4wICovCisjICAgZGVmaW5lIElOVDE2X01JTiAgICAgICAoKGludDE2X3QpKC0zMjc2
Ny0xKSkKKyNlbmRpZgorI2lmbmRlZiBJTlQzMl9NSU4KKy8qKiBUaGUgc21hbGxlc3QgdmFsdWUg
YSAzMiBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJsZSBJQ1UgMi4wICovCisjICAg
ZGVmaW5lIElOVDMyX01JTiAgICAgICAoKGludDMyX3QpKC0yMTQ3NDgzNjQ3LTEpKQorI2VuZGlm
CisKKyNpZm5kZWYgSU5UOF9NQVgKKy8qKiBUaGUgbGFyZ2VzdCB2YWx1ZSBhbiA4IGJpdCBzaWdu
ZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjAgKi8KKyMgICBkZWZpbmUgSU5UOF9N
QVggICAgICAgICgoaW50OF90KSgxMjcpKQorI2VuZGlmCisjaWZuZGVmIElOVDE2X01BWAorLyoq
IFRoZSBsYXJnZXN0IHZhbHVlIGEgMTYgYml0IHNpZ25lZCBpbnRlZ2VyIGNhbiBob2xkIEBzdGFi
bGUgSUNVIDIuMCAqLworIyAgIGRlZmluZSBJTlQxNl9NQVggICAgICAgKChpbnQxNl90KSgzMjc2
NykpCisjZW5kaWYKKyNpZm5kZWYgSU5UMzJfTUFYCisvKiogVGhlIGxhcmdlc3QgdmFsdWUgYSAz
MiBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJsZSBJQ1UgMi4wICovCisjICAgZGVm
aW5lIElOVDMyX01BWCAgICAgICAoKGludDMyX3QpKDIxNDc0ODM2NDcpKQorI2VuZGlmCisKKyNp
Zm5kZWYgVUlOVDhfTUFYCisvKiogVGhlIGxhcmdlc3QgdmFsdWUgYW4gOCBiaXQgdW5zaWduZWQg
aW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjAgKi8KKyMgICBkZWZpbmUgVUlOVDhfTUFY
ICAgICAgICgodWludDhfdCkoMjU1VSkpCisjZW5kaWYKKyNpZm5kZWYgVUlOVDE2X01BWAorLyoq
IFRoZSBsYXJnZXN0IHZhbHVlIGEgMTYgYml0IHVuc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0
YWJsZSBJQ1UgMi4wICovCisjICAgZGVmaW5lIFVJTlQxNl9NQVggICAgICAoKHVpbnQxNl90KSg2
NTUzNVUpKQorI2VuZGlmCisjaWZuZGVmIFVJTlQzMl9NQVgKKy8qKiBUaGUgbGFyZ2VzdCB2YWx1
ZSBhIDMyIGJpdCB1bnNpZ25lZCBpbnRlZ2VyIGNhbiBob2xkIEBzdGFibGUgSUNVIDIuMCAqLwor
IyAgIGRlZmluZSBVSU5UMzJfTUFYICAgICAgKCh1aW50MzJfdCkoNDI5NDk2NzI5NVUpKQorI2Vu
ZGlmCisKKyNpZiBkZWZpbmVkKFVfSU5UNjRfVF9VTkFWQUlMQUJMRSkKKyMgZXJyb3IgaW50NjRf
dCBpcyByZXF1aXJlZCBmb3IgZGVjaW1hbCBmb3JtYXQgYW5kIHJ1bGUtYmFzZWQgbnVtYmVyIGZv
cm1hdC4KKyNlbHNlCisjIGlmbmRlZiBJTlQ2NF9DCisvKioKKyAqIFByb3ZpZGVzIGEgcGxhdGZv
cm0gaW5kZXBlbmRlbnQgd2F5IHRvIHNwZWNpZnkgYSBzaWduZWQgNjQtYml0IGludGVnZXIgY29u
c3RhbnQuCisgKiBub3RlOiBtYXkgYmUgd3JvbmcgZm9yIHNvbWUgNjQgYml0IHBsYXRmb3JtcyAt
IGVuc3VyZSB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIElOVDY0X0MKKyAqIEBkcmFmdCBJQ1UgMi44
CisgKi8KKyMgICBkZWZpbmUgSU5UNjRfQyhjKSBjICMjIExMCisjIGVuZGlmCisjIGlmbmRlZiBV
SU5UNjRfQworLyoqCisgKiBQcm92aWRlcyBhIHBsYXRmb3JtIGluZGVwZW5kZW50IHdheSB0byBz
cGVjaWZ5IGFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIGNvbnN0YW50LgorICogbm90ZTogbWF5
IGJlIHdyb25nIGZvciBzb21lIDY0IGJpdCBwbGF0Zm9ybXMgLSBlbnN1cmUgeW91ciBjb21waWxl
ciBwcm92aWRlcyBVSU5UNjRfQworICogQGRyYWZ0IElDVSAyLjgKKyAqLworIyAgIGRlZmluZSBV
SU5UNjRfQyhjKSBjICMjIFVMTAorIyBlbmRpZgorIyBpZm5kZWYgVV9JTlQ2NF9NSU4KKy8qKiBU
aGUgc21hbGxlc3QgdmFsdWUgYSA2NCBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJs
ZSBJQ1UgMi44ICovCisjICAgICBkZWZpbmUgVV9JTlQ2NF9NSU4gICAgICAgKChpbnQ2NF90KShJ
TlQ2NF9DKC05MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKSkKKyMgZW5kaWYKKyMgaWZuZGVmIFVfSU5U
NjRfTUFYCisvKiogVGhlIGxhcmdlc3QgdmFsdWUgYSA2NCBiaXQgc2lnbmVkIGludGVnZXIgY2Fu
IGhvbGQgQHN0YWJsZSBJQ1UgMi44ICovCisjICAgICBkZWZpbmUgVV9JTlQ2NF9NQVggICAgICAg
KChpbnQ2NF90KShJTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKSkKKyMgZW5kaWYKKyMgaWZu
ZGVmIFVfVUlOVDY0X01BWAorLyoqIFRoZSBsYXJnZXN0IHZhbHVlIGEgNjQgYml0IHVuc2lnbmVk
IGludGVnZXIgY2FuIGhvbGQgQHN0YWJsZSBJQ1UgMi44ICovCisjICAgICBkZWZpbmUgVV9VSU5U
NjRfTUFYICAgICAgKCh1aW50NjRfdCkoVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKSkK
KyMgZW5kaWYKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEJvb2xlYW4gZGF0
YSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKy8qKiBUaGUgSUNVIGJvb2xlYW4gdHlw
ZSBAc3RhYmxlIElDVSAyLjAgKi8KK3R5cGVkZWYgaW50OF90IFVCb29sOworCisjaWZuZGVmIFRS
VUUKKy8qKiBUaGUgVFJVRSB2YWx1ZSBvZiBhIFVCb29sIEBzdGFibGUgSUNVIDIuMCAqLworIyAg
IGRlZmluZSBUUlVFICAxCisjZW5kaWYKKyNpZm5kZWYgRkFMU0UKKy8qKiBUaGUgRkFMU0UgdmFs
dWUgb2YgYSBVQm9vbCBAc3RhYmxlIElDVSAyLjAgKi8KKyMgICBkZWZpbmUgRkFMU0UgMAorI2Vu
ZGlmCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBVbmljb2RlIGRhdGEgdHlwZXMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8q
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0qLworCisvKiB3Y2hhcl90LXJlbGF0ZWQgZGVmaW5pdGlvbnMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBc
ZGVmIFVfSEFWRV9XQ0hBUl9ICisgKiBJbmRpY2F0ZXMgd2hldGhlciA8d2NoYXIuaD4gaXMgYXZh
aWxhYmxlICgxKSBvciBub3QgKDApLiBTZXQgdG8gMSBieSBkZWZhdWx0LgorICoKKyAqIEBzdGFi
bGUgSUNVIDIuMAorICovCisjaWZuZGVmIFVfSEFWRV9XQ0hBUl9ICisjICAgZGVmaW5lIFVfSEFW
RV9XQ0hBUl9IIDEKKyNlbmRpZgorCisvKioKKyAqIFxkZWYgVV9TSVpFT0ZfV0NIQVJfVAorICog
VV9TSVpFT0ZfV0NIQVJfVD09c2l6ZW9mKHdjaGFyX3QpICgwIG1lYW5zIGl0IGlzIG5vdCBkZWZp
bmVkIG9yIGF1dG9jb25mIGNvdWxkIG5vdCBzZXQgaXQpCisgKgorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KKyNpZiBVX1NJWkVPRl9XQ0hBUl9UPT0wCisjICAgdW5kZWYgVV9TSVpFT0ZfV0NIQVJf
VAorIyAgIGRlZmluZSBVX1NJWkVPRl9XQ0hBUl9UIDQKKyNlbmRpZgorCisvKgorICogXGRlZiBV
X1dDSEFSX0lTX1VURjE2CisgKiBEZWZpbmVkIGlmIHdjaGFyX3QgdXNlcyBVVEYtMTYuCisgKgor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KKy8qCisgKiBcZGVmIFVfV0NIQVJfSVNfVVRGMzIKKyAq
IERlZmluZWQgaWYgd2NoYXJfdCB1c2VzIFVURi0zMi4KKyAqCisgKiBAc3RhYmxlIElDVSAyLjAK
KyAqLworI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmICFkZWZpbmVkKFVfV0NIQVJf
SVNfVVRGMzIpCisjICAgaWZkZWYgX19TVERDX0lTT18xMDY0Nl9fIAorIyAgICAgICBpZiAoVV9T
SVpFT0ZfV0NIQVJfVD09MikKKyMgICAgICAgICAgIGRlZmluZSBVX1dDSEFSX0lTX1VURjE2Cisj
ICAgICAgIGVsaWYgKFVfU0laRU9GX1dDSEFSX1Q9PTQpCisjICAgICAgICAgICBkZWZpbmUgIFVf
V0NIQVJfSVNfVVRGMzIKKyMgICAgICAgZW5kaWYKKyMgICBlbGlmIGRlZmluZWQgX19VQ1MyX18K
KyMgICAgICAgaWYgKF9fT1MzOTBfXyB8fCBfX09TNDAwX18pICYmIChVX1NJWkVPRl9XQ0hBUl9U
PT0yKQorIyAgICAgICAgICAgZGVmaW5lIFVfV0NIQVJfSVNfVVRGMTYKKyMgICAgICAgZW5kaWYK
KyMgICBlbGlmIGRlZmluZWQgX19VQ1M0X18KKyMgICAgICAgaWYgKFVfU0laRU9GX1dDSEFSX1Q9
PTQpCisjICAgICAgICAgICBkZWZpbmUgVV9XQ0hBUl9JU19VVEYzMgorIyAgICAgICBlbmRpZgor
IyAgIGVsaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoV0lO
NjQpIHx8IGRlZmluZWQoX1dJTjY0KQorIyAgICAgICBkZWZpbmUgVV9XQ0hBUl9JU19VVEYxNiAg
ICAKKyMgICBlbmRpZgorI2VuZGlmCisKKy8qIFVDaGFyIGFuZCBVQ2hhcjMyIGRlZmluaXRpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKiBO
dW1iZXIgb2YgYnl0ZXMgaW4gYSBVQ2hhci4gQHN0YWJsZSBJQ1UgMi4wICovCisjZGVmaW5lIFVf
U0laRU9GX1VDSEFSIDIKKworLyoqCisgKiBcdmFyIFVDaGFyCisgKiBEZWZpbmUgVUNoYXIgdG8g
YmUgd2NoYXJfdCBpZiB0aGF0IGlzIDE2IGJpdHMgd2lkZTsgYWx3YXlzIGFzc3VtZWQgdG8gYmUg
dW5zaWduZWQuCisgKiBJZiB3Y2hhcl90IGlzIG5vdCAxNiBiaXRzIHdpZGUsIHRoZW4gZGVmaW5l
IFVDaGFyIHRvIGJlIHVpbnQxNl90LgorICogVGhpcyBtYWtlcyB0aGUgZGVmaW5pdGlvbiBvZiBV
Q2hhciBwbGF0Zm9ybS1kZXBlbmRlbnQKKyAqIGJ1dCBhbGxvd3MgZGlyZWN0IHN0cmluZyB0eXBl
IGNvbXBhdGliaWxpdHkgd2l0aCBwbGF0Zm9ybXMgd2l0aAorICogMTYtYml0IHdjaGFyX3QgdHlw
ZXMuCisgKgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KKworLyogRGVmaW5lIFVDaGFyIHRvIGJl
IGNvbXBhdGlibGUgd2l0aCB3Y2hhcl90IGlmIHBvc3NpYmxlLiAqLworI2lmIFVfU0laRU9GX1dD
SEFSX1Q9PTIKKyAgICB0eXBlZGVmIHdjaGFyX3QgVUNoYXI7CisjZWxzZQorICAgIHR5cGVkZWYg
dWludDE2X3QgVUNoYXI7CisjZW5kaWYKKworLyoqCisgKiBEZWZpbmUgVUNoYXIzMiBhcyBhIHR5
cGUgZm9yIHNpbmdsZSBVbmljb2RlIGNvZGUgcG9pbnRzLgorICogVUNoYXIzMiBpcyBhIHNpZ25l
ZCAzMi1iaXQgaW50ZWdlciAoc2FtZSBhcyBpbnQzMl90KS4KKyAqCisgKiBUaGUgVW5pY29kZSBj
b2RlIHBvaW50IHJhbmdlIGlzIDAuLjB4MTBmZmZmLgorICogQWxsIG90aGVyIHZhbHVlcyAobmVn
YXRpdmUgb3IgPj0weDExMDAwMCkgYXJlIGlsbGVnYWwgYXMgVW5pY29kZSBjb2RlIHBvaW50cy4K
KyAqIFRoZXkgbWF5IGJlIHVzZWQgYXMgc2VudGluZWwgdmFsdWVzIHRvIGluZGljYXRlICJkb25l
IiwgImVycm9yIgorICogb3Igc2ltaWxhciBub24tY29kZSBwb2ludCBjb25kaXRpb25zLgorICoK
KyAqIEJlZm9yZSBJQ1UgMi40IChKaXR0ZXJidWcgMjE0NiksIFVDaGFyMzIgd2FzIGRlZmluZWQK
KyAqIHRvIGJlIHdjaGFyX3QgaWYgdGhhdCBpcyAzMiBiaXRzIHdpZGUgKHdjaGFyX3QgbWF5IGJl
IHNpZ25lZCBvciB1bnNpZ25lZCkKKyAqIG9yIGVsc2UgdG8gYmUgdWludDMyX3QuCisgKiBUaGF0
IGlzLCB0aGUgZGVmaW5pdGlvbiBvZiBVQ2hhcjMyIHdhcyBwbGF0Zm9ybS1kZXBlbmRlbnQuCisg
KgorICogQHNlZSBVX1NFTlRJTkVMCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLwordHlwZWRlZiBp
bnQzMl90IFVDaGFyMzI7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogVV9JTkxJTkUgYW5k
IFVfQUxJR05fQ09ERSAgIFNldCBkZWZhdWx0IHZhbHVlcyBpZiB0aGVzZSBhcmUgbm90IGFscmVh
ZHkgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZC4gIERlZmluaXRp
b25zIG5vcm1hbGx5IGFyZSBpbiAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwbGF0Zm9ybS5oIG9yIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgZm9yICAgICAqLworLyog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBPUyBpbiB1c2UuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyoqCisgKiBcZGVm
IFVfQUxJR05fQ09ERQorICogVGhpcyBpcyB1c2VkIHRvIGFsaWduIGNvZGUgZnJhZ21lbnRzIHRv
IGEgc3BlY2lmaWMgYnl0ZSBib3VuZGFyeS4KKyAqIFRoaXMgaXMgdXNlZnVsIGZvciBnZXR0aW5n
IGNvbnNpc3RlbnQgcGVyZm9ybWFuY2UgdGVzdCByZXN1bHRzLgorICogQGludGVybmFsCisgKi8K
KyNpZm5kZWYgVV9BTElHTl9DT0RFCisjICAgZGVmaW5lIFVfQUxJR05fQ09ERShuKQorI2VuZGlm
CisKKyNpZm5kZWYgVV9JTkxJTkUKKyMgICBkZWZpbmUgVV9JTkxJTkUKKyNlbmRpZgorCisjaW5j
bHVkZSAidW5pY29kZS91cmVuYW1lLmgiCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dEdsdWUvaWN1L3VuaWNvZGUvdXJlbmFtZS5oIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUv
dXJlbmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NjI1OTIKLS0t
IC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91cmVuYW1lLmgKQEAg
LTAsMCArMSwxNDY4IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIENvcHlyaWdo
dCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29y
cG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisqCisqICAgZmlsZSBuYW1lOiAgdXJlbmFtZS5oCisqICAgZW5jb2Rpbmc6ICAg
VVMtQVNDSUkKKyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0
CisqCisqICAgQ3JlYXRlZCBieTogUGVybCBzY3JpcHQgd3JpdHRlbiBieSBWbGFkaW1pciBXZWlu
c3RlaW4KKyoKKyogIENvbnRhaW5zIGRhdGEgZm9yIHJlbmFtaW5nIElDVSBleHBvcnRzLgorKiAg
R2V0cyBpbmNsdWRlZCBieSB1bWFjaGluZS5oCisqCisqICBUSElTIEZJTEUgSVMgTUFDSElORS1H
RU5FUkFURUQsIERPTidUIFBMQVkgV0lUSCBJVCBJRiBZT1UgRE9OJ1QgS05PVyBXSEFUCisqICBZ
T1UgQVJFIERPSU5HLCBPVEhFUldJU0UgVkVSWSBCQUQgVEhJTkdTIFdJTEwgSEFQUEVOIQorKi8K
KworI2lmbmRlZiBVUkVOQU1FX0gKKyNkZWZpbmUgVVJFTkFNRV9ICisKKy8qIFVuY29tbWVudCB0
aGUgZm9sbG93aW5nIGxpbmUgdG8gZGlzYWJsZSByZW5hbWluZyBvbiBwbGF0Zm9ybXMKKyAgIHRo
YXQgZG8gbm90IHVzZSBBdXRvY29uZi4gKi8KKy8qICNkZWZpbmUgVV9ESVNBQkxFX1JFTkFNSU5H
IDEgKi8KKworI2lmICFVX0RJU0FCTEVfUkVOQU1JTkcKKworLyogQyBleHBvcnRzIHJlbmFtaW5n
IGRhdGEgKi8KKworI2RlZmluZSBUX0NTdHJpbmdfaW50NjRUb1N0cmluZyBUX0NTdHJpbmdfaW50
NjRUb1N0cmluZ18zXzIKKyNkZWZpbmUgVF9DU3RyaW5nX2ludGVnZXJUb1N0cmluZyBUX0NTdHJp
bmdfaW50ZWdlclRvU3RyaW5nXzNfMgorI2RlZmluZSBUX0NTdHJpbmdfc3RyaWNtcCBUX0NTdHJp
bmdfc3RyaWNtcF8zXzIKKyNkZWZpbmUgVF9DU3RyaW5nX3N0cmluZ1RvSW50ZWdlciBUX0NTdHJp
bmdfc3RyaW5nVG9JbnRlZ2VyXzNfMgorI2RlZmluZSBUX0NTdHJpbmdfc3RybmljbXAgVF9DU3Ry
aW5nX3N0cm5pY21wXzNfMgorI2RlZmluZSBUX0NTdHJpbmdfdG9Mb3dlckNhc2UgVF9DU3RyaW5n
X3RvTG93ZXJDYXNlXzNfMgorI2RlZmluZSBUX0NTdHJpbmdfdG9VcHBlckNhc2UgVF9DU3RyaW5n
X3RvVXBwZXJDYXNlXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fY2xvc2UgVF9GaWxlU3RyZWFt
X2Nsb3NlXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fZW9mIFRfRmlsZVN0cmVhbV9lb2ZfM18y
CisjZGVmaW5lIFRfRmlsZVN0cmVhbV9lcnJvciBUX0ZpbGVTdHJlYW1fZXJyb3JfM18yCisjZGVm
aW5lIFRfRmlsZVN0cmVhbV9maWxlX2V4aXN0cyBUX0ZpbGVTdHJlYW1fZmlsZV9leGlzdHNfM18y
CisjZGVmaW5lIFRfRmlsZVN0cmVhbV9nZXRjIFRfRmlsZVN0cmVhbV9nZXRjXzNfMgorI2RlZmlu
ZSBUX0ZpbGVTdHJlYW1fb3BlbiBUX0ZpbGVTdHJlYW1fb3Blbl8zXzIKKyNkZWZpbmUgVF9GaWxl
U3RyZWFtX3BlZWsgVF9GaWxlU3RyZWFtX3BlZWtfM18yCisjZGVmaW5lIFRfRmlsZVN0cmVhbV9w
dXRjIFRfRmlsZVN0cmVhbV9wdXRjXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fcmVhZCBUX0Zp
bGVTdHJlYW1fcmVhZF8zXzIKKyNkZWZpbmUgVF9GaWxlU3RyZWFtX3JlYWRMaW5lIFRfRmlsZVN0
cmVhbV9yZWFkTGluZV8zXzIKKyNkZWZpbmUgVF9GaWxlU3RyZWFtX3JlbW92ZSBUX0ZpbGVTdHJl
YW1fcmVtb3ZlXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fcmV3aW5kIFRfRmlsZVN0cmVhbV9y
ZXdpbmRfM18yCisjZGVmaW5lIFRfRmlsZVN0cmVhbV9zaXplIFRfRmlsZVN0cmVhbV9zaXplXzNf
MgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fc3RkZXJyIFRfRmlsZVN0cmVhbV9zdGRlcnJfM18yCisj
ZGVmaW5lIFRfRmlsZVN0cmVhbV9zdGRpbiBUX0ZpbGVTdHJlYW1fc3RkaW5fM18yCisjZGVmaW5l
IFRfRmlsZVN0cmVhbV9zdGRvdXQgVF9GaWxlU3RyZWFtX3N0ZG91dF8zXzIKKyNkZWZpbmUgVF9G
aWxlU3RyZWFtX3VuZ2V0YyBUX0ZpbGVTdHJlYW1fdW5nZXRjXzNfMgorI2RlZmluZSBUX0ZpbGVT
dHJlYW1fd3JpdGUgVF9GaWxlU3RyZWFtX3dyaXRlXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1f
d3JpdGVMaW5lIFRfRmlsZVN0cmVhbV93cml0ZUxpbmVfM18yCisjZGVmaW5lIFVDTlZfRlJPTV9V
X0NBTExCQUNLX0VTQ0FQRSBVQ05WX0ZST01fVV9DQUxMQkFDS19FU0NBUEVfM18yCisjZGVmaW5l
IFVDTlZfRlJPTV9VX0NBTExCQUNLX1NLSVAgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfU0tJUF8zXzIK
KyNkZWZpbmUgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfU1RPUCBVQ05WX0ZST01fVV9DQUxMQkFDS19T
VE9QXzNfMgorI2RlZmluZSBVQ05WX0ZST01fVV9DQUxMQkFDS19TVUJTVElUVVRFIFVDTlZfRlJP
TV9VX0NBTExCQUNLX1NVQlNUSVRVVEVfM18yCisjZGVmaW5lIFVDTlZfVE9fVV9DQUxMQkFDS19F
U0NBUEUgVUNOVl9UT19VX0NBTExCQUNLX0VTQ0FQRV8zXzIKKyNkZWZpbmUgVUNOVl9UT19VX0NB
TExCQUNLX1NLSVAgVUNOVl9UT19VX0NBTExCQUNLX1NLSVBfM18yCisjZGVmaW5lIFVDTlZfVE9f
VV9DQUxMQkFDS19TVE9QIFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QXzNfMgorI2RlZmluZSBVQ05W
X1RPX1VfQ0FMTEJBQ0tfU1VCU1RJVFVURSBVQ05WX1RPX1VfQ0FMTEJBQ0tfU1VCU1RJVFVURV8z
XzIKKyNkZWZpbmUgVURhdGFNZW1vcnlfY3JlYXRlTmV3SW5zdGFuY2UgVURhdGFNZW1vcnlfY3Jl
YXRlTmV3SW5zdGFuY2VfM18yCisjZGVmaW5lIFVEYXRhTWVtb3J5X2luaXQgVURhdGFNZW1vcnlf
aW5pdF8zXzIKKyNkZWZpbmUgVURhdGFNZW1vcnlfaXNMb2FkZWQgVURhdGFNZW1vcnlfaXNMb2Fk
ZWRfM18yCisjZGVmaW5lIFVEYXRhTWVtb3J5X25vcm1hbGl6ZURhdGFQb2ludGVyIFVEYXRhTWVt
b3J5X25vcm1hbGl6ZURhdGFQb2ludGVyXzNfMgorI2RlZmluZSBVRGF0YU1lbW9yeV9zZXREYXRh
IFVEYXRhTWVtb3J5X3NldERhdGFfM18yCisjZGVmaW5lIFVEYXRhbWVtb3J5X2Fzc2lnbiBVRGF0
YW1lbW9yeV9hc3NpZ25fM18yCisjZGVmaW5lIF9BU0NJSURhdGEgX0FTQ0lJRGF0YV8zXzIKKyNk
ZWZpbmUgX0JvY3UxRGF0YSBfQm9jdTFEYXRhXzNfMgorI2RlZmluZSBfQ0VTVThEYXRhIF9DRVNV
OERhdGFfM18yCisjZGVmaW5lIF9IWkRhdGEgX0haRGF0YV8zXzIKKyNkZWZpbmUgX0lNQVBEYXRh
IF9JTUFQRGF0YV8zXzIKKyNkZWZpbmUgX0lTQ0lJRGF0YSBfSVNDSUlEYXRhXzNfMgorI2RlZmlu
ZSBfSVNPMjAyMkRhdGEgX0lTTzIwMjJEYXRhXzNfMgorI2RlZmluZSBfTE1CQ1NEYXRhMSBfTE1C
Q1NEYXRhMV8zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTExIF9MTUJDU0RhdGExMV8zXzIKKyNkZWZp
bmUgX0xNQkNTRGF0YTE2IF9MTUJDU0RhdGExNl8zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTE3IF9M
TUJDU0RhdGExN18zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTE4IF9MTUJDU0RhdGExOF8zXzIKKyNk
ZWZpbmUgX0xNQkNTRGF0YTE5IF9MTUJDU0RhdGExOV8zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTIg
X0xNQkNTRGF0YTJfM18yCisjZGVmaW5lIF9MTUJDU0RhdGEzIF9MTUJDU0RhdGEzXzNfMgorI2Rl
ZmluZSBfTE1CQ1NEYXRhNCBfTE1CQ1NEYXRhNF8zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTUgX0xN
QkNTRGF0YTVfM18yCisjZGVmaW5lIF9MTUJDU0RhdGE2IF9MTUJDU0RhdGE2XzNfMgorI2RlZmlu
ZSBfTE1CQ1NEYXRhOCBfTE1CQ1NEYXRhOF8zXzIKKyNkZWZpbmUgX0xhdGluMURhdGEgX0xhdGlu
MURhdGFfM18yCisjZGVmaW5lIF9NQkNTRGF0YSBfTUJDU0RhdGFfM18yCisjZGVmaW5lIF9TQ1NV
RGF0YSBfU0NTVURhdGFfM18yCisjZGVmaW5lIF9VVEYxNkJFRGF0YSBfVVRGMTZCRURhdGFfM18y
CisjZGVmaW5lIF9VVEYxNkRhdGEgX1VURjE2RGF0YV8zXzIKKyNkZWZpbmUgX1VURjE2TEVEYXRh
IF9VVEYxNkxFRGF0YV8zXzIKKyNkZWZpbmUgX1VURjMyQkVEYXRhIF9VVEYzMkJFRGF0YV8zXzIK
KyNkZWZpbmUgX1VURjMyRGF0YSBfVVRGMzJEYXRhXzNfMgorI2RlZmluZSBfVVRGMzJMRURhdGEg
X1VURjMyTEVEYXRhXzNfMgorI2RlZmluZSBfVVRGN0RhdGEgX1VURjdEYXRhXzNfMgorI2RlZmlu
ZSBfVVRGOERhdGEgX1VURjhEYXRhXzNfMgorI2RlZmluZSBjbWVtb3J5X2NsZWFudXAgY21lbW9y
eV9jbGVhbnVwXzNfMgorI2RlZmluZSBjbWVtb3J5X2luVXNlIGNtZW1vcnlfaW5Vc2VfM18yCisj
ZGVmaW5lIGxvY2FsZV9nZXRLZXl3b3JkcyBsb2NhbGVfZ2V0S2V5d29yZHNfM18yCisjZGVmaW5l
IGxvY2FsZV9nZXRfZGVmYXVsdCBsb2NhbGVfZ2V0X2RlZmF1bHRfM18yCisjZGVmaW5lIGxvY2Fs
ZV9zZXRfZGVmYXVsdCBsb2NhbGVfc2V0X2RlZmF1bHRfM18yCisjZGVmaW5lIHJlc19jb3VudEFy
cmF5SXRlbXMgcmVzX2NvdW50QXJyYXlJdGVtc18zXzIKKyNkZWZpbmUgcmVzX2ZpbmRSZXNvdXJj
ZSByZXNfZmluZFJlc291cmNlXzNfMgorI2RlZmluZSByZXNfZ2V0QWxpYXMgcmVzX2dldEFsaWFz
XzNfMgorI2RlZmluZSByZXNfZ2V0QXJyYXlJdGVtIHJlc19nZXRBcnJheUl0ZW1fM18yCisjZGVm
aW5lIHJlc19nZXRCaW5hcnkgcmVzX2dldEJpbmFyeV8zXzIKKyNkZWZpbmUgcmVzX2dldEludFZl
Y3RvciByZXNfZ2V0SW50VmVjdG9yXzNfMgorI2RlZmluZSByZXNfZ2V0UmVzb3VyY2UgcmVzX2dl
dFJlc291cmNlXzNfMgorI2RlZmluZSByZXNfZ2V0U3RyaW5nIHJlc19nZXRTdHJpbmdfM18yCisj
ZGVmaW5lIHJlc19nZXRUYWJsZUl0ZW1CeUluZGV4IHJlc19nZXRUYWJsZUl0ZW1CeUluZGV4XzNf
MgorI2RlZmluZSByZXNfZ2V0VGFibGVJdGVtQnlLZXkgcmVzX2dldFRhYmxlSXRlbUJ5S2V5XzNf
MgorI2RlZmluZSByZXNfbG9hZCByZXNfbG9hZF8zXzIKKyNkZWZpbmUgcmVzX3VubG9hZCByZXNf
dW5sb2FkXzNfMgorI2RlZmluZSB0cmFuc2xpdGVyYXRvcl9jbGVhbnVwIHRyYW5zbGl0ZXJhdG9y
X2NsZWFudXBfM18yCisjZGVmaW5lIHVfVUNoYXJzVG9DaGFycyB1X1VDaGFyc1RvQ2hhcnNfM18y
CisjZGVmaW5lIHVfYXVzdHJjcHkgdV9hdXN0cmNweV8zXzIKKyNkZWZpbmUgdV9hdXN0cm5jcHkg
dV9hdXN0cm5jcHlfM18yCisjZGVmaW5lIHVfY2F0Y2xvc2UgdV9jYXRjbG9zZV8zXzIKKyNkZWZp
bmUgdV9jYXRnZXRzIHVfY2F0Z2V0c18zXzIKKyNkZWZpbmUgdV9jYXRvcGVuIHVfY2F0b3Blbl8z
XzIKKyNkZWZpbmUgdV9jaGFyQWdlIHVfY2hhckFnZV8zXzIKKyNkZWZpbmUgdV9jaGFyRGlnaXRW
YWx1ZSB1X2NoYXJEaWdpdFZhbHVlXzNfMgorI2RlZmluZSB1X2NoYXJEaXJlY3Rpb24gdV9jaGFy
RGlyZWN0aW9uXzNfMgorI2RlZmluZSB1X2NoYXJGcm9tTmFtZSB1X2NoYXJGcm9tTmFtZV8zXzIK
KyNkZWZpbmUgdV9jaGFyTWlycm9yIHVfY2hhck1pcnJvcl8zXzIKKyNkZWZpbmUgdV9jaGFyTmFt
ZSB1X2NoYXJOYW1lXzNfMgorI2RlZmluZSB1X2NoYXJUeXBlIHVfY2hhclR5cGVfM18yCisjZGVm
aW5lIHVfY2hhcnNUb1VDaGFycyB1X2NoYXJzVG9VQ2hhcnNfM18yCisjZGVmaW5lIHVfY2xlYW51
cCB1X2NsZWFudXBfM18yCisjZGVmaW5lIHVfY291bnRDaGFyMzIgdV9jb3VudENoYXIzMl8zXzIK
KyNkZWZpbmUgdV9kaWdpdCB1X2RpZ2l0XzNfMgorI2RlZmluZSB1X2VudW1DaGFyTmFtZXMgdV9l
bnVtQ2hhck5hbWVzXzNfMgorI2RlZmluZSB1X2VudW1DaGFyVHlwZXMgdV9lbnVtQ2hhclR5cGVz
XzNfMgorI2RlZmluZSB1X2Vycm9yTmFtZSB1X2Vycm9yTmFtZV8zXzIKKyNkZWZpbmUgdV9mY2xv
c2UgdV9mY2xvc2VfM18yCisjZGVmaW5lIHVfZmVvZiB1X2Zlb2ZfM18yCisjZGVmaW5lIHVfZmZs
dXNoIHVfZmZsdXNoXzNfMgorI2RlZmluZSB1X2ZnZXRDb252ZXJ0ZXIgdV9mZ2V0Q29udmVydGVy
XzNfMgorI2RlZmluZSB1X2ZnZXRjIHVfZmdldGNfM18yCisjZGVmaW5lIHVfZmdldGNvZGVwYWdl
IHVfZmdldGNvZGVwYWdlXzNfMgorI2RlZmluZSB1X2ZnZXRjeCB1X2ZnZXRjeF8zXzIKKyNkZWZp
bmUgdV9mZ2V0ZmlsZSB1X2ZnZXRmaWxlXzNfMgorI2RlZmluZSB1X2ZnZXRsb2NhbGUgdV9mZ2V0
bG9jYWxlXzNfMgorI2RlZmluZSB1X2ZnZXRzIHVfZmdldHNfM18yCisjZGVmaW5lIHVfZmlsZV9y
ZWFkIHVfZmlsZV9yZWFkXzNfMgorI2RlZmluZSB1X2ZpbGVfd3JpdGUgdV9maWxlX3dyaXRlXzNf
MgorI2RlZmluZSB1X2ZpbGVfd3JpdGVfZmx1c2ggdV9maWxlX3dyaXRlX2ZsdXNoXzNfMgorI2Rl
ZmluZSB1X2Zpbml0IHVfZmluaXRfM18yCisjZGVmaW5lIHVfZm9sZENhc2UgdV9mb2xkQ2FzZV8z
XzIKKyNkZWZpbmUgdV9mb3BlbiB1X2ZvcGVuXzNfMgorI2RlZmluZSB1X2ZvckRpZ2l0IHVfZm9y
RGlnaXRfM18yCisjZGVmaW5lIHVfZm9ybWF0TWVzc2FnZSB1X2Zvcm1hdE1lc3NhZ2VfM18yCisj
ZGVmaW5lIHVfZm9ybWF0TWVzc2FnZVdpdGhFcnJvciB1X2Zvcm1hdE1lc3NhZ2VXaXRoRXJyb3Jf
M18yCisjZGVmaW5lIHVfZnByaW50ZiB1X2ZwcmludGZfM18yCisjZGVmaW5lIHVfZnByaW50Zl91
IHVfZnByaW50Zl91XzNfMgorI2RlZmluZSB1X2ZwdXRjIHVfZnB1dGNfM18yCisjZGVmaW5lIHVf
ZnB1dHMgdV9mcHV0c18zXzIKKyNkZWZpbmUgdV9mcmV3aW5kIHVfZnJld2luZF8zXzIKKyNkZWZp
bmUgdV9mc2NhbmYgdV9mc2NhbmZfM18yCisjZGVmaW5lIHVfZnNjYW5mX3UgdV9mc2NhbmZfdV8z
XzIKKyNkZWZpbmUgdV9mc2V0Y29kZXBhZ2UgdV9mc2V0Y29kZXBhZ2VfM18yCisjZGVmaW5lIHVf
ZnNldGxvY2FsZSB1X2ZzZXRsb2NhbGVfM18yCisjZGVmaW5lIHVfZnNldHRyYW5zbGl0ZXJhdG9y
IHVfZnNldHRyYW5zbGl0ZXJhdG9yXzNfMgorI2RlZmluZSB1X2ZzdHJvcGVuIHVfZnN0cm9wZW5f
M18yCisjZGVmaW5lIHVfZnVuZ2V0YyB1X2Z1bmdldGNfM18yCisjZGVmaW5lIHVfZ2V0Q29tYmlu
aW5nQ2xhc3MgdV9nZXRDb21iaW5pbmdDbGFzc18zXzIKKyNkZWZpbmUgdV9nZXREYXRhRGlyZWN0
b3J5IHVfZ2V0RGF0YURpcmVjdG9yeV8zXzIKKyNkZWZpbmUgdV9nZXREZWZhdWx0Q29udmVydGVy
IHVfZ2V0RGVmYXVsdENvbnZlcnRlcl8zXzIKKyNkZWZpbmUgdV9nZXRGQ19ORktDX0Nsb3N1cmUg
dV9nZXRGQ19ORktDX0Nsb3N1cmVfM18yCisjZGVmaW5lIHVfZ2V0SVNPQ29tbWVudCB1X2dldElT
T0NvbW1lbnRfM18yCisjZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZSB1X2dldEludFBy
b3BlcnR5TWF4VmFsdWVfM18yCisjZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZSB1X2dl
dEludFByb3BlcnR5TWluVmFsdWVfM18yCisjZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlWYWx1ZSB1
X2dldEludFByb3BlcnR5VmFsdWVfM18yCisjZGVmaW5lIHVfZ2V0TnVtZXJpY1ZhbHVlIHVfZ2V0
TnVtZXJpY1ZhbHVlXzNfMgorI2RlZmluZSB1X2dldFByb3BlcnR5RW51bSB1X2dldFByb3BlcnR5
RW51bV8zXzIKKyNkZWZpbmUgdV9nZXRQcm9wZXJ0eU5hbWUgdV9nZXRQcm9wZXJ0eU5hbWVfM18y
CisjZGVmaW5lIHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51bV8z
XzIKKyNkZWZpbmUgdV9nZXRQcm9wZXJ0eVZhbHVlTmFtZSB1X2dldFByb3BlcnR5VmFsdWVOYW1l
XzNfMgorI2RlZmluZSB1X2dldFVuaWNvZGVQcm9wZXJ0aWVzIHVfZ2V0VW5pY29kZVByb3BlcnRp
ZXNfM18yCisjZGVmaW5lIHVfZ2V0VW5pY29kZVZlcnNpb24gdV9nZXRVbmljb2RlVmVyc2lvbl8z
XzIKKyNkZWZpbmUgdV9nZXRWZXJzaW9uIHVfZ2V0VmVyc2lvbl8zXzIKKyNkZWZpbmUgdV9ncm93
QnVmZmVyRnJvbVN0YXRpYyB1X2dyb3dCdWZmZXJGcm9tU3RhdGljXzNfMgorI2RlZmluZSB1X2hh
c0JpbmFyeVByb3BlcnR5IHVfaGFzQmluYXJ5UHJvcGVydHlfM18yCisjZGVmaW5lIHVfaW5pdCB1
X2luaXRfM18yCisjZGVmaW5lIHVfaXNJRElnbm9yYWJsZSB1X2lzSURJZ25vcmFibGVfM18yCisj
ZGVmaW5lIHVfaXNJRFBhcnQgdV9pc0lEUGFydF8zXzIKKyNkZWZpbmUgdV9pc0lEU3RhcnQgdV9p
c0lEU3RhcnRfM18yCisjZGVmaW5lIHVfaXNJU09Db250cm9sIHVfaXNJU09Db250cm9sXzNfMgor
I2RlZmluZSB1X2lzSmF2YUlEUGFydCB1X2lzSmF2YUlEUGFydF8zXzIKKyNkZWZpbmUgdV9pc0ph
dmFJRFN0YXJ0IHVfaXNKYXZhSURTdGFydF8zXzIKKyNkZWZpbmUgdV9pc0phdmFTcGFjZUNoYXIg
dV9pc0phdmFTcGFjZUNoYXJfM18yCisjZGVmaW5lIHVfaXNNaXJyb3JlZCB1X2lzTWlycm9yZWRf
M18yCisjZGVmaW5lIHVfaXNVQWxwaGFiZXRpYyB1X2lzVUFscGhhYmV0aWNfM18yCisjZGVmaW5l
IHVfaXNVTG93ZXJjYXNlIHVfaXNVTG93ZXJjYXNlXzNfMgorI2RlZmluZSB1X2lzVVVwcGVyY2Fz
ZSB1X2lzVVVwcGVyY2FzZV8zXzIKKyNkZWZpbmUgdV9pc1VXaGl0ZVNwYWNlIHVfaXNVV2hpdGVT
cGFjZV8zXzIKKyNkZWZpbmUgdV9pc1doaXRlc3BhY2UgdV9pc1doaXRlc3BhY2VfM18yCisjZGVm
aW5lIHVfaXNhbG51bSB1X2lzYWxudW1fM18yCisjZGVmaW5lIHVfaXNhbHBoYSB1X2lzYWxwaGFf
M18yCisjZGVmaW5lIHVfaXNiYXNlIHVfaXNiYXNlXzNfMgorI2RlZmluZSB1X2lzYmxhbmsgdV9p
c2JsYW5rXzNfMgorI2RlZmluZSB1X2lzY250cmwgdV9pc2NudHJsXzNfMgorI2RlZmluZSB1X2lz
ZGVmaW5lZCB1X2lzZGVmaW5lZF8zXzIKKyNkZWZpbmUgdV9pc2RpZ2l0IHVfaXNkaWdpdF8zXzIK
KyNkZWZpbmUgdV9pc2dyYXBoIHVfaXNncmFwaF8zXzIKKyNkZWZpbmUgdV9pc2xvd2VyIHVfaXNs
b3dlcl8zXzIKKyNkZWZpbmUgdV9pc3ByaW50IHVfaXNwcmludF8zXzIKKyNkZWZpbmUgdV9pc3B1
bmN0IHVfaXNwdW5jdF8zXzIKKyNkZWZpbmUgdV9pc3NwYWNlIHVfaXNzcGFjZV8zXzIKKyNkZWZp
bmUgdV9pc3RpdGxlIHVfaXN0aXRsZV8zXzIKKyNkZWZpbmUgdV9pc3VwcGVyIHVfaXN1cHBlcl8z
XzIKKyNkZWZpbmUgdV9pc3hkaWdpdCB1X2lzeGRpZ2l0XzNfMgorI2RlZmluZSB1X2xlbmd0aE9m
SWRlbnRpY2FsTGV2ZWxSdW4gdV9sZW5ndGhPZklkZW50aWNhbExldmVsUnVuXzNfMgorI2RlZmlu
ZSB1X2xvY2J1bmRfY2xvc2UgdV9sb2NidW5kX2Nsb3NlXzNfMgorI2RlZmluZSB1X2xvY2J1bmRf
Z2V0TnVtYmVyRm9ybWF0IHVfbG9jYnVuZF9nZXROdW1iZXJGb3JtYXRfM18yCisjZGVmaW5lIHVf
bG9jYnVuZF9pbml0IHVfbG9jYnVuZF9pbml0XzNfMgorI2RlZmluZSB1X21lbWNhc2VjbXAgdV9t
ZW1jYXNlY21wXzNfMgorI2RlZmluZSB1X21lbWNociB1X21lbWNocl8zXzIKKyNkZWZpbmUgdV9t
ZW1jaHIzMiB1X21lbWNocjMyXzNfMgorI2RlZmluZSB1X21lbWNtcCB1X21lbWNtcF8zXzIKKyNk
ZWZpbmUgdV9tZW1jbXBDb2RlUG9pbnRPcmRlciB1X21lbWNtcENvZGVQb2ludE9yZGVyXzNfMgor
I2RlZmluZSB1X21lbWNweSB1X21lbWNweV8zXzIKKyNkZWZpbmUgdV9tZW1tb3ZlIHVfbWVtbW92
ZV8zXzIKKyNkZWZpbmUgdV9tZW1yY2hyIHVfbWVtcmNocl8zXzIKKyNkZWZpbmUgdV9tZW1yY2hy
MzIgdV9tZW1yY2hyMzJfM18yCisjZGVmaW5lIHVfbWVtc2V0IHVfbWVtc2V0XzNfMgorI2RlZmlu
ZSB1X3BhcnNlTWVzc2FnZSB1X3BhcnNlTWVzc2FnZV8zXzIKKyNkZWZpbmUgdV9wYXJzZU1lc3Nh
Z2VXaXRoRXJyb3IgdV9wYXJzZU1lc3NhZ2VXaXRoRXJyb3JfM18yCisjZGVmaW5lIHVfcHJpbnRm
X3BhcnNlIHVfcHJpbnRmX3BhcnNlXzNfMgorI2RlZmluZSB1X3JlbGVhc2VEZWZhdWx0Q29udmVy
dGVyIHVfcmVsZWFzZURlZmF1bHRDb252ZXJ0ZXJfM18yCisjZGVmaW5lIHVfc2NhbmZfcGFyc2Ug
dV9zY2FuZl9wYXJzZV8zXzIKKyNkZWZpbmUgdV9zZXRBdG9taWNJbmNEZWNGdW5jdGlvbnMgdV9z
ZXRBdG9taWNJbmNEZWNGdW5jdGlvbnNfM18yCisjZGVmaW5lIHVfc2V0RGF0YURpcmVjdG9yeSB1
X3NldERhdGFEaXJlY3RvcnlfM18yCisjZGVmaW5lIHVfc2V0TWVtb3J5RnVuY3Rpb25zIHVfc2V0
TWVtb3J5RnVuY3Rpb25zXzNfMgorI2RlZmluZSB1X3NldE11dGV4RnVuY3Rpb25zIHVfc2V0TXV0
ZXhGdW5jdGlvbnNfM18yCisjZGVmaW5lIHVfc2hhcGVBcmFiaWMgdV9zaGFwZUFyYWJpY18zXzIK
KyNkZWZpbmUgdV9zbnByaW50ZiB1X3NucHJpbnRmXzNfMgorI2RlZmluZSB1X3NucHJpbnRmX3Ug
dV9zbnByaW50Zl91XzNfMgorI2RlZmluZSB1X3NwcmludGYgdV9zcHJpbnRmXzNfMgorI2RlZmlu
ZSB1X3NwcmludGZfdSB1X3NwcmludGZfdV8zXzIKKyNkZWZpbmUgdV9zc2NhbmYgdV9zc2NhbmZf
M18yCisjZGVmaW5lIHVfc3NjYW5mX3UgdV9zc2NhbmZfdV8zXzIKKyNkZWZpbmUgdV9zdHJDYXNl
Q29tcGFyZSB1X3N0ckNhc2VDb21wYXJlXzNfMgorI2RlZmluZSB1X3N0ckNvbXBhcmUgdV9zdHJD
b21wYXJlXzNfMgorI2RlZmluZSB1X3N0ckNvbXBhcmVJdGVyIHVfc3RyQ29tcGFyZUl0ZXJfM18y
CisjZGVmaW5lIHVfc3RyRmluZEZpcnN0IHVfc3RyRmluZEZpcnN0XzNfMgorI2RlZmluZSB1X3N0
ckZpbmRMYXN0IHVfc3RyRmluZExhc3RfM18yCisjZGVmaW5lIHVfc3RyRm9sZENhc2UgdV9zdHJG
b2xkQ2FzZV8zXzIKKyNkZWZpbmUgdV9zdHJGcm9tUHVueWNvZGUgdV9zdHJGcm9tUHVueWNvZGVf
M18yCisjZGVmaW5lIHVfc3RyRnJvbVVURjMyIHVfc3RyRnJvbVVURjMyXzNfMgorI2RlZmluZSB1
X3N0ckZyb21VVEY4IHVfc3RyRnJvbVVURjhfM18yCisjZGVmaW5lIHVfc3RyRnJvbVdDUyB1X3N0
ckZyb21XQ1NfM18yCisjZGVmaW5lIHVfc3RySGFzTW9yZUNoYXIzMlRoYW4gdV9zdHJIYXNNb3Jl
Q2hhcjMyVGhhbl8zXzIKKyNkZWZpbmUgdV9zdHJUb0xvd2VyIHVfc3RyVG9Mb3dlcl8zXzIKKyNk
ZWZpbmUgdV9zdHJUb1B1bnljb2RlIHVfc3RyVG9QdW55Y29kZV8zXzIKKyNkZWZpbmUgdV9zdHJU
b1RpdGxlIHVfc3RyVG9UaXRsZV8zXzIKKyNkZWZpbmUgdV9zdHJUb1VURjMyIHVfc3RyVG9VVEYz
Ml8zXzIKKyNkZWZpbmUgdV9zdHJUb1VURjggdV9zdHJUb1VURjhfM18yCisjZGVmaW5lIHVfc3Ry
VG9VcHBlciB1X3N0clRvVXBwZXJfM18yCisjZGVmaW5lIHVfc3RyVG9XQ1MgdV9zdHJUb1dDU18z
XzIKKyNkZWZpbmUgdV9zdHJjYXNlY21wIHVfc3RyY2FzZWNtcF8zXzIKKyNkZWZpbmUgdV9zdHJj
YXQgdV9zdHJjYXRfM18yCisjZGVmaW5lIHVfc3RyY2hyIHVfc3RyY2hyXzNfMgorI2RlZmluZSB1
X3N0cmNocjMyIHVfc3RyY2hyMzJfM18yCisjZGVmaW5lIHVfc3RyY21wIHVfc3RyY21wXzNfMgor
I2RlZmluZSB1X3N0cmNtcENvZGVQb2ludE9yZGVyIHVfc3RyY21wQ29kZVBvaW50T3JkZXJfM18y
CisjZGVmaW5lIHVfc3RyY21wRm9sZCB1X3N0cmNtcEZvbGRfM18yCisjZGVmaW5lIHVfc3RyY3B5
IHVfc3RyY3B5XzNfMgorI2RlZmluZSB1X3N0cmNzcG4gdV9zdHJjc3BuXzNfMgorI2RlZmluZSB1
X3N0cmxlbiB1X3N0cmxlbl8zXzIKKyNkZWZpbmUgdV9zdHJuY2FzZWNtcCB1X3N0cm5jYXNlY21w
XzNfMgorI2RlZmluZSB1X3N0cm5jYXQgdV9zdHJuY2F0XzNfMgorI2RlZmluZSB1X3N0cm5jbXAg
dV9zdHJuY21wXzNfMgorI2RlZmluZSB1X3N0cm5jbXBDb2RlUG9pbnRPcmRlciB1X3N0cm5jbXBD
b2RlUG9pbnRPcmRlcl8zXzIKKyNkZWZpbmUgdV9zdHJuY3B5IHVfc3RybmNweV8zXzIKKyNkZWZp
bmUgdV9zdHJwYnJrIHVfc3RycGJya18zXzIKKyNkZWZpbmUgdV9zdHJyY2hyIHVfc3RycmNocl8z
XzIKKyNkZWZpbmUgdV9zdHJyY2hyMzIgdV9zdHJyY2hyMzJfM18yCisjZGVmaW5lIHVfc3RycnN0
ciB1X3N0cnJzdHJfM18yCisjZGVmaW5lIHVfc3Ryc3BuIHVfc3Ryc3BuXzNfMgorI2RlZmluZSB1
X3N0cnN0ciB1X3N0cnN0cl8zXzIKKyNkZWZpbmUgdV9zdHJ0b2tfciB1X3N0cnRva19yXzNfMgor
I2RlZmluZSB1X3Rlcm1pbmF0ZUNoYXJzIHVfdGVybWluYXRlQ2hhcnNfM18yCisjZGVmaW5lIHVf
dGVybWluYXRlVUNoYXIzMnMgdV90ZXJtaW5hdGVVQ2hhcjMyc18zXzIKKyNkZWZpbmUgdV90ZXJt
aW5hdGVVQ2hhcnMgdV90ZXJtaW5hdGVVQ2hhcnNfM18yCisjZGVmaW5lIHVfdGVybWluYXRlV0No
YXJzIHVfdGVybWluYXRlV0NoYXJzXzNfMgorI2RlZmluZSB1X3RvbG93ZXIgdV90b2xvd2VyXzNf
MgorI2RlZmluZSB1X3RvdGl0bGUgdV90b3RpdGxlXzNfMgorI2RlZmluZSB1X3RvdXBwZXIgdV90
b3VwcGVyXzNfMgorI2RlZmluZSB1X3Vhc3RyY3B5IHVfdWFzdHJjcHlfM18yCisjZGVmaW5lIHVf
dWFzdHJuY3B5IHVfdWFzdHJuY3B5XzNfMgorI2RlZmluZSB1X3VuZXNjYXBlIHVfdW5lc2NhcGVf
M18yCisjZGVmaW5lIHVfdW5lc2NhcGVBdCB1X3VuZXNjYXBlQXRfM18yCisjZGVmaW5lIHVfdmVy
c2lvbkZyb21TdHJpbmcgdV92ZXJzaW9uRnJvbVN0cmluZ18zXzIKKyNkZWZpbmUgdV92ZXJzaW9u
VG9TdHJpbmcgdV92ZXJzaW9uVG9TdHJpbmdfM18yCisjZGVmaW5lIHVfdmZvcm1hdE1lc3NhZ2Ug
dV92Zm9ybWF0TWVzc2FnZV8zXzIKKyNkZWZpbmUgdV92Zm9ybWF0TWVzc2FnZVdpdGhFcnJvciB1
X3Zmb3JtYXRNZXNzYWdlV2l0aEVycm9yXzNfMgorI2RlZmluZSB1X3ZmcHJpbnRmIHVfdmZwcmlu
dGZfM18yCisjZGVmaW5lIHVfdmZwcmludGZfdSB1X3ZmcHJpbnRmX3VfM18yCisjZGVmaW5lIHVf
dmZzY2FuZiB1X3Zmc2NhbmZfM18yCisjZGVmaW5lIHVfdmZzY2FuZl91IHVfdmZzY2FuZl91XzNf
MgorI2RlZmluZSB1X3ZwYXJzZU1lc3NhZ2UgdV92cGFyc2VNZXNzYWdlXzNfMgorI2RlZmluZSB1
X3ZwYXJzZU1lc3NhZ2VXaXRoRXJyb3IgdV92cGFyc2VNZXNzYWdlV2l0aEVycm9yXzNfMgorI2Rl
ZmluZSB1X3ZzbnByaW50ZiB1X3ZzbnByaW50Zl8zXzIKKyNkZWZpbmUgdV92c25wcmludGZfdSB1
X3ZzbnByaW50Zl91XzNfMgorI2RlZmluZSB1X3ZzcHJpbnRmIHVfdnNwcmludGZfM18yCisjZGVm
aW5lIHVfdnNwcmludGZfdSB1X3ZzcHJpbnRmX3VfM18yCisjZGVmaW5lIHVfdnNzY2FuZiB1X3Zz
c2NhbmZfM18yCisjZGVmaW5lIHVfdnNzY2FuZl91IHVfdnNzY2FuZl91XzNfMgorI2RlZmluZSB1
X3dyaXRlRGlmZiB1X3dyaXRlRGlmZl8zXzIKKyNkZWZpbmUgdV93cml0ZUlkZW50aWNhbExldmVs
UnVuIHVfd3JpdGVJZGVudGljYWxMZXZlbFJ1bl8zXzIKKyNkZWZpbmUgdV93cml0ZUlkZW50aWNh
bExldmVsUnVuVHdvQ2hhcnMgdV93cml0ZUlkZW50aWNhbExldmVsUnVuVHdvQ2hhcnNfM18yCisj
ZGVmaW5lIHViaWRpX2Nsb3NlIHViaWRpX2Nsb3NlXzNfMgorI2RlZmluZSB1YmlkaV9jb3VudFJ1
bnMgdWJpZGlfY291bnRSdW5zXzNfMgorI2RlZmluZSB1YmlkaV9nZXREaXJlY3Rpb24gdWJpZGlf
Z2V0RGlyZWN0aW9uXzNfMgorI2RlZmluZSB1YmlkaV9nZXRMZW5ndGggdWJpZGlfZ2V0TGVuZ3Ro
XzNfMgorI2RlZmluZSB1YmlkaV9nZXRMZXZlbEF0IHViaWRpX2dldExldmVsQXRfM18yCisjZGVm
aW5lIHViaWRpX2dldExldmVscyB1YmlkaV9nZXRMZXZlbHNfM18yCisjZGVmaW5lIHViaWRpX2dl
dExvZ2ljYWxJbmRleCB1YmlkaV9nZXRMb2dpY2FsSW5kZXhfM18yCisjZGVmaW5lIHViaWRpX2dl
dExvZ2ljYWxNYXAgdWJpZGlfZ2V0TG9naWNhbE1hcF8zXzIKKyNkZWZpbmUgdWJpZGlfZ2V0TG9n
aWNhbFJ1biB1YmlkaV9nZXRMb2dpY2FsUnVuXzNfMgorI2RlZmluZSB1YmlkaV9nZXRNZW1vcnkg
dWJpZGlfZ2V0TWVtb3J5XzNfMgorI2RlZmluZSB1YmlkaV9nZXRQYXJhTGV2ZWwgdWJpZGlfZ2V0
UGFyYUxldmVsXzNfMgorI2RlZmluZSB1YmlkaV9nZXRSdW5zIHViaWRpX2dldFJ1bnNfM18yCisj
ZGVmaW5lIHViaWRpX2dldFRleHQgdWJpZGlfZ2V0VGV4dF8zXzIKKyNkZWZpbmUgdWJpZGlfZ2V0
VmlzdWFsSW5kZXggdWJpZGlfZ2V0VmlzdWFsSW5kZXhfM18yCisjZGVmaW5lIHViaWRpX2dldFZp
c3VhbE1hcCB1YmlkaV9nZXRWaXN1YWxNYXBfM18yCisjZGVmaW5lIHViaWRpX2dldFZpc3VhbFJ1
biB1YmlkaV9nZXRWaXN1YWxSdW5fM18yCisjZGVmaW5lIHViaWRpX2ludmVydE1hcCB1YmlkaV9p
bnZlcnRNYXBfM18yCisjZGVmaW5lIHViaWRpX2lzSW52ZXJzZSB1YmlkaV9pc0ludmVyc2VfM18y
CisjZGVmaW5lIHViaWRpX29wZW4gdWJpZGlfb3Blbl8zXzIKKyNkZWZpbmUgdWJpZGlfb3BlblNp
emVkIHViaWRpX29wZW5TaXplZF8zXzIKKyNkZWZpbmUgdWJpZGlfcmVvcmRlckxvZ2ljYWwgdWJp
ZGlfcmVvcmRlckxvZ2ljYWxfM18yCisjZGVmaW5lIHViaWRpX3Jlb3JkZXJWaXN1YWwgdWJpZGlf
cmVvcmRlclZpc3VhbF8zXzIKKyNkZWZpbmUgdWJpZGlfc2V0SW52ZXJzZSB1YmlkaV9zZXRJbnZl
cnNlXzNfMgorI2RlZmluZSB1YmlkaV9zZXRMaW5lIHViaWRpX3NldExpbmVfM18yCisjZGVmaW5l
IHViaWRpX3NldFBhcmEgdWJpZGlfc2V0UGFyYV8zXzIKKyNkZWZpbmUgdWJpZGlfd3JpdGVSZW9y
ZGVyZWQgdWJpZGlfd3JpdGVSZW9yZGVyZWRfM18yCisjZGVmaW5lIHViaWRpX3dyaXRlUmV2ZXJz
ZSB1YmlkaV93cml0ZVJldmVyc2VfM18yCisjZGVmaW5lIHVibG9ja19nZXRDb2RlIHVibG9ja19n
ZXRDb2RlXzNfMgorI2RlZmluZSB1YnJrX2Nsb3NlIHVicmtfY2xvc2VfM18yCisjZGVmaW5lIHVi
cmtfY291bnRBdmFpbGFibGUgdWJya19jb3VudEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWJya19j
dXJyZW50IHVicmtfY3VycmVudF8zXzIKKyNkZWZpbmUgdWJya19maXJzdCB1YnJrX2ZpcnN0XzNf
MgorI2RlZmluZSB1YnJrX2ZvbGxvd2luZyB1YnJrX2ZvbGxvd2luZ18zXzIKKyNkZWZpbmUgdWJy
a19nZXRBdmFpbGFibGUgdWJya19nZXRBdmFpbGFibGVfM18yCisjZGVmaW5lIHVicmtfZ2V0TG9j
YWxlQnlUeXBlIHVicmtfZ2V0TG9jYWxlQnlUeXBlXzNfMgorI2RlZmluZSB1YnJrX2dldFJ1bGVT
dGF0dXMgdWJya19nZXRSdWxlU3RhdHVzXzNfMgorI2RlZmluZSB1YnJrX2dldFJ1bGVTdGF0dXNW
ZWMgdWJya19nZXRSdWxlU3RhdHVzVmVjXzNfMgorI2RlZmluZSB1YnJrX2lzQm91bmRhcnkgdWJy
a19pc0JvdW5kYXJ5XzNfMgorI2RlZmluZSB1YnJrX2xhc3QgdWJya19sYXN0XzNfMgorI2RlZmlu
ZSB1YnJrX25leHQgdWJya19uZXh0XzNfMgorI2RlZmluZSB1YnJrX29wZW4gdWJya19vcGVuXzNf
MgorI2RlZmluZSB1YnJrX29wZW5SdWxlcyB1YnJrX29wZW5SdWxlc18zXzIKKyNkZWZpbmUgdWJy
a19wcmVjZWRpbmcgdWJya19wcmVjZWRpbmdfM18yCisjZGVmaW5lIHVicmtfcHJldmlvdXMgdWJy
a19wcmV2aW91c18zXzIKKyNkZWZpbmUgdWJya19zYWZlQ2xvbmUgdWJya19zYWZlQ2xvbmVfM18y
CisjZGVmaW5lIHVicmtfc2V0VGV4dCB1YnJrX3NldFRleHRfM18yCisjZGVmaW5lIHVicmtfc3dh
cCB1YnJrX3N3YXBfM18yCisjZGVmaW5lIHVjYWxfYWRkIHVjYWxfYWRkXzNfMgorI2RlZmluZSB1
Y2FsX2NsZWFyIHVjYWxfY2xlYXJfM18yCisjZGVmaW5lIHVjYWxfY2xlYXJGaWVsZCB1Y2FsX2Ns
ZWFyRmllbGRfM18yCisjZGVmaW5lIHVjYWxfY2xvc2UgdWNhbF9jbG9zZV8zXzIKKyNkZWZpbmUg
dWNhbF9jb3VudEF2YWlsYWJsZSB1Y2FsX2NvdW50QXZhaWxhYmxlXzNfMgorI2RlZmluZSB1Y2Fs
X2VxdWl2YWxlbnRUbyB1Y2FsX2VxdWl2YWxlbnRUb18zXzIKKyNkZWZpbmUgdWNhbF9nZXQgdWNh
bF9nZXRfM18yCisjZGVmaW5lIHVjYWxfZ2V0QXR0cmlidXRlIHVjYWxfZ2V0QXR0cmlidXRlXzNf
MgorI2RlZmluZSB1Y2FsX2dldEF2YWlsYWJsZSB1Y2FsX2dldEF2YWlsYWJsZV8zXzIKKyNkZWZp
bmUgdWNhbF9nZXREU1RTYXZpbmdzIHVjYWxfZ2V0RFNUU2F2aW5nc18zXzIKKyNkZWZpbmUgdWNh
bF9nZXREZWZhdWx0VGltZVpvbmUgdWNhbF9nZXREZWZhdWx0VGltZVpvbmVfM18yCisjZGVmaW5l
IHVjYWxfZ2V0TGltaXQgdWNhbF9nZXRMaW1pdF8zXzIKKyNkZWZpbmUgdWNhbF9nZXRMb2NhbGVC
eVR5cGUgdWNhbF9nZXRMb2NhbGVCeVR5cGVfM18yCisjZGVmaW5lIHVjYWxfZ2V0TWlsbGlzIHVj
YWxfZ2V0TWlsbGlzXzNfMgorI2RlZmluZSB1Y2FsX2dldE5vdyB1Y2FsX2dldE5vd18zXzIKKyNk
ZWZpbmUgdWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1lIHVjYWxfZ2V0VGltZVpvbmVEaXNwbGF5
TmFtZV8zXzIKKyNkZWZpbmUgdWNhbF9pbkRheWxpZ2h0VGltZSB1Y2FsX2luRGF5bGlnaHRUaW1l
XzNfMgorI2RlZmluZSB1Y2FsX2lzU2V0IHVjYWxfaXNTZXRfM18yCisjZGVmaW5lIHVjYWxfb3Bl
biB1Y2FsX29wZW5fM18yCisjZGVmaW5lIHVjYWxfb3BlbkNvdW50cnlUaW1lWm9uZXMgdWNhbF9v
cGVuQ291bnRyeVRpbWVab25lc18zXzIKKyNkZWZpbmUgdWNhbF9vcGVuVGltZVpvbmVzIHVjYWxf
b3BlblRpbWVab25lc18zXzIKKyNkZWZpbmUgdWNhbF9yb2xsIHVjYWxfcm9sbF8zXzIKKyNkZWZp
bmUgdWNhbF9zZXQgdWNhbF9zZXRfM18yCisjZGVmaW5lIHVjYWxfc2V0QXR0cmlidXRlIHVjYWxf
c2V0QXR0cmlidXRlXzNfMgorI2RlZmluZSB1Y2FsX3NldERhdGUgdWNhbF9zZXREYXRlXzNfMgor
I2RlZmluZSB1Y2FsX3NldERhdGVUaW1lIHVjYWxfc2V0RGF0ZVRpbWVfM18yCisjZGVmaW5lIHVj
YWxfc2V0RGVmYXVsdFRpbWVab25lIHVjYWxfc2V0RGVmYXVsdFRpbWVab25lXzNfMgorI2RlZmlu
ZSB1Y2FsX3NldE1pbGxpcyB1Y2FsX3NldE1pbGxpc18zXzIKKyNkZWZpbmUgdWNhbF9zZXRUaW1l
Wm9uZSB1Y2FsX3NldFRpbWVab25lXzNfMgorI2RlZmluZSB1Y2FzZV9hZGRQcm9wZXJ0eVN0YXJ0
cyB1Y2FzZV9hZGRQcm9wZXJ0eVN0YXJ0c18zXzIKKyNkZWZpbmUgdWNhc2VfY2xvc2UgdWNhc2Vf
Y2xvc2VfM18yCisjZGVmaW5lIHVjYXNlX2ZvbGQgdWNhc2VfZm9sZF8zXzIKKyNkZWZpbmUgdWNh
c2VfZ2V0U2luZ2xldG9uIHVjYXNlX2dldFNpbmdsZXRvbl8zXzIKKyNkZWZpbmUgdWNhc2VfZ2V0
VHlwZSB1Y2FzZV9nZXRUeXBlXzNfMgorI2RlZmluZSB1Y2FzZV9nZXRUeXBlT3JJZ25vcmFibGUg
dWNhc2VfZ2V0VHlwZU9ySWdub3JhYmxlXzNfMgorI2RlZmluZSB1Y2FzZV9pc0Nhc2VTZW5zaXRp
dmUgdWNhc2VfaXNDYXNlU2Vuc2l0aXZlXzNfMgorI2RlZmluZSB1Y2FzZV9pc1NvZnREb3R0ZWQg
dWNhc2VfaXNTb2Z0RG90dGVkXzNfMgorI2RlZmluZSB1Y2FzZV9vcGVuIHVjYXNlX29wZW5fM18y
CisjZGVmaW5lIHVjYXNlX29wZW5CaW5hcnkgdWNhc2Vfb3BlbkJpbmFyeV8zXzIKKyNkZWZpbmUg
dWNhc2Vfc3dhcCB1Y2FzZV9zd2FwXzNfMgorI2RlZmluZSB1Y2FzZV90b0Z1bGxGb2xkaW5nIHVj
YXNlX3RvRnVsbEZvbGRpbmdfM18yCisjZGVmaW5lIHVjYXNlX3RvRnVsbExvd2VyIHVjYXNlX3Rv
RnVsbExvd2VyXzNfMgorI2RlZmluZSB1Y2FzZV90b0Z1bGxUaXRsZSB1Y2FzZV90b0Z1bGxUaXRs
ZV8zXzIKKyNkZWZpbmUgdWNhc2VfdG9GdWxsVXBwZXIgdWNhc2VfdG9GdWxsVXBwZXJfM18yCisj
ZGVmaW5lIHVjYXNlX3RvbG93ZXIgdWNhc2VfdG9sb3dlcl8zXzIKKyNkZWZpbmUgdWNhc2VfdG90
aXRsZSB1Y2FzZV90b3RpdGxlXzNfMgorI2RlZmluZSB1Y2FzZV90b3VwcGVyIHVjYXNlX3RvdXBw
ZXJfM18yCisjZGVmaW5lIHVjaGFyX2FkZFByb3BlcnR5U3RhcnRzIHVjaGFyX2FkZFByb3BlcnR5
U3RhcnRzXzNfMgorI2RlZmluZSB1Y2hhcl9nZXRIU1QgdWNoYXJfZ2V0SFNUXzNfMgorI2RlZmlu
ZSB1Y2hhcl9zd2FwTmFtZXMgdWNoYXJfc3dhcE5hbWVzXzNfMgorI2RlZmluZSB1Y2xuX2NvbW1v
bl9saWJfY2xlYW51cCB1Y2xuX2NvbW1vbl9saWJfY2xlYW51cF8zXzIKKyNkZWZpbmUgdWNsbl9j
b21tb25fcmVnaXN0ZXJDbGVhbnVwIHVjbG5fY29tbW9uX3JlZ2lzdGVyQ2xlYW51cF8zXzIKKyNk
ZWZpbmUgdWNsbl9pMThuX3JlZ2lzdGVyQ2xlYW51cCB1Y2xuX2kxOG5fcmVnaXN0ZXJDbGVhbnVw
XzNfMgorI2RlZmluZSB1Y2xuX3JlZ2lzdGVyQ2xlYW51cCB1Y2xuX3JlZ2lzdGVyQ2xlYW51cF8z
XzIKKyNkZWZpbmUgdWNtcDhfY2xvc2UgdWNtcDhfY2xvc2VfM18yCisjZGVmaW5lIHVjbXA4X2Nv
bXBhY3QgdWNtcDhfY29tcGFjdF8zXzIKKyNkZWZpbmUgdWNtcDhfZXhwYW5kIHVjbXA4X2V4cGFu
ZF8zXzIKKyNkZWZpbmUgdWNtcDhfZmxhdHRlbk1lbSB1Y21wOF9mbGF0dGVuTWVtXzNfMgorI2Rl
ZmluZSB1Y21wOF9nZXRBcnJheSB1Y21wOF9nZXRBcnJheV8zXzIKKyNkZWZpbmUgdWNtcDhfZ2V0
Q291bnQgdWNtcDhfZ2V0Q291bnRfM18yCisjZGVmaW5lIHVjbXA4X2dldEluZGV4IHVjbXA4X2dl
dEluZGV4XzNfMgorI2RlZmluZSB1Y21wOF9nZXRrQmxvY2tDb3VudCB1Y21wOF9nZXRrQmxvY2tD
b3VudF8zXzIKKyNkZWZpbmUgdWNtcDhfZ2V0a1VuaWNvZGVDb3VudCB1Y21wOF9nZXRrVW5pY29k
ZUNvdW50XzNfMgorI2RlZmluZSB1Y21wOF9pbml0IHVjbXA4X2luaXRfM18yCisjZGVmaW5lIHVj
bXA4X2luaXRBZG9wdCB1Y21wOF9pbml0QWRvcHRfM18yCisjZGVmaW5lIHVjbXA4X2luaXRBbGlh
cyB1Y21wOF9pbml0QWxpYXNfM18yCisjZGVmaW5lIHVjbXA4X2luaXRCb2d1cyB1Y21wOF9pbml0
Qm9ndXNfM18yCisjZGVmaW5lIHVjbXA4X2luaXRGcm9tRGF0YSB1Y21wOF9pbml0RnJvbURhdGFf
M18yCisjZGVmaW5lIHVjbXA4X2lzQm9ndXMgdWNtcDhfaXNCb2d1c18zXzIKKyNkZWZpbmUgdWNt
cDhfb3BlbiB1Y21wOF9vcGVuXzNfMgorI2RlZmluZSB1Y21wOF9vcGVuQWRvcHQgdWNtcDhfb3Bl
bkFkb3B0XzNfMgorI2RlZmluZSB1Y21wOF9vcGVuQWxpYXMgdWNtcDhfb3BlbkFsaWFzXzNfMgor
I2RlZmluZSB1Y21wOF9zZXQgdWNtcDhfc2V0XzNfMgorI2RlZmluZSB1Y21wOF9zZXRSYW5nZSB1
Y21wOF9zZXRSYW5nZV8zXzIKKyNkZWZpbmUgdWNudl9NQkNTRnJvbVVDaGFyMzIgdWNudl9NQkNT
RnJvbVVDaGFyMzJfM18yCisjZGVmaW5lIHVjbnZfTUJDU0Zyb21Vbmljb2RlV2l0aE9mZnNldHMg
dWNudl9NQkNTRnJvbVVuaWNvZGVXaXRoT2Zmc2V0c18zXzIKKyNkZWZpbmUgdWNudl9NQkNTR2V0
VHlwZSB1Y252X01CQ1NHZXRUeXBlXzNfMgorI2RlZmluZSB1Y252X01CQ1NHZXRVbmljb2RlU2V0
Rm9yQnl0ZXMgdWNudl9NQkNTR2V0VW5pY29kZVNldEZvckJ5dGVzXzNfMgorI2RlZmluZSB1Y252
X01CQ1NHZXRVbmljb2RlU2V0Rm9yVW5pY29kZSB1Y252X01CQ1NHZXRVbmljb2RlU2V0Rm9yVW5p
Y29kZV8zXzIKKyNkZWZpbmUgdWNudl9NQkNTSXNMZWFkQnl0ZSB1Y252X01CQ1NJc0xlYWRCeXRl
XzNfMgorI2RlZmluZSB1Y252X01CQ1NTaW1wbGVHZXROZXh0VUNoYXIgdWNudl9NQkNTU2ltcGxl
R2V0TmV4dFVDaGFyXzNfMgorI2RlZmluZSB1Y252X01CQ1NUb1VuaWNvZGVXaXRoT2Zmc2V0cyB1
Y252X01CQ1NUb1VuaWNvZGVXaXRoT2Zmc2V0c18zXzIKKyNkZWZpbmUgdWNudl9jYkZyb21VV3Jp
dGVCeXRlcyB1Y252X2NiRnJvbVVXcml0ZUJ5dGVzXzNfMgorI2RlZmluZSB1Y252X2NiRnJvbVVX
cml0ZVN1YiB1Y252X2NiRnJvbVVXcml0ZVN1Yl8zXzIKKyNkZWZpbmUgdWNudl9jYkZyb21VV3Jp
dGVVQ2hhcnMgdWNudl9jYkZyb21VV3JpdGVVQ2hhcnNfM18yCisjZGVmaW5lIHVjbnZfY2JUb1VX
cml0ZVN1YiB1Y252X2NiVG9VV3JpdGVTdWJfM18yCisjZGVmaW5lIHVjbnZfY2JUb1VXcml0ZVVD
aGFycyB1Y252X2NiVG9VV3JpdGVVQ2hhcnNfM18yCisjZGVmaW5lIHVjbnZfY2xvc2UgdWNudl9j
bG9zZV8zXzIKKyNkZWZpbmUgdWNudl9jb21wYXJlTmFtZXMgdWNudl9jb21wYXJlTmFtZXNfM18y
CisjZGVmaW5lIHVjbnZfY29udmVydCB1Y252X2NvbnZlcnRfM18yCisjZGVmaW5lIHVjbnZfY29u
dmVydEV4IHVjbnZfY29udmVydEV4XzNfMgorI2RlZmluZSB1Y252X2NvcHlQbGF0Zm9ybVN0cmlu
ZyB1Y252X2NvcHlQbGF0Zm9ybVN0cmluZ18zXzIKKyNkZWZpbmUgdWNudl9jb3VudEFsaWFzZXMg
dWNudl9jb3VudEFsaWFzZXNfM18yCisjZGVmaW5lIHVjbnZfY291bnRBdmFpbGFibGUgdWNudl9j
b3VudEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWNudl9jb3VudFN0YW5kYXJkcyB1Y252X2NvdW50
U3RhbmRhcmRzXzNfMgorI2RlZmluZSB1Y252X2NyZWF0ZUFsZ29yaXRobWljQ29udmVydGVyIHVj
bnZfY3JlYXRlQWxnb3JpdGhtaWNDb252ZXJ0ZXJfM18yCisjZGVmaW5lIHVjbnZfY3JlYXRlQ29u
dmVydGVyIHVjbnZfY3JlYXRlQ29udmVydGVyXzNfMgorI2RlZmluZSB1Y252X2NyZWF0ZUNvbnZl
cnRlckZyb21QYWNrYWdlIHVjbnZfY3JlYXRlQ29udmVydGVyRnJvbVBhY2thZ2VfM18yCisjZGVm
aW5lIHVjbnZfY3JlYXRlQ29udmVydGVyRnJvbVNoYXJlZERhdGEgdWNudl9jcmVhdGVDb252ZXJ0
ZXJGcm9tU2hhcmVkRGF0YV8zXzIKKyNkZWZpbmUgdWNudl9kZXRlY3RVbmljb2RlU2lnbmF0dXJl
IHVjbnZfZGV0ZWN0VW5pY29kZVNpZ25hdHVyZV8zXzIKKyNkZWZpbmUgdWNudl9leHRDb250aW51
ZU1hdGNoRnJvbVUgdWNudl9leHRDb250aW51ZU1hdGNoRnJvbVVfM18yCisjZGVmaW5lIHVjbnZf
ZXh0Q29udGludWVNYXRjaFRvVSB1Y252X2V4dENvbnRpbnVlTWF0Y2hUb1VfM18yCisjZGVmaW5l
IHVjbnZfZXh0R2V0VW5pY29kZVNldCB1Y252X2V4dEdldFVuaWNvZGVTZXRfM18yCisjZGVmaW5l
IHVjbnZfZXh0SW5pdGlhbE1hdGNoRnJvbVUgdWNudl9leHRJbml0aWFsTWF0Y2hGcm9tVV8zXzIK
KyNkZWZpbmUgdWNudl9leHRJbml0aWFsTWF0Y2hUb1UgdWNudl9leHRJbml0aWFsTWF0Y2hUb1Vf
M18yCisjZGVmaW5lIHVjbnZfZXh0U2ltcGxlTWF0Y2hGcm9tVSB1Y252X2V4dFNpbXBsZU1hdGNo
RnJvbVVfM18yCisjZGVmaW5lIHVjbnZfZXh0U2ltcGxlTWF0Y2hUb1UgdWNudl9leHRTaW1wbGVN
YXRjaFRvVV8zXzIKKyNkZWZpbmUgdWNudl9maXhGaWxlU2VwYXJhdG9yIHVjbnZfZml4RmlsZVNl
cGFyYXRvcl8zXzIKKyNkZWZpbmUgdWNudl9mbHVzaENhY2hlIHVjbnZfZmx1c2hDYWNoZV8zXzIK
KyNkZWZpbmUgdWNudl9mcm9tQWxnb3JpdGhtaWMgdWNudl9mcm9tQWxnb3JpdGhtaWNfM18yCisj
ZGVmaW5lIHVjbnZfZnJvbVVDaGFycyB1Y252X2Zyb21VQ2hhcnNfM18yCisjZGVmaW5lIHVjbnZf
ZnJvbVVXcml0ZUJ5dGVzIHVjbnZfZnJvbVVXcml0ZUJ5dGVzXzNfMgorI2RlZmluZSB1Y252X2Zy
b21Vbmljb2RlIHVjbnZfZnJvbVVuaWNvZGVfM18yCisjZGVmaW5lIHVjbnZfZnJvbVVuaWNvZGVf
VVRGOCB1Y252X2Zyb21Vbmljb2RlX1VURjhfM18yCisjZGVmaW5lIHVjbnZfZnJvbVVuaWNvZGVf
VVRGOF9PRkZTRVRTX0xPR0lDIHVjbnZfZnJvbVVuaWNvZGVfVVRGOF9PRkZTRVRTX0xPR0lDXzNf
MgorI2RlZmluZSB1Y252X2dldEFsaWFzIHVjbnZfZ2V0QWxpYXNfM18yCisjZGVmaW5lIHVjbnZf
Z2V0QWxpYXNlcyB1Y252X2dldEFsaWFzZXNfM18yCisjZGVmaW5lIHVjbnZfZ2V0QXZhaWxhYmxl
TmFtZSB1Y252X2dldEF2YWlsYWJsZU5hbWVfM18yCisjZGVmaW5lIHVjbnZfZ2V0Q0NTSUQgdWNu
dl9nZXRDQ1NJRF8zXzIKKyNkZWZpbmUgdWNudl9nZXRDYW5vbmljYWxOYW1lIHVjbnZfZ2V0Q2Fu
b25pY2FsTmFtZV8zXzIKKyNkZWZpbmUgdWNudl9nZXRDb21wbGV0ZVVuaWNvZGVTZXQgdWNudl9n
ZXRDb21wbGV0ZVVuaWNvZGVTZXRfM18yCisjZGVmaW5lIHVjbnZfZ2V0RGVmYXVsdE5hbWUgdWNu
dl9nZXREZWZhdWx0TmFtZV8zXzIKKyNkZWZpbmUgdWNudl9nZXREaXNwbGF5TmFtZSB1Y252X2dl
dERpc3BsYXlOYW1lXzNfMgorI2RlZmluZSB1Y252X2dldEZyb21VQ2FsbEJhY2sgdWNudl9nZXRG
cm9tVUNhbGxCYWNrXzNfMgorI2RlZmluZSB1Y252X2dldEludmFsaWRDaGFycyB1Y252X2dldElu
dmFsaWRDaGFyc18zXzIKKyNkZWZpbmUgdWNudl9nZXRJbnZhbGlkVUNoYXJzIHVjbnZfZ2V0SW52
YWxpZFVDaGFyc18zXzIKKyNkZWZpbmUgdWNudl9nZXRNYXhDaGFyU2l6ZSB1Y252X2dldE1heENo
YXJTaXplXzNfMgorI2RlZmluZSB1Y252X2dldE1pbkNoYXJTaXplIHVjbnZfZ2V0TWluQ2hhclNp
emVfM18yCisjZGVmaW5lIHVjbnZfZ2V0TmFtZSB1Y252X2dldE5hbWVfM18yCisjZGVmaW5lIHVj
bnZfZ2V0TmV4dFVDaGFyIHVjbnZfZ2V0TmV4dFVDaGFyXzNfMgorI2RlZmluZSB1Y252X2dldE5v
blN1cnJvZ2F0ZVVuaWNvZGVTZXQgdWNudl9nZXROb25TdXJyb2dhdGVVbmljb2RlU2V0XzNfMgor
I2RlZmluZSB1Y252X2dldFBsYXRmb3JtIHVjbnZfZ2V0UGxhdGZvcm1fM18yCisjZGVmaW5lIHVj
bnZfZ2V0U3RhbmRhcmQgdWNudl9nZXRTdGFuZGFyZF8zXzIKKyNkZWZpbmUgdWNudl9nZXRTdGFu
ZGFyZE5hbWUgdWNudl9nZXRTdGFuZGFyZE5hbWVfM18yCisjZGVmaW5lIHVjbnZfZ2V0U3RhcnRl
cnMgdWNudl9nZXRTdGFydGVyc18zXzIKKyNkZWZpbmUgdWNudl9nZXRTdWJzdENoYXJzIHVjbnZf
Z2V0U3Vic3RDaGFyc18zXzIKKyNkZWZpbmUgdWNudl9nZXRUb1VDYWxsQmFjayB1Y252X2dldFRv
VUNhbGxCYWNrXzNfMgorI2RlZmluZSB1Y252X2dldFR5cGUgdWNudl9nZXRUeXBlXzNfMgorI2Rl
ZmluZSB1Y252X2dldFVuaWNvZGVTZXQgdWNudl9nZXRVbmljb2RlU2V0XzNfMgorI2RlZmluZSB1
Y252X2luY3JlbWVudFJlZkNvdW50IHVjbnZfaW5jcmVtZW50UmVmQ291bnRfM18yCisjZGVmaW5l
IHVjbnZfaW9fY291bnRBbGlhc2VzIHVjbnZfaW9fY291bnRBbGlhc2VzXzNfMgorI2RlZmluZSB1
Y252X2lvX2NvdW50QXZhaWxhYmxlQWxpYXNlcyB1Y252X2lvX2NvdW50QXZhaWxhYmxlQWxpYXNl
c18zXzIKKyNkZWZpbmUgdWNudl9pb19jb3VudEF2YWlsYWJsZUNvbnZlcnRlcnMgdWNudl9pb19j
b3VudEF2YWlsYWJsZUNvbnZlcnRlcnNfM18yCisjZGVmaW5lIHVjbnZfaW9fY291bnRTdGFuZGFy
ZHMgdWNudl9pb19jb3VudFN0YW5kYXJkc18zXzIKKyNkZWZpbmUgdWNudl9pb19mbHVzaEF2YWls
YWJsZUNvbnZlcnRlckNhY2hlIHVjbnZfaW9fZmx1c2hBdmFpbGFibGVDb252ZXJ0ZXJDYWNoZV8z
XzIKKyNkZWZpbmUgdWNudl9pb19nZXRBbGlhcyB1Y252X2lvX2dldEFsaWFzXzNfMgorI2RlZmlu
ZSB1Y252X2lvX2dldEFsaWFzZXMgdWNudl9pb19nZXRBbGlhc2VzXzNfMgorI2RlZmluZSB1Y252
X2lvX2dldEF2YWlsYWJsZUNvbnZlcnRlciB1Y252X2lvX2dldEF2YWlsYWJsZUNvbnZlcnRlcl8z
XzIKKyNkZWZpbmUgdWNudl9pb19nZXRDb252ZXJ0ZXJOYW1lIHVjbnZfaW9fZ2V0Q29udmVydGVy
TmFtZV8zXzIKKyNkZWZpbmUgdWNudl9pb19nZXREZWZhdWx0Q29udmVydGVyTmFtZSB1Y252X2lv
X2dldERlZmF1bHRDb252ZXJ0ZXJOYW1lXzNfMgorI2RlZmluZSB1Y252X2lvX3NldERlZmF1bHRD
b252ZXJ0ZXJOYW1lIHVjbnZfaW9fc2V0RGVmYXVsdENvbnZlcnRlck5hbWVfM18yCisjZGVmaW5l
IHVjbnZfaW9fc3RyaXBBU0NJSUZvckNvbXBhcmUgdWNudl9pb19zdHJpcEFTQ0lJRm9yQ29tcGFy
ZV8zXzIKKyNkZWZpbmUgdWNudl9pb19zdHJpcEVCQ0RJQ0ZvckNvbXBhcmUgdWNudl9pb19zdHJp
cEVCQ0RJQ0ZvckNvbXBhcmVfM18yCisjZGVmaW5lIHVjbnZfaXNBbWJpZ3VvdXMgdWNudl9pc0Ft
YmlndW91c18zXzIKKyNkZWZpbmUgdWNudl9sb2FkIHVjbnZfbG9hZF8zXzIKKyNkZWZpbmUgdWNu
dl9sb2FkU2hhcmVkRGF0YSB1Y252X2xvYWRTaGFyZWREYXRhXzNfMgorI2RlZmluZSB1Y252X29w
ZW4gdWNudl9vcGVuXzNfMgorI2RlZmluZSB1Y252X29wZW5BbGxOYW1lcyB1Y252X29wZW5BbGxO
YW1lc18zXzIKKyNkZWZpbmUgdWNudl9vcGVuQ0NTSUQgdWNudl9vcGVuQ0NTSURfM18yCisjZGVm
aW5lIHVjbnZfb3BlblBhY2thZ2UgdWNudl9vcGVuUGFja2FnZV8zXzIKKyNkZWZpbmUgdWNudl9v
cGVuU3RhbmRhcmROYW1lcyB1Y252X29wZW5TdGFuZGFyZE5hbWVzXzNfMgorI2RlZmluZSB1Y252
X29wZW5VIHVjbnZfb3BlblVfM18yCisjZGVmaW5lIHVjbnZfcmVzZXQgdWNudl9yZXNldF8zXzIK
KyNkZWZpbmUgdWNudl9yZXNldEZyb21Vbmljb2RlIHVjbnZfcmVzZXRGcm9tVW5pY29kZV8zXzIK
KyNkZWZpbmUgdWNudl9yZXNldFRvVW5pY29kZSB1Y252X3Jlc2V0VG9Vbmljb2RlXzNfMgorI2Rl
ZmluZSB1Y252X3NhZmVDbG9uZSB1Y252X3NhZmVDbG9uZV8zXzIKKyNkZWZpbmUgdWNudl9zZXRE
ZWZhdWx0TmFtZSB1Y252X3NldERlZmF1bHROYW1lXzNfMgorI2RlZmluZSB1Y252X3NldEZhbGxi
YWNrIHVjbnZfc2V0RmFsbGJhY2tfM18yCisjZGVmaW5lIHVjbnZfc2V0RnJvbVVDYWxsQmFjayB1
Y252X3NldEZyb21VQ2FsbEJhY2tfM18yCisjZGVmaW5lIHVjbnZfc2V0U3Vic3RDaGFycyB1Y252
X3NldFN1YnN0Q2hhcnNfM18yCisjZGVmaW5lIHVjbnZfc2V0VG9VQ2FsbEJhY2sgdWNudl9zZXRU
b1VDYWxsQmFja18zXzIKKyNkZWZpbmUgdWNudl9zd2FwIHVjbnZfc3dhcF8zXzIKKyNkZWZpbmUg
dWNudl9zd2FwQWxpYXNlcyB1Y252X3N3YXBBbGlhc2VzXzNfMgorI2RlZmluZSB1Y252X3RvQWxn
b3JpdGhtaWMgdWNudl90b0FsZ29yaXRobWljXzNfMgorI2RlZmluZSB1Y252X3RvVUNoYXJzIHVj
bnZfdG9VQ2hhcnNfM18yCisjZGVmaW5lIHVjbnZfdG9VV3JpdGVDb2RlUG9pbnQgdWNudl90b1VX
cml0ZUNvZGVQb2ludF8zXzIKKyNkZWZpbmUgdWNudl90b1VXcml0ZVVDaGFycyB1Y252X3RvVVdy
aXRlVUNoYXJzXzNfMgorI2RlZmluZSB1Y252X3RvVW5pY29kZSB1Y252X3RvVW5pY29kZV8zXzIK
KyNkZWZpbmUgdWNudl91bmxvYWQgdWNudl91bmxvYWRfM18yCisjZGVmaW5lIHVjbnZfdW5sb2Fk
U2hhcmVkRGF0YUlmUmVhZHkgdWNudl91bmxvYWRTaGFyZWREYXRhSWZSZWFkeV8zXzIKKyNkZWZp
bmUgdWNudl91c2VzRmFsbGJhY2sgdWNudl91c2VzRmFsbGJhY2tfM18yCisjZGVmaW5lIHVjb2xf
YWxsb2NXZWlnaHRzIHVjb2xfYWxsb2NXZWlnaHRzXzNfMgorI2RlZmluZSB1Y29sX2Fzc2VtYmxl
VGFpbG9yaW5nVGFibGUgdWNvbF9hc3NlbWJsZVRhaWxvcmluZ1RhYmxlXzNfMgorI2RlZmluZSB1
Y29sX2NhbGNTb3J0S2V5IHVjb2xfY2FsY1NvcnRLZXlfM18yCisjZGVmaW5lIHVjb2xfY2FsY1Nv
cnRLZXlTaW1wbGVUZXJ0aWFyeSB1Y29sX2NhbGNTb3J0S2V5U2ltcGxlVGVydGlhcnlfM18yCisj
ZGVmaW5lIHVjb2xfY2xvbmVCaW5hcnkgdWNvbF9jbG9uZUJpbmFyeV8zXzIKKyNkZWZpbmUgdWNv
bF9jbG9uZVJ1bGVEYXRhIHVjb2xfY2xvbmVSdWxlRGF0YV8zXzIKKyNkZWZpbmUgdWNvbF9jbG9z
ZSB1Y29sX2Nsb3NlXzNfMgorI2RlZmluZSB1Y29sX2Nsb3NlRWxlbWVudHMgdWNvbF9jbG9zZUVs
ZW1lbnRzXzNfMgorI2RlZmluZSB1Y29sX2NvbGxhdG9yVG9JZGVudGlmaWVyIHVjb2xfY29sbGF0
b3JUb0lkZW50aWZpZXJfM18yCisjZGVmaW5lIHVjb2xfY291bnRBdmFpbGFibGUgdWNvbF9jb3Vu
dEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWNvbF9jcmVhdGVFbGVtZW50cyB1Y29sX2NyZWF0ZUVs
ZW1lbnRzXzNfMgorI2RlZmluZSB1Y29sX2RvQ0UgdWNvbF9kb0NFXzNfMgorI2RlZmluZSB1Y29s
X2VxdWFsIHVjb2xfZXF1YWxfM18yCisjZGVmaW5lIHVjb2xfZXF1YWxzIHVjb2xfZXF1YWxzXzNf
MgorI2RlZmluZSB1Y29sX2dldEF0dHJpYnV0ZSB1Y29sX2dldEF0dHJpYnV0ZV8zXzIKKyNkZWZp
bmUgdWNvbF9nZXRBdHRyaWJ1dGVPckRlZmF1bHQgdWNvbF9nZXRBdHRyaWJ1dGVPckRlZmF1bHRf
M18yCisjZGVmaW5lIHVjb2xfZ2V0QXZhaWxhYmxlIHVjb2xfZ2V0QXZhaWxhYmxlXzNfMgorI2Rl
ZmluZSB1Y29sX2dldEJvdW5kIHVjb2xfZ2V0Qm91bmRfM18yCisjZGVmaW5lIHVjb2xfZ2V0Q0VH
ZW5lcmF0b3IgdWNvbF9nZXRDRUdlbmVyYXRvcl8zXzIKKyNkZWZpbmUgdWNvbF9nZXRDRVN0cmVu
Z3RoRGlmZmVyZW5jZSB1Y29sX2dldENFU3RyZW5ndGhEaWZmZXJlbmNlXzNfMgorI2RlZmluZSB1
Y29sX2dldENvbnRyYWN0aW9ucyB1Y29sX2dldENvbnRyYWN0aW9uc18zXzIKKyNkZWZpbmUgdWNv
bF9nZXREaXNwbGF5TmFtZSB1Y29sX2dldERpc3BsYXlOYW1lXzNfMgorI2RlZmluZSB1Y29sX2dl
dEZpcnN0Q0UgdWNvbF9nZXRGaXJzdENFXzNfMgorI2RlZmluZSB1Y29sX2dldEZ1bmN0aW9uYWxF
cXVpdmFsZW50IHVjb2xfZ2V0RnVuY3Rpb25hbEVxdWl2YWxlbnRfM18yCisjZGVmaW5lIHVjb2xf
Z2V0S2V5d29yZFZhbHVlcyB1Y29sX2dldEtleXdvcmRWYWx1ZXNfM18yCisjZGVmaW5lIHVjb2xf
Z2V0S2V5d29yZHMgdWNvbF9nZXRLZXl3b3Jkc18zXzIKKyNkZWZpbmUgdWNvbF9nZXRMb2NhbGUg
dWNvbF9nZXRMb2NhbGVfM18yCisjZGVmaW5lIHVjb2xfZ2V0TG9jYWxlQnlUeXBlIHVjb2xfZ2V0
TG9jYWxlQnlUeXBlXzNfMgorI2RlZmluZSB1Y29sX2dldE1heEV4cGFuc2lvbiB1Y29sX2dldE1h
eEV4cGFuc2lvbl8zXzIKKyNkZWZpbmUgdWNvbF9nZXROZXh0Q0UgdWNvbF9nZXROZXh0Q0VfM18y
CisjZGVmaW5lIHVjb2xfZ2V0TmV4dEdlbmVyYXRlZCB1Y29sX2dldE5leHRHZW5lcmF0ZWRfM18y
CisjZGVmaW5lIHVjb2xfZ2V0T2Zmc2V0IHVjb2xfZ2V0T2Zmc2V0XzNfMgorI2RlZmluZSB1Y29s
X2dldFByZXZDRSB1Y29sX2dldFByZXZDRV8zXzIKKyNkZWZpbmUgdWNvbF9nZXRSdWxlcyB1Y29s
X2dldFJ1bGVzXzNfMgorI2RlZmluZSB1Y29sX2dldFJ1bGVzRXggdWNvbF9nZXRSdWxlc0V4XzNf
MgorI2RlZmluZSB1Y29sX2dldFNob3J0RGVmaW5pdGlvblN0cmluZyB1Y29sX2dldFNob3J0RGVm
aW5pdGlvblN0cmluZ18zXzIKKyNkZWZpbmUgdWNvbF9nZXRTaW1wbGVDRUdlbmVyYXRvciB1Y29s
X2dldFNpbXBsZUNFR2VuZXJhdG9yXzNfMgorI2RlZmluZSB1Y29sX2dldFNvcnRLZXkgdWNvbF9n
ZXRTb3J0S2V5XzNfMgorI2RlZmluZSB1Y29sX2dldFNvcnRLZXlTaXplIHVjb2xfZ2V0U29ydEtl
eVNpemVfM18yCisjZGVmaW5lIHVjb2xfZ2V0U29ydEtleVdpdGhBbGxvY2F0aW9uIHVjb2xfZ2V0
U29ydEtleVdpdGhBbGxvY2F0aW9uXzNfMgorI2RlZmluZSB1Y29sX2dldFN0cmVuZ3RoIHVjb2xf
Z2V0U3RyZW5ndGhfM18yCisjZGVmaW5lIHVjb2xfZ2V0VGFpbG9yZWRTZXQgdWNvbF9nZXRUYWls
b3JlZFNldF8zXzIKKyNkZWZpbmUgdWNvbF9nZXRVQ0FWZXJzaW9uIHVjb2xfZ2V0VUNBVmVyc2lv
bl8zXzIKKyNkZWZpbmUgdWNvbF9nZXRVbnNhZmVTZXQgdWNvbF9nZXRVbnNhZmVTZXRfM18yCisj
ZGVmaW5lIHVjb2xfZ2V0VmFyaWFibGVUb3AgdWNvbF9nZXRWYXJpYWJsZVRvcF8zXzIKKyNkZWZp
bmUgdWNvbF9nZXRWZXJzaW9uIHVjb2xfZ2V0VmVyc2lvbl8zXzIKKyNkZWZpbmUgdWNvbF9ncmVh
dGVyIHVjb2xfZ3JlYXRlcl8zXzIKKyNkZWZpbmUgdWNvbF9ncmVhdGVyT3JFcXVhbCB1Y29sX2dy
ZWF0ZXJPckVxdWFsXzNfMgorI2RlZmluZSB1Y29sX2lkZW50aWZpZXJUb1Nob3J0U3RyaW5nIHVj
b2xfaWRlbnRpZmllclRvU2hvcnRTdHJpbmdfM18yCisjZGVmaW5lIHVjb2xfaW5pdEJ1ZmZlcnMg
dWNvbF9pbml0QnVmZmVyc18zXzIKKyNkZWZpbmUgdWNvbF9pbml0Q29sbGF0b3IgdWNvbF9pbml0
Q29sbGF0b3JfM18yCisjZGVmaW5lIHVjb2xfaW5pdEludmVyc2VVQ0EgdWNvbF9pbml0SW52ZXJz
ZVVDQV8zXzIKKyNkZWZpbmUgdWNvbF9pbml0VUNBIHVjb2xfaW5pdFVDQV8zXzIKKyNkZWZpbmUg
dWNvbF9pbnZfZ2V0R2FwUG9zaXRpb25zIHVjb2xfaW52X2dldEdhcFBvc2l0aW9uc18zXzIKKyNk
ZWZpbmUgdWNvbF9pbnZfZ2V0TmV4dENFIHVjb2xfaW52X2dldE5leHRDRV8zXzIKKyNkZWZpbmUg
dWNvbF9pbnZfZ2V0UHJldkNFIHVjb2xfaW52X2dldFByZXZDRV8zXzIKKyNkZWZpbmUgdWNvbF9p
c1RhaWxvcmVkIHVjb2xfaXNUYWlsb3JlZF8zXzIKKyNkZWZpbmUgdWNvbF9rZXlIYXNoQ29kZSB1
Y29sX2tleUhhc2hDb2RlXzNfMgorI2RlZmluZSB1Y29sX21lcmdlU29ydGtleXMgdWNvbF9tZXJn
ZVNvcnRrZXlzXzNfMgorI2RlZmluZSB1Y29sX25leHQgdWNvbF9uZXh0XzNfMgorI2RlZmluZSB1
Y29sX25leHRTb3J0S2V5UGFydCB1Y29sX25leHRTb3J0S2V5UGFydF8zXzIKKyNkZWZpbmUgdWNv
bF9uZXh0V2VpZ2h0IHVjb2xfbmV4dFdlaWdodF8zXzIKKyNkZWZpbmUgdWNvbF9ub3JtYWxpemVT
aG9ydERlZmluaXRpb25TdHJpbmcgdWNvbF9ub3JtYWxpemVTaG9ydERlZmluaXRpb25TdHJpbmdf
M18yCisjZGVmaW5lIHVjb2xfb3BlbiB1Y29sX29wZW5fM18yCisjZGVmaW5lIHVjb2xfb3BlbkF2
YWlsYWJsZUxvY2FsZXMgdWNvbF9vcGVuQXZhaWxhYmxlTG9jYWxlc18zXzIKKyNkZWZpbmUgdWNv
bF9vcGVuQmluYXJ5IHVjb2xfb3BlbkJpbmFyeV8zXzIKKyNkZWZpbmUgdWNvbF9vcGVuRWxlbWVu
dHMgdWNvbF9vcGVuRWxlbWVudHNfM18yCisjZGVmaW5lIHVjb2xfb3BlbkZyb21JZGVudGlmaWVy
IHVjb2xfb3BlbkZyb21JZGVudGlmaWVyXzNfMgorI2RlZmluZSB1Y29sX29wZW5Gcm9tU2hvcnRT
dHJpbmcgdWNvbF9vcGVuRnJvbVNob3J0U3RyaW5nXzNfMgorI2RlZmluZSB1Y29sX29wZW5SdWxl
cyB1Y29sX29wZW5SdWxlc18zXzIKKyNkZWZpbmUgdWNvbF9vcGVuX2ludGVybmFsIHVjb2xfb3Bl
bl9pbnRlcm5hbF8zXzIKKyNkZWZpbmUgdWNvbF9wcmV2aW91cyB1Y29sX3ByZXZpb3VzXzNfMgor
I2RlZmluZSB1Y29sX3ByaW1hcnlPcmRlciB1Y29sX3ByaW1hcnlPcmRlcl8zXzIKKyNkZWZpbmUg
dWNvbF9wcnZfZ2V0U3BlY2lhbENFIHVjb2xfcHJ2X2dldFNwZWNpYWxDRV8zXzIKKyNkZWZpbmUg
dWNvbF9wcnZfZ2V0U3BlY2lhbFByZXZDRSB1Y29sX3Bydl9nZXRTcGVjaWFsUHJldkNFXzNfMgor
I2RlZmluZSB1Y29sX3Jlc2V0IHVjb2xfcmVzZXRfM18yCisjZGVmaW5lIHVjb2xfcmVzdG9yZVZh
cmlhYmxlVG9wIHVjb2xfcmVzdG9yZVZhcmlhYmxlVG9wXzNfMgorI2RlZmluZSB1Y29sX3NhZmVD
bG9uZSB1Y29sX3NhZmVDbG9uZV8zXzIKKyNkZWZpbmUgdWNvbF9zZWNvbmRhcnlPcmRlciB1Y29s
X3NlY29uZGFyeU9yZGVyXzNfMgorI2RlZmluZSB1Y29sX3NldEF0dHJpYnV0ZSB1Y29sX3NldEF0
dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdWNvbF9zZXRPZmZzZXQgdWNvbF9zZXRPZmZzZXRfM18yCisj
ZGVmaW5lIHVjb2xfc2V0T3B0aW9uc0Zyb21IZWFkZXIgdWNvbF9zZXRPcHRpb25zRnJvbUhlYWRl
cl8zXzIKKyNkZWZpbmUgdWNvbF9zZXRSZXFWYWxpZExvY2FsZXMgdWNvbF9zZXRSZXFWYWxpZExv
Y2FsZXNfM18yCisjZGVmaW5lIHVjb2xfc2V0U3RyZW5ndGggdWNvbF9zZXRTdHJlbmd0aF8zXzIK
KyNkZWZpbmUgdWNvbF9zZXRUZXh0IHVjb2xfc2V0VGV4dF8zXzIKKyNkZWZpbmUgdWNvbF9zZXRW
YXJpYWJsZVRvcCB1Y29sX3NldFZhcmlhYmxlVG9wXzNfMgorI2RlZmluZSB1Y29sX3Nob3J0U3Ry
aW5nVG9JZGVudGlmaWVyIHVjb2xfc2hvcnRTdHJpbmdUb0lkZW50aWZpZXJfM18yCisjZGVmaW5l
IHVjb2xfc29ydEtleVRvU3RyaW5nIHVjb2xfc29ydEtleVRvU3RyaW5nXzNfMgorI2RlZmluZSB1
Y29sX3N0cmNvbGwgdWNvbF9zdHJjb2xsXzNfMgorI2RlZmluZSB1Y29sX3N0cmNvbGxJdGVyIHVj
b2xfc3RyY29sbEl0ZXJfM18yCisjZGVmaW5lIHVjb2xfc3dhcCB1Y29sX3N3YXBfM18yCisjZGVm
aW5lIHVjb2xfc3dhcEJpbmFyeSB1Y29sX3N3YXBCaW5hcnlfM18yCisjZGVmaW5lIHVjb2xfc3dh
cEludmVyc2VVQ0EgdWNvbF9zd2FwSW52ZXJzZVVDQV8zXzIKKyNkZWZpbmUgdWNvbF90ZXJ0aWFy
eU9yZGVyIHVjb2xfdGVydGlhcnlPcmRlcl8zXzIKKyNkZWZpbmUgdWNvbF90b2tfYXNzZW1ibGVU
b2tlbkxpc3QgdWNvbF90b2tfYXNzZW1ibGVUb2tlbkxpc3RfM18yCisjZGVmaW5lIHVjb2xfdG9r
X2Nsb3NlVG9rZW5MaXN0IHVjb2xfdG9rX2Nsb3NlVG9rZW5MaXN0XzNfMgorI2RlZmluZSB1Y29s
X3Rva19nZXROZXh0QXJndW1lbnQgdWNvbF90b2tfZ2V0TmV4dEFyZ3VtZW50XzNfMgorI2RlZmlu
ZSB1Y29sX3Rva19pbml0VG9rZW5MaXN0IHVjb2xfdG9rX2luaXRUb2tlbkxpc3RfM18yCisjZGVm
aW5lIHVjb2xfdG9rX3BhcnNlTmV4dFRva2VuIHVjb2xfdG9rX3BhcnNlTmV4dFRva2VuXzNfMgor
I2RlZmluZSB1Y29sX3VwZGF0ZUludGVybmFsU3RhdGUgdWNvbF91cGRhdGVJbnRlcm5hbFN0YXRl
XzNfMgorI2RlZmluZSB1Y3Vycl9mb3JMb2NhbGUgdWN1cnJfZm9yTG9jYWxlXzNfMgorI2RlZmlu
ZSB1Y3Vycl9nZXREZWZhdWx0RnJhY3Rpb25EaWdpdHMgdWN1cnJfZ2V0RGVmYXVsdEZyYWN0aW9u
RGlnaXRzXzNfMgorI2RlZmluZSB1Y3Vycl9nZXROYW1lIHVjdXJyX2dldE5hbWVfM18yCisjZGVm
aW5lIHVjdXJyX2dldFJvdW5kaW5nSW5jcmVtZW50IHVjdXJyX2dldFJvdW5kaW5nSW5jcmVtZW50
XzNfMgorI2RlZmluZSB1Y3Vycl9yZWdpc3RlciB1Y3Vycl9yZWdpc3Rlcl8zXzIKKyNkZWZpbmUg
dWN1cnJfdW5yZWdpc3RlciB1Y3Vycl91bnJlZ2lzdGVyXzNfMgorI2RlZmluZSB1ZGF0X2FwcGx5
UGF0dGVybiB1ZGF0X2FwcGx5UGF0dGVybl8zXzIKKyNkZWZpbmUgdWRhdF9jbG9uZSB1ZGF0X2Ns
b25lXzNfMgorI2RlZmluZSB1ZGF0X2Nsb3NlIHVkYXRfY2xvc2VfM18yCisjZGVmaW5lIHVkYXRf
Y291bnRBdmFpbGFibGUgdWRhdF9jb3VudEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWRhdF9jb3Vu
dFN5bWJvbHMgdWRhdF9jb3VudFN5bWJvbHNfM18yCisjZGVmaW5lIHVkYXRfZm9ybWF0IHVkYXRf
Zm9ybWF0XzNfMgorI2RlZmluZSB1ZGF0X2dldDJEaWdpdFllYXJTdGFydCB1ZGF0X2dldDJEaWdp
dFllYXJTdGFydF8zXzIKKyNkZWZpbmUgdWRhdF9nZXRBdmFpbGFibGUgdWRhdF9nZXRBdmFpbGFi
bGVfM18yCisjZGVmaW5lIHVkYXRfZ2V0Q2FsZW5kYXIgdWRhdF9nZXRDYWxlbmRhcl8zXzIKKyNk
ZWZpbmUgdWRhdF9nZXRMb2NhbGVCeVR5cGUgdWRhdF9nZXRMb2NhbGVCeVR5cGVfM18yCisjZGVm
aW5lIHVkYXRfZ2V0TnVtYmVyRm9ybWF0IHVkYXRfZ2V0TnVtYmVyRm9ybWF0XzNfMgorI2RlZmlu
ZSB1ZGF0X2dldFN5bWJvbHMgdWRhdF9nZXRTeW1ib2xzXzNfMgorI2RlZmluZSB1ZGF0X2lzTGVu
aWVudCB1ZGF0X2lzTGVuaWVudF8zXzIKKyNkZWZpbmUgdWRhdF9vcGVuIHVkYXRfb3Blbl8zXzIK
KyNkZWZpbmUgdWRhdF9wYXJzZSB1ZGF0X3BhcnNlXzNfMgorI2RlZmluZSB1ZGF0X3BhcnNlQ2Fs
ZW5kYXIgdWRhdF9wYXJzZUNhbGVuZGFyXzNfMgorI2RlZmluZSB1ZGF0X3NldDJEaWdpdFllYXJT
dGFydCB1ZGF0X3NldDJEaWdpdFllYXJTdGFydF8zXzIKKyNkZWZpbmUgdWRhdF9zZXRDYWxlbmRh
ciB1ZGF0X3NldENhbGVuZGFyXzNfMgorI2RlZmluZSB1ZGF0X3NldExlbmllbnQgdWRhdF9zZXRM
ZW5pZW50XzNfMgorI2RlZmluZSB1ZGF0X3NldE51bWJlckZvcm1hdCB1ZGF0X3NldE51bWJlckZv
cm1hdF8zXzIKKyNkZWZpbmUgdWRhdF9zZXRTeW1ib2xzIHVkYXRfc2V0U3ltYm9sc18zXzIKKyNk
ZWZpbmUgdWRhdF90b1BhdHRlcm4gdWRhdF90b1BhdHRlcm5fM18yCisjZGVmaW5lIHVkYXRhX2No
ZWNrQ29tbW9uRGF0YSB1ZGF0YV9jaGVja0NvbW1vbkRhdGFfM18yCisjZGVmaW5lIHVkYXRhX2Ns
b3NlIHVkYXRhX2Nsb3NlXzNfMgorI2RlZmluZSB1ZGF0YV9jbG9zZVN3YXBwZXIgdWRhdGFfY2xv
c2VTd2FwcGVyXzNfMgorI2RlZmluZSB1ZGF0YV9nZXRIZWFkZXJTaXplIHVkYXRhX2dldEhlYWRl
clNpemVfM18yCisjZGVmaW5lIHVkYXRhX2dldEluZm8gdWRhdGFfZ2V0SW5mb18zXzIKKyNkZWZp
bmUgdWRhdGFfZ2V0SW5mb1NpemUgdWRhdGFfZ2V0SW5mb1NpemVfM18yCisjZGVmaW5lIHVkYXRh
X2dldExlbmd0aCB1ZGF0YV9nZXRMZW5ndGhfM18yCisjZGVmaW5lIHVkYXRhX2dldE1lbW9yeSB1
ZGF0YV9nZXRNZW1vcnlfM18yCisjZGVmaW5lIHVkYXRhX2dldFJhd01lbW9yeSB1ZGF0YV9nZXRS
YXdNZW1vcnlfM18yCisjZGVmaW5lIHVkYXRhX29wZW4gdWRhdGFfb3Blbl8zXzIKKyNkZWZpbmUg
dWRhdGFfb3BlbkNob2ljZSB1ZGF0YV9vcGVuQ2hvaWNlXzNfMgorI2RlZmluZSB1ZGF0YV9vcGVu
U3dhcHBlciB1ZGF0YV9vcGVuU3dhcHBlcl8zXzIKKyNkZWZpbmUgdWRhdGFfb3BlblN3YXBwZXJG
b3JJbnB1dERhdGEgdWRhdGFfb3BlblN3YXBwZXJGb3JJbnB1dERhdGFfM18yCisjZGVmaW5lIHVk
YXRhX3ByaW50RXJyb3IgdWRhdGFfcHJpbnRFcnJvcl8zXzIKKyNkZWZpbmUgdWRhdGFfcmVhZElu
dDE2IHVkYXRhX3JlYWRJbnQxNl8zXzIKKyNkZWZpbmUgdWRhdGFfcmVhZEludDMyIHVkYXRhX3Jl
YWRJbnQzMl8zXzIKKyNkZWZpbmUgdWRhdGFfc2V0QXBwRGF0YSB1ZGF0YV9zZXRBcHBEYXRhXzNf
MgorI2RlZmluZSB1ZGF0YV9zZXRDb21tb25EYXRhIHVkYXRhX3NldENvbW1vbkRhdGFfM18yCisj
ZGVmaW5lIHVkYXRhX3N3YXBEYXRhSGVhZGVyIHVkYXRhX3N3YXBEYXRhSGVhZGVyXzNfMgorI2Rl
ZmluZSB1ZGF0YV9zd2FwSW52U3RyaW5nQmxvY2sgdWRhdGFfc3dhcEludlN0cmluZ0Jsb2NrXzNf
MgorI2RlZmluZSB1ZW51bV9jbG9zZSB1ZW51bV9jbG9zZV8zXzIKKyNkZWZpbmUgdWVudW1fY291
bnQgdWVudW1fY291bnRfM18yCisjZGVmaW5lIHVlbnVtX25leHQgdWVudW1fbmV4dF8zXzIKKyNk
ZWZpbmUgdWVudW1fbmV4dERlZmF1bHQgdWVudW1fbmV4dERlZmF1bHRfM18yCisjZGVmaW5lIHVl
bnVtX29wZW5DaGFyU3RyaW5nc0VudW1lcmF0aW9uIHVlbnVtX29wZW5DaGFyU3RyaW5nc0VudW1l
cmF0aW9uXzNfMgorI2RlZmluZSB1ZW51bV9vcGVuU3RyaW5nRW51bWVyYXRpb24gdWVudW1fb3Bl
blN0cmluZ0VudW1lcmF0aW9uXzNfMgorI2RlZmluZSB1ZW51bV9yZXNldCB1ZW51bV9yZXNldF8z
XzIKKyNkZWZpbmUgdWVudW1fdW5leHQgdWVudW1fdW5leHRfM18yCisjZGVmaW5lIHVlbnVtX3Vu
ZXh0RGVmYXVsdCB1ZW51bV91bmV4dERlZmF1bHRfM18yCisjZGVmaW5lIHVmaWxlX2Nsb3NlX3Ry
YW5zbGl0IHVmaWxlX2Nsb3NlX3RyYW5zbGl0XzNfMgorI2RlZmluZSB1ZmlsZV9maWxsX3VjaGFy
X2J1ZmZlciB1ZmlsZV9maWxsX3VjaGFyX2J1ZmZlcl8zXzIKKyNkZWZpbmUgdWZpbGVfZmx1c2hf
dHJhbnNsaXQgdWZpbGVfZmx1c2hfdHJhbnNsaXRfM18yCisjZGVmaW5lIHVmaWxlX2dldGNoIHVm
aWxlX2dldGNoXzNfMgorI2RlZmluZSB1ZmlsZV9nZXRjaDMyIHVmaWxlX2dldGNoMzJfM18yCisj
ZGVmaW5lIHVmbXRfNjR0b3UgdWZtdF82NHRvdV8zXzIKKyNkZWZpbmUgdWZtdF9kZWZhdWx0Q1BU
b1VuaWNvZGUgdWZtdF9kZWZhdWx0Q1BUb1VuaWNvZGVfM18yCisjZGVmaW5lIHVmbXRfZGlnaXR2
YWx1ZSB1Zm10X2RpZ2l0dmFsdWVfM18yCisjZGVmaW5lIHVmbXRfaXNkaWdpdCB1Zm10X2lzZGln
aXRfM18yCisjZGVmaW5lIHVmbXRfcHRvdSB1Zm10X3B0b3VfM18yCisjZGVmaW5lIHVmbXRfdXRv
NjQgdWZtdF91dG82NF8zXzIKKyNkZWZpbmUgdWZtdF91dG9wIHVmbXRfdXRvcF8zXzIKKyNkZWZp
bmUgdWhhc2hfY2xvc2UgdWhhc2hfY2xvc2VfM18yCisjZGVmaW5lIHVoYXNoX2NvbXBhcmVDYXNl
bGVzc1VuaWNvZGVTdHJpbmcgdWhhc2hfY29tcGFyZUNhc2VsZXNzVW5pY29kZVN0cmluZ18zXzIK
KyNkZWZpbmUgdWhhc2hfY29tcGFyZUNoYXJzIHVoYXNoX2NvbXBhcmVDaGFyc18zXzIKKyNkZWZp
bmUgdWhhc2hfY29tcGFyZUlDaGFycyB1aGFzaF9jb21wYXJlSUNoYXJzXzNfMgorI2RlZmluZSB1
aGFzaF9jb21wYXJlTG9uZyB1aGFzaF9jb21wYXJlTG9uZ18zXzIKKyNkZWZpbmUgdWhhc2hfY29t
cGFyZVVDaGFycyB1aGFzaF9jb21wYXJlVUNoYXJzXzNfMgorI2RlZmluZSB1aGFzaF9jb21wYXJl
VW5pY29kZVN0cmluZyB1aGFzaF9jb21wYXJlVW5pY29kZVN0cmluZ18zXzIKKyNkZWZpbmUgdWhh
c2hfY291bnQgdWhhc2hfY291bnRfM18yCisjZGVmaW5lIHVoYXNoX2RlbGV0ZUhhc2h0YWJsZSB1
aGFzaF9kZWxldGVIYXNodGFibGVfM18yCisjZGVmaW5lIHVoYXNoX2RlbGV0ZVVWZWN0b3IgdWhh
c2hfZGVsZXRlVVZlY3Rvcl8zXzIKKyNkZWZpbmUgdWhhc2hfZGVsZXRlVW5pY29kZVN0cmluZyB1
aGFzaF9kZWxldGVVbmljb2RlU3RyaW5nXzNfMgorI2RlZmluZSB1aGFzaF9maW5kIHVoYXNoX2Zp
bmRfM18yCisjZGVmaW5lIHVoYXNoX2ZyZWVCbG9jayB1aGFzaF9mcmVlQmxvY2tfM18yCisjZGVm
aW5lIHVoYXNoX2dldCB1aGFzaF9nZXRfM18yCisjZGVmaW5lIHVoYXNoX2dldGkgdWhhc2hfZ2V0
aV8zXzIKKyNkZWZpbmUgdWhhc2hfaGFzaENhc2VsZXNzVW5pY29kZVN0cmluZyB1aGFzaF9oYXNo
Q2FzZWxlc3NVbmljb2RlU3RyaW5nXzNfMgorI2RlZmluZSB1aGFzaF9oYXNoQ2hhcnMgdWhhc2hf
aGFzaENoYXJzXzNfMgorI2RlZmluZSB1aGFzaF9oYXNoSUNoYXJzIHVoYXNoX2hhc2hJQ2hhcnNf
M18yCisjZGVmaW5lIHVoYXNoX2hhc2hMb25nIHVoYXNoX2hhc2hMb25nXzNfMgorI2RlZmluZSB1
aGFzaF9oYXNoVUNoYXJzIHVoYXNoX2hhc2hVQ2hhcnNfM18yCisjZGVmaW5lIHVoYXNoX2hhc2hV
Q2hhcnNOIHVoYXNoX2hhc2hVQ2hhcnNOXzNfMgorI2RlZmluZSB1aGFzaF9oYXNoVW5pY29kZVN0
cmluZyB1aGFzaF9oYXNoVW5pY29kZVN0cmluZ18zXzIKKyNkZWZpbmUgdWhhc2hfaWdldCB1aGFz
aF9pZ2V0XzNfMgorI2RlZmluZSB1aGFzaF9pZ2V0aSB1aGFzaF9pZ2V0aV8zXzIKKyNkZWZpbmUg
dWhhc2hfaXB1dCB1aGFzaF9pcHV0XzNfMgorI2RlZmluZSB1aGFzaF9pcHV0aSB1aGFzaF9pcHV0
aV8zXzIKKyNkZWZpbmUgdWhhc2hfaXJlbW92ZSB1aGFzaF9pcmVtb3ZlXzNfMgorI2RlZmluZSB1
aGFzaF9pcmVtb3ZlaSB1aGFzaF9pcmVtb3ZlaV8zXzIKKyNkZWZpbmUgdWhhc2hfbmV4dEVsZW1l
bnQgdWhhc2hfbmV4dEVsZW1lbnRfM18yCisjZGVmaW5lIHVoYXNoX29wZW4gdWhhc2hfb3Blbl8z
XzIKKyNkZWZpbmUgdWhhc2hfb3BlblNpemUgdWhhc2hfb3BlblNpemVfM18yCisjZGVmaW5lIHVo
YXNoX3B1dCB1aGFzaF9wdXRfM18yCisjZGVmaW5lIHVoYXNoX3B1dGkgdWhhc2hfcHV0aV8zXzIK
KyNkZWZpbmUgdWhhc2hfcmVtb3ZlIHVoYXNoX3JlbW92ZV8zXzIKKyNkZWZpbmUgdWhhc2hfcmVt
b3ZlQWxsIHVoYXNoX3JlbW92ZUFsbF8zXzIKKyNkZWZpbmUgdWhhc2hfcmVtb3ZlRWxlbWVudCB1
aGFzaF9yZW1vdmVFbGVtZW50XzNfMgorI2RlZmluZSB1aGFzaF9yZW1vdmVpIHVoYXNoX3JlbW92
ZWlfM18yCisjZGVmaW5lIHVoYXNoX3NldEtleUNvbXBhcmF0b3IgdWhhc2hfc2V0S2V5Q29tcGFy
YXRvcl8zXzIKKyNkZWZpbmUgdWhhc2hfc2V0S2V5RGVsZXRlciB1aGFzaF9zZXRLZXlEZWxldGVy
XzNfMgorI2RlZmluZSB1aGFzaF9zZXRLZXlIYXNoZXIgdWhhc2hfc2V0S2V5SGFzaGVyXzNfMgor
I2RlZmluZSB1aGFzaF9zZXRSZXNpemVQb2xpY3kgdWhhc2hfc2V0UmVzaXplUG9saWN5XzNfMgor
I2RlZmluZSB1aGFzaF9zZXRWYWx1ZURlbGV0ZXIgdWhhc2hfc2V0VmFsdWVEZWxldGVyXzNfMgor
I2RlZmluZSB1aGFzaF90b2tpIHVoYXNoX3Rva2lfM18yCisjZGVmaW5lIHVoYXNoX3Rva3AgdWhh
c2hfdG9rcF8zXzIKKyNkZWZpbmUgdWhzdF9hZGRQcm9wZXJ0eVN0YXJ0cyB1aHN0X2FkZFByb3Bl
cnR5U3RhcnRzXzNfMgorI2RlZmluZSB1aWRuYV9JRE5Ub0FTQ0lJIHVpZG5hX0lETlRvQVNDSUlf
M18yCisjZGVmaW5lIHVpZG5hX0lETlRvVW5pY29kZSB1aWRuYV9JRE5Ub1VuaWNvZGVfM18yCisj
ZGVmaW5lIHVpZG5hX2NvbXBhcmUgdWlkbmFfY29tcGFyZV8zXzIKKyNkZWZpbmUgdWlkbmFfdG9B
U0NJSSB1aWRuYV90b0FTQ0lJXzNfMgorI2RlZmluZSB1aWRuYV90b1VuaWNvZGUgdWlkbmFfdG9V
bmljb2RlXzNfMgorI2RlZmluZSB1aXRlcl9jdXJyZW50MzIgdWl0ZXJfY3VycmVudDMyXzNfMgor
I2RlZmluZSB1aXRlcl9nZXRTdGF0ZSB1aXRlcl9nZXRTdGF0ZV8zXzIKKyNkZWZpbmUgdWl0ZXJf
bmV4dDMyIHVpdGVyX25leHQzMl8zXzIKKyNkZWZpbmUgdWl0ZXJfcHJldmlvdXMzMiB1aXRlcl9w
cmV2aW91czMyXzNfMgorI2RlZmluZSB1aXRlcl9zZXRDaGFyYWN0ZXJJdGVyYXRvciB1aXRlcl9z
ZXRDaGFyYWN0ZXJJdGVyYXRvcl8zXzIKKyNkZWZpbmUgdWl0ZXJfc2V0UmVwbGFjZWFibGUgdWl0
ZXJfc2V0UmVwbGFjZWFibGVfM18yCisjZGVmaW5lIHVpdGVyX3NldFN0YXRlIHVpdGVyX3NldFN0
YXRlXzNfMgorI2RlZmluZSB1aXRlcl9zZXRTdHJpbmcgdWl0ZXJfc2V0U3RyaW5nXzNfMgorI2Rl
ZmluZSB1aXRlcl9zZXRVVEYxNkJFIHVpdGVyX3NldFVURjE2QkVfM18yCisjZGVmaW5lIHVpdGVy
X3NldFVURjggdWl0ZXJfc2V0VVRGOF8zXzIKKyNkZWZpbmUgdWxvY19hY2NlcHRMYW5ndWFnZSB1
bG9jX2FjY2VwdExhbmd1YWdlXzNfMgorI2RlZmluZSB1bG9jX2FjY2VwdExhbmd1YWdlRnJvbUhU
VFAgdWxvY19hY2NlcHRMYW5ndWFnZUZyb21IVFRQXzNfMgorI2RlZmluZSB1bG9jX2Nhbm9uaWNh
bGl6ZSB1bG9jX2Nhbm9uaWNhbGl6ZV8zXzIKKyNkZWZpbmUgdWxvY19jb3VudEF2YWlsYWJsZSB1
bG9jX2NvdW50QXZhaWxhYmxlXzNfMgorI2RlZmluZSB1bG9jX2dldEF2YWlsYWJsZSB1bG9jX2dl
dEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWxvY19nZXRCYXNlTmFtZSB1bG9jX2dldEJhc2VOYW1l
XzNfMgorI2RlZmluZSB1bG9jX2dldENvdW50cnkgdWxvY19nZXRDb3VudHJ5XzNfMgorI2RlZmlu
ZSB1bG9jX2dldERlZmF1bHQgdWxvY19nZXREZWZhdWx0XzNfMgorI2RlZmluZSB1bG9jX2dldERp
c3BsYXlDb3VudHJ5IHVsb2NfZ2V0RGlzcGxheUNvdW50cnlfM18yCisjZGVmaW5lIHVsb2NfZ2V0
RGlzcGxheUtleXdvcmQgdWxvY19nZXREaXNwbGF5S2V5d29yZF8zXzIKKyNkZWZpbmUgdWxvY19n
ZXREaXNwbGF5S2V5d29yZFZhbHVlIHVsb2NfZ2V0RGlzcGxheUtleXdvcmRWYWx1ZV8zXzIKKyNk
ZWZpbmUgdWxvY19nZXREaXNwbGF5TGFuZ3VhZ2UgdWxvY19nZXREaXNwbGF5TGFuZ3VhZ2VfM18y
CisjZGVmaW5lIHVsb2NfZ2V0RGlzcGxheU5hbWUgdWxvY19nZXREaXNwbGF5TmFtZV8zXzIKKyNk
ZWZpbmUgdWxvY19nZXREaXNwbGF5U2NyaXB0IHVsb2NfZ2V0RGlzcGxheVNjcmlwdF8zXzIKKyNk
ZWZpbmUgdWxvY19nZXREaXNwbGF5VmFyaWFudCB1bG9jX2dldERpc3BsYXlWYXJpYW50XzNfMgor
I2RlZmluZSB1bG9jX2dldElTTzNDb3VudHJ5IHVsb2NfZ2V0SVNPM0NvdW50cnlfM18yCisjZGVm
aW5lIHVsb2NfZ2V0SVNPM0xhbmd1YWdlIHVsb2NfZ2V0SVNPM0xhbmd1YWdlXzNfMgorI2RlZmlu
ZSB1bG9jX2dldElTT0NvdW50cmllcyB1bG9jX2dldElTT0NvdW50cmllc18zXzIKKyNkZWZpbmUg
dWxvY19nZXRJU09MYW5ndWFnZXMgdWxvY19nZXRJU09MYW5ndWFnZXNfM18yCisjZGVmaW5lIHVs
b2NfZ2V0S2V5d29yZFZhbHVlIHVsb2NfZ2V0S2V5d29yZFZhbHVlXzNfMgorI2RlZmluZSB1bG9j
X2dldExDSUQgdWxvY19nZXRMQ0lEXzNfMgorI2RlZmluZSB1bG9jX2dldExhbmd1YWdlIHVsb2Nf
Z2V0TGFuZ3VhZ2VfM18yCisjZGVmaW5lIHVsb2NfZ2V0TmFtZSB1bG9jX2dldE5hbWVfM18yCisj
ZGVmaW5lIHVsb2NfZ2V0UGFyZW50IHVsb2NfZ2V0UGFyZW50XzNfMgorI2RlZmluZSB1bG9jX2dl
dFNjcmlwdCB1bG9jX2dldFNjcmlwdF8zXzIKKyNkZWZpbmUgdWxvY19nZXRWYXJpYW50IHVsb2Nf
Z2V0VmFyaWFudF8zXzIKKyNkZWZpbmUgdWxvY19vcGVuS2V5d29yZExpc3QgdWxvY19vcGVuS2V5
d29yZExpc3RfM18yCisjZGVmaW5lIHVsb2Nfb3BlbktleXdvcmRzIHVsb2Nfb3BlbktleXdvcmRz
XzNfMgorI2RlZmluZSB1bG9jX3NldERlZmF1bHQgdWxvY19zZXREZWZhdWx0XzNfMgorI2RlZmlu
ZSB1bG9jX3NldEtleXdvcmRWYWx1ZSB1bG9jX3NldEtleXdvcmRWYWx1ZV8zXzIKKyNkZWZpbmUg
dWxvY2RhdGFfZ2V0RXhlbXBsYXJTZXQgdWxvY2RhdGFfZ2V0RXhlbXBsYXJTZXRfM18yCisjZGVm
aW5lIHVsb2NkYXRhX2dldE1lYXN1cmVtZW50U3lzdGVtIHVsb2NkYXRhX2dldE1lYXN1cmVtZW50
U3lzdGVtXzNfMgorI2RlZmluZSB1bG9jZGF0YV9nZXRQYXBlclNpemUgdWxvY2RhdGFfZ2V0UGFw
ZXJTaXplXzNfMgorI2RlZmluZSB1bXNnX2FwcGx5UGF0dGVybiB1bXNnX2FwcGx5UGF0dGVybl8z
XzIKKyNkZWZpbmUgdW1zZ19jbG9uZSB1bXNnX2Nsb25lXzNfMgorI2RlZmluZSB1bXNnX2Nsb3Nl
IHVtc2dfY2xvc2VfM18yCisjZGVmaW5lIHVtc2dfZm9ybWF0IHVtc2dfZm9ybWF0XzNfMgorI2Rl
ZmluZSB1bXNnX2dldExvY2FsZSB1bXNnX2dldExvY2FsZV8zXzIKKyNkZWZpbmUgdW1zZ19nZXRM
b2NhbGVCeVR5cGUgdW1zZ19nZXRMb2NhbGVCeVR5cGVfM18yCisjZGVmaW5lIHVtc2dfb3BlbiB1
bXNnX29wZW5fM18yCisjZGVmaW5lIHVtc2dfcGFyc2UgdW1zZ19wYXJzZV8zXzIKKyNkZWZpbmUg
dW1zZ19zZXRMb2NhbGUgdW1zZ19zZXRMb2NhbGVfM18yCisjZGVmaW5lIHVtc2dfdG9QYXR0ZXJu
IHVtc2dfdG9QYXR0ZXJuXzNfMgorI2RlZmluZSB1bXNnX3Zmb3JtYXQgdW1zZ192Zm9ybWF0XzNf
MgorI2RlZmluZSB1bXNnX3ZwYXJzZSB1bXNnX3ZwYXJzZV8zXzIKKyNkZWZpbmUgdW10eF9hdG9t
aWNfZGVjIHVtdHhfYXRvbWljX2RlY18zXzIKKyNkZWZpbmUgdW10eF9hdG9taWNfaW5jIHVtdHhf
YXRvbWljX2luY18zXzIKKyNkZWZpbmUgdW10eF9jbGVhbnVwIHVtdHhfY2xlYW51cF8zXzIKKyNk
ZWZpbmUgdW10eF9kZXN0cm95IHVtdHhfZGVzdHJveV8zXzIKKyNkZWZpbmUgdW10eF9pbml0IHVt
dHhfaW5pdF8zXzIKKyNkZWZpbmUgdW10eF9sb2NrIHVtdHhfbG9ja18zXzIKKyNkZWZpbmUgdW10
eF91bmxvY2sgdW10eF91bmxvY2tfM18yCisjZGVmaW5lIHVub3JtX2FkZFByb3BlcnR5U3RhcnRz
IHVub3JtX2FkZFByb3BlcnR5U3RhcnRzXzNfMgorI2RlZmluZSB1bm9ybV9jbG9zZUl0ZXIgdW5v
cm1fY2xvc2VJdGVyXzNfMgorI2RlZmluZSB1bm9ybV9jb21wYXJlIHVub3JtX2NvbXBhcmVfM18y
CisjZGVmaW5lIHVub3JtX2NvbXBvc2UgdW5vcm1fY29tcG9zZV8zXzIKKyNkZWZpbmUgdW5vcm1f
Y29uY2F0ZW5hdGUgdW5vcm1fY29uY2F0ZW5hdGVfM18yCisjZGVmaW5lIHVub3JtX2RlY29tcG9z
ZSB1bm9ybV9kZWNvbXBvc2VfM18yCisjZGVmaW5lIHVub3JtX2dldENhbm9uU3RhcnRTZXQgdW5v
cm1fZ2V0Q2Fub25TdGFydFNldF8zXzIKKyNkZWZpbmUgdW5vcm1fZ2V0Q2Fub25pY2FsRGVjb21w
b3NpdGlvbiB1bm9ybV9nZXRDYW5vbmljYWxEZWNvbXBvc2l0aW9uXzNfMgorI2RlZmluZSB1bm9y
bV9nZXREZWNvbXBvc2l0aW9uIHVub3JtX2dldERlY29tcG9zaXRpb25fM18yCisjZGVmaW5lIHVu
b3JtX2dldEZDRDE2RnJvbUNvZGVQb2ludCB1bm9ybV9nZXRGQ0QxNkZyb21Db2RlUG9pbnRfM18y
CisjZGVmaW5lIHVub3JtX2dldEZDRFRyaWUgdW5vcm1fZ2V0RkNEVHJpZV8zXzIKKyNkZWZpbmUg
dW5vcm1fZ2V0TlggdW5vcm1fZ2V0TlhfM18yCisjZGVmaW5lIHVub3JtX2dldFF1aWNrQ2hlY2sg
dW5vcm1fZ2V0UXVpY2tDaGVja18zXzIKKyNkZWZpbmUgdW5vcm1fZ2V0VW5pY29kZVZlcnNpb24g
dW5vcm1fZ2V0VW5pY29kZVZlcnNpb25fM18yCisjZGVmaW5lIHVub3JtX2hhdmVEYXRhIHVub3Jt
X2hhdmVEYXRhXzNfMgorI2RlZmluZSB1bm9ybV9pbnRlcm5hbElzRnVsbENvbXBvc2l0aW9uRXhj
bHVzaW9uIHVub3JtX2ludGVybmFsSXNGdWxsQ29tcG9zaXRpb25FeGNsdXNpb25fM18yCisjZGVm
aW5lIHVub3JtX2ludGVybmFsTm9ybWFsaXplIHVub3JtX2ludGVybmFsTm9ybWFsaXplXzNfMgor
I2RlZmluZSB1bm9ybV9pbnRlcm5hbE5vcm1hbGl6ZVdpdGhOWCB1bm9ybV9pbnRlcm5hbE5vcm1h
bGl6ZVdpdGhOWF8zXzIKKyNkZWZpbmUgdW5vcm1faW50ZXJuYWxRdWlja0NoZWNrIHVub3JtX2lu
dGVybmFsUXVpY2tDaGVja18zXzIKKyNkZWZpbmUgdW5vcm1faXNDYW5vblNhZmVTdGFydCB1bm9y
bV9pc0Nhbm9uU2FmZVN0YXJ0XzNfMgorI2RlZmluZSB1bm9ybV9pc05GU2tpcHBhYmxlIHVub3Jt
X2lzTkZTa2lwcGFibGVfM18yCisjZGVmaW5lIHVub3JtX2lzTm9ybWFsaXplZCB1bm9ybV9pc05v
cm1hbGl6ZWRfM18yCisjZGVmaW5lIHVub3JtX2lzTm9ybWFsaXplZFdpdGhPcHRpb25zIHVub3Jt
X2lzTm9ybWFsaXplZFdpdGhPcHRpb25zXzNfMgorI2RlZmluZSB1bm9ybV9uZXh0IHVub3JtX25l
eHRfM18yCisjZGVmaW5lIHVub3JtX25vcm1hbGl6ZSB1bm9ybV9ub3JtYWxpemVfM18yCisjZGVm
aW5lIHVub3JtX29wZW5JdGVyIHVub3JtX29wZW5JdGVyXzNfMgorI2RlZmluZSB1bm9ybV9wcmV2
aW91cyB1bm9ybV9wcmV2aW91c18zXzIKKyNkZWZpbmUgdW5vcm1fcXVpY2tDaGVjayB1bm9ybV9x
dWlja0NoZWNrXzNfMgorI2RlZmluZSB1bm9ybV9xdWlja0NoZWNrV2l0aE9wdGlvbnMgdW5vcm1f
cXVpY2tDaGVja1dpdGhPcHRpb25zXzNfMgorI2RlZmluZSB1bm9ybV9zZXRJdGVyIHVub3JtX3Nl
dEl0ZXJfM18yCisjZGVmaW5lIHVub3JtX3N3YXAgdW5vcm1fc3dhcF8zXzIKKyNkZWZpbmUgdW51
bV9hcHBseVBhdHRlcm4gdW51bV9hcHBseVBhdHRlcm5fM18yCisjZGVmaW5lIHVudW1fY2xvbmUg
dW51bV9jbG9uZV8zXzIKKyNkZWZpbmUgdW51bV9jbG9zZSB1bnVtX2Nsb3NlXzNfMgorI2RlZmlu
ZSB1bnVtX2NvdW50QXZhaWxhYmxlIHVudW1fY291bnRBdmFpbGFibGVfM18yCisjZGVmaW5lIHVu
dW1fZm9ybWF0IHVudW1fZm9ybWF0XzNfMgorI2RlZmluZSB1bnVtX2Zvcm1hdERvdWJsZSB1bnVt
X2Zvcm1hdERvdWJsZV8zXzIKKyNkZWZpbmUgdW51bV9mb3JtYXREb3VibGVDdXJyZW5jeSB1bnVt
X2Zvcm1hdERvdWJsZUN1cnJlbmN5XzNfMgorI2RlZmluZSB1bnVtX2Zvcm1hdEludDY0IHVudW1f
Zm9ybWF0SW50NjRfM18yCisjZGVmaW5lIHVudW1fZ2V0QXR0cmlidXRlIHVudW1fZ2V0QXR0cmli
dXRlXzNfMgorI2RlZmluZSB1bnVtX2dldEF2YWlsYWJsZSB1bnVtX2dldEF2YWlsYWJsZV8zXzIK
KyNkZWZpbmUgdW51bV9nZXREb3VibGVBdHRyaWJ1dGUgdW51bV9nZXREb3VibGVBdHRyaWJ1dGVf
M18yCisjZGVmaW5lIHVudW1fZ2V0TG9jYWxlQnlUeXBlIHVudW1fZ2V0TG9jYWxlQnlUeXBlXzNf
MgorI2RlZmluZSB1bnVtX2dldFN5bWJvbCB1bnVtX2dldFN5bWJvbF8zXzIKKyNkZWZpbmUgdW51
bV9nZXRUZXh0QXR0cmlidXRlIHVudW1fZ2V0VGV4dEF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdW51
bV9vcGVuIHVudW1fb3Blbl8zXzIKKyNkZWZpbmUgdW51bV9wYXJzZSB1bnVtX3BhcnNlXzNfMgor
I2RlZmluZSB1bnVtX3BhcnNlRG91YmxlIHVudW1fcGFyc2VEb3VibGVfM18yCisjZGVmaW5lIHVu
dW1fcGFyc2VEb3VibGVDdXJyZW5jeSB1bnVtX3BhcnNlRG91YmxlQ3VycmVuY3lfM18yCisjZGVm
aW5lIHVudW1fcGFyc2VJbnQ2NCB1bnVtX3BhcnNlSW50NjRfM18yCisjZGVmaW5lIHVudW1fc2V0
QXR0cmlidXRlIHVudW1fc2V0QXR0cmlidXRlXzNfMgorI2RlZmluZSB1bnVtX3NldERvdWJsZUF0
dHJpYnV0ZSB1bnVtX3NldERvdWJsZUF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdW51bV9zZXRTeW1i
b2wgdW51bV9zZXRTeW1ib2xfM18yCisjZGVmaW5lIHVudW1fc2V0VGV4dEF0dHJpYnV0ZSB1bnVt
X3NldFRleHRBdHRyaWJ1dGVfM18yCisjZGVmaW5lIHVudW1fdG9QYXR0ZXJuIHVudW1fdG9QYXR0
ZXJuXzNfMgorI2RlZmluZSB1cG5hbWVfc3dhcCB1cG5hbWVfc3dhcF8zXzIKKyNkZWZpbmUgdXBy
b3BzX2dldFNvdXJjZSB1cHJvcHNfZ2V0U291cmNlXzNfMgorI2RlZmluZSB1cHJvcHNfc3dhcCB1
cHJvcHNfc3dhcF8zXzIKKyNkZWZpbmUgdXBydl9hc2NpaUZyb21FYmNkaWMgdXBydl9hc2NpaUZy
b21FYmNkaWNfM18yCisjZGVmaW5lIHVwcnZfYXNjaWl0b2xvd2VyIHVwcnZfYXNjaWl0b2xvd2Vy
XzNfMgorI2RlZmluZSB1cHJ2X2NlaWwgdXBydl9jZWlsXzNfMgorI2RlZmluZSB1cHJ2X2NudHRh
Yl9hZGRDb250cmFjdGlvbiB1cHJ2X2NudHRhYl9hZGRDb250cmFjdGlvbl8zXzIKKyNkZWZpbmUg
dXBydl9jbnR0YWJfY2hhbmdlQ29udHJhY3Rpb24gdXBydl9jbnR0YWJfY2hhbmdlQ29udHJhY3Rp
b25fM18yCisjZGVmaW5lIHVwcnZfY250dGFiX2NoYW5nZUxhc3RDRSB1cHJ2X2NudHRhYl9jaGFu
Z2VMYXN0Q0VfM18yCisjZGVmaW5lIHVwcnZfY250dGFiX2Nsb25lIHVwcnZfY250dGFiX2Nsb25l
XzNfMgorI2RlZmluZSB1cHJ2X2NudHRhYl9jbG9zZSB1cHJ2X2NudHRhYl9jbG9zZV8zXzIKKyNk
ZWZpbmUgdXBydl9jbnR0YWJfY29uc3RydWN0VGFibGUgdXBydl9jbnR0YWJfY29uc3RydWN0VGFi
bGVfM18yCisjZGVmaW5lIHVwcnZfY250dGFiX2ZpbmRDRSB1cHJ2X2NudHRhYl9maW5kQ0VfM18y
CisjZGVmaW5lIHVwcnZfY250dGFiX2ZpbmRDUCB1cHJ2X2NudHRhYl9maW5kQ1BfM18yCisjZGVm
aW5lIHVwcnZfY250dGFiX2dldENFIHVwcnZfY250dGFiX2dldENFXzNfMgorI2RlZmluZSB1cHJ2
X2NudHRhYl9pbnNlcnRDb250cmFjdGlvbiB1cHJ2X2NudHRhYl9pbnNlcnRDb250cmFjdGlvbl8z
XzIKKyNkZWZpbmUgdXBydl9jbnR0YWJfaXNUYWlsb3JlZCB1cHJ2X2NudHRhYl9pc1RhaWxvcmVk
XzNfMgorI2RlZmluZSB1cHJ2X2NudHRhYl9vcGVuIHVwcnZfY250dGFiX29wZW5fM18yCisjZGVm
aW5lIHVwcnZfY250dGFiX3NldENvbnRyYWN0aW9uIHVwcnZfY250dGFiX3NldENvbnRyYWN0aW9u
XzNfMgorI2RlZmluZSB1cHJ2X2NvbXBhcmVBU0NJSVByb3BlcnR5TmFtZXMgdXBydl9jb21wYXJl
QVNDSUlQcm9wZXJ0eU5hbWVzXzNfMgorI2RlZmluZSB1cHJ2X2NvbXBhcmVFQkNESUNQcm9wZXJ0
eU5hbWVzIHVwcnZfY29tcGFyZUVCQ0RJQ1Byb3BlcnR5TmFtZXNfM18yCisjZGVmaW5lIHVwcnZf
Y29tcGFyZUludkFzY2lpIHVwcnZfY29tcGFyZUludkFzY2lpXzNfMgorI2RlZmluZSB1cHJ2X2Nv
bXBhcmVJbnZFYmNkaWMgdXBydl9jb21wYXJlSW52RWJjZGljXzNfMgorI2RlZmluZSB1cHJ2X2Nv
bnZlcnRUb0xDSUQgdXBydl9jb252ZXJ0VG9MQ0lEXzNfMgorI2RlZmluZSB1cHJ2X2NvbnZlcnRU
b1Bvc2l4IHVwcnZfY29udmVydFRvUG9zaXhfM18yCisjZGVmaW5lIHVwcnZfY29weUFzY2lpIHVw
cnZfY29weUFzY2lpXzNfMgorI2RlZmluZSB1cHJ2X2NvcHlFYmNkaWMgdXBydl9jb3B5RWJjZGlj
XzNfMgorI2RlZmluZSB1cHJ2X2R0b3N0ciB1cHJ2X2R0b3N0cl8zXzIKKyNkZWZpbmUgdXBydl9l
YmNkaWNGcm9tQXNjaWkgdXBydl9lYmNkaWNGcm9tQXNjaWlfM18yCisjZGVmaW5lIHVwcnZfZWJj
ZGljdG9sb3dlciB1cHJ2X2ViY2RpY3RvbG93ZXJfM18yCisjZGVmaW5lIHVwcnZfZmFicyB1cHJ2
X2ZhYnNfM18yCisjZGVmaW5lIHVwcnZfZmxvb3IgdXBydl9mbG9vcl8zXzIKKyNkZWZpbmUgdXBy
dl9mbWF4IHVwcnZfZm1heF8zXzIKKyNkZWZpbmUgdXBydl9mbWluIHVwcnZfZm1pbl8zXzIKKyNk
ZWZpbmUgdXBydl9mbW9kIHVwcnZfZm1vZF8zXzIKKyNkZWZpbmUgdXBydl9mcmVlIHVwcnZfZnJl
ZV8zXzIKKyNkZWZpbmUgdXBydl9nZXRDaGFyTmFtZUNoYXJhY3RlcnMgdXBydl9nZXRDaGFyTmFt
ZUNoYXJhY3RlcnNfM18yCisjZGVmaW5lIHVwcnZfZ2V0RGVmYXVsdENvZGVwYWdlIHVwcnZfZ2V0
RGVmYXVsdENvZGVwYWdlXzNfMgorI2RlZmluZSB1cHJ2X2dldERlZmF1bHRMb2NhbGVJRCB1cHJ2
X2dldERlZmF1bHRMb2NhbGVJRF8zXzIKKyNkZWZpbmUgdXBydl9nZXRJbmZpbml0eSB1cHJ2X2dl
dEluZmluaXR5XzNfMgorI2RlZmluZSB1cHJ2X2dldE1heENoYXJOYW1lTGVuZ3RoIHVwcnZfZ2V0
TWF4Q2hhck5hbWVMZW5ndGhfM18yCisjZGVmaW5lIHVwcnZfZ2V0TWF4VmFsdWVzIHVwcnZfZ2V0
TWF4VmFsdWVzXzNfMgorI2RlZmluZSB1cHJ2X2dldE5hTiB1cHJ2X2dldE5hTl8zXzIKKyNkZWZp
bmUgdXBydl9nZXRTdGF0aWNDdXJyZW5jeU5hbWUgdXBydl9nZXRTdGF0aWNDdXJyZW5jeU5hbWVf
M18yCisjZGVmaW5lIHVwcnZfZ2V0VVRDdGltZSB1cHJ2X2dldFVUQ3RpbWVfM18yCisjZGVmaW5l
IHVwcnZfaGF2ZVByb3BlcnRpZXMgdXBydl9oYXZlUHJvcGVydGllc18zXzIKKyNkZWZpbmUgdXBy
dl9pbml0X2NvbGxJdGVyYXRlIHVwcnZfaW5pdF9jb2xsSXRlcmF0ZV8zXzIKKyNkZWZpbmUgdXBy
dl9pbnQzMkNvbXBhcmF0b3IgdXBydl9pbnQzMkNvbXBhcmF0b3JfM18yCisjZGVmaW5lIHVwcnZf
aXNJbmZpbml0ZSB1cHJ2X2lzSW5maW5pdGVfM18yCisjZGVmaW5lIHVwcnZfaXNJbnZhcmlhbnRT
dHJpbmcgdXBydl9pc0ludmFyaWFudFN0cmluZ18zXzIKKyNkZWZpbmUgdXBydl9pc0ludmFyaWFu
dFVTdHJpbmcgdXBydl9pc0ludmFyaWFudFVTdHJpbmdfM18yCisjZGVmaW5lIHVwcnZfaXNOYU4g
dXBydl9pc05hTl8zXzIKKyNkZWZpbmUgdXBydl9pc05lZ2F0aXZlSW5maW5pdHkgdXBydl9pc05l
Z2F0aXZlSW5maW5pdHlfM18yCisjZGVmaW5lIHVwcnZfaXNQb3NpdGl2ZUluZmluaXR5IHVwcnZf
aXNQb3NpdGl2ZUluZmluaXR5XzNfMgorI2RlZmluZSB1cHJ2X2lzUnVsZVdoaXRlU3BhY2UgdXBy
dl9pc1J1bGVXaGl0ZVNwYWNlXzNfMgorI2RlZmluZSB1cHJ2X2l0b3UgdXBydl9pdG91XzNfMgor
I2RlZmluZSB1cHJ2X2xvYWRQcm9wc0RhdGEgdXBydl9sb2FkUHJvcHNEYXRhXzNfMgorI2RlZmlu
ZSB1cHJ2X2xvZyB1cHJ2X2xvZ18zXzIKKyNkZWZpbmUgdXBydl9sb2cxMCB1cHJ2X2xvZzEwXzNf
MgorI2RlZmluZSB1cHJ2X21hbGxvYyB1cHJ2X21hbGxvY18zXzIKKyNkZWZpbmUgdXBydl9tYXBG
aWxlIHVwcnZfbWFwRmlsZV8zXzIKKyNkZWZpbmUgdXBydl9tYXggdXBydl9tYXhfM18yCisjZGVm
aW5lIHVwcnZfbWF4TWFudGlzc2EgdXBydl9tYXhNYW50aXNzYV8zXzIKKyNkZWZpbmUgdXBydl9t
aW4gdXBydl9taW5fM18yCisjZGVmaW5lIHVwcnZfbW9kZiB1cHJ2X21vZGZfM18yCisjZGVmaW5l
IHVwcnZfb3BlblJ1bGVXaGl0ZVNwYWNlU2V0IHVwcnZfb3BlblJ1bGVXaGl0ZVNwYWNlU2V0XzNf
MgorI2RlZmluZSB1cHJ2X3BhdGhJc0Fic29sdXRlIHVwcnZfcGF0aElzQWJzb2x1dGVfM18yCisj
ZGVmaW5lIHVwcnZfcG93IHVwcnZfcG93XzNfMgorI2RlZmluZSB1cHJ2X3BvdzEwIHVwcnZfcG93
MTBfM18yCisjZGVmaW5lIHVwcnZfcmVhbGxvYyB1cHJ2X3JlYWxsb2NfM18yCisjZGVmaW5lIHVw
cnZfcm91bmQgdXBydl9yb3VuZF8zXzIKKyNkZWZpbmUgdXBydl9zb3J0QXJyYXkgdXBydl9zb3J0
QXJyYXlfM18yCisjZGVmaW5lIHVwcnZfc3RyQ29tcGFyZSB1cHJ2X3N0ckNvbXBhcmVfM18yCisj
ZGVmaW5lIHVwcnZfc3RyZHVwIHVwcnZfc3RyZHVwXzNfMgorI2RlZmluZSB1cHJ2X3N0cm5kdXAg
dXBydl9zdHJuZHVwXzNfMgorI2RlZmluZSB1cHJ2X3N5bnRheEVycm9yIHVwcnZfc3ludGF4RXJy
b3JfM18yCisjZGVmaW5lIHVwcnZfdGltZXpvbmUgdXBydl90aW1lem9uZV8zXzIKKyNkZWZpbmUg
dXBydl90b3VwcGVyIHVwcnZfdG91cHBlcl8zXzIKKyNkZWZpbmUgdXBydl90cnVuYyB1cHJ2X3Ry
dW5jXzNfMgorI2RlZmluZSB1cHJ2X3R6bmFtZSB1cHJ2X3R6bmFtZV8zXzIKKyNkZWZpbmUgdXBy
dl90enNldCB1cHJ2X3R6c2V0XzNfMgorI2RlZmluZSB1cHJ2X3VjYV9hZGRBbkVsZW1lbnQgdXBy
dl91Y2FfYWRkQW5FbGVtZW50XzNfMgorI2RlZmluZSB1cHJ2X3VjYV9hc3NlbWJsZVRhYmxlIHVw
cnZfdWNhX2Fzc2VtYmxlVGFibGVfM18yCisjZGVmaW5lIHVwcnZfdWNhX2Nhbm9uaWNhbENsb3N1
cmUgdXBydl91Y2FfY2Fub25pY2FsQ2xvc3VyZV8zXzIKKyNkZWZpbmUgdXBydl91Y2FfY2xvbmVU
ZW1wVGFibGUgdXBydl91Y2FfY2xvbmVUZW1wVGFibGVfM18yCisjZGVmaW5lIHVwcnZfdWNhX2Ns
b3NlVGVtcFRhYmxlIHVwcnZfdWNhX2Nsb3NlVGVtcFRhYmxlXzNfMgorI2RlZmluZSB1cHJ2X3Vj
YV9nZXRDb2RlUG9pbnRGcm9tUmF3IHVwcnZfdWNhX2dldENvZGVQb2ludEZyb21SYXdfM18yCisj
ZGVmaW5lIHVwcnZfdWNhX2dldEltcGxpY2l0RnJvbVJhdyB1cHJ2X3VjYV9nZXRJbXBsaWNpdEZy
b21SYXdfM18yCisjZGVmaW5lIHVwcnZfdWNhX2dldEltcGxpY2l0UHJpbWFyeSB1cHJ2X3VjYV9n
ZXRJbXBsaWNpdFByaW1hcnlfM18yCisjZGVmaW5lIHVwcnZfdWNhX2dldFJhd0Zyb21Db2RlUG9p
bnQgdXBydl91Y2FfZ2V0UmF3RnJvbUNvZGVQb2ludF8zXzIKKyNkZWZpbmUgdXBydl91Y2FfZ2V0
UmF3RnJvbUltcGxpY2l0IHVwcnZfdWNhX2dldFJhd0Zyb21JbXBsaWNpdF8zXzIKKyNkZWZpbmUg
dXBydl91Y2FfaW5pdEltcGxpY2l0Q29uc3RhbnRzIHVwcnZfdWNhX2luaXRJbXBsaWNpdENvbnN0
YW50c18zXzIKKyNkZWZpbmUgdXBydl91Y2FfaW5pdFRlbXBUYWJsZSB1cHJ2X3VjYV9pbml0VGVt
cFRhYmxlXzNfMgorI2RlZmluZSB1cHJ2X3VpbnQxNkNvbXBhcmF0b3IgdXBydl91aW50MTZDb21w
YXJhdG9yXzNfMgorI2RlZmluZSB1cHJ2X3VpbnQzMkNvbXBhcmF0b3IgdXBydl91aW50MzJDb21w
YXJhdG9yXzNfMgorI2RlZmluZSB1cHJ2X3VubWFwRmlsZSB1cHJ2X3VubWFwRmlsZV8zXzIKKyNk
ZWZpbmUgdXJlZ2V4X2FwcGVuZFJlcGxhY2VtZW50IHVyZWdleF9hcHBlbmRSZXBsYWNlbWVudF8z
XzIKKyNkZWZpbmUgdXJlZ2V4X2FwcGVuZFRhaWwgdXJlZ2V4X2FwcGVuZFRhaWxfM18yCisjZGVm
aW5lIHVyZWdleF9jbG9uZSB1cmVnZXhfY2xvbmVfM18yCisjZGVmaW5lIHVyZWdleF9jbG9zZSB1
cmVnZXhfY2xvc2VfM18yCisjZGVmaW5lIHVyZWdleF9lbmQgdXJlZ2V4X2VuZF8zXzIKKyNkZWZp
bmUgdXJlZ2V4X2ZpbmQgdXJlZ2V4X2ZpbmRfM18yCisjZGVmaW5lIHVyZWdleF9maW5kTmV4dCB1
cmVnZXhfZmluZE5leHRfM18yCisjZGVmaW5lIHVyZWdleF9mbGFncyB1cmVnZXhfZmxhZ3NfM18y
CisjZGVmaW5lIHVyZWdleF9nZXRUZXh0IHVyZWdleF9nZXRUZXh0XzNfMgorI2RlZmluZSB1cmVn
ZXhfZ3JvdXAgdXJlZ2V4X2dyb3VwXzNfMgorI2RlZmluZSB1cmVnZXhfZ3JvdXBDb3VudCB1cmVn
ZXhfZ3JvdXBDb3VudF8zXzIKKyNkZWZpbmUgdXJlZ2V4X2xvb2tpbmdBdCB1cmVnZXhfbG9va2lu
Z0F0XzNfMgorI2RlZmluZSB1cmVnZXhfbWF0Y2hlcyB1cmVnZXhfbWF0Y2hlc18zXzIKKyNkZWZp
bmUgdXJlZ2V4X29wZW4gdXJlZ2V4X29wZW5fM18yCisjZGVmaW5lIHVyZWdleF9vcGVuQyB1cmVn
ZXhfb3BlbkNfM18yCisjZGVmaW5lIHVyZWdleF9wYXR0ZXJuIHVyZWdleF9wYXR0ZXJuXzNfMgor
I2RlZmluZSB1cmVnZXhfcmVwbGFjZUFsbCB1cmVnZXhfcmVwbGFjZUFsbF8zXzIKKyNkZWZpbmUg
dXJlZ2V4X3JlcGxhY2VGaXJzdCB1cmVnZXhfcmVwbGFjZUZpcnN0XzNfMgorI2RlZmluZSB1cmVn
ZXhfcmVzZXQgdXJlZ2V4X3Jlc2V0XzNfMgorI2RlZmluZSB1cmVnZXhfc2V0VGV4dCB1cmVnZXhf
c2V0VGV4dF8zXzIKKyNkZWZpbmUgdXJlZ2V4X3NwbGl0IHVyZWdleF9zcGxpdF8zXzIKKyNkZWZp
bmUgdXJlZ2V4X3N0YXJ0IHVyZWdleF9zdGFydF8zXzIKKyNkZWZpbmUgdXJlc19hcHBlbmRSZXNQ
YXRoIHVyZXNfYXBwZW5kUmVzUGF0aF8zXzIKKyNkZWZpbmUgdXJlc19jbG9zZSB1cmVzX2Nsb3Nl
XzNfMgorI2RlZmluZSB1cmVzX2NvcHlSZXNiIHVyZXNfY29weVJlc2JfM18yCisjZGVmaW5lIHVy
ZXNfY291bnRBcnJheUl0ZW1zIHVyZXNfY291bnRBcnJheUl0ZW1zXzNfMgorI2RlZmluZSB1cmVz
X2ZpbmRSZXNvdXJjZSB1cmVzX2ZpbmRSZXNvdXJjZV8zXzIKKyNkZWZpbmUgdXJlc19maW5kU3Vi
UmVzb3VyY2UgdXJlc19maW5kU3ViUmVzb3VyY2VfM18yCisjZGVmaW5lIHVyZXNfZnJlZVJlc1Bh
dGggdXJlc19mcmVlUmVzUGF0aF8zXzIKKyNkZWZpbmUgdXJlc19nZXRCaW5hcnkgdXJlc19nZXRC
aW5hcnlfM18yCisjZGVmaW5lIHVyZXNfZ2V0QnlJbmRleCB1cmVzX2dldEJ5SW5kZXhfM18yCisj
ZGVmaW5lIHVyZXNfZ2V0QnlLZXkgdXJlc19nZXRCeUtleV8zXzIKKyNkZWZpbmUgdXJlc19nZXRC
eUtleVdpdGhGYWxsYmFjayB1cmVzX2dldEJ5S2V5V2l0aEZhbGxiYWNrXzNfMgorI2RlZmluZSB1
cmVzX2dldEZ1bmN0aW9uYWxFcXVpdmFsZW50IHVyZXNfZ2V0RnVuY3Rpb25hbEVxdWl2YWxlbnRf
M18yCisjZGVmaW5lIHVyZXNfZ2V0SW50IHVyZXNfZ2V0SW50XzNfMgorI2RlZmluZSB1cmVzX2dl
dEludFZlY3RvciB1cmVzX2dldEludFZlY3Rvcl8zXzIKKyNkZWZpbmUgdXJlc19nZXRLZXkgdXJl
c19nZXRLZXlfM18yCisjZGVmaW5lIHVyZXNfZ2V0S2V5d29yZFZhbHVlcyB1cmVzX2dldEtleXdv
cmRWYWx1ZXNfM18yCisjZGVmaW5lIHVyZXNfZ2V0TG9jYWxlIHVyZXNfZ2V0TG9jYWxlXzNfMgor
I2RlZmluZSB1cmVzX2dldExvY2FsZUJ5VHlwZSB1cmVzX2dldExvY2FsZUJ5VHlwZV8zXzIKKyNk
ZWZpbmUgdXJlc19nZXROYW1lIHVyZXNfZ2V0TmFtZV8zXzIKKyNkZWZpbmUgdXJlc19nZXROZXh0
UmVzb3VyY2UgdXJlc19nZXROZXh0UmVzb3VyY2VfM18yCisjZGVmaW5lIHVyZXNfZ2V0TmV4dFN0
cmluZyB1cmVzX2dldE5leHRTdHJpbmdfM18yCisjZGVmaW5lIHVyZXNfZ2V0UGF0aCB1cmVzX2dl
dFBhdGhfM18yCisjZGVmaW5lIHVyZXNfZ2V0U2l6ZSB1cmVzX2dldFNpemVfM18yCisjZGVmaW5l
IHVyZXNfZ2V0U3RyaW5nIHVyZXNfZ2V0U3RyaW5nXzNfMgorI2RlZmluZSB1cmVzX2dldFN0cmlu
Z0J5SW5kZXggdXJlc19nZXRTdHJpbmdCeUluZGV4XzNfMgorI2RlZmluZSB1cmVzX2dldFN0cmlu
Z0J5S2V5IHVyZXNfZ2V0U3RyaW5nQnlLZXlfM18yCisjZGVmaW5lIHVyZXNfZ2V0VHlwZSB1cmVz
X2dldFR5cGVfM18yCisjZGVmaW5lIHVyZXNfZ2V0VUludCB1cmVzX2dldFVJbnRfM18yCisjZGVm
aW5lIHVyZXNfZ2V0VmVyc2lvbiB1cmVzX2dldFZlcnNpb25fM18yCisjZGVmaW5lIHVyZXNfZ2V0
VmVyc2lvbk51bWJlciB1cmVzX2dldFZlcnNpb25OdW1iZXJfM18yCisjZGVmaW5lIHVyZXNfaGFz
TmV4dCB1cmVzX2hhc05leHRfM18yCisjZGVmaW5lIHVyZXNfaW5pdFN0YWNrT2JqZWN0IHVyZXNf
aW5pdFN0YWNrT2JqZWN0XzNfMgorI2RlZmluZSB1cmVzX29wZW4gdXJlc19vcGVuXzNfMgorI2Rl
ZmluZSB1cmVzX29wZW5BdmFpbGFibGVMb2NhbGVzIHVyZXNfb3BlbkF2YWlsYWJsZUxvY2FsZXNf
M18yCisjZGVmaW5lIHVyZXNfb3BlbkRpcmVjdCB1cmVzX29wZW5EaXJlY3RfM18yCisjZGVmaW5l
IHVyZXNfb3BlbkZpbGxJbiB1cmVzX29wZW5GaWxsSW5fM18yCisjZGVmaW5lIHVyZXNfb3BlblUg
dXJlc19vcGVuVV8zXzIKKyNkZWZpbmUgdXJlc19yZXNldEl0ZXJhdG9yIHVyZXNfcmVzZXRJdGVy
YXRvcl8zXzIKKyNkZWZpbmUgdXJlc19zd2FwIHVyZXNfc3dhcF8zXzIKKyNkZWZpbmUgdXNjcmlw
dF9jbG9zZVJ1biB1c2NyaXB0X2Nsb3NlUnVuXzNfMgorI2RlZmluZSB1c2NyaXB0X2dldENvZGUg
dXNjcmlwdF9nZXRDb2RlXzNfMgorI2RlZmluZSB1c2NyaXB0X2dldE5hbWUgdXNjcmlwdF9nZXRO
YW1lXzNfMgorI2RlZmluZSB1c2NyaXB0X2dldFNjcmlwdCB1c2NyaXB0X2dldFNjcmlwdF8zXzIK
KyNkZWZpbmUgdXNjcmlwdF9nZXRTaG9ydE5hbWUgdXNjcmlwdF9nZXRTaG9ydE5hbWVfM18yCisj
ZGVmaW5lIHVzY3JpcHRfbmV4dFJ1biB1c2NyaXB0X25leHRSdW5fM18yCisjZGVmaW5lIHVzY3Jp
cHRfb3BlblJ1biB1c2NyaXB0X29wZW5SdW5fM18yCisjZGVmaW5lIHVzY3JpcHRfcmVzZXRSdW4g
dXNjcmlwdF9yZXNldFJ1bl8zXzIKKyNkZWZpbmUgdXNjcmlwdF9zZXRSdW5UZXh0IHVzY3JpcHRf
c2V0UnVuVGV4dF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9jbG9zZSB1c2VhcmNoX2Nsb3NlXzNfMgor
I2RlZmluZSB1c2VhcmNoX2ZpcnN0IHVzZWFyY2hfZmlyc3RfM18yCisjZGVmaW5lIHVzZWFyY2hf
Zm9sbG93aW5nIHVzZWFyY2hfZm9sbG93aW5nXzNfMgorI2RlZmluZSB1c2VhcmNoX2dldEF0dHJp
YnV0ZSB1c2VhcmNoX2dldEF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdXNlYXJjaF9nZXRCcmVha0l0
ZXJhdG9yIHVzZWFyY2hfZ2V0QnJlYWtJdGVyYXRvcl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9nZXRD
b2xsYXRvciB1c2VhcmNoX2dldENvbGxhdG9yXzNfMgorI2RlZmluZSB1c2VhcmNoX2dldE1hdGNo
ZWRMZW5ndGggdXNlYXJjaF9nZXRNYXRjaGVkTGVuZ3RoXzNfMgorI2RlZmluZSB1c2VhcmNoX2dl
dE1hdGNoZWRTdGFydCB1c2VhcmNoX2dldE1hdGNoZWRTdGFydF8zXzIKKyNkZWZpbmUgdXNlYXJj
aF9nZXRNYXRjaGVkVGV4dCB1c2VhcmNoX2dldE1hdGNoZWRUZXh0XzNfMgorI2RlZmluZSB1c2Vh
cmNoX2dldE9mZnNldCB1c2VhcmNoX2dldE9mZnNldF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9nZXRQ
YXR0ZXJuIHVzZWFyY2hfZ2V0UGF0dGVybl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9nZXRUZXh0IHVz
ZWFyY2hfZ2V0VGV4dF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9oYW5kbGVOZXh0Q2Fub25pY2FsIHVz
ZWFyY2hfaGFuZGxlTmV4dENhbm9uaWNhbF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9oYW5kbGVOZXh0
RXhhY3QgdXNlYXJjaF9oYW5kbGVOZXh0RXhhY3RfM18yCisjZGVmaW5lIHVzZWFyY2hfaGFuZGxl
UHJldmlvdXNDYW5vbmljYWwgdXNlYXJjaF9oYW5kbGVQcmV2aW91c0Nhbm9uaWNhbF8zXzIKKyNk
ZWZpbmUgdXNlYXJjaF9oYW5kbGVQcmV2aW91c0V4YWN0IHVzZWFyY2hfaGFuZGxlUHJldmlvdXNF
eGFjdF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9sYXN0IHVzZWFyY2hfbGFzdF8zXzIKKyNkZWZpbmUg
dXNlYXJjaF9uZXh0IHVzZWFyY2hfbmV4dF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9vcGVuIHVzZWFy
Y2hfb3Blbl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9vcGVuRnJvbUNvbGxhdG9yIHVzZWFyY2hfb3Bl
bkZyb21Db2xsYXRvcl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9wcmVjZWRpbmcgdXNlYXJjaF9wcmVj
ZWRpbmdfM18yCisjZGVmaW5lIHVzZWFyY2hfcHJldmlvdXMgdXNlYXJjaF9wcmV2aW91c18zXzIK
KyNkZWZpbmUgdXNlYXJjaF9yZXNldCB1c2VhcmNoX3Jlc2V0XzNfMgorI2RlZmluZSB1c2VhcmNo
X3NldEF0dHJpYnV0ZSB1c2VhcmNoX3NldEF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdXNlYXJjaF9z
ZXRCcmVha0l0ZXJhdG9yIHVzZWFyY2hfc2V0QnJlYWtJdGVyYXRvcl8zXzIKKyNkZWZpbmUgdXNl
YXJjaF9zZXRDb2xsYXRvciB1c2VhcmNoX3NldENvbGxhdG9yXzNfMgorI2RlZmluZSB1c2VhcmNo
X3NldE9mZnNldCB1c2VhcmNoX3NldE9mZnNldF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9zZXRQYXR0
ZXJuIHVzZWFyY2hfc2V0UGF0dGVybl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9zZXRUZXh0IHVzZWFy
Y2hfc2V0VGV4dF8zXzIKKyNkZWZpbmUgdXNlcnZfZGVsZXRlU3RyaW5nUGFpciB1c2Vydl9kZWxl
dGVTdHJpbmdQYWlyXzNfMgorI2RlZmluZSB1c2V0X2FkZCB1c2V0X2FkZF8zXzIKKyNkZWZpbmUg
dXNldF9hZGRBbGwgdXNldF9hZGRBbGxfM18yCisjZGVmaW5lIHVzZXRfYWRkUmFuZ2UgdXNldF9h
ZGRSYW5nZV8zXzIKKyNkZWZpbmUgdXNldF9hZGRTdHJpbmcgdXNldF9hZGRTdHJpbmdfM18yCisj
ZGVmaW5lIHVzZXRfYXBwbHlJbnRQcm9wZXJ0eVZhbHVlIHVzZXRfYXBwbHlJbnRQcm9wZXJ0eVZh
bHVlXzNfMgorI2RlZmluZSB1c2V0X2FwcGx5UGF0dGVybiB1c2V0X2FwcGx5UGF0dGVybl8zXzIK
KyNkZWZpbmUgdXNldF9hcHBseVByb3BlcnR5QWxpYXMgdXNldF9hcHBseVByb3BlcnR5QWxpYXNf
M18yCisjZGVmaW5lIHVzZXRfY2hhckF0IHVzZXRfY2hhckF0XzNfMgorI2RlZmluZSB1c2V0X2Ns
ZWFyIHVzZXRfY2xlYXJfM18yCisjZGVmaW5lIHVzZXRfY2xvc2UgdXNldF9jbG9zZV8zXzIKKyNk
ZWZpbmUgdXNldF9jb21wYWN0IHVzZXRfY29tcGFjdF8zXzIKKyNkZWZpbmUgdXNldF9jb21wbGVt
ZW50IHVzZXRfY29tcGxlbWVudF8zXzIKKyNkZWZpbmUgdXNldF9jb21wbGVtZW50QWxsIHVzZXRf
Y29tcGxlbWVudEFsbF8zXzIKKyNkZWZpbmUgdXNldF9jb250YWlucyB1c2V0X2NvbnRhaW5zXzNf
MgorI2RlZmluZSB1c2V0X2NvbnRhaW5zQWxsIHVzZXRfY29udGFpbnNBbGxfM18yCisjZGVmaW5l
IHVzZXRfY29udGFpbnNOb25lIHVzZXRfY29udGFpbnNOb25lXzNfMgorI2RlZmluZSB1c2V0X2Nv
bnRhaW5zUmFuZ2UgdXNldF9jb250YWluc1JhbmdlXzNfMgorI2RlZmluZSB1c2V0X2NvbnRhaW5z
U29tZSB1c2V0X2NvbnRhaW5zU29tZV8zXzIKKyNkZWZpbmUgdXNldF9jb250YWluc1N0cmluZyB1
c2V0X2NvbnRhaW5zU3RyaW5nXzNfMgorI2RlZmluZSB1c2V0X2VxdWFscyB1c2V0X2VxdWFsc18z
XzIKKyNkZWZpbmUgdXNldF9nZXRJdGVtIHVzZXRfZ2V0SXRlbV8zXzIKKyNkZWZpbmUgdXNldF9n
ZXRJdGVtQ291bnQgdXNldF9nZXRJdGVtQ291bnRfM18yCisjZGVmaW5lIHVzZXRfZ2V0U2VyaWFs
aXplZFJhbmdlIHVzZXRfZ2V0U2VyaWFsaXplZFJhbmdlXzNfMgorI2RlZmluZSB1c2V0X2dldFNl
cmlhbGl6ZWRSYW5nZUNvdW50IHVzZXRfZ2V0U2VyaWFsaXplZFJhbmdlQ291bnRfM18yCisjZGVm
aW5lIHVzZXRfZ2V0U2VyaWFsaXplZFNldCB1c2V0X2dldFNlcmlhbGl6ZWRTZXRfM18yCisjZGVm
aW5lIHVzZXRfaW5kZXhPZiB1c2V0X2luZGV4T2ZfM18yCisjZGVmaW5lIHVzZXRfaXNFbXB0eSB1
c2V0X2lzRW1wdHlfM18yCisjZGVmaW5lIHVzZXRfb3BlbiB1c2V0X29wZW5fM18yCisjZGVmaW5l
IHVzZXRfb3BlblBhdHRlcm4gdXNldF9vcGVuUGF0dGVybl8zXzIKKyNkZWZpbmUgdXNldF9vcGVu
UGF0dGVybk9wdGlvbnMgdXNldF9vcGVuUGF0dGVybk9wdGlvbnNfM18yCisjZGVmaW5lIHVzZXRf
cmVtb3ZlIHVzZXRfcmVtb3ZlXzNfMgorI2RlZmluZSB1c2V0X3JlbW92ZUFsbCB1c2V0X3JlbW92
ZUFsbF8zXzIKKyNkZWZpbmUgdXNldF9yZW1vdmVSYW5nZSB1c2V0X3JlbW92ZVJhbmdlXzNfMgor
I2RlZmluZSB1c2V0X3JlbW92ZVN0cmluZyB1c2V0X3JlbW92ZVN0cmluZ18zXzIKKyNkZWZpbmUg
dXNldF9yZXNlbWJsZXNQYXR0ZXJuIHVzZXRfcmVzZW1ibGVzUGF0dGVybl8zXzIKKyNkZWZpbmUg
dXNldF9yZXRhaW4gdXNldF9yZXRhaW5fM18yCisjZGVmaW5lIHVzZXRfcmV0YWluQWxsIHVzZXRf
cmV0YWluQWxsXzNfMgorI2RlZmluZSB1c2V0X3NlcmlhbGl6ZSB1c2V0X3NlcmlhbGl6ZV8zXzIK
KyNkZWZpbmUgdXNldF9zZXJpYWxpemVkQ29udGFpbnMgdXNldF9zZXJpYWxpemVkQ29udGFpbnNf
M18yCisjZGVmaW5lIHVzZXRfc2V0IHVzZXRfc2V0XzNfMgorI2RlZmluZSB1c2V0X3NldFNlcmlh
bGl6ZWRUb09uZSB1c2V0X3NldFNlcmlhbGl6ZWRUb09uZV8zXzIKKyNkZWZpbmUgdXNldF9zaXpl
IHVzZXRfc2l6ZV8zXzIKKyNkZWZpbmUgdXNldF90b1BhdHRlcm4gdXNldF90b1BhdHRlcm5fM18y
CisjZGVmaW5lIHVzcHJlcF9jbG9zZSB1c3ByZXBfY2xvc2VfM18yCisjZGVmaW5lIHVzcHJlcF9v
cGVuIHVzcHJlcF9vcGVuXzNfMgorI2RlZmluZSB1c3ByZXBfcHJlcGFyZSB1c3ByZXBfcHJlcGFy
ZV8zXzIKKyNkZWZpbmUgdXNwcmVwX3N3YXAgdXNwcmVwX3N3YXBfM18yCisjZGVmaW5lIHVzdHJf
Zm9sZENhc2UgdXN0cl9mb2xkQ2FzZV8zXzIKKyNkZWZpbmUgdXN0cl90b0xvd2VyIHVzdHJfdG9M
b3dlcl8zXzIKKyNkZWZpbmUgdXN0cl90b1RpdGxlIHVzdHJfdG9UaXRsZV8zXzIKKyNkZWZpbmUg
dXN0cl90b1VwcGVyIHVzdHJfdG9VcHBlcl8zXzIKKyNkZWZpbmUgdXRmOF9hcHBlbmRDaGFyU2Fm
ZUJvZHkgdXRmOF9hcHBlbmRDaGFyU2FmZUJvZHlfM18yCisjZGVmaW5lIHV0ZjhfYmFjazFTYWZl
Qm9keSB1dGY4X2JhY2sxU2FmZUJvZHlfM18yCisjZGVmaW5lIHV0ZjhfY291bnRUcmFpbEJ5dGVz
IHV0ZjhfY291bnRUcmFpbEJ5dGVzXzNfMgorI2RlZmluZSB1dGY4X25leHRDaGFyU2FmZUJvZHkg
dXRmOF9uZXh0Q2hhclNhZmVCb2R5XzNfMgorI2RlZmluZSB1dGY4X3ByZXZDaGFyU2FmZUJvZHkg
dXRmOF9wcmV2Q2hhclNhZmVCb2R5XzNfMgorI2RlZmluZSB1dG1zY2FsZV9mcm9tSW50NjQgdXRt
c2NhbGVfZnJvbUludDY0XzNfMgorI2RlZmluZSB1dG1zY2FsZV9nZXRUaW1lU2NhbGVWYWx1ZSB1
dG1zY2FsZV9nZXRUaW1lU2NhbGVWYWx1ZV8zXzIKKyNkZWZpbmUgdXRtc2NhbGVfdG9JbnQ2NCB1
dG1zY2FsZV90b0ludDY0XzNfMgorI2RlZmluZSB1dHJhY2VfY2xlYW51cCB1dHJhY2VfY2xlYW51
cF8zXzIKKyNkZWZpbmUgdXRyYWNlX2RhdGEgdXRyYWNlX2RhdGFfM18yCisjZGVmaW5lIHV0cmFj
ZV9lbnRyeSB1dHJhY2VfZW50cnlfM18yCisjZGVmaW5lIHV0cmFjZV9leGl0IHV0cmFjZV9leGl0
XzNfMgorI2RlZmluZSB1dHJhY2VfZm9ybWF0IHV0cmFjZV9mb3JtYXRfM18yCisjZGVmaW5lIHV0
cmFjZV9mdW5jdGlvbk5hbWUgdXRyYWNlX2Z1bmN0aW9uTmFtZV8zXzIKKyNkZWZpbmUgdXRyYWNl
X2dldEZ1bmN0aW9ucyB1dHJhY2VfZ2V0RnVuY3Rpb25zXzNfMgorI2RlZmluZSB1dHJhY2VfZ2V0
TGV2ZWwgdXRyYWNlX2dldExldmVsXzNfMgorI2RlZmluZSB1dHJhY2VfbGV2ZWwgdXRyYWNlX2xl
dmVsXzNfMgorI2RlZmluZSB1dHJhY2Vfc2V0RnVuY3Rpb25zIHV0cmFjZV9zZXRGdW5jdGlvbnNf
M18yCisjZGVmaW5lIHV0cmFjZV9zZXRMZXZlbCB1dHJhY2Vfc2V0TGV2ZWxfM18yCisjZGVmaW5l
IHV0cmFjZV92Zm9ybWF0IHV0cmFjZV92Zm9ybWF0XzNfMgorI2RlZmluZSB1dHJhbnNfY2xvbmUg
dXRyYW5zX2Nsb25lXzNfMgorI2RlZmluZSB1dHJhbnNfY2xvc2UgdXRyYW5zX2Nsb3NlXzNfMgor
I2RlZmluZSB1dHJhbnNfY291bnRBdmFpbGFibGVJRHMgdXRyYW5zX2NvdW50QXZhaWxhYmxlSURz
XzNfMgorI2RlZmluZSB1dHJhbnNfZ2V0QXZhaWxhYmxlSUQgdXRyYW5zX2dldEF2YWlsYWJsZUlE
XzNfMgorI2RlZmluZSB1dHJhbnNfZ2V0SUQgdXRyYW5zX2dldElEXzNfMgorI2RlZmluZSB1dHJh
bnNfZ2V0VW5pY29kZUlEIHV0cmFuc19nZXRVbmljb2RlSURfM18yCisjZGVmaW5lIHV0cmFuc19v
cGVuIHV0cmFuc19vcGVuXzNfMgorI2RlZmluZSB1dHJhbnNfb3BlbklEcyB1dHJhbnNfb3BlbklE
c18zXzIKKyNkZWZpbmUgdXRyYW5zX29wZW5JbnZlcnNlIHV0cmFuc19vcGVuSW52ZXJzZV8zXzIK
KyNkZWZpbmUgdXRyYW5zX29wZW5VIHV0cmFuc19vcGVuVV8zXzIKKyNkZWZpbmUgdXRyYW5zX3Jl
Z2lzdGVyIHV0cmFuc19yZWdpc3Rlcl8zXzIKKyNkZWZpbmUgdXRyYW5zX3JlcF9jYXNlQ29udGV4
dEl0ZXJhdG9yIHV0cmFuc19yZXBfY2FzZUNvbnRleHRJdGVyYXRvcl8zXzIKKyNkZWZpbmUgdXRy
YW5zX3NldEZpbHRlciB1dHJhbnNfc2V0RmlsdGVyXzNfMgorI2RlZmluZSB1dHJhbnNfdHJhbnMg
dXRyYW5zX3RyYW5zXzNfMgorI2RlZmluZSB1dHJhbnNfdHJhbnNJbmNyZW1lbnRhbCB1dHJhbnNf
dHJhbnNJbmNyZW1lbnRhbF8zXzIKKyNkZWZpbmUgdXRyYW5zX3RyYW5zSW5jcmVtZW50YWxVQ2hh
cnMgdXRyYW5zX3RyYW5zSW5jcmVtZW50YWxVQ2hhcnNfM18yCisjZGVmaW5lIHV0cmFuc190cmFu
c1VDaGFycyB1dHJhbnNfdHJhbnNVQ2hhcnNfM18yCisjZGVmaW5lIHV0cmFuc191bnJlZ2lzdGVy
IHV0cmFuc191bnJlZ2lzdGVyXzNfMgorI2RlZmluZSB1dHJhbnNfdW5yZWdpc3RlcklEIHV0cmFu
c191bnJlZ2lzdGVySURfM18yCisjZGVmaW5lIHV0cmllX2Nsb25lIHV0cmllX2Nsb25lXzNfMgor
I2RlZmluZSB1dHJpZV9jbG9zZSB1dHJpZV9jbG9zZV8zXzIKKyNkZWZpbmUgdXRyaWVfZW51bSB1
dHJpZV9lbnVtXzNfMgorI2RlZmluZSB1dHJpZV9nZXQzMiB1dHJpZV9nZXQzMl8zXzIKKyNkZWZp
bmUgdXRyaWVfZ2V0RGF0YSB1dHJpZV9nZXREYXRhXzNfMgorI2RlZmluZSB1dHJpZV9vcGVuIHV0
cmllX29wZW5fM18yCisjZGVmaW5lIHV0cmllX3NlcmlhbGl6ZSB1dHJpZV9zZXJpYWxpemVfM18y
CisjZGVmaW5lIHV0cmllX3NldDMyIHV0cmllX3NldDMyXzNfMgorI2RlZmluZSB1dHJpZV9zZXRS
YW5nZTMyIHV0cmllX3NldFJhbmdlMzJfM18yCisjZGVmaW5lIHV0cmllX3N3YXAgdXRyaWVfc3dh
cF8zXzIKKyNkZWZpbmUgdXRyaWVfdW5zZXJpYWxpemUgdXRyaWVfdW5zZXJpYWxpemVfM18yCisv
KiBDKysgY2xhc3MgbmFtZXMgcmVuYW1pbmcgZGVmaW5lcyAqLworCisjaWZkZWYgWFBfQ1BMVVNQ
TFVTCisjaWYgIVVfSEFWRV9OQU1FU1BBQ0UKKworI2RlZmluZSBBYnNvbHV0ZVZhbHVlU3Vic3Rp
dHV0aW9uIEFic29sdXRlVmFsdWVTdWJzdGl0dXRpb25fM18yCisjZGVmaW5lIEFsdGVybmF0ZVN1
YnN0aXR1dGlvblN1YnRhYmxlIEFsdGVybmF0ZVN1YnN0aXR1dGlvblN1YnRhYmxlXzNfMgorI2Rl
ZmluZSBBbmNob3JUYWJsZSBBbmNob3JUYWJsZV8zXzIKKyNkZWZpbmUgQW55VHJhbnNsaXRlcmF0
b3IgQW55VHJhbnNsaXRlcmF0b3JfM18yCisjZGVmaW5lIEFyYWJpY09wZW5UeXBlTGF5b3V0RW5n
aW5lIEFyYWJpY09wZW5UeXBlTGF5b3V0RW5naW5lXzNfMgorI2RlZmluZSBBcmFiaWNTaGFwaW5n
IEFyYWJpY1NoYXBpbmdfM18yCisjZGVmaW5lIEJhc2ljQ2FsZW5kYXJGYWN0b3J5IEJhc2ljQ2Fs
ZW5kYXJGYWN0b3J5XzNfMgorI2RlZmluZSBCaW5hcnlTZWFyY2hMb29rdXBUYWJsZSBCaW5hcnlT
ZWFyY2hMb29rdXBUYWJsZV8zXzIKKyNkZWZpbmUgQnJlYWtEaWN0aW9uYXJ5IEJyZWFrRGljdGlv
bmFyeV8zXzIKKyNkZWZpbmUgQnJlYWtJdGVyYXRvciBCcmVha0l0ZXJhdG9yXzNfMgorI2RlZmlu
ZSBCdWRkaGlzdENhbGVuZGFyIEJ1ZGRoaXN0Q2FsZW5kYXJfM18yCisjZGVmaW5lIENGYWN0b3J5
IENGYWN0b3J5XzNfMgorI2RlZmluZSBDYWxlbmRhciBDYWxlbmRhcl8zXzIKKyNkZWZpbmUgQ2Fs
ZW5kYXJBc3Ryb25vbWVyIENhbGVuZGFyQXN0cm9ub21lcl8zXzIKKyNkZWZpbmUgQ2FsZW5kYXJD
YWNoZSBDYWxlbmRhckNhY2hlXzNfMgorI2RlZmluZSBDYWxlbmRhckRhdGEgQ2FsZW5kYXJEYXRh
XzNfMgorI2RlZmluZSBDYWxlbmRhclNlcnZpY2UgQ2FsZW5kYXJTZXJ2aWNlXzNfMgorI2RlZmlu
ZSBDYW5vblNoYXBpbmcgQ2Fub25TaGFwaW5nXzNfMgorI2RlZmluZSBDYW5vbmljYWxJdGVyYXRv
ciBDYW5vbmljYWxJdGVyYXRvcl8zXzIKKyNkZWZpbmUgQ2FzZU1hcFRyYW5zbGl0ZXJhdG9yIENh
c2VNYXBUcmFuc2xpdGVyYXRvcl8zXzIKKyNkZWZpbmUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vic3Rp
dHV0aW9uRm9ybWF0MVN1YnRhYmxlIENoYWluaW5nQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1h
dDFTdWJ0YWJsZV8zXzIKKyNkZWZpbmUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vic3RpdHV0aW9uRm9y
bWF0MlN1YnRhYmxlIENoYWluaW5nQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDJTdWJ0YWJs
ZV8zXzIKKyNkZWZpbmUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vic3RpdHV0aW9uRm9ybWF0M1N1YnRh
YmxlIENoYWluaW5nQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDNTdWJ0YWJsZV8zXzIKKyNk
ZWZpbmUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vic3RpdHV0aW9uU3VidGFibGUgQ2hhaW5pbmdDb250
ZXh0dWFsU3Vic3RpdHV0aW9uU3VidGFibGVfM18yCisjZGVmaW5lIENoYXJTdWJzdGl0dXRpb25G
aWx0ZXIgQ2hhclN1YnN0aXR1dGlvbkZpbHRlcl8zXzIKKyNkZWZpbmUgQ2hhcmFjdGVySXRlcmF0
b3IgQ2hhcmFjdGVySXRlcmF0b3JfM18yCisjZGVmaW5lIENob2ljZUZvcm1hdCBDaG9pY2VGb3Jt
YXRfM18yCisjZGVmaW5lIENsYXNzRGVmRm9ybWF0MVRhYmxlIENsYXNzRGVmRm9ybWF0MVRhYmxl
XzNfMgorI2RlZmluZSBDbGFzc0RlZkZvcm1hdDJUYWJsZSBDbGFzc0RlZkZvcm1hdDJUYWJsZV8z
XzIKKyNkZWZpbmUgQ2xhc3NEZWZpbml0aW9uVGFibGUgQ2xhc3NEZWZpbml0aW9uVGFibGVfM18y
CisjZGVmaW5lIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBDb2xsYXRpb25FbGVtZW50SXRlcmF0
b3JfM18yCisjZGVmaW5lIENvbGxhdGlvbktleSBDb2xsYXRpb25LZXlfM18yCisjZGVmaW5lIENv
bGxhdG9yIENvbGxhdG9yXzNfMgorI2RlZmluZSBDb2xsYXRvckZhY3RvcnkgQ29sbGF0b3JGYWN0
b3J5XzNfMgorI2RlZmluZSBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIENvbXBvdW5kVHJhbnNsaXRl
cmF0b3JfM18yCisjZGVmaW5lIENvbnRleHR1YWxHbHlwaFN1YnN0aXR1dGlvblByb2Nlc3NvciBD
b250ZXh0dWFsR2x5cGhTdWJzdGl0dXRpb25Qcm9jZXNzb3JfM18yCisjZGVmaW5lIENvbnRleHR1
YWxTdWJzdGl0dXRpb25CYXNlIENvbnRleHR1YWxTdWJzdGl0dXRpb25CYXNlXzNfMgorI2RlZmlu
ZSBDb250ZXh0dWFsU3Vic3RpdHV0aW9uRm9ybWF0MVN1YnRhYmxlIENvbnRleHR1YWxTdWJzdGl0
dXRpb25Gb3JtYXQxU3VidGFibGVfM18yCisjZGVmaW5lIENvbnRleHR1YWxTdWJzdGl0dXRpb25G
b3JtYXQyU3VidGFibGUgQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDJTdWJ0YWJsZV8zXzIK
KyNkZWZpbmUgQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDNTdWJ0YWJsZSBDb250ZXh0dWFs
U3Vic3RpdHV0aW9uRm9ybWF0M1N1YnRhYmxlXzNfMgorI2RlZmluZSBDb250ZXh0dWFsU3Vic3Rp
dHV0aW9uU3VidGFibGUgQ29udGV4dHVhbFN1YnN0aXR1dGlvblN1YnRhYmxlXzNfMgorI2RlZmlu
ZSBDb3ZlcmFnZUZvcm1hdDFUYWJsZSBDb3ZlcmFnZUZvcm1hdDFUYWJsZV8zXzIKKyNkZWZpbmUg
Q292ZXJhZ2VGb3JtYXQyVGFibGUgQ292ZXJhZ2VGb3JtYXQyVGFibGVfM18yCisjZGVmaW5lIENv
dmVyYWdlVGFibGUgQ292ZXJhZ2VUYWJsZV8zXzIKKyNkZWZpbmUgQ3VycmVuY3lBbW91bnQgQ3Vy
cmVuY3lBbW91bnRfM18yCisjZGVmaW5lIEN1cnJlbmN5Rm9ybWF0IEN1cnJlbmN5Rm9ybWF0XzNf
MgorI2RlZmluZSBDdXJyZW5jeVVuaXQgQ3VycmVuY3lVbml0XzNfMgorI2RlZmluZSBDdXJzaXZl
QXR0YWNobWVudFN1YnRhYmxlIEN1cnNpdmVBdHRhY2htZW50U3VidGFibGVfM18yCisjZGVmaW5l
IERhdGVGb3JtYXQgRGF0ZUZvcm1hdF8zXzIKKyNkZWZpbmUgRGF0ZUZvcm1hdFN5bWJvbHMgRGF0
ZUZvcm1hdFN5bWJvbHNfM18yCisjZGVmaW5lIERlY2ltYWxGb3JtYXQgRGVjaW1hbEZvcm1hdF8z
XzIKKyNkZWZpbmUgRGVjaW1hbEZvcm1hdFN5bWJvbHMgRGVjaW1hbEZvcm1hdFN5bWJvbHNfM18y
CisjZGVmaW5lIERlZmF1bHRDYWxlbmRhckZhY3RvcnkgRGVmYXVsdENhbGVuZGFyRmFjdG9yeV8z
XzIKKyNkZWZpbmUgRGVmYXVsdENoYXJNYXBwZXIgRGVmYXVsdENoYXJNYXBwZXJfM18yCisjZGVm
aW5lIERldmljZVRhYmxlIERldmljZVRhYmxlXzNfMgorI2RlZmluZSBEaWN0aW9uYXJ5QmFzZWRC
cmVha0l0ZXJhdG9yIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3JfM18yCisjZGVmaW5lIERp
Y3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3JUYWJsZXMgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVy
YXRvclRhYmxlc18zXzIKKyNkZWZpbmUgRGlnaXRMaXN0IERpZ2l0TGlzdF8zXzIKKyNkZWZpbmUg
RW50cnkgRW50cnlfM18yCisjZGVmaW5lIEVudW1Ub09mZnNldCBFbnVtVG9PZmZzZXRfM18yCisj
ZGVmaW5lIEVzY2FwZVRyYW5zbGl0ZXJhdG9yIEVzY2FwZVRyYW5zbGl0ZXJhdG9yXzNfMgorI2Rl
ZmluZSBFdmVudExpc3RlbmVyIEV2ZW50TGlzdGVuZXJfM18yCisjZGVmaW5lIEV4dGVuc2lvblN1
YnRhYmxlIEV4dGVuc2lvblN1YnRhYmxlXzNfMgorI2RlZmluZSBGZWF0dXJlTGlzdFRhYmxlIEZl
YXR1cmVMaXN0VGFibGVfM18yCisjZGVmaW5lIEZpZWxkUG9zaXRpb24gRmllbGRQb3NpdGlvbl8z
XzIKKyNkZWZpbmUgRm9udFJ1bnMgRm9udFJ1bnNfM18yCisjZGVmaW5lIEZvcm1hdCBGb3JtYXRf
M18yCisjZGVmaW5lIEZvcm1hdDFBbmNob3JUYWJsZSBGb3JtYXQxQW5jaG9yVGFibGVfM18yCisj
ZGVmaW5lIEZvcm1hdDJBbmNob3JUYWJsZSBGb3JtYXQyQW5jaG9yVGFibGVfM18yCisjZGVmaW5l
IEZvcm1hdDNBbmNob3JUYWJsZSBGb3JtYXQzQW5jaG9yVGFibGVfM18yCisjZGVmaW5lIEZvcm1h
dHRhYmxlIEZvcm1hdHRhYmxlXzNfMgorI2RlZmluZSBGb3J3YXJkQ2hhcmFjdGVySXRlcmF0b3Ig
Rm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yXzNfMgorI2RlZmluZSBGcmFjdGlvbmFsUGFydFN1YnN0
aXR1dGlvbiBGcmFjdGlvbmFsUGFydFN1YnN0aXR1dGlvbl8zXzIKKyNkZWZpbmUgRnVuY3Rpb25S
ZXBsYWNlciBGdW5jdGlvblJlcGxhY2VyXzNfMgorI2RlZmluZSBHREVGTWFya0ZpbHRlciBHREVG
TWFya0ZpbHRlcl8zXzIKKyNkZWZpbmUgR1hMYXlvdXRFbmdpbmUgR1hMYXlvdXRFbmdpbmVfM18y
CisjZGVmaW5lIEdseXBoRGVmaW5pdGlvblRhYmxlSGVhZGVyIEdseXBoRGVmaW5pdGlvblRhYmxl
SGVhZGVyXzNfMgorI2RlZmluZSBHbHlwaEl0ZXJhdG9yIEdseXBoSXRlcmF0b3JfM18yCisjZGVm
aW5lIEdseXBoTG9va3VwVGFibGVIZWFkZXIgR2x5cGhMb29rdXBUYWJsZUhlYWRlcl8zXzIKKyNk
ZWZpbmUgR2x5cGhQb3NpdGlvbmluZ0xvb2t1cFByb2Nlc3NvciBHbHlwaFBvc2l0aW9uaW5nTG9v
a3VwUHJvY2Vzc29yXzNfMgorI2RlZmluZSBHbHlwaFBvc2l0aW9uaW5nVGFibGVIZWFkZXIgR2x5
cGhQb3NpdGlvbmluZ1RhYmxlSGVhZGVyXzNfMgorI2RlZmluZSBHbHlwaFN1YnN0aXR1dGlvbkxv
b2t1cFByb2Nlc3NvciBHbHlwaFN1YnN0aXR1dGlvbkxvb2t1cFByb2Nlc3Nvcl8zXzIKKyNkZWZp
bmUgR2x5cGhTdWJzdGl0dXRpb25UYWJsZUhlYWRlciBHbHlwaFN1YnN0aXR1dGlvblRhYmxlSGVh
ZGVyXzNfMgorI2RlZmluZSBHcmVnbyBHcmVnb18zXzIKKyNkZWZpbmUgR3JlZ29yaWFuQ2FsZW5k
YXIgR3JlZ29yaWFuQ2FsZW5kYXJfM18yCisjZGVmaW5lIEhhbk9wZW5UeXBlTGF5b3V0RW5naW5l
IEhhbk9wZW5UeXBlTGF5b3V0RW5naW5lXzNfMgorI2RlZmluZSBIZWJyZXdDYWxlbmRhciBIZWJy
ZXdDYWxlbmRhcl8zXzIKKyNkZWZpbmUgSUNVQnJlYWtJdGVyYXRvckZhY3RvcnkgSUNVQnJlYWtJ
dGVyYXRvckZhY3RvcnlfM18yCisjZGVmaW5lIElDVUJyZWFrSXRlcmF0b3JTZXJ2aWNlIElDVUJy
ZWFrSXRlcmF0b3JTZXJ2aWNlXzNfMgorI2RlZmluZSBJQ1VDb2xsYXRvckZhY3RvcnkgSUNVQ29s
bGF0b3JGYWN0b3J5XzNfMgorI2RlZmluZSBJQ1VDb2xsYXRvclNlcnZpY2UgSUNVQ29sbGF0b3JT
ZXJ2aWNlXzNfMgorI2RlZmluZSBJQ1VMYXlvdXRFbmdpbmUgSUNVTGF5b3V0RW5naW5lXzNfMgor
I2RlZmluZSBJQ1VMb2NhbGVTZXJ2aWNlIElDVUxvY2FsZVNlcnZpY2VfM18yCisjZGVmaW5lIElD
VU5vdGlmaWVyIElDVU5vdGlmaWVyXzNfMgorI2RlZmluZSBJQ1VOdW1iZXJGb3JtYXRGYWN0b3J5
IElDVU51bWJlckZvcm1hdEZhY3RvcnlfM18yCisjZGVmaW5lIElDVU51bWJlckZvcm1hdFNlcnZp
Y2UgSUNVTnVtYmVyRm9ybWF0U2VydmljZV8zXzIKKyNkZWZpbmUgSUNVUmVzb3VyY2VCdW5kbGVG
YWN0b3J5IElDVVJlc291cmNlQnVuZGxlRmFjdG9yeV8zXzIKKyNkZWZpbmUgSUNVU2VydmljZSBJ
Q1VTZXJ2aWNlXzNfMgorI2RlZmluZSBJQ1VTZXJ2aWNlRmFjdG9yeSBJQ1VTZXJ2aWNlRmFjdG9y
eV8zXzIKKyNkZWZpbmUgSUNVU2VydmljZUtleSBJQ1VTZXJ2aWNlS2V5XzNfMgorI2RlZmluZSBJ
Q1VfVXRpbGl0eSBJQ1VfVXRpbGl0eV8zXzIKKyNkZWZpbmUgSW5kaWNDbGFzc1RhYmxlIEluZGlj
Q2xhc3NUYWJsZV8zXzIKKyNkZWZpbmUgSW5kaWNPcGVuVHlwZUxheW91dEVuZ2luZSBJbmRpY09w
ZW5UeXBlTGF5b3V0RW5naW5lXzNfMgorI2RlZmluZSBJbmRpY1JlYXJyYW5nZW1lbnRQcm9jZXNz
b3IgSW5kaWNSZWFycmFuZ2VtZW50UHJvY2Vzc29yXzNfMgorI2RlZmluZSBJbmRpY1Jlb3JkZXJp
bmcgSW5kaWNSZW9yZGVyaW5nXzNfMgorI2RlZmluZSBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRpb24g
SW50ZWdyYWxQYXJ0U3Vic3RpdHV0aW9uXzNfMgorI2RlZmluZSBJc2xhbWljQ2FsZW5kYXIgSXNs
YW1pY0NhbGVuZGFyXzNfMgorI2RlZmluZSBKYXBhbmVzZUNhbGVuZGFyIEphcGFuZXNlQ2FsZW5k
YXJfM18yCisjZGVmaW5lIEtleXdvcmRFbnVtZXJhdGlvbiBLZXl3b3JkRW51bWVyYXRpb25fM18y
CisjZGVmaW5lIExFQ2hhck1hcHBlciBMRUNoYXJNYXBwZXJfM18yCisjZGVmaW5lIExFRm9udElu
c3RhbmNlIExFRm9udEluc3RhbmNlXzNfMgorI2RlZmluZSBMRUdseXBoRmlsdGVyIExFR2x5cGhG
aWx0ZXJfM18yCisjZGVmaW5lIExFR2x5cGhTdG9yYWdlIExFR2x5cGhTdG9yYWdlXzNfMgorI2Rl
ZmluZSBMRUluc2VydGlvbkNhbGxiYWNrIExFSW5zZXJ0aW9uQ2FsbGJhY2tfM18yCisjZGVmaW5l
IExFSW5zZXJ0aW9uTGlzdCBMRUluc2VydGlvbkxpc3RfM18yCisjZGVmaW5lIExYVXRpbGl0aWVz
IExYVXRpbGl0aWVzXzNfMgorI2RlZmluZSBMYXlvdXRFbmdpbmUgTGF5b3V0RW5naW5lXzNfMgor
I2RlZmluZSBMaWdhdHVyZVN1YnN0aXR1dGlvblByb2Nlc3NvciBMaWdhdHVyZVN1YnN0aXR1dGlv
blByb2Nlc3Nvcl8zXzIKKyNkZWZpbmUgTGlnYXR1cmVTdWJzdGl0dXRpb25TdWJ0YWJsZSBMaWdh
dHVyZVN1YnN0aXR1dGlvblN1YnRhYmxlXzNfMgorI2RlZmluZSBMb2NEYXRhUGFyc2VyIExvY0Rh
dGFQYXJzZXJfM18yCisjZGVmaW5lIExvY2FsZSBMb2NhbGVfM18yCisjZGVmaW5lIExvY2FsZUJh
c2VkIExvY2FsZUJhc2VkXzNfMgorI2RlZmluZSBMb2NhbGVLZXkgTG9jYWxlS2V5XzNfMgorI2Rl
ZmluZSBMb2NhbGVLZXlGYWN0b3J5IExvY2FsZUtleUZhY3RvcnlfM18yCisjZGVmaW5lIExvY2Fs
ZVJ1bnMgTG9jYWxlUnVuc18zXzIKKyNkZWZpbmUgTG9jYWxlVXRpbGl0eSBMb2NhbGVVdGlsaXR5
XzNfMgorI2RlZmluZSBMb2NhbGl6YXRpb25JbmZvIExvY2FsaXphdGlvbkluZm9fM18yCisjZGVm
aW5lIExvb2t1cExpc3RUYWJsZSBMb29rdXBMaXN0VGFibGVfM18yCisjZGVmaW5lIExvb2t1cFBy
b2Nlc3NvciBMb29rdXBQcm9jZXNzb3JfM18yCisjZGVmaW5lIExvb2t1cFN1YnRhYmxlIExvb2t1
cFN1YnRhYmxlXzNfMgorI2RlZmluZSBMb29rdXBUYWJsZSBMb29rdXBUYWJsZV8zXzIKKyNkZWZp
bmUgTG93ZXJjYXNlVHJhbnNsaXRlcmF0b3IgTG93ZXJjYXNlVHJhbnNsaXRlcmF0b3JfM18yCisj
ZGVmaW5lIE1QcmVGaXh1cHMgTVByZUZpeHVwc18zXzIKKyNkZWZpbmUgTWFya0FycmF5IE1hcmtB
cnJheV8zXzIKKyNkZWZpbmUgTWFya1RvQmFzZVBvc2l0aW9uaW5nU3VidGFibGUgTWFya1RvQmFz
ZVBvc2l0aW9uaW5nU3VidGFibGVfM18yCisjZGVmaW5lIE1hcmtUb0xpZ2F0dXJlUG9zaXRpb25p
bmdTdWJ0YWJsZSBNYXJrVG9MaWdhdHVyZVBvc2l0aW9uaW5nU3VidGFibGVfM18yCisjZGVmaW5l
IE1hcmtUb01hcmtQb3NpdGlvbmluZ1N1YnRhYmxlIE1hcmtUb01hcmtQb3NpdGlvbmluZ1N1YnRh
YmxlXzNfMgorI2RlZmluZSBNYXRoIE1hdGhfM18yCisjZGVmaW5lIE1lYXN1cmUgTWVhc3VyZV8z
XzIKKyNkZWZpbmUgTWVhc3VyZUZvcm1hdCBNZWFzdXJlRm9ybWF0XzNfMgorI2RlZmluZSBNZWFz
dXJlVW5pdCBNZWFzdXJlVW5pdF8zXzIKKyNkZWZpbmUgTWVzc2FnZUZvcm1hdCBNZXNzYWdlRm9y
bWF0XzNfMgorI2RlZmluZSBNZXNzYWdlRm9ybWF0QWRhcHRlciBNZXNzYWdlRm9ybWF0QWRhcHRl
cl8zXzIKKyNkZWZpbmUgTW9kdWx1c1N1YnN0aXR1dGlvbiBNb2R1bHVzU3Vic3RpdHV0aW9uXzNf
MgorI2RlZmluZSBNb29uUmlzZVNldENvb3JkRnVuYyBNb29uUmlzZVNldENvb3JkRnVuY18zXzIK
KyNkZWZpbmUgTW9vblRpbWVBbmdsZUZ1bmMgTW9vblRpbWVBbmdsZUZ1bmNfM18yCisjZGVmaW5l
IE1vcnBoU3VidGFibGVIZWFkZXIgTW9ycGhTdWJ0YWJsZUhlYWRlcl8zXzIKKyNkZWZpbmUgTW9y
cGhUYWJsZUhlYWRlciBNb3JwaFRhYmxlSGVhZGVyXzNfMgorI2RlZmluZSBNdWx0aXBsZVN1YnN0
aXR1dGlvblN1YnRhYmxlIE11bHRpcGxlU3Vic3RpdHV0aW9uU3VidGFibGVfM18yCisjZGVmaW5l
IE11bHRpcGxpZXJTdWJzdGl0dXRpb24gTXVsdGlwbGllclN1YnN0aXR1dGlvbl8zXzIKKyNkZWZp
bmUgTkZGYWN0b3J5IE5GRmFjdG9yeV8zXzIKKyNkZWZpbmUgTkZSdWxlIE5GUnVsZV8zXzIKKyNk
ZWZpbmUgTkZSdWxlU2V0IE5GUnVsZVNldF8zXzIKKyNkZWZpbmUgTkZTdWJzdGl0dXRpb24gTkZT
dWJzdGl0dXRpb25fM18yCisjZGVmaW5lIE5hbWVUb0VudW0gTmFtZVRvRW51bV8zXzIKKyNkZWZp
bmUgTmFtZVVuaWNvZGVUcmFuc2xpdGVyYXRvciBOYW1lVW5pY29kZVRyYW5zbGl0ZXJhdG9yXzNf
MgorI2RlZmluZSBOb25Db250ZXh0dWFsR2x5cGhTdWJzdGl0dXRpb25Qcm9jZXNzb3IgTm9uQ29u
dGV4dHVhbEdseXBoU3Vic3RpdHV0aW9uUHJvY2Vzc29yXzNfMgorI2RlZmluZSBOb25Db250aWd1
b3VzRW51bVRvT2Zmc2V0IE5vbkNvbnRpZ3VvdXNFbnVtVG9PZmZzZXRfM18yCisjZGVmaW5lIE5v
cm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvciBOb3JtYWxpemF0aW9uVHJhbnNsaXRlcmF0b3JfM18y
CisjZGVmaW5lIE5vcm1hbGl6ZXIgTm9ybWFsaXplcl8zXzIKKyNkZWZpbmUgTnVsbFN1YnN0aXR1
dGlvbiBOdWxsU3Vic3RpdHV0aW9uXzNfMgorI2RlZmluZSBOdWxsVHJhbnNsaXRlcmF0b3IgTnVs
bFRyYW5zbGl0ZXJhdG9yXzNfMgorI2RlZmluZSBOdW1iZXJGb3JtYXQgTnVtYmVyRm9ybWF0XzNf
MgorI2RlZmluZSBOdW1iZXJGb3JtYXRGYWN0b3J5IE51bWJlckZvcm1hdEZhY3RvcnlfM18yCisj
ZGVmaW5lIE51bWVyYXRvclN1YnN0aXR1dGlvbiBOdW1lcmF0b3JTdWJzdGl0dXRpb25fM18yCisj
ZGVmaW5lIE9sc29uVGltZVpvbmUgT2xzb25UaW1lWm9uZV8zXzIKKyNkZWZpbmUgT3BlblR5cGVM
YXlvdXRFbmdpbmUgT3BlblR5cGVMYXlvdXRFbmdpbmVfM18yCisjZGVmaW5lIE9wZW5UeXBlVXRp
bGl0aWVzIE9wZW5UeXBlVXRpbGl0aWVzXzNfMgorI2RlZmluZSBQYWlyUG9zaXRpb25pbmdGb3Jt
YXQxU3VidGFibGUgUGFpclBvc2l0aW9uaW5nRm9ybWF0MVN1YnRhYmxlXzNfMgorI2RlZmluZSBQ
YWlyUG9zaXRpb25pbmdGb3JtYXQyU3VidGFibGUgUGFpclBvc2l0aW9uaW5nRm9ybWF0MlN1YnRh
YmxlXzNfMgorI2RlZmluZSBQYWlyUG9zaXRpb25pbmdTdWJ0YWJsZSBQYWlyUG9zaXRpb25pbmdT
dWJ0YWJsZV8zXzIKKyNkZWZpbmUgUGFyYWdyYXBoTGF5b3V0IFBhcmFncmFwaExheW91dF8zXzIK
KyNkZWZpbmUgUGFyc2VEYXRhIFBhcnNlRGF0YV8zXzIKKyNkZWZpbmUgUGFyc2VQb3NpdGlvbiBQ
YXJzZVBvc2l0aW9uXzNfMgorI2RlZmluZSBQcm9wZXJ0eUFsaWFzZXMgUHJvcGVydHlBbGlhc2Vz
XzNfMgorI2RlZmluZSBRdWFudGlmaWVyIFF1YW50aWZpZXJfM18yCisjZGVmaW5lIFJCQklEYXRh
V3JhcHBlciBSQkJJRGF0YVdyYXBwZXJfM18yCisjZGVmaW5lIFJCQklOb2RlIFJCQklOb2RlXzNf
MgorI2RlZmluZSBSQkJJUnVsZUJ1aWxkZXIgUkJCSVJ1bGVCdWlsZGVyXzNfMgorI2RlZmluZSBS
QkJJUnVsZVNjYW5uZXIgUkJCSVJ1bGVTY2FubmVyXzNfMgorI2RlZmluZSBSQkJJU2V0QnVpbGRl
ciBSQkJJU2V0QnVpbGRlcl8zXzIKKyNkZWZpbmUgUkJCSVN0YXRlRGVzY3JpcHRvciBSQkJJU3Rh
dGVEZXNjcmlwdG9yXzNfMgorI2RlZmluZSBSQkJJU3ltYm9sVGFibGUgUkJCSVN5bWJvbFRhYmxl
XzNfMgorI2RlZmluZSBSQkJJU3ltYm9sVGFibGVFbnRyeSBSQkJJU3ltYm9sVGFibGVFbnRyeV8z
XzIKKyNkZWZpbmUgUkJCSVRhYmxlQnVpbGRlciBSQkJJVGFibGVCdWlsZGVyXzNfMgorI2RlZmlu
ZSBSYW5nZURlc2NyaXB0b3IgUmFuZ2VEZXNjcmlwdG9yXzNfMgorI2RlZmluZSBSZWdleENvbXBp
bGUgUmVnZXhDb21waWxlXzNfMgorI2RlZmluZSBSZWdleE1hdGNoZXIgUmVnZXhNYXRjaGVyXzNf
MgorI2RlZmluZSBSZWdleFBhdHRlcm4gUmVnZXhQYXR0ZXJuXzNfMgorI2RlZmluZSBSZWdleFN0
YXRpY1NldHMgUmVnZXhTdGF0aWNTZXRzXzNfMgorI2RlZmluZSBSZW1vdmVUcmFuc2xpdGVyYXRv
ciBSZW1vdmVUcmFuc2xpdGVyYXRvcl8zXzIKKyNkZWZpbmUgUmVwbGFjZWFibGUgUmVwbGFjZWFi
bGVfM18yCisjZGVmaW5lIFJlcGxhY2VhYmxlR2x1ZSBSZXBsYWNlYWJsZUdsdWVfM18yCisjZGVm
aW5lIFJlc291cmNlQnVuZGxlIFJlc291cmNlQnVuZGxlXzNfMgorI2RlZmluZSBSaXNlU2V0Q29v
cmRGdW5jIFJpc2VTZXRDb29yZEZ1bmNfM18yCisjZGVmaW5lIFJ1bGVCYXNlZEJyZWFrSXRlcmF0
b3IgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcl8zXzIKKyNkZWZpbmUgUnVsZUJhc2VkQ29sbGF0b3Ig
UnVsZUJhc2VkQ29sbGF0b3JfM18yCisjZGVmaW5lIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBSdWxl
QmFzZWROdW1iZXJGb3JtYXRfM18yCisjZGVmaW5lIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIFJ1
bGVCYXNlZFRyYW5zbGl0ZXJhdG9yXzNfMgorI2RlZmluZSBSdWxlQ2hhcmFjdGVySXRlcmF0b3Ig
UnVsZUNoYXJhY3Rlckl0ZXJhdG9yXzNfMgorI2RlZmluZSBSdWxlSGFsZiBSdWxlSGFsZl8zXzIK
KyNkZWZpbmUgUnVuQXJyYXkgUnVuQXJyYXlfM18yCisjZGVmaW5lIFNhbWVWYWx1ZVN1YnN0aXR1
dGlvbiBTYW1lVmFsdWVTdWJzdGl0dXRpb25fM18yCisjZGVmaW5lIFNjcmlwdExpc3RUYWJsZSBT
Y3JpcHRMaXN0VGFibGVfM18yCisjZGVmaW5lIFNjcmlwdFJ1bkl0ZXJhdG9yIFNjcmlwdFJ1bkl0
ZXJhdG9yXzNfMgorI2RlZmluZSBTY3JpcHRUYWJsZSBTY3JpcHRUYWJsZV8zXzIKKyNkZWZpbmUg
U2VhcmNoSXRlcmF0b3IgU2VhcmNoSXRlcmF0b3JfM18yCisjZGVmaW5lIFNlZ21lbnRBcnJheVBy
b2Nlc3NvciBTZWdtZW50QXJyYXlQcm9jZXNzb3JfM18yCisjZGVmaW5lIFNlZ21lbnRTaW5nbGVQ
cm9jZXNzb3IgU2VnbWVudFNpbmdsZVByb2Nlc3Nvcl8zXzIKKyNkZWZpbmUgU2VydmljZUVudW1l
cmF0aW9uIFNlcnZpY2VFbnVtZXJhdGlvbl8zXzIKKyNkZWZpbmUgU2VydmljZUxpc3RlbmVyIFNl
cnZpY2VMaXN0ZW5lcl8zXzIKKyNkZWZpbmUgU2ltcGxlQXJyYXlQcm9jZXNzb3IgU2ltcGxlQXJy
YXlQcm9jZXNzb3JfM18yCisjZGVmaW5lIFNpbXBsZURhdGVGb3JtYXQgU2ltcGxlRGF0ZUZvcm1h
dF8zXzIKKyNkZWZpbmUgU2ltcGxlRmFjdG9yeSBTaW1wbGVGYWN0b3J5XzNfMgorI2RlZmluZSBT
aW1wbGVMb2NhbGVLZXlGYWN0b3J5IFNpbXBsZUxvY2FsZUtleUZhY3RvcnlfM18yCisjZGVmaW5l
IFNpbXBsZU51bWJlckZvcm1hdEZhY3RvcnkgU2ltcGxlTnVtYmVyRm9ybWF0RmFjdG9yeV8zXzIK
KyNkZWZpbmUgU2ltcGxlVGltZVpvbmUgU2ltcGxlVGltZVpvbmVfM18yCisjZGVmaW5lIFNpbmds
ZVBvc2l0aW9uaW5nRm9ybWF0MVN1YnRhYmxlIFNpbmdsZVBvc2l0aW9uaW5nRm9ybWF0MVN1YnRh
YmxlXzNfMgorI2RlZmluZSBTaW5nbGVQb3NpdGlvbmluZ0Zvcm1hdDJTdWJ0YWJsZSBTaW5nbGVQ
b3NpdGlvbmluZ0Zvcm1hdDJTdWJ0YWJsZV8zXzIKKyNkZWZpbmUgU2luZ2xlUG9zaXRpb25pbmdT
dWJ0YWJsZSBTaW5nbGVQb3NpdGlvbmluZ1N1YnRhYmxlXzNfMgorI2RlZmluZSBTaW5nbGVTdWJz
dGl0dXRpb25Gb3JtYXQxU3VidGFibGUgU2luZ2xlU3Vic3RpdHV0aW9uRm9ybWF0MVN1YnRhYmxl
XzNfMgorI2RlZmluZSBTaW5nbGVTdWJzdGl0dXRpb25Gb3JtYXQyU3VidGFibGUgU2luZ2xlU3Vi
c3RpdHV0aW9uRm9ybWF0MlN1YnRhYmxlXzNfMgorI2RlZmluZSBTaW5nbGVTdWJzdGl0dXRpb25T
dWJ0YWJsZSBTaW5nbGVTdWJzdGl0dXRpb25TdWJ0YWJsZV8zXzIKKyNkZWZpbmUgU2luZ2xlVGFi
bGVQcm9jZXNzb3IgU2luZ2xlVGFibGVQcm9jZXNzb3JfM18yCisjZGVmaW5lIFNwZWMgU3BlY18z
XzIKKyNkZWZpbmUgU3RhdGVUYWJsZVByb2Nlc3NvciBTdGF0ZVRhYmxlUHJvY2Vzc29yXzNfMgor
I2RlZmluZSBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcl8z
XzIKKyNkZWZpbmUgU3RyaW5nRW51bWVyYXRpb24gU3RyaW5nRW51bWVyYXRpb25fM18yCisjZGVm
aW5lIFN0cmluZ0xvY2FsaXphdGlvbkluZm8gU3RyaW5nTG9jYWxpemF0aW9uSW5mb18zXzIKKyNk
ZWZpbmUgU3RyaW5nTWF0Y2hlciBTdHJpbmdNYXRjaGVyXzNfMgorI2RlZmluZSBTdHJpbmdQYWly
IFN0cmluZ1BhaXJfM18yCisjZGVmaW5lIFN0cmluZ1JlcGxhY2VyIFN0cmluZ1JlcGxhY2VyXzNf
MgorI2RlZmluZSBTdHJpbmdTZWFyY2ggU3RyaW5nU2VhcmNoXzNfMgorI2RlZmluZSBTdHlsZVJ1
bnMgU3R5bGVSdW5zXzNfMgorI2RlZmluZSBTdWJzdGl0dXRpb25Mb29rdXAgU3Vic3RpdHV0aW9u
TG9va3VwXzNfMgorI2RlZmluZSBTdWJ0YWJsZVByb2Nlc3NvciBTdWJ0YWJsZVByb2Nlc3Nvcl8z
XzIKKyNkZWZpbmUgU3VuVGltZUFuZ2xlRnVuYyBTdW5UaW1lQW5nbGVGdW5jXzNfMgorI2RlZmlu
ZSBTeW1ib2xUYWJsZSBTeW1ib2xUYWJsZV8zXzIKKyNkZWZpbmUgVFpFbnVtZXJhdGlvbiBUWkVu
dW1lcmF0aW9uXzNfMgorI2RlZmluZSBUaGFpTGF5b3V0RW5naW5lIFRoYWlMYXlvdXRFbmdpbmVf
M18yCisjZGVmaW5lIFRoYWlTaGFwaW5nIFRoYWlTaGFwaW5nXzNfMgorI2RlZmluZSBUaW1lWm9u
ZSBUaW1lWm9uZV8zXzIKKyNkZWZpbmUgVGl0bGVjYXNlVHJhbnNsaXRlcmF0b3IgVGl0bGVjYXNl
VHJhbnNsaXRlcmF0b3JfM18yCisjZGVmaW5lIFRyYW5zbGl0ZXJhdGlvblJ1bGUgVHJhbnNsaXRl
cmF0aW9uUnVsZV8zXzIKKyNkZWZpbmUgVHJhbnNsaXRlcmF0aW9uUnVsZURhdGEgVHJhbnNsaXRl
cmF0aW9uUnVsZURhdGFfM18yCisjZGVmaW5lIFRyYW5zbGl0ZXJhdGlvblJ1bGVTZXQgVHJhbnNs
aXRlcmF0aW9uUnVsZVNldF8zXzIKKyNkZWZpbmUgVHJhbnNsaXRlcmF0b3IgVHJhbnNsaXRlcmF0
b3JfM18yCisjZGVmaW5lIFRyYW5zbGl0ZXJhdG9yQWxpYXMgVHJhbnNsaXRlcmF0b3JBbGlhc18z
XzIKKyNkZWZpbmUgVHJhbnNsaXRlcmF0b3JJRFBhcnNlciBUcmFuc2xpdGVyYXRvcklEUGFyc2Vy
XzNfMgorI2RlZmluZSBUcmFuc2xpdGVyYXRvclBhcnNlciBUcmFuc2xpdGVyYXRvclBhcnNlcl8z
XzIKKyNkZWZpbmUgVHJhbnNsaXRlcmF0b3JSZWdpc3RyeSBUcmFuc2xpdGVyYXRvclJlZ2lzdHJ5
XzNfMgorI2RlZmluZSBUcmltbWVkQXJyYXlQcm9jZXNzb3IgVHJpbW1lZEFycmF5UHJvY2Vzc29y
XzNfMgorI2RlZmluZSBVQ2hhckNoYXJhY3Rlckl0ZXJhdG9yIFVDaGFyQ2hhcmFjdGVySXRlcmF0
b3JfM18yCisjZGVmaW5lIFVNZW1vcnkgVU1lbW9yeV8zXzIKKyNkZWZpbmUgVU9iamVjdCBVT2Jq
ZWN0XzNfMgorI2RlZmluZSBVU3RhY2sgVVN0YWNrXzNfMgorI2RlZmluZSBVU3RyaW5nRW51bWVy
YXRpb24gVVN0cmluZ0VudW1lcmF0aW9uXzNfMgorI2RlZmluZSBVVmVjdG9yIFVWZWN0b3JfM18y
CisjZGVmaW5lIFVWZWN0b3IzMiBVVmVjdG9yMzJfM18yCisjZGVmaW5lIFVuZXNjYXBlVHJhbnNs
aXRlcmF0b3IgVW5lc2NhcGVUcmFuc2xpdGVyYXRvcl8zXzIKKyNkZWZpbmUgVW5pY29kZUFyYWJp
Y09wZW5UeXBlTGF5b3V0RW5naW5lIFVuaWNvZGVBcmFiaWNPcGVuVHlwZUxheW91dEVuZ2luZV8z
XzIKKyNkZWZpbmUgVW5pY29kZUZpbHRlciBVbmljb2RlRmlsdGVyXzNfMgorI2RlZmluZSBVbmlj
b2RlRnVuY3RvciBVbmljb2RlRnVuY3Rvcl8zXzIKKyNkZWZpbmUgVW5pY29kZU1hdGNoZXIgVW5p
Y29kZU1hdGNoZXJfM18yCisjZGVmaW5lIFVuaWNvZGVOYW1lVHJhbnNsaXRlcmF0b3IgVW5pY29k
ZU5hbWVUcmFuc2xpdGVyYXRvcl8zXzIKKyNkZWZpbmUgVW5pY29kZVJlcGxhY2VyIFVuaWNvZGVS
ZXBsYWNlcl8zXzIKKyNkZWZpbmUgVW5pY29kZVNldCBVbmljb2RlU2V0XzNfMgorI2RlZmluZSBV
bmljb2RlU2V0SXRlcmF0b3IgVW5pY29kZVNldEl0ZXJhdG9yXzNfMgorI2RlZmluZSBVbmljb2Rl
U3RyaW5nIFVuaWNvZGVTdHJpbmdfM18yCisjZGVmaW5lIFVwcGVyY2FzZVRyYW5zbGl0ZXJhdG9y
IFVwcGVyY2FzZVRyYW5zbGl0ZXJhdG9yXzNfMgorI2RlZmluZSBWYWx1ZVJlY29yZCBWYWx1ZVJl
Y29yZF8zXzIKKyNkZWZpbmUgVmFsdWVSdW5zIFZhbHVlUnVuc18zXzIKKyNkZWZpbmUgbG9jYWxl
X3NldF9kZWZhdWx0X2ludGVybmFsIGxvY2FsZV9zZXRfZGVmYXVsdF9pbnRlcm5hbF8zXzIKKyNk
ZWZpbmUgdXBydl9wYXJzZUN1cnJlbmN5IHVwcnZfcGFyc2VDdXJyZW5jeV8zXzIKKyNkZWZpbmUg
dXRpbDY0X2Zyb21Eb3VibGUgdXRpbDY0X2Zyb21Eb3VibGVfM18yCisjZGVmaW5lIHV0aWw2NF9w
b3cgdXRpbDY0X3Bvd18zXzIKKyNkZWZpbmUgdXRpbDY0X3RvdSB1dGlsNjRfdG91XzNfMgorI2Rl
ZmluZSB1dGlsNjRfdXRvaSB1dGlsNjRfdXRvaV8zXzIKKworI2VuZGlmCisjZW5kaWYKKworI2Vu
ZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXN0
cmluZy5oIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXN0cmluZy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYmI2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZh
U2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91c3RyaW5nLmgKQEAgLTAsMCArMSwxMzIwIEBACisvKgor
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgorKiAgIENvcHlyaWdodCAoQykgMTk5OC0yMDA0LCBJbnRlcm5hdGlvbmFs
IEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIEZpbGUgdXN0cmluZy5oCisqCisqIE1v
ZGlmaWNhdGlvbiBIaXN0b3J5OgorKgorKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2Ny
aXB0aW9uCisqICAgMTIvMDcvOTggICAgYmVydHJhbmQgICAgQ3JlYXRpb24uCisqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyovCisKKyNpZm5kZWYgVVNUUklOR19ICisjZGVmaW5lIFVTVFJJTkdfSAor
CisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3B1dGlsLmgi
CisjaW5jbHVkZSAidW5pY29kZS91aXRlci5oIgorCisvKiogU2ltcGxlIGRlY2xhcmF0aW9uIGZv
ciB1X3N0clRvVGl0bGUoKSB0byBhdm9pZCBpbmNsdWRpbmcgdW5pY29kZS91YnJrLmguIEBzdGFi
bGUgSUNVIDIuMSovCisjaWZuZGVmIFVCUktfVFlQRURFRl9VQlJFQUtfSVRFUkFUT1IKKyMgICBk
ZWZpbmUgVUJSS19UWVBFREVGX1VCUkVBS19JVEVSQVRPUgorICAgIHR5cGVkZWYgdm9pZCBVQnJl
YWtJdGVyYXRvcjsKKyNlbmRpZgorCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6IFVu
aWNvZGUgc3RyaW5nIGhhbmRsaW5nIGZ1bmN0aW9ucworICoKKyAqIFRoZXNlIEMgQVBJIGZ1bmN0
aW9ucyBwcm92aWRlIGdlbmVyYWwgVW5pY29kZSBzdHJpbmcgaGFuZGxpbmcuCisgKgorICogU29t
ZSBmdW5jdGlvbnMgYXJlIGVxdWl2YWxlbnQgaW4gbmFtZSwgc2lnbmF0dXJlLCBhbmQgYmVoYXZp
b3IgdG8gdGhlIEFOU0kgQyA8c3RyaW5nLmg+CisgKiBmdW5jdGlvbnMuIChGb3IgZXhhbXBsZSwg
dGhleSBkbyBub3QgY2hlY2sgZm9yIGJhZCBhcmd1bWVudHMgbGlrZSBOVUxMIHN0cmluZyBwb2lu
dGVycy4pCisgKiBJbiBzb21lIGNhc2VzLCBvbmx5IHRoZSB0aHJlYWQtc2FmZSB2YXJpYW50IG9m
IHN1Y2ggYSBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBoZXJlCisgKiAoc2VlIHVfc3RydG9rX3Io
KSkuCisgKgorICogT3RoZXIgZnVuY3Rpb25zIHByb3ZpZGUgbW9yZSBVbmljb2RlLXNwZWNpZmlj
IGZ1bmN0aW9uYWxpdHkgbGlrZSBsb2NhbGUtc3BlY2lmaWMKKyAqIHVwcGVyL2xvd2VyLWNhc2lu
ZyBhbmQgc3RyaW5nIGNvbXBhcmlzb24gaW4gY29kZSBwb2ludCBvcmRlci4KKyAqCisgKiBJQ1Ug
dXNlcyAxNi1iaXQgVW5pY29kZSAoVVRGLTE2KSBpbiB0aGUgZm9ybSBvZiBhcnJheXMgb2YgVUNo
YXIgY29kZSB1bml0cy4KKyAqIFVURi0xNiBlbmNvZGVzIGVhY2ggVW5pY29kZSBjb2RlIHBvaW50
IHdpdGggZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0cy4KKyAqIChUaGlzIGlzIHRo
ZSBkZWZhdWx0IGZvcm0gb2YgVW5pY29kZSwgYW5kIGEgZm9yd2FyZC1jb21wYXRpYmxlIGV4dGVu
c2lvbiBvZiB0aGUgb3JpZ2luYWwsCisgKiBmaXhlZC13aWR0aCBmb3JtIHRoYXQgd2FzIGtub3du
IGFzIFVDUy0yLiBVVEYtMTYgc3VwZXJzZWRlZCBVQ1MtMiB3aXRoIFVuaWNvZGUgMi4wCisgKiBp
biAxOTk2LikKKyAqCisgKiBTb21lIEFQSXMgYWNjZXB0IGEgMzItYml0IFVDaGFyMzIgdmFsdWUg
Zm9yIGEgc2luZ2xlIGNvZGUgcG9pbnQuCisgKgorICogSUNVIGFsc28gaGFuZGxlcyAxNi1iaXQg
VW5pY29kZSB0ZXh0IHdpdGggdW5wYWlyZWQgc3Vycm9nYXRlcy4KKyAqIFN1Y2ggdGV4dCBpcyBu
b3Qgd2VsbC1mb3JtZWQgVVRGLTE2LgorICogQ29kZS1wb2ludC1yZWxhdGVkIGZ1bmN0aW9ucyB0
cmVhdCB1bnBhaXJlZCBzdXJyb2dhdGVzIGFzIHN1cnJvZ2F0ZSBjb2RlIHBvaW50cywKKyAqIGku
ZS4sIGFzIHNlcGFyYXRlIHVuaXRzLgorICoKKyAqIEFsdGhvdWdoIFVURi0xNiBpcyBhIHZhcmlh
YmxlLXdpZHRoIGVuY29kaW5nIGZvcm0gKGxpa2Ugc29tZSBsZWdhY3kgbXVsdGktYnl0ZSBlbmNv
ZGluZ3MpLAorICogaXQgaXMgbXVjaCBtb3JlIGVmZmljaWVudCBldmVuIGZvciByYW5kb20gYWNj
ZXNzIGJlY2F1c2UgdGhlIGNvZGUgdW5pdCB2YWx1ZXMKKyAqIGZvciBzaW5nbGUtdW5pdCBjaGFy
YWN0ZXJzIHZzLiBsZWFkIHVuaXRzIHZzLiB0cmFpbCB1bml0cyBhcmUgY29tcGxldGVseSBkaXNq
b2ludC4KKyAqIFRoaXMgbWVhbnMgdGhhdCBpdCBpcyBlYXN5IHRvIGRldGVybWluZSBjaGFyYWN0
ZXIgKGNvZGUgcG9pbnQpIGJvdW5kYXJpZXMgZnJvbQorICogcmFuZG9tIG9mZnNldHMgaW4gdGhl
IHN0cmluZy4KKyAqCisgKiBVbmljb2RlIChVVEYtMTYpIHN0cmluZyBwcm9jZXNzaW5nIGlzIG9w
dGltaXplZCBmb3IgdGhlIHNpbmdsZS11bml0IGNhc2UuCisgKiBBbHRob3VnaCBpdCBpcyBpbXBv
cnRhbnQgdG8gc3VwcG9ydCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMKKyAqICh3aGljaCB1c2Ug
cGFpcnMgb2YgbGVhZC90cmFpbCBjb2RlIHVuaXRzIGNhbGxlZCAic3Vycm9nYXRlcyIpLAorICog
dGhlaXIgb2NjdXJyZW5jZSBpcyByYXJlLiBBbG1vc3QgYWxsIGNoYXJhY3RlcnMgaW4gbW9kZXJu
IHVzZSByZXF1aXJlIG9ubHkKKyAqIGEgc2luZ2xlIFVDaGFyIGNvZGUgdW5pdCAoaS5lLiwgdGhl
aXIgY29kZSBwb2ludCB2YWx1ZXMgYXJlIDw9MHhmZmZmKS4KKyAqCisgKiBGb3IgbW9yZSBkZXRh
aWxzIHNlZSB0aGUgVXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0ZXIgKGh0dHA6Ly9vc3Muc29mdHdh
cmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL3N0cmluZ3MuaHRtbCkuCisgKiBGb3IgYSBkaXNjdXNz
aW9uIG9mIHRoZSBoYW5kbGluZyBvZiB1bnBhaXJlZCBzdXJyb2dhdGVzIHNlZSBhbHNvCisgKiBK
aXR0ZXJidWcgMjE0NSBhbmQgaXRzIGljdSBtYWlsaW5nIGxpc3QgcHJvcG9zYWwgb24gMjAwMi1z
ZXAtMTguCisgKi8KKworLyoqCisgKiBEZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiBhbiBhcnJheSBv
ZiBVQ2hhci4KKyAqCisgKiBAcGFyYW0gcyBUaGUgYXJyYXkgb2YgVUNoYXJzLCBOVUxMIChVKzAw
MDApIHRlcm1pbmF0ZWQuCisgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgVUNoYXJzIGluIDxjb2Rl
PmNoYXJzPC9jb2RlPiwgbWludXMgdGhlIHRlcm1pbmF0b3IuCisgKiBAc3RhYmxlIElDVSAyLjAK
KyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vfc3RybGVuKGNvbnN0IFVDaGFyICpz
KTsKKworLyoqCisgKiBDb3VudCBVbmljb2RlIGNvZGUgcG9pbnRzIGluIHRoZSBsZW5ndGggVUNo
YXIgY29kZSB1bml0cyBvZiB0aGUgc3RyaW5nLgorICogQSBjb2RlIHBvaW50IG1heSBvY2N1cHkg
ZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0cy4KKyAqIENvdW50aW5nIGNvZGUgcG9p
bnRzIGludm9sdmVzIHJlYWRpbmcgYWxsIGNvZGUgdW5pdHMuCisgKgorICogVGhpcyBmdW5jdGlv
bnMgaXMgYmFzaWNhbGx5IHRoZSBpbnZlcnNlIG9mIHRoZSBVMTZfRldEX04oKSBtYWNybyAoc2Vl
IHV0Zi5oKS4KKyAqCisgKiBAcGFyYW0gcyBUaGUgaW5wdXQgc3RyaW5nLgorICogQHBhcmFtIGxl
bmd0aCBUaGUgbnVtYmVyIG9mIFVDaGFyIGNvZGUgdW5pdHMgdG8gYmUgY2hlY2tlZCwgb3IgLTEg
dG8gY291bnQgYWxsCisgKiAgICAgICAgICAgICAgIGNvZGUgcG9pbnRzIGJlZm9yZSB0aGUgZmly
c3QgTlVMIChVKzAwMDApLgorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGlu
IHRoZSBzcGVjaWZpZWQgY29kZSB1bml0cy4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NU
QUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9jb3VudENoYXIzMihjb25zdCBVQ2hhciAqcywgaW50
MzJfdCBsZW5ndGgpOworCisvKioKKyAqIENoZWNrIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgbW9y
ZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRoYW4gYSBjZXJ0YWluIG51bWJlci4KKyAqIFRoaXMgaXMg
bW9yZSBlZmZpY2llbnQgdGhhbiBjb3VudGluZyBhbGwgY29kZSBwb2ludHMgaW4gdGhlIGVudGly
ZSBzdHJpbmcKKyAqIGFuZCBjb21wYXJpbmcgdGhhdCBudW1iZXIgd2l0aCBhIHRocmVzaG9sZC4K
KyAqIFRoaXMgZnVuY3Rpb24gbWF5IG5vdCBuZWVkIHRvIHNjYW4gdGhlIHN0cmluZyBhdCBhbGwg
aWYgdGhlIGxlbmd0aCBpcyBrbm93bgorICogKG5vdCAtMSBmb3IgTlVMLXRlcm1pbmF0aW9uKSBh
bmQgZmFsbHMgd2l0aGluIGEgY2VydGFpbiByYW5nZSwgYW5kCisgKiBuZXZlciBuZWVkcyB0byBj
b3VudCBtb3JlIHRoYW4gJ251bWJlcisxJyBjb2RlIHBvaW50cy4KKyAqIExvZ2ljYWxseSBlcXVp
dmFsZW50IHRvICh1X2NvdW50Q2hhcjMyKHMsIGxlbmd0aCk+bnVtYmVyKS4KKyAqIEEgVW5pY29k
ZSBjb2RlIHBvaW50IG1heSBvY2N1cHkgZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0
cy4KKyAqCisgKiBAcGFyYW0gcyBUaGUgaW5wdXQgc3RyaW5nLgorICogQHBhcmFtIGxlbmd0aCBU
aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIG9yIC0xIGlmIGl0IGlzIE5VTC10ZXJtaW5hdGVkLgor
ICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSBzdHJpbmcg
aXMgY29tcGFyZWQgYWdhaW5zdAorICogICAgICAgICAgICAgICB0aGUgJ251bWJlcicgcGFyYW1l
dGVyLgorICogQHJldHVybiBCb29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIHRoZSBzdHJpbmcgY29u
dGFpbnMgbW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzCisgKiAgICAgICAgIHRoYW4gJ251bWJlcicu
IFNhbWUgYXMgKHVfY291bnRDaGFyMzIocywgbGVuZ3RoKT5udW1iZXIpLgorICogQHN0YWJsZSBJ
Q1UgMi40CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9zdHJIYXNNb3JlQ2hhcjMy
VGhhbihjb25zdCBVQ2hhciAqcywgaW50MzJfdCBsZW5ndGgsIGludDMyX3QgbnVtYmVyKTsKKwor
LyoqCisgKiBDb25jYXRlbmF0ZSB0d28gdXN0cmluZ3MuICBBcHBlbmRzIGEgY29weSBvZiA8Y29k
ZT5zcmM8L2NvZGU+LAorICogaW5jbHVkaW5nIHRoZSBudWxsIHRlcm1pbmF0b3IsIHRvIDxjb2Rl
PmRzdDwvY29kZT4uIFRoZSBpbml0aWFsIGNvcGllZAorICogY2hhcmFjdGVyIGZyb20gPGNvZGU+
c3JjPC9jb2RlPiBvdmVyd3JpdGVzIHRoZSBudWxsIHRlcm1pbmF0b3IgaW4gPGNvZGU+ZHN0PC9j
b2RlPi4KKyAqCisgKiBAcGFyYW0gZHN0IFRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCisgKiBAcGFy
YW0gc3JjIFRoZSBzb3VyY2Ugc3RyaW5nLgorICogQHJldHVybiBBIHBvaW50ZXIgdG8gPGNvZGU+
ZHN0PC9jb2RlPi4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQ2hhciogVV9F
WFBPUlQyCit1X3N0cmNhdChVQ2hhciAgICAgKmRzdCwgCisgICAgY29uc3QgVUNoYXIgICAgICpz
cmMpOworCisvKioKKyAqIENvbmNhdGVuYXRlIHR3byB1c3RyaW5ncy4gIAorICogQXBwZW5kcyBh
dCBtb3N0IDxjb2RlPm48L2NvZGU+IGNoYXJhY3RlcnMgZnJvbSA8Y29kZT5zcmM8L2NvZGU+IHRv
IDxjb2RlPmRzdDwvY29kZT4uCisgKiBBZGRzIGEgdGVybWluYXRpbmcgTlVMLgorICogSWYgc3Jj
IGlzIHRvbyBsb25nLCB0aGVuIG9ubHkgPGNvZGU+bi0xPC9jb2RlPiBjaGFyYWN0ZXJzIHdpbGwg
YmUgY29waWVkCisgKiBiZWZvcmUgdGhlIHRlcm1pbmF0aW5nIE5VTC4KKyAqIElmIDxjb2RlPm4m
bHQ7PTA8L2NvZGU+IHRoZW4gZHN0IGlzIG5vdCBtb2RpZmllZC4KKyAqCisgKiBAcGFyYW0gZHN0
IFRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCisgKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2Ugc3RyaW5n
LgorICogQHBhcmFtIG4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29tcGFy
ZS4KKyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4uCisgKiBAc3RhYmxl
IElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgordV9zdHJuY2F0KFVDaGFy
ICAgICAqZHN0LCAKKyAgICAgY29uc3QgVUNoYXIgICAgICpzcmMsIAorICAgICBpbnQzMl90ICAg
ICBuKTsKKworLyoqCisgKiBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgc3Vic3RyaW5n
IGluIGEgc3RyaW5nLgorICogVGhlIHN1YnN0cmluZyBpcyBmb3VuZCBhdCBjb2RlIHBvaW50IGJv
dW5kYXJpZXMuCisgKiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlIHN1YnN0cmluZyBiZWdpbnMgd2l0
aAorICogYSB0cmFpbCBzdXJyb2dhdGUgb3IgZW5kcyB3aXRoIGEgbGVhZCBzdXJyb2dhdGUsCisg
KiB0aGVuIGl0IGlzIGZvdW5kIG9ubHkgaWYgdGhlc2Ugc3Vycm9nYXRlcyBzdGFuZCBhbG9uZSBp
biB0aGUgdGV4dC4KKyAqIE90aGVyd2lzZSwgdGhlIHN1YnN0cmluZyBlZGdlIHVuaXRzIHdvdWxk
IGJlIG1hdGNoZWQgYWdhaW5zdAorICogaGFsdmVzIG9mIHN1cnJvZ2F0ZSBwYWlycy4KKyAqCisg
KiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHNlYXJjaCAoTlVMLXRlcm1pbmF0ZWQpLgorICogQHBh
cmFtIHN1YnN0cmluZyBUaGUgc3Vic3RyaW5nIHRvIGZpbmQgKE5VTC10ZXJtaW5hdGVkKS4KKyAq
IEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIDxjb2RlPnN1YnN0
cmluZzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4sCisgKiAgICAgICAgIG9yIDxjb2RlPnM8L2Nv
ZGU+IGl0c2VsZiBpZiB0aGUgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpcyBlbXB0eSwKKyAqICAg
ICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpcyBu
b3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqCisgKiBAc2VlIHVf
c3RycnN0cgorICogQHNlZSB1X3N0ckZpbmRGaXJzdAorICogQHNlZSB1X3N0ckZpbmRMYXN0Cisg
Ki8KK1VfU1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCit1X3N0cnN0cihjb25zdCBVQ2hhciAqcywg
Y29uc3QgVUNoYXIgKnN1YnN0cmluZyk7CisKKy8qKgorICogRmluZCB0aGUgZmlyc3Qgb2NjdXJy
ZW5jZSBvZiBhIHN1YnN0cmluZyBpbiBhIHN0cmluZy4KKyAqIFRoZSBzdWJzdHJpbmcgaXMgZm91
bmQgYXQgY29kZSBwb2ludCBib3VuZGFyaWVzLgorICogVGhhdCBtZWFucyB0aGF0IGlmIHRoZSBz
dWJzdHJpbmcgYmVnaW5zIHdpdGgKKyAqIGEgdHJhaWwgc3Vycm9nYXRlIG9yIGVuZHMgd2l0aCBh
IGxlYWQgc3Vycm9nYXRlLAorICogdGhlbiBpdCBpcyBmb3VuZCBvbmx5IGlmIHRoZXNlIHN1cnJv
Z2F0ZXMgc3RhbmQgYWxvbmUgaW4gdGhlIHRleHQuCisgKiBPdGhlcndpc2UsIHRoZSBzdWJzdHJp
bmcgZWRnZSB1bml0cyB3b3VsZCBiZSBtYXRjaGVkIGFnYWluc3QKKyAqIGhhbHZlcyBvZiBzdXJy
b2dhdGUgcGFpcnMuCisgKgorICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBzZWFyY2guCisgKiBA
cGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgcyAobnVtYmVyIG9mIFVDaGFycyksIG9yIC0xIGlm
IGl0IGlzIE5VTC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHN1YnN0cmluZyBUaGUgc3Vic3RyaW5n
IHRvIGZpbmQgKE5VTC10ZXJtaW5hdGVkKS4KKyAqIEBwYXJhbSBzdWJMZW5ndGggVGhlIGxlbmd0
aCBvZiBzdWJzdHJpbmcgKG51bWJlciBvZiBVQ2hhcnMpLCBvciAtMSBpZiBpdCBpcyBOVUwtdGVy
bWluYXRlZC4KKyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9m
IDxjb2RlPnN1YnN0cmluZzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4sCisgKiAgICAgICAgIG9y
IDxjb2RlPnM8L2NvZGU+IGl0c2VsZiBpZiB0aGUgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpcyBl
bXB0eSwKKyAqICAgICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+c3Vic3RyaW5n
PC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjQKKyAq
CisgKiBAc2VlIHVfc3Ryc3RyCisgKiBAc2VlIHVfc3RyRmluZExhc3QKKyAqLworVV9TVEFCTEUg
VUNoYXIgKiBVX0VYUE9SVDIKK3Vfc3RyRmluZEZpcnN0KGNvbnN0IFVDaGFyICpzLCBpbnQzMl90
IGxlbmd0aCwgY29uc3QgVUNoYXIgKnN1YnN0cmluZywgaW50MzJfdCBzdWJMZW5ndGgpOworCisv
KioKKyAqIEZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBCTVAgY29kZSBwb2ludCBpbiBh
IHN0cmluZy4KKyAqIEEgc3Vycm9nYXRlIGNvZGUgcG9pbnQgaXMgZm91bmQgb25seSBpZiBpdHMg
bWF0Y2ggaW4gdGhlIHRleHQgaXMgbm90CisgKiBwYXJ0IG9mIGEgc3Vycm9nYXRlIHBhaXIuCisg
KiBBIE5VTCBjaGFyYWN0ZXIgaXMgZm91bmQgYXQgdGhlIHN0cmluZyB0ZXJtaW5hdG9yLgorICoK
KyAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChOVUwtdGVybWluYXRlZCkuCisgKiBA
cGFyYW0gYyBUaGUgQk1QIGNvZGUgcG9pbnQgdG8gZmluZC4KKyAqIEByZXR1cm4gQSBwb2ludGVy
IHRvIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIDxjb2RlPmM8L2NvZGU+IGluIDxjb2RlPnM8L2Nv
ZGU+CisgKiAgICAgICAgIG9yIDxjb2RlPk5VTEw8L2NvZGU+IGlmIDxjb2RlPmM8L2NvZGU+IGlz
IG5vdCBpbiA8Y29kZT5zPC9jb2RlPi4KKyAqIEBzdGFibGUgSUNVIDIuMAorICoKKyAqIEBzZWUg
dV9zdHJjaHIzMgorICogQHNlZSB1X21lbWNocgorICogQHNlZSB1X3N0cnN0cgorICogQHNlZSB1
X3N0ckZpbmRGaXJzdAorICovCitVX1NUQUJMRSBVQ2hhciAqIFVfRVhQT1JUMgordV9zdHJjaHIo
Y29uc3QgVUNoYXIgKnMsIFVDaGFyIGMpOworCisvKioKKyAqIEZpbmQgdGhlIGZpcnN0IG9jY3Vy
cmVuY2Ugb2YgYSBjb2RlIHBvaW50IGluIGEgc3RyaW5nLgorICogQSBzdXJyb2dhdGUgY29kZSBw
b2ludCBpcyBmb3VuZCBvbmx5IGlmIGl0cyBtYXRjaCBpbiB0aGUgdGV4dCBpcyBub3QKKyAqIHBh
cnQgb2YgYSBzdXJyb2dhdGUgcGFpci4KKyAqIEEgTlVMIGNoYXJhY3RlciBpcyBmb3VuZCBhdCB0
aGUgc3RyaW5nIHRlcm1pbmF0b3IuCisgKgorICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBzZWFy
Y2ggKE5VTC10ZXJtaW5hdGVkKS4KKyAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50IHRvIGZpbmQu
CisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiA8Y29kZT5j
PC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPgorICogICAgICAgICBvciA8Y29kZT5OVUxMPC9jb2Rl
PiBpZiA8Y29kZT5jPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxl
IElDVSAyLjAKKyAqCisgKiBAc2VlIHVfc3RyY2hyCisgKiBAc2VlIHVfbWVtY2hyMzIKKyAqIEBz
ZWUgdV9zdHJzdHIKKyAqIEBzZWUgdV9zdHJGaW5kRmlyc3QKKyAqLworVV9TVEFCTEUgVUNoYXIg
KiBVX0VYUE9SVDIKK3Vfc3RyY2hyMzIoY29uc3QgVUNoYXIgKnMsIFVDaGFyMzIgYyk7CisKKy8q
KgorICogRmluZCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgc3Vic3RyaW5nIGluIGEgc3RyaW5n
LgorICogVGhlIHN1YnN0cmluZyBpcyBmb3VuZCBhdCBjb2RlIHBvaW50IGJvdW5kYXJpZXMuCisg
KiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlIHN1YnN0cmluZyBiZWdpbnMgd2l0aAorICogYSB0cmFp
bCBzdXJyb2dhdGUgb3IgZW5kcyB3aXRoIGEgbGVhZCBzdXJyb2dhdGUsCisgKiB0aGVuIGl0IGlz
IGZvdW5kIG9ubHkgaWYgdGhlc2Ugc3Vycm9nYXRlcyBzdGFuZCBhbG9uZSBpbiB0aGUgdGV4dC4K
KyAqIE90aGVyd2lzZSwgdGhlIHN1YnN0cmluZyBlZGdlIHVuaXRzIHdvdWxkIGJlIG1hdGNoZWQg
YWdhaW5zdAorICogaGFsdmVzIG9mIHN1cnJvZ2F0ZSBwYWlycy4KKyAqCisgKiBAcGFyYW0gcyBU
aGUgc3RyaW5nIHRvIHNlYXJjaCAoTlVMLXRlcm1pbmF0ZWQpLgorICogQHBhcmFtIHN1YnN0cmlu
ZyBUaGUgc3Vic3RyaW5nIHRvIGZpbmQgKE5VTC10ZXJtaW5hdGVkKS4KKyAqIEByZXR1cm4gQSBw
b2ludGVyIHRvIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBp
biA8Y29kZT5zPC9jb2RlPiwKKyAqICAgICAgICAgb3IgPGNvZGU+czwvY29kZT4gaXRzZWxmIGlm
IHRoZSA8Y29kZT5zdWJzdHJpbmc8L2NvZGU+IGlzIGVtcHR5LAorICogICAgICAgICBvciA8Y29k
ZT5OVUxMPC9jb2RlPiBpZiA8Y29kZT5zdWJzdHJpbmc8L2NvZGU+IGlzIG5vdCBpbiA8Y29kZT5z
PC9jb2RlPi4KKyAqIEBzdGFibGUgSUNVIDIuNAorICoKKyAqIEBzZWUgdV9zdHJzdHIKKyAqIEBz
ZWUgdV9zdHJGaW5kRmlyc3QKKyAqIEBzZWUgdV9zdHJGaW5kTGFzdAorICovCitVX1NUQUJMRSBV
Q2hhciAqIFVfRVhQT1JUMgordV9zdHJyc3RyKGNvbnN0IFVDaGFyICpzLCBjb25zdCBVQ2hhciAq
c3Vic3RyaW5nKTsKKworLyoqCisgKiBGaW5kIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgYSBzdWJz
dHJpbmcgaW4gYSBzdHJpbmcuCisgKiBUaGUgc3Vic3RyaW5nIGlzIGZvdW5kIGF0IGNvZGUgcG9p
bnQgYm91bmRhcmllcy4KKyAqIFRoYXQgbWVhbnMgdGhhdCBpZiB0aGUgc3Vic3RyaW5nIGJlZ2lu
cyB3aXRoCisgKiBhIHRyYWlsIHN1cnJvZ2F0ZSBvciBlbmRzIHdpdGggYSBsZWFkIHN1cnJvZ2F0
ZSwKKyAqIHRoZW4gaXQgaXMgZm91bmQgb25seSBpZiB0aGVzZSBzdXJyb2dhdGVzIHN0YW5kIGFs
b25lIGluIHRoZSB0ZXh0LgorICogT3RoZXJ3aXNlLCB0aGUgc3Vic3RyaW5nIGVkZ2UgdW5pdHMg
d291bGQgYmUgbWF0Y2hlZCBhZ2FpbnN0CisgKiBoYWx2ZXMgb2Ygc3Vycm9nYXRlIHBhaXJzLgor
ICoKKyAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoLgorICogQHBhcmFtIGxlbmd0aCBU
aGUgbGVuZ3RoIG9mIHMgKG51bWJlciBvZiBVQ2hhcnMpLCBvciAtMSBpZiBpdCBpcyBOVUwtdGVy
bWluYXRlZC4KKyAqIEBwYXJhbSBzdWJzdHJpbmcgVGhlIHN1YnN0cmluZyB0byBmaW5kIChOVUwt
dGVybWluYXRlZCkuCisgKiBAcGFyYW0gc3ViTGVuZ3RoIFRoZSBsZW5ndGggb2Ygc3Vic3RyaW5n
IChudW1iZXIgb2YgVUNoYXJzKSwgb3IgLTEgaWYgaXQgaXMgTlVMLXRlcm1pbmF0ZWQuCisgKiBA
cmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIDxjb2RlPnN1YnN0cmlu
ZzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4sCisgKiAgICAgICAgIG9yIDxjb2RlPnM8L2NvZGU+
IGl0c2VsZiBpZiB0aGUgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpcyBlbXB0eSwKKyAqICAgICAg
ICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpcyBub3Qg
aW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqCisgKiBAc2VlIHVfc3Ry
c3RyCisgKiBAc2VlIHVfc3RyRmluZExhc3QKKyAqLworVV9TVEFCTEUgVUNoYXIgKiBVX0VYUE9S
VDIKK3Vfc3RyRmluZExhc3QoY29uc3QgVUNoYXIgKnMsIGludDMyX3QgbGVuZ3RoLCBjb25zdCBV
Q2hhciAqc3Vic3RyaW5nLCBpbnQzMl90IHN1Ykxlbmd0aCk7CisKKy8qKgorICogRmluZCB0aGUg
bGFzdCBvY2N1cnJlbmNlIG9mIGEgQk1QIGNvZGUgcG9pbnQgaW4gYSBzdHJpbmcuCisgKiBBIHN1
cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5kIG9ubHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0ZXh0
IGlzIG5vdAorICogcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLgorICogQSBOVUwgY2hhcmFjdGVy
IGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVybWluYXRvci4KKyAqCisgKiBAcGFyYW0gcyBUaGUg
c3RyaW5nIHRvIHNlYXJjaCAoTlVMLXRlcm1pbmF0ZWQpLgorICogQHBhcmFtIGMgVGhlIEJNUCBj
b2RlIHBvaW50IHRvIGZpbmQuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbGFzdCBvY2N1
cnJlbmNlIG9mIDxjb2RlPmM8L2NvZGU+IGluIDxjb2RlPnM8L2NvZGU+CisgKiAgICAgICAgIG9y
IDxjb2RlPk5VTEw8L2NvZGU+IGlmIDxjb2RlPmM8L2NvZGU+IGlzIG5vdCBpbiA8Y29kZT5zPC9j
b2RlPi4KKyAqIEBzdGFibGUgSUNVIDIuNAorICoKKyAqIEBzZWUgdV9zdHJyY2hyMzIKKyAqIEBz
ZWUgdV9tZW1yY2hyCisgKiBAc2VlIHVfc3RycnN0cgorICogQHNlZSB1X3N0ckZpbmRMYXN0Cisg
Ki8KK1VfU1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCit1X3N0cnJjaHIoY29uc3QgVUNoYXIgKnMs
IFVDaGFyIGMpOworCisvKioKKyAqIEZpbmQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNvZGUg
cG9pbnQgaW4gYSBzdHJpbmcuCisgKiBBIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5kIG9u
bHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0ZXh0IGlzIG5vdAorICogcGFydCBvZiBhIHN1cnJvZ2F0
ZSBwYWlyLgorICogQSBOVUwgY2hhcmFjdGVyIGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVybWlu
YXRvci4KKyAqCisgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHNlYXJjaCAoTlVMLXRlcm1pbmF0
ZWQpLgorICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gZmluZC4KKyAqIEByZXR1cm4gQSBw
b2ludGVyIHRvIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+YzwvY29kZT4gaW4gPGNvZGU+
czwvY29kZT4KKyAqICAgICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+YzwvY29k
ZT4gaXMgbm90IGluIDxjb2RlPnM8L2NvZGU+LgorICogQHN0YWJsZSBJQ1UgMi40CisgKgorICog
QHNlZSB1X3N0cnJjaHIKKyAqIEBzZWUgdV9tZW1jaHIzMgorICogQHNlZSB1X3N0cnJzdHIKKyAq
IEBzZWUgdV9zdHJGaW5kTGFzdAorICovCitVX1NUQUJMRSBVQ2hhciAqIFVfRVhQT1JUMgordV9z
dHJyY2hyMzIoY29uc3QgVUNoYXIgKnMsIFVDaGFyMzIgYyk7CisKKy8qKgorICogTG9jYXRlcyB0
aGUgZmlyc3Qgb2NjdXJyZW5jZSBpbiB0aGUgc3RyaW5nIDxjb2RlPnN0cmluZzwvY29kZT4gb2Yg
YW55IG9mIHRoZSBjaGFyYWN0ZXJzCisgKiBpbiB0aGUgc3RyaW5nIDxjb2RlPm1hdGNoU2V0PC9j
b2RlPi4KKyAqIFdvcmtzIGp1c3QgbGlrZSBDJ3Mgc3RycGJyayBidXQgd2l0aCBVbmljb2RlLgor
ICoKKyAqIEBwYXJhbSBzdHJpbmcgVGhlIHN0cmluZyBpbiB3aGljaCB0byBzZWFyY2gsIE5VTC10
ZXJtaW5hdGVkLgorICogQHBhcmFtIG1hdGNoU2V0IEEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5nIGRl
ZmluaW5nIGEgc2V0IG9mIGNvZGUgcG9pbnRzCisgKiAgICAgICAgICAgICAgICAgZm9yIHdoaWNo
IHRvIHNlYXJjaCBpbiB0aGUgdGV4dCBzdHJpbmcuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0
aGUgIGNoYXJhY3RlciBpbiA8Y29kZT5zdHJpbmc8L2NvZGU+IHRoYXQgbWF0Y2hlcyBvbmUgb2Yg
dGhlCisgKiAgICAgICAgIGNoYXJhY3RlcnMgaW4gPGNvZGU+bWF0Y2hTZXQ8L2NvZGU+LCBvciBO
VUxMIGlmIG5vIHN1Y2ggY2hhcmFjdGVyIGlzIGZvdW5kLgorICogQHN0YWJsZSBJQ1UgMi4wCisg
Ki8KK1VfU1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCit1X3N0cnBicmsoY29uc3QgVUNoYXIgKnN0
cmluZywgY29uc3QgVUNoYXIgKm1hdGNoU2V0KTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBudW1i
ZXIgb2YgY29uc2VjdXRpdmUgY2hhcmFjdGVycyBpbiA8Y29kZT5zdHJpbmc8L2NvZGU+LAorICog
YmVnaW5uaW5nIHdpdGggdGhlIGZpcnN0LCB0aGF0IGRvIG5vdCBvY2N1ciBzb21ld2hlcmUgaW4g
PGNvZGU+bWF0Y2hTZXQ8L2NvZGU+LgorICogV29ya3MganVzdCBsaWtlIEMncyBzdHJjc3BuIGJ1
dCB3aXRoIFVuaWNvZGUuCisgKgorICogQHBhcmFtIHN0cmluZyBUaGUgc3RyaW5nIGluIHdoaWNo
IHRvIHNlYXJjaCwgTlVMLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gbWF0Y2hTZXQgQSBOVUwtdGVy
bWluYXRlZCBzdHJpbmcgZGVmaW5pbmcgYSBzZXQgb2YgY29kZSBwb2ludHMKKyAqICAgICAgICAg
ICAgICAgICBmb3Igd2hpY2ggdG8gc2VhcmNoIGluIHRoZSB0ZXh0IHN0cmluZy4KKyAqIEByZXR1
cm4gVGhlIG51bWJlciBvZiBpbml0aWFsIGNoYXJhY3RlcnMgaW4gPGNvZGU+c3RyaW5nPC9jb2Rl
PiB0aGF0IGRvIG5vdAorICogICAgICAgICBvY2N1ciBpbiA8Y29kZT5tYXRjaFNldDwvY29kZT4u
CisgKiBAc2VlIHVfc3Ryc3BuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50
MzJfdCBVX0VYUE9SVDIKK3Vfc3RyY3Nwbihjb25zdCBVQ2hhciAqc3RyaW5nLCBjb25zdCBVQ2hh
ciAqbWF0Y2hTZXQpOworCisvKioKKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBjb25zZWN1dGl2
ZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnN0cmluZzwvY29kZT4sCisgKiBiZWdpbm5pbmcgd2l0aCB0
aGUgZmlyc3QsIHRoYXQgb2NjdXIgc29tZXdoZXJlIGluIDxjb2RlPm1hdGNoU2V0PC9jb2RlPi4K
KyAqIFdvcmtzIGp1c3QgbGlrZSBDJ3Mgc3Ryc3BuIGJ1dCB3aXRoIFVuaWNvZGUuCisgKgorICog
QHBhcmFtIHN0cmluZyBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHNlYXJjaCwgTlVMLXRlcm1pbmF0
ZWQuCisgKiBAcGFyYW0gbWF0Y2hTZXQgQSBOVUwtdGVybWluYXRlZCBzdHJpbmcgZGVmaW5pbmcg
YSBzZXQgb2YgY29kZSBwb2ludHMKKyAqICAgICAgICAgICAgICAgICBmb3Igd2hpY2ggdG8gc2Vh
cmNoIGluIHRoZSB0ZXh0IHN0cmluZy4KKyAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBpbml0aWFs
IGNoYXJhY3RlcnMgaW4gPGNvZGU+c3RyaW5nPC9jb2RlPiB0aGF0IGRvCisgKiAgICAgICAgIG9j
Y3VyIGluIDxjb2RlPm1hdGNoU2V0PC9jb2RlPi4KKyAqIEBzZWUgdV9zdHJjc3BuCisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vfc3Ryc3BuKGNv
bnN0IFVDaGFyICpzdHJpbmcsIGNvbnN0IFVDaGFyICptYXRjaFNldCk7CisKKy8qKgorICogVGhl
IHN0cmluZyB0b2tlbml6ZXIgQVBJIGFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byBicmVhayBhIHN0
cmluZyBpbnRvCisgKiB0b2tlbnMuIFVubGlrZSBzdHJ0b2soKSwgdGhlIHNhdmVTdGF0ZSAodGhl
IGN1cnJlbnQgcG9pbnRlciB3aXRoaW4gdGhlCisgKiBvcmlnaW5hbCBzdHJpbmcpIGlzIG1haW50
YWluZWQgaW4gc2F2ZVN0YXRlLiBJbiB0aGUgZmlyc3QgY2FsbCwgdGhlCisgKiBhcmd1bWVudCBz
cmMgaXMgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcuIEluIHN1YnNlcXVlbnQgY2FsbHMgdG8KKyAq
IHJldHVybiBzdWNjZXNzaXZlIHRva2VucyBvZiB0aGF0IHN0cmluZywgc3JjIG11c3QgYmUgc3Bl
Y2lmaWVkIGFzCisgKiBOVUxMLiBUaGUgdmFsdWUgc2F2ZVN0YXRlIGlzIHNldCBieSB0aGlzIGZ1
bmN0aW9uIHRvIG1haW50YWluIHRoZQorICogZnVuY3Rpb24ncyBwb3NpdGlvbiB3aXRoaW4gdGhl
IHN0cmluZywgYW5kIG9uIGVhY2ggc3Vic2VxdWVudCBjYWxsCisgKiB5b3UgbXVzdCBnaXZlIHRo
aXMgYXJndW1lbnQgdGhlIHNhbWUgdmFyaWFibGUuIFRoaXMgZnVuY3Rpb24gZG9lcworICogaGFu
ZGxlIHN1cnJvZ2F0ZSBwYWlycy4gVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIHRoZSBzdHJ0
b2tfcigpCisgKiB0aGUgUE9TSVggVGhyZWFkcyBFeHRlbnNpb24gKDEwMDMuMWMtMTk5NSkgdmVy
c2lvbi4KKyAqCisgKiBAcGFyYW0gc3JjIFN0cmluZyBjb250YWluaW5nIHRva2VuKHMpLiBUaGlz
IHN0cmluZyB3aWxsIGJlIG1vZGlmaWVkLgorICogICAgICAgICAgICBBZnRlciB0aGUgZmlyc3Qg
Y2FsbCB0byB1X3N0cnRva19yKCksIHRoaXMgYXJndW1lbnQgbXVzdAorICogICAgICAgICAgICBi
ZSBOVUxMIHRvIGdldCB0byB0aGUgbmV4dCB0b2tlbi4KKyAqIEBwYXJhbSBkZWxpbSBTZXQgb2Yg
ZGVsaW1pdGVyIGNoYXJhY3RlcnMgKFVuaWNvZGUgY29kZSBwb2ludHMpLgorICogQHBhcmFtIHNh
dmVTdGF0ZSBUaGUgY3VycmVudCBwb2ludGVyIHdpdGhpbiB0aGUgb3JpZ2luYWwgc3RyaW5nLAor
ICogICAgICAgICAgICAgIHdoaWNoIGlzIHNldCBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgc2F2ZVN0
YXRlCisgKiAgICAgICAgICAgICAgcGFyYW1ldGVyIHNob3VsZCB0aGUgYWRkcmVzcyBvZiBhIGxv
Y2FsIHZhcmlhYmxlIG9mIHR5cGUKKyAqICAgICAgICAgICAgICBVQ2hhciAqLiAoaS5lLiBkZWZp
bmVkICJVaGFyICpteUxvY2FsU2F2ZVN0YXRlIiBhbmQgdXNlCisgKiAgICAgICAgICAgICAgJm15
TG9jYWxTYXZlU3RhdGUgZm9yIHRoaXMgcGFyYW1ldGVyKS4KKyAqIEByZXR1cm4gQSBwb2ludGVy
IHRvIHRoZSBuZXh0IHRva2VuIGZvdW5kIGluIHNyYywgb3IgTlVMTAorICogICAgICAgICB3aGVu
IHRoZXJlIGFyZSBubyBtb3JlIHRva2Vucy4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NU
QUJMRSBVQ2hhciAqIFVfRVhQT1JUMgordV9zdHJ0b2tfcihVQ2hhciAgICAqc3JjLCAKKyAgICAg
Y29uc3QgVUNoYXIgICAgKmRlbGltLAorICAgICAgICAgICBVQ2hhciAgICoqc2F2ZVN0YXRlKTsK
KworLyoqCisgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgZm9yIGJpdHdpc2UgZXF1YWxp
dHkgKGNvZGUgdW5pdCBvcmRlcikuCisgKgorICogQHBhcmFtIHMxIEEgc3RyaW5nIHRvIGNvbXBh
cmUuCisgKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEByZXR1cm4gMCBpZiA8
Y29kZT5zMTwvY29kZT4gYW5kIDxjb2RlPnMyPC9jb2RlPiBhcmUgYml0d2lzZSBlcXVhbDsgYSBu
ZWdhdGl2ZQorICogdmFsdWUgaWYgPGNvZGU+czE8L2NvZGU+IGlzIGJpdHdpc2UgbGVzcyB0aGFu
IDxjb2RlPnMyLDwvY29kZT47IGEgcG9zaXRpdmUKKyAqIHZhbHVlIGlmIDxjb2RlPnMxPC9jb2Rl
PiBpcyBiaXR3aXNlIGdyZWF0ZXIgdGhhbiA8Y29kZT5zMjwvY29kZT4uCisgKiBAc3RhYmxlIElD
VSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCAgVV9FWFBPUlQyCit1X3N0cmNtcChjb25zdCBV
Q2hhciAgICAgKnMxLCAKKyAgICAgICAgIGNvbnN0IFVDaGFyICAgICAqczIpOworCisvKioKKyAq
IENvbXBhcmUgdHdvIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICogU2Vl
IHVfc3RyQ29tcGFyZSBmb3IgZGV0YWlscy4KKyAqCisgKiBAcGFyYW0gczEgQSBzdHJpbmcgdG8g
Y29tcGFyZS4KKyAqIEBwYXJhbSBzMiBBIHN0cmluZyB0byBjb21wYXJlLgorICogQHJldHVybiBh
IG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHdoZXRoZXIK
KyAqIHRoZSBmaXJzdCBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dyZWF0ZXIgdGhhbiB0
aGUgc2Vjb25kIG9uZQorICogaW4gY29kZSBwb2ludCBvcmRlcgorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0cmNtcENvZGVQb2ludE9yZGVy
KGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyKTsKKworLyoqCisgKiBDb21wYXJlIHR3
byBVbmljb2RlIHN0cmluZ3MgKGJpbmFyeSBvcmRlcikuCisgKgorICogVGhlIGNvbXBhcmlzb24g
Y2FuIGJlIGRvbmUgaW4gY29kZSB1bml0IG9yZGVyIG9yIGluIGNvZGUgcG9pbnQgb3JkZXIuCisg
KiBUaGV5IGRpZmZlciBvbmx5IGluIFVURi0xNiB3aGVuCisgKiBjb21wYXJpbmcgc3VwcGxlbWVu
dGFyeSBjb2RlIHBvaW50cyAoVSsxMDAwMC4uVSsxMGZmZmYpCisgKiB0byBCTVAgY29kZSBwb2lu
dHMgbmVhciB0aGUgZW5kIG9mIHRoZSBCTVAgKGkuZS4sIFUrZTAwMC4uVStmZmZmKS4KKyAqIElu
IGNvZGUgdW5pdCBvcmRlciwgaGlnaCBCTVAgY29kZSBwb2ludHMgc29ydCBhZnRlciBzdXBwbGVt
ZW50YXJ5IGNvZGUgcG9pbnRzCisgKiBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBhcyBwYWlycyBv
ZiBzdXJyb2dhdGVzIHdoaWNoIGFyZSBhdCBVK2Q4MDAuLlUrZGZmZi4KKyAqCisgKiBUaGlzIGZ1
bmN0aW9ucyB3b3JrcyB3aXRoIHN0cmluZ3Mgb2YgZGlmZmVyZW50IGV4cGxpY2l0bHkgc3BlY2lm
aWVkIGxlbmd0aHMKKyAqIHVubGlrZSB0aGUgQU5TSSBDLWxpa2UgdV9zdHJjbXAoKSBhbmQgdV9t
ZW1jbXAoKSBldGMuCisgKiBOVUwtdGVybWluYXRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSB3aXRo
IGxlbmd0aCBhcmd1bWVudHMgb2YgLTEuCisgKgorICogQHBhcmFtIHMxIEZpcnN0IHNvdXJjZSBz
dHJpbmcuCisgKiBAcGFyYW0gbGVuZ3RoMSBMZW5ndGggb2YgZmlyc3Qgc291cmNlIHN0cmluZywg
b3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQuCisgKgorICogQHBhcmFtIHMyIFNlY29uZCBzb3VyY2Ug
c3RyaW5nLgorICogQHBhcmFtIGxlbmd0aDIgTGVuZ3RoIG9mIHNlY29uZCBzb3VyY2Ugc3RyaW5n
LCBvciAtMSBpZiBOVUwtdGVybWluYXRlZC4KKyAqCisgKiBAcGFyYW0gY29kZVBvaW50T3JkZXIg
Q2hvb3NlIGJldHdlZW4gY29kZSB1bml0IG9yZGVyIChGQUxTRSkKKyAqICAgICAgICAgICAgICAg
ICAgICAgICBhbmQgY29kZSBwb2ludCBvcmRlciAoVFJVRSkuCisgKgorICogQHJldHVybiA8MCBv
ciAwIG9yID4wIGFzIHVzdWFsIGZvciBzdHJpbmcgY29tcGFyaXNvbnMKKyAqCisgKiBAc3RhYmxl
IElDVSAyLjIKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vfc3RyQ29tcGFyZShj
b25zdCBVQ2hhciAqczEsIGludDMyX3QgbGVuZ3RoMSwKKyAgICAgICAgICAgICBjb25zdCBVQ2hh
ciAqczIsIGludDMyX3QgbGVuZ3RoMiwKKyAgICAgICAgICAgICBVQm9vbCBjb2RlUG9pbnRPcmRl
cik7CisKKy8qKgorICogQ29tcGFyZSB0d28gVW5pY29kZSBzdHJpbmdzIChiaW5hcnkgb3JkZXIp
CisgKiBhcyBwcmVzZW50ZWQgYnkgVUNoYXJJdGVyYXRvciBvYmplY3RzLgorICogV29ya3Mgb3Ro
ZXJ3aXNlIGp1c3QgbGlrZSB1X3N0ckNvbXBhcmUoKS4KKyAqCisgKiBCb3RoIGl0ZXJhdG9ycyBh
cmUgcmVzZXQgdG8gdGhlaXIgc3RhcnQgcG9zaXRpb25zLgorICogV2hlbiB0aGUgZnVuY3Rpb24g
cmV0dXJucywgaXQgaXMgdW5kZWZpbmVkIHdoZXJlIHRoZSBpdGVyYXRvcnMKKyAqIGhhdmUgc3Rv
cHBlZC4KKyAqCisgKiBAcGFyYW0gaXRlcjEgRmlyc3Qgc291cmNlIHN0cmluZyBpdGVyYXRvci4K
KyAqIEBwYXJhbSBpdGVyMiBTZWNvbmQgc291cmNlIHN0cmluZyBpdGVyYXRvci4KKyAqIEBwYXJh
bSBjb2RlUG9pbnRPcmRlciBDaG9vc2UgYmV0d2VlbiBjb2RlIHVuaXQgb3JkZXIgKEZBTFNFKQor
ICogICAgICAgICAgICAgICAgICAgICAgIGFuZCBjb2RlIHBvaW50IG9yZGVyIChUUlVFKS4KKyAq
CisgKiBAcmV0dXJuIDwwIG9yIDAgb3IgPjAgYXMgdXN1YWwgZm9yIHN0cmluZyBjb21wYXJpc29u
cworICoKKyAqIEBzZWUgdV9zdHJDb21wYXJlCisgKgorICogQHN0YWJsZSBJQ1UgMi42CisgKi8K
K1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0ckNvbXBhcmVJdGVyKFVDaGFySXRlcmF0
b3IgKml0ZXIxLCBVQ2hhckl0ZXJhdG9yICppdGVyMiwgVUJvb2wgY29kZVBvaW50T3JkZXIpOwor
CisjaWZuZGVmIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisvKiBzZWUgYWxzbyB1bmlzdHIu
aCBhbmQgdW5vcm0uaCAqLworLyoqCisgKiBPcHRpb24gYml0IGZvciB1X3N0ckNhc2VDb21wYXJl
LCB1X3N0cmNhc2VjbXAsIHVub3JtX2NvbXBhcmUsIGV0YzoKKyAqIENvbXBhcmUgc3RyaW5ncyBp
biBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyLgorICogQHN0YWJs
ZSBJQ1UgMi4yCisgKi8KKyNkZWZpbmUgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIgIDB4ODAw
MAorI2VuZGlmCisKKy8qKgorICogQ29tcGFyZSB0d28gc3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZl
bHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRpbmcuCisgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAq
ICAgdV9zdHJDb21wYXJlKHVfc3RyRm9sZENhc2UoczEsIG9wdGlvbnMpLAorICogICAgICAgICAg
ICAgICAgdV9zdHJGb2xkQ2FzZShzMiwgb3B0aW9ucyksCisgKiAgICAgICAgICAgICAgICAob3B0
aW9ucyZVX0NPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUikhPTApLgorICoKKyAqIFRoZSBjb21wYXJp
c29uIGNhbiBiZSBkb25lIGluIFVURi0xNiBjb2RlIHVuaXQgb3JkZXIgb3IgaW4gY29kZSBwb2lu
dCBvcmRlci4KKyAqIFRoZXkgZGlmZmVyIG9ubHkgd2hlbiBjb21wYXJpbmcgc3VwcGxlbWVudGFy
eSBjb2RlIHBvaW50cyAoVSsxMDAwMC4uVSsxMGZmZmYpCisgKiB0byBCTVAgY29kZSBwb2ludHMg
bmVhciB0aGUgZW5kIG9mIHRoZSBCTVAgKGkuZS4sIFUrZTAwMC4uVStmZmZmKS4KKyAqIEluIGNv
ZGUgdW5pdCBvcmRlciwgaGlnaCBCTVAgY29kZSBwb2ludHMgc29ydCBhZnRlciBzdXBwbGVtZW50
YXJ5IGNvZGUgcG9pbnRzCisgKiBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBhcyBwYWlycyBvZiBz
dXJyb2dhdGVzIHdoaWNoIGFyZSBhdCBVK2Q4MDAuLlUrZGZmZi4KKyAqCisgKiBUaGlzIGZ1bmN0
aW9ucyB3b3JrcyB3aXRoIHN0cmluZ3Mgb2YgZGlmZmVyZW50IGV4cGxpY2l0bHkgc3BlY2lmaWVk
IGxlbmd0aHMKKyAqIHVubGlrZSB0aGUgQU5TSSBDLWxpa2UgdV9zdHJjbXAoKSBhbmQgdV9tZW1j
bXAoKSBldGMuCisgKiBOVUwtdGVybWluYXRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSB3aXRoIGxl
bmd0aCBhcmd1bWVudHMgb2YgLTEuCisgKgorICogQHBhcmFtIHMxIEZpcnN0IHNvdXJjZSBzdHJp
bmcuCisgKiBAcGFyYW0gbGVuZ3RoMSBMZW5ndGggb2YgZmlyc3Qgc291cmNlIHN0cmluZywgb3Ig
LTEgaWYgTlVMLXRlcm1pbmF0ZWQuCisgKgorICogQHBhcmFtIHMyIFNlY29uZCBzb3VyY2Ugc3Ry
aW5nLgorICogQHBhcmFtIGxlbmd0aDIgTGVuZ3RoIG9mIHNlY29uZCBzb3VyY2Ugc3RyaW5nLCBv
ciAtMSBpZiBOVUwtdGVybWluYXRlZC4KKyAqCisgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQg
b2Ygb3B0aW9uczoKKyAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3Ig
ZGVmYXVsdCBvcHRpb25zOgorICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1bml0IG9yZGVyIHdp
dGggZGVmYXVsdCBjYXNlIGZvbGRpbmcuCisgKgorICogICAtIFVfQ09NUEFSRV9DT0RFX1BPSU5U
X09SREVSCisgKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2Yg
Y29kZSB1bml0IG9yZGVyCisgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgor
ICoKKyAqICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICoKKyAqIEBwYXJhbSBw
RXJyb3JDb2RlIE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9yIGNvZGUgdmFsdWUs
CisgKiAgICAgICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBi
ZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCisgKgorICogQHJldHVybiA8MCBvciAwIG9yID4wIGFz
IHVzdWFsIGZvciBzdHJpbmcgY29tcGFyaXNvbnMKKyAqCisgKiBAc3RhYmxlIElDVSAyLjIKKyAq
LworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vfc3RyQ2FzZUNvbXBhcmUoY29uc3QgVUNo
YXIgKnMxLCBpbnQzMl90IGxlbmd0aDEsCisgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpz
MiwgaW50MzJfdCBsZW5ndGgyLAorICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25zLAor
ICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisgKiBDb21w
YXJlIHR3byB1c3RyaW5ncyBmb3IgYml0d2lzZSBlcXVhbGl0eS4gCisgKiBDb21wYXJlcyBhdCBt
b3N0IDxjb2RlPm48L2NvZGU+IGNoYXJhY3RlcnMuCisgKgorICogQHBhcmFtIHVjczEgQSBzdHJp
bmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSB1Y3MyIEEgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBA
cGFyYW0gbiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21wYXJlLgorICog
QHJldHVybiAwIGlmIDxjb2RlPnMxPC9jb2RlPiBhbmQgPGNvZGU+czI8L2NvZGU+IGFyZSBiaXR3
aXNlIGVxdWFsOyBhIG5lZ2F0aXZlCisgKiB2YWx1ZSBpZiA8Y29kZT5zMTwvY29kZT4gaXMgYml0
d2lzZSBsZXNzIHRoYW4gPGNvZGU+czI8L2NvZGU+OyBhIHBvc2l0aXZlCisgKiB2YWx1ZSBpZiA8
Y29kZT5zMTwvY29kZT4gaXMgYml0d2lzZSBncmVhdGVyIHRoYW4gPGNvZGU+czI8L2NvZGU+Lgor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0
cm5jbXAoY29uc3QgVUNoYXIgICAgICp1Y3MxLCAKKyAgICAgY29uc3QgVUNoYXIgICAgICp1Y3My
LCAKKyAgICAgaW50MzJfdCAgICAgbik7CisKKy8qKgorICogQ29tcGFyZSB0d28gVW5pY29kZSBz
dHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIuCisgKiBUaGlzIGlzIGRpZmZlcmVudCBpbiBVVEYt
MTYgZnJvbSB1X3N0cm5jbXAoKSBpZiBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgYXJlIHByZXNl
bnQuCisgKiBGb3IgZGV0YWlscywgc2VlIHVfc3RyQ29tcGFyZSgpLgorICoKKyAqIEBwYXJhbSBz
MSBBIHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIHMyIEEgc3RyaW5nIHRvIGNvbXBhcmUu
CisgKiBAcGFyYW0gbiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21wYXJl
LgorICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25k
aW5nIHRvIHdoZXRoZXIKKyAqIHRoZSBmaXJzdCBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRv
L2dyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICogaW4gY29kZSBwb2ludCBvcmRlcgorICog
QHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0cm5j
bXBDb2RlUG9pbnRPcmRlcihjb25zdCBVQ2hhciAqczEsIGNvbnN0IFVDaGFyICpzMiwgaW50MzJf
dCBuKTsKKworLyoqCisgKiBDb21wYXJlIHR3byBzdHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVseSB1
c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KKyAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB1X3N0cmNt
cCh1X3N0ckZvbGRDYXNlKHMxLCBvcHRpb25zKSwgdV9zdHJGb2xkQ2FzZShzMiwgb3B0aW9ucykp
LgorICoKKyAqIEBwYXJhbSBzMSBBIHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIHMyIEEg
c3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0aW9u
czoKKyAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3IgZGVmYXVsdCBv
cHRpb25zOgorICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1bml0IG9yZGVyIHdpdGggZGVmYXVs
dCBjYXNlIGZvbGRpbmcuCisgKgorICogICAtIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisg
KiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0
IG9yZGVyCisgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgorICoKKyAqICAg
LSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICoKKyAqIEByZXR1cm4gQSBuZWdhdGl2
ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb21wYXJpc29uIHJl
c3VsdC4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JU
MgordV9zdHJjYXNlY21wKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyLCB1aW50MzJf
dCBvcHRpb25zKTsKKworLyoqCisgKiBDb21wYXJlIHR3byBzdHJpbmdzIGNhc2UtaW5zZW5zaXRp
dmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KKyAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB1
X3N0cmNtcCh1X3N0ckZvbGRDYXNlKHMxLCBhdCBtb3N0IG4sIG9wdGlvbnMpLAorICogdV9zdHJG
b2xkQ2FzZShzMiwgYXQgbW9zdCBuLCBvcHRpb25zKSkuCisgKgorICogQHBhcmFtIHMxIEEgc3Ry
aW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBw
YXJhbSBuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGVhY2ggc3RyaW5nIHRvIGNh
c2UtZm9sZCBhbmQgdGhlbiBjb21wYXJlLgorICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0IG9m
IG9wdGlvbnM6CisgKiAgIC0gVV9GT0xEX0NBU0VfREVGQVVMVCBvciAwIGlzIHVzZWQgZm9yIGRl
ZmF1bHQgb3B0aW9uczoKKyAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3aXRo
IGRlZmF1bHQgY2FzZSBmb2xkaW5nLgorICoKKyAqICAgLSBVX0NPTVBBUkVfQ09ERV9QT0lOVF9P
UkRFUgorICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9mIGNv
ZGUgdW5pdCBvcmRlcgorICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRhaWxzKS4KKyAq
CisgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAqCisgKiBAcmV0dXJuIEEg
bmVnYXRpdmUsIHplcm8sIG9yIHBvc2l0aXZlIGludGVnZXIgaW5kaWNhdGluZyB0aGUgY29tcGFy
aXNvbiByZXN1bHQuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBV
X0VYUE9SVDIKK3Vfc3RybmNhc2VjbXAoY29uc3QgVUNoYXIgKnMxLCBjb25zdCBVQ2hhciAqczIs
IGludDMyX3QgbiwgdWludDMyX3Qgb3B0aW9ucyk7CisKKy8qKgorICogQ29tcGFyZSB0d28gc3Ry
aW5ncyBjYXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRpbmcuCisgKiBUaGlz
IGlzIGVxdWl2YWxlbnQgdG8gdV9zdHJjbXAodV9zdHJGb2xkQ2FzZShzMSwgbiwgb3B0aW9ucyks
CisgKiB1X3N0ckZvbGRDYXNlKHMyLCBuLCBvcHRpb25zKSkuCisgKgorICogQHBhcmFtIHMxIEEg
c3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4KKyAq
IEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGVhY2ggc3RyaW5nIHRv
IGNhc2UtZm9sZCBhbmQgdGhlbiBjb21wYXJlLgorICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0
IG9mIG9wdGlvbnM6CisgKiAgIC0gVV9GT0xEX0NBU0VfREVGQVVMVCBvciAwIGlzIHVzZWQgZm9y
IGRlZmF1bHQgb3B0aW9uczoKKyAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3
aXRoIGRlZmF1bHQgY2FzZSBmb2xkaW5nLgorICoKKyAqICAgLSBVX0NPTVBBUkVfQ09ERV9QT0lO
VF9PUkRFUgorICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9m
IGNvZGUgdW5pdCBvcmRlcgorICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRhaWxzKS4K
KyAqCisgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAqCisgKiBAcmV0dXJu
IEEgbmVnYXRpdmUsIHplcm8sIG9yIHBvc2l0aXZlIGludGVnZXIgaW5kaWNhdGluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHQuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKK3VfbWVtY2FzZWNtcChjb25zdCBVQ2hhciAqczEsIGNvbnN0IFVDaGFyICpz
MiwgaW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IG9wdGlvbnMpOworCisvKioKKyAqIENvcHkgYSB1
c3RyaW5nLiBBZGRzIGEgbnVsbCB0ZXJtaW5hdG9yLgorICoKKyAqIEBwYXJhbSBkc3QgVGhlIGRl
c3RpbmF0aW9uIHN0cmluZy4KKyAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBzdHJpbmcuCisgKiBA
cmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kc3Q8L2NvZGU+LgorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIKK3Vfc3RyY3B5KFVDaGFyICAgICAqZHN0
LCAKKyAgICBjb25zdCBVQ2hhciAgICAgKnNyYyk7CisKKy8qKgorICogQ29weSBhIHVzdHJpbmcu
CisgKiBDb3BpZXMgYXQgbW9zdCA8Y29kZT5uPC9jb2RlPiBjaGFyYWN0ZXJzLiAgVGhlIHJlc3Vs
dCB3aWxsIGJlIG51bGwgdGVybWluYXRlZAorICogaWYgdGhlIGxlbmd0aCBvZiA8Y29kZT5zcmM8
L2NvZGU+IGlzIGxlc3MgdGhhbiA8Y29kZT5uPC9jb2RlPi4KKyAqCisgKiBAcGFyYW0gZHN0IFRo
ZSBkZXN0aW5hdGlvbiBzdHJpbmcuCisgKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2Ugc3RyaW5nLgor
ICogQHBhcmFtIG4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29weS4KKyAq
IEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAy
LjAKKyAqLworVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgordV9zdHJuY3B5KFVDaGFyICAgICAq
ZHN0LCAKKyAgICAgY29uc3QgVUNoYXIgICAgICpzcmMsIAorICAgICBpbnQzMl90ICAgICBuKTsK
KworI2lmICFVQ09ORklHX05PX0NPTlZFUlNJT04KKworLyoqCisgKiBDb3B5IGEgYnl0ZSBzdHJp
bmcgZW5jb2RlZCBpbiB0aGUgZGVmYXVsdCBjb2RlcGFnZSB0byBhIHVzdHJpbmcuCisgKiBBZGRz
IGEgbnVsbCB0ZXJtaW5hdG9yLgorICogUGVyZm9ybXMgYSBob3N0IGJ5dGUgdG8gVUNoYXIgY29u
dmVyc2lvbgorICoKKyAqIEBwYXJhbSBkc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KKyAqIEBw
YXJhbSBzcmMgVGhlIHNvdXJjZSBzdHJpbmcuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29k
ZT5kc3Q8L2NvZGU+LgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBV
X0VYUE9SVDIgdV91YXN0cmNweShVQ2hhciAqZHN0LAorICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqc3JjICk7CisKKy8qKgorICogQ29weSBhIGJ5dGUgc3RyaW5nIGVuY29kZWQgaW4gdGhlIGRl
ZmF1bHQgY29kZXBhZ2UgdG8gYSB1c3RyaW5nLgorICogQ29waWVzIGF0IG1vc3QgPGNvZGU+bjwv
Y29kZT4gY2hhcmFjdGVycy4gIFRoZSByZXN1bHQgd2lsbCBiZSBudWxsIHRlcm1pbmF0ZWQKKyAq
IGlmIHRoZSBsZW5ndGggb2YgPGNvZGU+c3JjPC9jb2RlPiBpcyBsZXNzIHRoYW4gPGNvZGU+bjwv
Y29kZT4uCisgKiBQZXJmb3JtcyBhIGhvc3QgYnl0ZSB0byBVQ2hhciBjb252ZXJzaW9uCisgKgor
ICogQHBhcmFtIGRzdCBUaGUgZGVzdGluYXRpb24gc3RyaW5nLgorICogQHBhcmFtIHNyYyBUaGUg
c291cmNlIHN0cmluZy4KKyAqIEBwYXJhbSBuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0
ZXJzIHRvIGNvcHkuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kc3Q8L2NvZGU+Lgor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIgdV91YXN0
cm5jcHkoVUNoYXIgKmRzdCwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywKKyAgICAgICAg
ICAgIGludDMyX3Qgbik7CisKKy8qKgorICogQ29weSB1c3RyaW5nIHRvIGEgYnl0ZSBzdHJpbmcg
ZW5jb2RlZCBpbiB0aGUgZGVmYXVsdCBjb2RlcGFnZS4KKyAqIEFkZHMgYSBudWxsIHRlcm1pbmF0
b3IuCisgKiBQZXJmb3JtcyBhIFVDaGFyIHRvIGhvc3QgYnl0ZSBjb252ZXJzaW9uCisgKgorICog
QHBhcmFtIGRzdCBUaGUgZGVzdGluYXRpb24gc3RyaW5nLgorICogQHBhcmFtIHNyYyBUaGUgc291
cmNlIHN0cmluZy4KKyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4uCisg
KiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgY2hhciogVV9FWFBPUlQyIHVfYXVzdHJj
cHkoY2hhciAqZHN0LAorICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYyApOworCisvKioKKyAq
IENvcHkgdXN0cmluZyB0byBhIGJ5dGUgc3RyaW5nIGVuY29kZWQgaW4gdGhlIGRlZmF1bHQgY29k
ZXBhZ2UuCisgKiBDb3BpZXMgYXQgbW9zdCA8Y29kZT5uPC9jb2RlPiBjaGFyYWN0ZXJzLiAgVGhl
IHJlc3VsdCB3aWxsIGJlIG51bGwgdGVybWluYXRlZAorICogaWYgdGhlIGxlbmd0aCBvZiA8Y29k
ZT5zcmM8L2NvZGU+IGlzIGxlc3MgdGhhbiA8Y29kZT5uPC9jb2RlPi4KKyAqIFBlcmZvcm1zIGEg
VUNoYXIgdG8gaG9zdCBieXRlIGNvbnZlcnNpb24KKyAqCisgKiBAcGFyYW0gZHN0IFRoZSBkZXN0
aW5hdGlvbiBzdHJpbmcuCisgKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2Ugc3RyaW5nLgorICogQHBh
cmFtIG4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29weS4KKyAqIEByZXR1
cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjAKKyAq
LworVV9TVEFCTEUgY2hhciogVV9FWFBPUlQyIHVfYXVzdHJuY3B5KGNoYXIgKmRzdCwKKyAgICAg
ICAgICAgIGNvbnN0IFVDaGFyICpzcmMsCisgICAgICAgICAgICBpbnQzMl90IG4gKTsKKworI2Vu
ZGlmCisKKy8qKgorICogU3lub255bSBmb3IgbWVtY3B5KCksIGJ1dCB3aXRoIFVDaGFycyBvbmx5
LgorICogQHBhcmFtIGRlc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZworICogQHBhcmFtIHNyYyBU
aGUgc291cmNlIHN0cmluZworICogQHBhcmFtIGNvdW50IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVy
cyB0byBjb3B5CisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kZXN0PC9jb2RlPgorICog
QHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIKK3VfbWVtY3B5
KFVDaGFyICpkZXN0LCBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IGNvdW50KTsKKworLyoqCisg
KiBTeW5vbnltIGZvciBtZW1tb3ZlKCksIGJ1dCB3aXRoIFVDaGFycyBvbmx5LgorICogQHBhcmFt
IGRlc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZworICogQHBhcmFtIHNyYyBUaGUgc291cmNlIHN0
cmluZworICogQHBhcmFtIGNvdW50IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBtb3ZlCisg
KiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kZXN0PC9jb2RlPgorICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIKK3VfbWVtbW92ZShVQ2hhciAqZGVz
dCwgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBjb3VudCk7CisKKy8qKgorICogSW5pdGlhbGl6
ZSA8Y29kZT5jb3VudDwvY29kZT4gY2hhcmFjdGVycyBvZiA8Y29kZT5kZXN0PC9jb2RlPiB0byA8
Y29kZT5jPC9jb2RlPi4KKyAqCisgKiBAcGFyYW0gZGVzdCBUaGUgZGVzdGluYXRpb24gc3RyaW5n
LgorICogQHBhcmFtIGMgVGhlIGNoYXJhY3RlciB0byBpbml0aWFsaXplIHRoZSBzdHJpbmcuCisg
KiBAcGFyYW0gY291bnQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2V0Lgor
ICogQHJldHVybiBBIHBvaW50ZXIgdG8gPGNvZGU+ZGVzdDwvY29kZT4uCisgKiBAc3RhYmxlIElD
VSAyLjAKKyAqLworVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgordV9tZW1zZXQoVUNoYXIgKmRl
c3QsIFVDaGFyIGMsIGludDMyX3QgY291bnQpOworCisvKioKKyAqIENvbXBhcmUgdGhlIGZpcnN0
IDxjb2RlPmNvdW50PC9jb2RlPiBVQ2hhcnMgb2YgZWFjaCBidWZmZXIuCisgKgorICogQHBhcmFt
IGJ1ZjEgVGhlIGZpcnN0IHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIGJ1ZjIgVGhlIHNl
Y29uZCBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSBjb3VudCBUaGUgbWF4aW11bSBudW1i
ZXIgb2YgVUNoYXJzIHRvIGNvbXBhcmUuCisgKiBAcmV0dXJuIFdoZW4gYnVmMSA8IGJ1ZjIsIGEg
bmVnYXRpdmUgbnVtYmVyIGlzIHJldHVybmVkLgorICogICAgICBXaGVuIGJ1ZjEgPT0gYnVmMiwg
MCBpcyByZXR1cm5lZC4KKyAqICAgICAgV2hlbiBidWYxID4gYnVmMiwgYSBwb3NpdGl2ZSBudW1i
ZXIgaXMgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKK3VfbWVtY21wKGNvbnN0IFVDaGFyICpidWYxLCBjb25zdCBVQ2hhciAqYnVm
MiwgaW50MzJfdCBjb3VudCk7CisKKy8qKgorICogQ29tcGFyZSB0d28gVW5pY29kZSBzdHJpbmdz
IGluIGNvZGUgcG9pbnQgb3JkZXIuCisgKiBUaGlzIGlzIGRpZmZlcmVudCBpbiBVVEYtMTYgZnJv
bSB1X21lbWNtcCgpIGlmIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBhcmUgcHJlc2VudC4KKyAq
IEZvciBkZXRhaWxzLCBzZWUgdV9zdHJDb21wYXJlKCkuCisgKgorICogQHBhcmFtIHMxIEEgc3Ry
aW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBw
YXJhbSBjb3VudCBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21wYXJlLgor
ICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25kaW5n
IHRvIHdoZXRoZXIKKyAqIHRoZSBmaXJzdCBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dy
ZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICogaW4gY29kZSBwb2ludCBvcmRlcgorICogQHN0
YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X21lbWNtcENv
ZGVQb2ludE9yZGVyKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90IGNv
dW50KTsKKworLyoqCisgKiBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgQk1QIGNvZGUg
cG9pbnQgaW4gYSBzdHJpbmcuCisgKiBBIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5kIG9u
bHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0ZXh0IGlzIG5vdAorICogcGFydCBvZiBhIHN1cnJvZ2F0
ZSBwYWlyLgorICogQSBOVUwgY2hhcmFjdGVyIGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVybWlu
YXRvci4KKyAqCisgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHNlYXJjaCAoY29udGFpbnMgPGNv
ZGU+Y291bnQ8L2NvZGU+IFVDaGFycykuCisgKiBAcGFyYW0gYyBUaGUgQk1QIGNvZGUgcG9pbnQg
dG8gZmluZC4KKyAqIEBwYXJhbSBjb3VudCBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisgKiBA
cmV0dXJuIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiA8Y29kZT5jPC9jb2Rl
PiBpbiA8Y29kZT5zPC9jb2RlPgorICogICAgICAgICBvciA8Y29kZT5OVUxMPC9jb2RlPiBpZiA8
Y29kZT5jPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAy
LjAKKyAqCisgKiBAc2VlIHVfc3RyY2hyCisgKiBAc2VlIHVfbWVtY2hyMzIKKyAqIEBzZWUgdV9z
dHJGaW5kRmlyc3QKKyAqLworVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgordV9tZW1jaHIoY29u
c3QgVUNoYXIgKnMsIFVDaGFyIGMsIGludDMyX3QgY291bnQpOworCisvKioKKyAqIEZpbmQgdGhl
IGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBjb2RlIHBvaW50IGluIGEgc3RyaW5nLgorICogQSBzdXJy
b2dhdGUgY29kZSBwb2ludCBpcyBmb3VuZCBvbmx5IGlmIGl0cyBtYXRjaCBpbiB0aGUgdGV4dCBp
cyBub3QKKyAqIHBhcnQgb2YgYSBzdXJyb2dhdGUgcGFpci4KKyAqIEEgTlVMIGNoYXJhY3RlciBp
cyBmb3VuZCBhdCB0aGUgc3RyaW5nIHRlcm1pbmF0b3IuCisgKgorICogQHBhcmFtIHMgVGhlIHN0
cmluZyB0byBzZWFyY2ggKGNvbnRhaW5zIDxjb2RlPmNvdW50PC9jb2RlPiBVQ2hhcnMpLgorICog
QHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gZmluZC4KKyAqIEBwYXJhbSBjb3VudCBUaGUgbGVu
Z3RoIG9mIHRoZSBzdHJpbmcuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2Nj
dXJyZW5jZSBvZiA8Y29kZT5jPC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPgorICogICAgICAgICBv
ciA8Y29kZT5OVUxMPC9jb2RlPiBpZiA8Y29kZT5jPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwv
Y29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqCisgKiBAc2VlIHVfc3RyY2hyMzIKKyAqIEBz
ZWUgdV9tZW1jaHIKKyAqIEBzZWUgdV9zdHJGaW5kRmlyc3QKKyAqLworVV9TVEFCTEUgVUNoYXIq
IFVfRVhQT1JUMgordV9tZW1jaHIzMihjb25zdCBVQ2hhciAqcywgVUNoYXIzMiBjLCBpbnQzMl90
IGNvdW50KTsKKworLyoqCisgKiBGaW5kIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgYSBCTVAgY29k
ZSBwb2ludCBpbiBhIHN0cmluZy4KKyAqIEEgc3Vycm9nYXRlIGNvZGUgcG9pbnQgaXMgZm91bmQg
b25seSBpZiBpdHMgbWF0Y2ggaW4gdGhlIHRleHQgaXMgbm90CisgKiBwYXJ0IG9mIGEgc3Vycm9n
YXRlIHBhaXIuCisgKiBBIE5VTCBjaGFyYWN0ZXIgaXMgZm91bmQgYXQgdGhlIHN0cmluZyB0ZXJt
aW5hdG9yLgorICoKKyAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChjb250YWlucyA8
Y29kZT5jb3VudDwvY29kZT4gVUNoYXJzKS4KKyAqIEBwYXJhbSBjIFRoZSBCTVAgY29kZSBwb2lu
dCB0byBmaW5kLgorICogQHBhcmFtIGNvdW50IFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KKyAq
IEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+YzwvY29k
ZT4gaW4gPGNvZGU+czwvY29kZT4KKyAqICAgICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYg
PGNvZGU+YzwvY29kZT4gaXMgbm90IGluIDxjb2RlPnM8L2NvZGU+LgorICogQHN0YWJsZSBJQ1Ug
Mi40CisgKgorICogQHNlZSB1X3N0cnJjaHIKKyAqIEBzZWUgdV9tZW1yY2hyMzIKKyAqIEBzZWUg
dV9zdHJGaW5kTGFzdAorICovCitVX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQyCit1X21lbXJjaHIo
Y29uc3QgVUNoYXIgKnMsIFVDaGFyIGMsIGludDMyX3QgY291bnQpOworCisvKioKKyAqIEZpbmQg
dGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNvZGUgcG9pbnQgaW4gYSBzdHJpbmcuCisgKiBBIHN1
cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5kIG9ubHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0ZXh0
IGlzIG5vdAorICogcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLgorICogQSBOVUwgY2hhcmFjdGVy
IGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVybWluYXRvci4KKyAqCisgKiBAcGFyYW0gcyBUaGUg
c3RyaW5nIHRvIHNlYXJjaCAoY29udGFpbnMgPGNvZGU+Y291bnQ8L2NvZGU+IFVDaGFycykuCisg
KiBAcGFyYW0gYyBUaGUgY29kZSBwb2ludCB0byBmaW5kLgorICogQHBhcmFtIGNvdW50IFRoZSBs
ZW5ndGggb2YgdGhlIHN0cmluZy4KKyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBsYXN0IG9j
Y3VycmVuY2Ugb2YgPGNvZGU+YzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4KKyAqICAgICAgICAg
b3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+YzwvY29kZT4gaXMgbm90IGluIDxjb2RlPnM8
L2NvZGU+LgorICogQHN0YWJsZSBJQ1UgMi40CisgKgorICogQHNlZSB1X3N0cnJjaHIzMgorICog
QHNlZSB1X21lbXJjaHIKKyAqIEBzZWUgdV9zdHJGaW5kTGFzdAorICovCitVX1NUQUJMRSBVQ2hh
ciogVV9FWFBPUlQyCit1X21lbXJjaHIzMihjb25zdCBVQ2hhciAqcywgVUNoYXIzMiBjLCBpbnQz
Ml90IGNvdW50KTsKKworLyoqCisgKiBVbmljb2RlIFN0cmluZyBsaXRlcmFscyBpbiBDLgorICog
V2UgbmVlZCBvbmUgbWFjcm8gdG8gZGVjbGFyZSBhIHZhcmlhYmxlIGZvciB0aGUgc3RyaW5nCisg
KiBhbmQgdG8gc3RhdGljYWxseSBwcmVpbml0aWFsaXplIGl0IGlmIHBvc3NpYmxlLAorICogYW5k
IGEgc2Vjb25kIG1hY3JvIHRvIGR5bmFtaWNhbGx5IGludGlhbGl6ZSBzdWNoIGEgc3RyaW5nIHZh
cmlhYmxlIGlmIG5lY2Vzc2FyeS4KKyAqCisgKiBUaGUgbWFjcm9zIGFyZSBkZWZpbmVkIGZvciBt
YXhpbXVtIHBlcmZvcm1hbmNlLgorICogVGhleSB3b3JrIG9ubHkgZm9yIHN0cmluZ3MgdGhhdCBj
b250YWluICJpbnZhcmlhbnQgY2hhcmFjdGVycyIsIGkuZS4sCisgKiBvbmx5IGxhdGluIGxldHRl
cnMsIGRpZ2l0cywgYW5kIHNvbWUgcHVuY3R1YXRpb24uCisgKiBTZWUgdXR5cGVzLmggZm9yIGRl
dGFpbHMuCisgKgorICogQSBwYWlyIG9mIG1hY3JvcyBmb3IgYSBzaW5nbGUgc3RyaW5nIG11c3Qg
YmUgdXNlZCB3aXRoIHRoZSBzYW1lCisgKiBwYXJhbWV0ZXJzLgorICogVGhlIHN0cmluZyBwYXJh
bWV0ZXIgbXVzdCBiZSBhIEMgc3RyaW5nIGxpdGVyYWwuCisgKiBUaGUgbGVuZ3RoIG9mIHRoZSBz
dHJpbmcsIG5vdCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nCisgKiA8Y29kZT5OVUw8L2NvZGU+
LCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGNvbnN0YW50LgorICogVGhlIFVfU1RSSU5HX0RFQ0wg
bWFjcm8gc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIGZvciBvbmUKKyAqIHN1Y2ggc3Ry
aW5nIHZhcmlhYmxlIGJlZm9yZSBpdCBpcyB1c2VkLgorICoKKyAqIFVzYWdlOgorICogPHByZT4K
KyAqICYjMzI7ICAgVV9TVFJJTkdfREVDTCh1c3RyaW5nVmFyMSwgIlF1aWNrLUZveCAyIiwgMTEp
OworICogJiMzMjsgICBVX1NUUklOR19ERUNMKHVzdHJpbmdWYXIyLCAianVtcHMgNSUiLCA4KTsK
KyAqICYjMzI7ICAgc3RhdGljIFVCb29sIGRpZEluaXQ9RkFMU0U7CisgKiAmIzMyOworICogJiMz
MjsgICBpbnQzMl90IGZ1bmN0aW9uKCkgeworICogJiMzMjsgICAgICAgaWYoIWRpZEluaXQpIHsK
KyAqICYjMzI7ICAgICAgICAgICBVX1NUUklOR19JTklUKHVzdHJpbmdWYXIxLCAiUXVpY2stRm94
IDIiLCAxMSk7CisgKiAmIzMyOyAgICAgICAgICAgVV9TVFJJTkdfSU5JVCh1c3RyaW5nVmFyMiwg
Imp1bXBzIDUlIiwgOCk7CisgKiAmIzMyOyAgICAgICAgICAgZGlkSW5pdD1UUlVFOworICogJiMz
MjsgICAgICAgfQorICogJiMzMjsgICAgICAgcmV0dXJuIHVfc3RyY21wKHVzdHJpbmdWYXIxLCB1
c3RyaW5nVmFyMik7CisgKiAmIzMyOyAgIH0KKyAqIDwvcHJlPgorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KKyNpZiBVX1NJWkVPRl9XQ0hBUl9UPT1VX1NJWkVPRl9VQ0hBUiAmJiBVX0NIQVJTRVRf
RkFNSUxZPT1VX0FTQ0lJX0ZBTUlMWQorIyAgIGRlZmluZSBVX1NUUklOR19ERUNMKHZhciwgY3Ms
IGxlbmd0aCkgc3RhdGljIGNvbnN0IHdjaGFyX3QgdmFyWyhsZW5ndGgpKzFdPXsgTCAjIyBjcyB9
CisgICAgLyoqQHN0YWJsZSBJQ1UgMi4wICovCisjICAgZGVmaW5lIFVfU1RSSU5HX0lOSVQodmFy
LCBjcywgbGVuZ3RoKQorI2VsaWYgVV9TSVpFT0ZfVUNIQVI9PTEgJiYgVV9DSEFSU0VUX0ZBTUlM
WT09VV9BU0NJSV9GQU1JTFkKKyMgICBkZWZpbmUgVV9TVFJJTkdfREVDTCh2YXIsIGNzLCBsZW5n
dGgpIHN0YXRpYyBjb25zdCBVQ2hhciB2YXJbKGxlbmd0aCkrMV09eyAoY29uc3QgVUNoYXIgKilj
cyB9CisgICAgLyoqQHN0YWJsZSBJQ1UgMi4wICovCisjICAgZGVmaW5lIFVfU1RSSU5HX0lOSVQo
dmFyLCBjcywgbGVuZ3RoKQorI2Vsc2UKKyMgICBkZWZpbmUgVV9TVFJJTkdfREVDTCh2YXIsIGNz
LCBsZW5ndGgpIHN0YXRpYyBVQ2hhciB2YXJbKGxlbmd0aCkrMV0KKyAgICAvKipAc3RhYmxlIElD
VSAyLjAgKi8KKyMgICBkZWZpbmUgVV9TVFJJTkdfSU5JVCh2YXIsIGNzLCBsZW5ndGgpIHVfY2hh
cnNUb1VDaGFycyhjcywgdmFyLCBsZW5ndGgrMSkKKyNlbmRpZgorCisvKioKKyAqIFVuZXNjYXBl
IGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgYW5kIHdyaXRlIHRoZSByZXN1bHRpbmcKKyAqIFVuaWNv
ZGUgY2hhcmFjdGVycyB0byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgVGhlIGZvbGxvd2luZyBl
c2NhcGUKKyAqIHNlcXVlbmNlcyBhcmUgcmVjb2duaXplZDoKKyAqCisgKiBcXHVoaGhoICAgICAg
IDQgaGV4IGRpZ2l0czsgaCBpbiBbMC05QS1GYS1mXQorICogXFxVaGhoaGhoaGggICA4IGhleCBk
aWdpdHMKKyAqIFxceGhoICAgICAgICAgMS0yIGhleCBkaWdpdHMKKyAqIFxceHtoLi4ufSAgICAg
MS04IGhleCBkaWdpdHMKKyAqIFxcb29vICAgICAgICAgMS0zIG9jdGFsIGRpZ2l0czsgbyBpbiBb
MC03XQorICogXFxjWCAgICAgICAgICBjb250cm9sLVg7IFggaXMgbWFza2VkIHdpdGggMHgxRgor
ICoKKyAqIGFzIHdlbGwgYXMgdGhlIHN0YW5kYXJkIEFOU0kgQyBlc2NhcGVzOgorICoKKyAqIFxc
YSA9PiBVKzAwMDcsIFxcYiA9PiBVKzAwMDgsIFxcdCA9PiBVKzAwMDksIFxcbiA9PiBVKzAwMEEs
CisgKiBcXHYgPT4gVSswMDBCLCBcXGYgPT4gVSswMDBDLCBcXHIgPT4gVSswMDBELCBcXGUgPT4g
VSswMDFCLAorICogXFwiID0+IFUrMDAyMiwgXFwnID0+IFUrMDAyNywgXFw/ID0+IFUrMDAzRiwg
XFxcXCA9PiBVKzAwNUMKKyAqCisgKiBBbnl0aGluZyBlbHNlIGZvbGxvd2luZyBhIGJhY2tzbGFz
aCBpcyBnZW5lcmljYWxseSBlc2NhcGVkLiAgRm9yCisgKiBleGFtcGxlLCAiW2FcXC16XSIgcmV0
dXJucyAiW2Etel0iLgorICoKKyAqIElmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBpbGwtZm9ybWVk
LCB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5CisgKiBzdHJpbmcuICBBbiBleGFtcGxlIG9m
IGFuIGlsbC1mb3JtZWQgc2VxdWVuY2UgaXMgIlxcdSIgZm9sbG93ZWQgYnkKKyAqIGZld2VyIHRo
YW4gNCBoZXggZGlnaXRzLgorICoKKyAqIFRoZSBhYm92ZSBjaGFyYWN0ZXJzIGFyZSByZWNvZ25p
emVkIGluIHRoZSBjb21waWxlcidzIGNvZGVwYWdlLAorICogdGhhdCBpcywgdGhleSBhcmUgY29k
ZWQgYXMgJ3UnLCAnXFwnLCBldGMuICBDaGFyYWN0ZXJzIHRoYXQgYXJlCisgKiBub3QgcGFydHMg
b2YgZXNjYXBlIHNlcXVlbmNlcyBhcmUgY29udmVydGVkIHVzaW5nIHVfY2hhcnNUb1VDaGFycygp
LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBVbmljb2RlU3RyaW5nOjp1bmVz
Y2FwZSgpIGJ1dCBub3QKKyAqIGlkZW50aWNhbCB0byBpdC4gIFRoZSBsYXR0ZXIgdGFrZXMgYSBz
b3VyY2UgVW5pY29kZVN0cmluZywgc28gaXQKKyAqIGRvZXMgZXNjYXBlIHJlY29nbml0aW9uIGJ1
dCBubyBjb252ZXJzaW9uLgorICoKKyAqIEBwYXJhbSBzcmMgYSB6ZXJvLXRlcm1pbmF0ZWQgc3Ry
aW5nIG9mIGludmFyaWFudCBjaGFyYWN0ZXJzCisgKiBAcGFyYW0gZGVzdCBwb2ludGVyIHRvIGJ1
ZmZlciB0byByZWNlaXZlIGNvbnZlcnRlZCBhbmQgdW5lc2NhcGVkCisgKiB0ZXh0IGFuZCwgaWYg
dGhlcmUgaXMgcm9vbSwgYSB6ZXJvIHRlcm1pbmF0b3IuICBNYXkgYmUgTlVMTCBmb3IKKyAqIHBy
ZWZsaWdodGluZywgaW4gd2hpY2ggY2FzZSBubyBVQ2hhcnMgd2lsbCBiZSB3cml0dGVuLCBidXQg
dGhlCisgKiByZXR1cm4gdmFsdWUgd2lsbCBzdGlsbCBiZSB2YWxpZC4gIE9uIGVycm9yLCBhbiBl
bXB0eSBzdHJpbmcgaXMKKyAqIHN0b3JlZCBoZXJlIChpZiBwb3NzaWJsZSkuCisgKiBAcGFyYW0g
ZGVzdENhcGFjaXR5IHRoZSBudW1iZXIgb2YgVUNoYXJzIHRoYXQgbWF5IGJlIHdyaXR0ZW4gYXQK
KyAqIGRlc3QuICBJZ25vcmVkIGlmIGRlc3QgPT0gTlVMTC4KKyAqIEByZXR1cm4gdGhlIGxlbmd0
aCBvZiB1bmVzY2FwZWQgc3RyaW5nLgorICogQHNlZSB1X3VuZXNjYXBlQXQKKyAqIEBzZWUgVW5p
Y29kZVN0cmluZyN1bmVzY2FwZSgpCisgKiBAc2VlIFVuaWNvZGVTdHJpbmcjdW5lc2NhcGVBdCgp
CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vf
dW5lc2NhcGUoY29uc3QgY2hhciAqc3JjLAorICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50MzJf
dCBkZXN0Q2FwYWNpdHkpOworCitVX0NERUNMX0JFR0lOCisvKioKKyAqIENhbGxiYWNrIGZ1bmN0
aW9uIGZvciB1X3VuZXNjYXBlQXQoKSB0aGF0IHJldHVybnMgYSBjaGFyYWN0ZXIgb2YKKyAqIHRo
ZSBzb3VyY2UgdGV4dCBnaXZlbiBhbiBvZmZzZXQgYW5kIGEgY29udGV4dCBwb2ludGVyLiAgVGhl
IGNvbnRleHQKKyAqIHBvaW50ZXIgd2lsbCBiZSB3aGF0ZXZlciBpcyBwYXNzZWQgaW50byB1X3Vu
ZXNjYXBlQXQoKS4KKyAqCisgKiBAcGFyYW0gb2Zmc2V0IHBvaW50ZXIgdG8gdGhlIG9mZnNldCB0
aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHVfdW5lc2NhcGVBdCgpLgorICogQHBhcmFtIGNvbnRleHQg
YW4gb3BhcXVlIHBvaW50ZXIgcGFzc2VkIGRpcmVjdGx5IGludG8gdV91bmVzY2FwZUF0KCkKKyAq
IEByZXR1cm4gdGhlIGNoYXJhY3RlciByZXByZXNlbnRlZCBieSB0aGUgZXNjYXBlIHNlcXVlbmNl
IGF0CisgKiBvZmZzZXQKKyAqIEBzZWUgdV91bmVzY2FwZUF0CisgKiBAc3RhYmxlIElDVSAyLjAK
KyAqLwordHlwZWRlZiBVQ2hhciAoVV9DQUxMQ09OViAqVU5FU0NBUEVfQ0hBUl9BVCkoaW50MzJf
dCBvZmZzZXQsIHZvaWQgKmNvbnRleHQpOworVV9DREVDTF9FTkQKKworLyoqCisgKiBVbmVzY2Fw
ZSBhIHNpbmdsZSBzZXF1ZW5jZS4gVGhlIGNoYXJhY3RlciBhdCBvZmZzZXQtMSBpcyBhc3N1bWVk
CisgKiAod2l0aG91dCBjaGVja2luZykgdG8gYmUgYSBiYWNrc2xhc2guICBUaGlzIG1ldGhvZCB0
YWtlcyBhIGNhbGxiYWNrCisgKiBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRo
ZSBVQ2hhciBhdCBhIGdpdmVuIG9mZnNldC4gIEJ5CisgKiB2YXJ5aW5nIHRoaXMgY2FsbGJhY2ss
IElDVSBmdW5jdGlvbnMgYXJlIGFibGUgdG8gdW5lc2NhcGUgY2hhcioKKyAqIHN0cmluZ3MsIFVu
aWNvZGVTdHJpbmcgb2JqZWN0cywgYW5kIFVGSUxFIHBvaW50ZXJzLgorICoKKyAqIElmIG9mZnNl
dCBpcyBvdXQgb2YgcmFuZ2UsIG9yIGlmIHRoZSBlc2NhcGUgc2VxdWVuY2UgaXMgaWxsLWZvcm1l
ZCwKKyAqIChVQ2hhcjMyKTB4RkZGRkZGRkYgaXMgcmV0dXJuZWQuICBTZWUgZG9jdW1lbnRhdGlv
biBvZiB1X3VuZXNjYXBlKCkKKyAqIGZvciBhIGxpc3Qgb2YgcmVjb2duaXplZCBzZXF1ZW5jZXMu
CisgKgorICogQHBhcmFtIGNoYXJBdCBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBV
Q2hhciBvZiB0aGUgc291cmNlCisgKiB0ZXh0IGdpdmVuIGFuIG9mZnNldCBhbmQgYSBjb250ZXh0
IHBvaW50ZXIuCisgKiBAcGFyYW0gb2Zmc2V0IHBvaW50ZXIgdG8gdGhlIG9mZnNldCB0aGF0IHdp
bGwgYmUgcGFzc2VkIHRvIGNoYXJBdC4KKyAqIFRoZSBvZmZzZXQgdmFsdWUgd2lsbCBiZSB1cGRh
dGVkIHVwb24gcmV0dXJuIHRvIHBvaW50IGFmdGVyIHRoZQorICogbGFzdCBwYXJzZWQgY2hhcmFj
dGVyIG9mIHRoZSBlc2NhcGUgc2VxdWVuY2UuICBPbiBlcnJvciB0aGUgb2Zmc2V0CisgKiBpcyB1
bmNoYW5nZWQuCisgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0
aGUgc291cmNlIHRleHQuICBUaGUKKyAqIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBzb3VyY2UgdGV4
dCBpcyBjb25zaWRlcmVkIHRvIGJlIGF0IG9mZnNldAorICogbGVuZ3RoLTEuCisgKiBAcGFyYW0g
Y29udGV4dCBhbiBvcGFxdWUgcG9pbnRlciBwYXNzZWQgZGlyZWN0bHkgaW50byBjaGFyQXQuCisg
KiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGVzY2FwZSBzZXF1ZW5j
ZSBhdAorICogb2Zmc2V0LCBvciAoVUNoYXIzMikweEZGRkZGRkZGIG9uIGVycm9yLgorICogQHNl
ZSB1X3VuZXNjYXBlKCkKKyAqIEBzZWUgVW5pY29kZVN0cmluZyN1bmVzY2FwZSgpCisgKiBAc2Vl
IFVuaWNvZGVTdHJpbmcjdW5lc2NhcGVBdCgpCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9T
VEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3VfdW5lc2NhcGVBdChVTkVTQ0FQRV9DSEFSX0FUIGNo
YXJBdCwKKyAgICAgICAgICAgICBpbnQzMl90ICpvZmZzZXQsCisgICAgICAgICAgICAgaW50MzJf
dCBsZW5ndGgsCisgICAgICAgICAgICAgdm9pZCAqY29udGV4dCk7CisKKy8qKgorICogVXBwZXJj
YXNlIHRoZSBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLgorICogQ2FzaW5nIGlzIGxvY2FsZS1kZXBl
bmRlbnQgYW5kIGNvbnRleHQtc2Vuc2l0aXZlLgorICogVGhlIHJlc3VsdCBtYXkgYmUgbG9uZ2Vy
IG9yIHNob3J0ZXIgdGhhbiB0aGUgb3JpZ2luYWwuCisgKiBUaGUgc291cmNlIHN0cmluZyBhbmQg
dGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBhcmUgYWxsb3dlZCB0byBvdmVybGFwLgorICoKKyAqIEBw
YXJhbSBkZXN0ICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQgc3RyaW5nLiBUaGUgcmVzdWx0
IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCisgKiAgICAgICAgICAgICAgICAgIHRoZSBidWZm
ZXIgaXMgbGFyZ2UgZW5vdWdoLgorICogQHBhcmFtIGRlc3RDYXBhY2l0eSBUaGUgc2l6ZSBvZiB0
aGUgYnVmZmVyIChudW1iZXIgb2YgVUNoYXJzKS4gSWYgaXQgaXMgMCwgdGhlbgorICogICAgICAg
ICAgICAgICAgICBkZXN0IG1heSBiZSBOVUxMIGFuZCB0aGUgZnVuY3Rpb24gd2lsbCBvbmx5IHJl
dHVybiB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQKKyAqICAgICAgICAgICAgICAgICAgd2l0aG91
dCB3cml0aW5nIGFueSBvZiB0aGUgcmVzdWx0IHN0cmluZy4KKyAqIEBwYXJhbSBzcmMgICAgICAg
VGhlIG9yaWdpbmFsIHN0cmluZworICogQHBhcmFtIHNyY0xlbmd0aCBUaGUgbGVuZ3RoIG9mIHRo
ZSBvcmlnaW5hbCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBtdXN0IGJlIHplcm8tdGVybWluYXRl
ZC4KKyAqIEBwYXJhbSBsb2NhbGUgICAgVGhlIGxvY2FsZSB0byBjb25zaWRlciwgb3IgIiIgZm9y
IHRoZSByb290IGxvY2FsZSBvciBOVUxMIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUuCisgKiBAcGFy
YW0gcEVycm9yQ29kZSBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZh
bHVlLAorICogICAgICAgICAgICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1
cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgorICogQHJldHVybiBUaGUgbGVuZ3RoIG9mIHRo
ZSByZXN1bHQgc3RyaW5nLiBJdCBtYXkgYmUgZ3JlYXRlciB0aGFuIGRlc3RDYXBhY2l0eS4gSW4g
dGhhdCBjYXNlLAorICogICAgICAgICBvbmx5IHNvbWUgb2YgdGhlIHJlc3VsdCB3YXMgd3JpdHRl
biB0byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1Vf
U1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0clRvVXBwZXIoVUNoYXIgKmRlc3QsIGludDMy
X3QgZGVzdENhcGFjaXR5LAorICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qg
c3JjTGVuZ3RoLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxvY2FsZSwKKyAgICAgICAgICAg
ICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisgKiBMb3dlcmNhc2UgdGhlIGNoYXJh
Y3RlcnMgaW4gYSBzdHJpbmcuCisgKiBDYXNpbmcgaXMgbG9jYWxlLWRlcGVuZGVudCBhbmQgY29u
dGV4dC1zZW5zaXRpdmUuCisgKiBUaGUgcmVzdWx0IG1heSBiZSBsb25nZXIgb3Igc2hvcnRlciB0
aGFuIHRoZSBvcmlnaW5hbC4KKyAqIFRoZSBzb3VyY2Ugc3RyaW5nIGFuZCB0aGUgZGVzdGluYXRp
b24gYnVmZmVyIGFyZSBhbGxvd2VkIHRvIG92ZXJsYXAuCisgKgorICogQHBhcmFtIGRlc3QgICAg
ICBBIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBzdHJpbmcuIFRoZSByZXN1bHQgd2lsbCBiZSB6ZXJv
LXRlcm1pbmF0ZWQgaWYKKyAqICAgICAgICAgICAgICAgICAgdGhlIGJ1ZmZlciBpcyBsYXJnZSBl
bm91Z2guCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5IFRoZSBzaXplIG9mIHRoZSBidWZmZXIgKG51
bWJlciBvZiBVQ2hhcnMpLiBJZiBpdCBpcyAwLCB0aGVuCisgKiAgICAgICAgICAgICAgICAgIGRl
c3QgbWF5IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBsZW5n
dGggb2YgdGhlIHJlc3VsdAorICogICAgICAgICAgICAgICAgICB3aXRob3V0IHdyaXRpbmcgYW55
IG9mIHRoZSByZXN1bHQgc3RyaW5nLgorICogQHBhcmFtIHNyYyAgICAgICBUaGUgb3JpZ2luYWwg
c3RyaW5nCisgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIHN0
cmluZy4gSWYgLTEsIHRoZW4gc3JjIG11c3QgYmUgemVyby10ZXJtaW5hdGVkLgorICogQHBhcmFt
IGxvY2FsZSAgICBUaGUgbG9jYWxlIHRvIGNvbnNpZGVyLCBvciAiIiBmb3IgdGhlIHJvb3QgbG9j
YWxlIG9yIE5VTEwgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAqIEBwYXJhbSBwRXJyb3JDb2Rl
IE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9yIGNvZGUgdmFsdWUsCisgKiAgICAg
ICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhl
IGZ1bmN0aW9uIGNhbGwuCisgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdCBzdHJp
bmcuIEl0IG1heSBiZSBncmVhdGVyIHRoYW4gZGVzdENhcGFjaXR5LiBJbiB0aGF0IGNhc2UsCisg
KiAgICAgICAgIG9ubHkgc29tZSBvZiB0aGUgcmVzdWx0IHdhcyB3cml0dGVuIHRvIHRoZSBkZXN0
aW5hdGlvbiBidWZmZXIuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKK3Vfc3RyVG9Mb3dlcihVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNp
dHksCisgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgsCisg
ICAgICAgICAgICAgY29uc3QgY2hhciAqbG9jYWxlLAorICAgICAgICAgICAgIFVFcnJvckNvZGUg
KnBFcnJvckNvZGUpOworCisjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OCisKKy8qKgor
ICogVGl0bGVjYXNlIGEgc3RyaW5nLgorICogQ2FzaW5nIGlzIGxvY2FsZS1kZXBlbmRlbnQgYW5k
IGNvbnRleHQtc2Vuc2l0aXZlLgorICogVGl0bGVjYXNpbmcgdXNlcyBhIGJyZWFrIGl0ZXJhdG9y
IHRvIGZpbmQgdGhlIGZpcnN0IGNoYXJhY3RlcnMgb2Ygd29yZHMKKyAqIHRoYXQgYXJlIHRvIGJl
IHRpdGxlY2FzZWQuIEl0IHRpdGxlY2FzZXMgdGhvc2UgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNl
cworICogYWxsIG90aGVycy4KKyAqCisgKiBUaGUgdGl0bGVjYXNlIGJyZWFrIGl0ZXJhdG9yIGNh
biBiZSBwcm92aWRlZCB0byBjdXN0b21pemUgZm9yIGFyYml0cmFyeQorICogc3R5bGVzLCB1c2lu
ZyBydWxlcyBhbmQgZGljdGlvbmFyaWVzIGJleW9uZCB0aGUgc3RhbmRhcmQgaXRlcmF0b3JzLgor
ICogSXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGFsd2F5cyBwcm92aWRlIGFuIGl0ZXJhdG9y
IHRvIGF2b2lkCisgKiBvcGVuaW5nIGFuZCBjbG9zaW5nIG9uZSBmb3IgZWFjaCBzdHJpbmcuCisg
KiBUaGUgc3RhbmRhcmQgdGl0bGVjYXNlIGl0ZXJhdG9yIGZvciB0aGUgcm9vdCBsb2NhbGUgaW1w
bGVtZW50cyB0aGUKKyAqIGFsZ29yaXRobSBvZiBVbmljb2RlIFRSIDIxLgorICoKKyAqIFRoaXMg
ZnVuY3Rpb24gdXNlcyBvbmx5IHRoZSBmaXJzdCgpIGFuZCBuZXh0KCkgbWV0aG9kcyBvZiB0aGUK
KyAqIHByb3ZpZGVkIGJyZWFrIGl0ZXJhdG9yLgorICoKKyAqIFRoZSByZXN1bHQgbWF5IGJlIGxv
bmdlciBvciBzaG9ydGVyIHRoYW4gdGhlIG9yaWdpbmFsLgorICogVGhlIHNvdXJjZSBzdHJpbmcg
YW5kIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgYXJlIGFsbG93ZWQgdG8gb3ZlcmxhcC4KKyAqCisg
KiBAcGFyYW0gZGVzdCAgICAgIEEgYnVmZmVyIGZvciB0aGUgcmVzdWx0IHN0cmluZy4gVGhlIHJl
c3VsdCB3aWxsIGJlIHplcm8tdGVybWluYXRlZCBpZgorICogICAgICAgICAgICAgICAgICB0aGUg
YnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgVGhlIHNpemUg
b2YgdGhlIGJ1ZmZlciAobnVtYmVyIG9mIFVDaGFycykuIElmIGl0IGlzIDAsIHRoZW4KKyAqICAg
ICAgICAgICAgICAgICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgb25s
eSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0CisgKiAgICAgICAgICAgICAgICAgIHdp
dGhvdXQgd3JpdGluZyBhbnkgb2YgdGhlIHJlc3VsdCBzdHJpbmcuCisgKiBAcGFyYW0gc3JjICAg
ICAgIFRoZSBvcmlnaW5hbCBzdHJpbmcKKyAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIGxlbmd0aCBv
ZiB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMgbXVzdCBiZSB6ZXJvLXRlcm1p
bmF0ZWQuCisgKiBAcGFyYW0gdGl0bGVJdGVyIEEgYnJlYWsgaXRlcmF0b3IgdG8gZmluZCB0aGUg
Zmlyc3QgY2hhcmFjdGVycyBvZiB3b3JkcworICogICAgICAgICAgICAgICAgICB0aGF0IGFyZSB0
byBiZSB0aXRsZWNhc2VkLgorICogICAgICAgICAgICAgICAgICBJZiBub25lIGlzIHByb3ZpZGVk
IChOVUxMKSwgdGhlbiBhIHN0YW5kYXJkIHRpdGxlY2FzZQorICogICAgICAgICAgICAgICAgICBi
cmVhayBpdGVyYXRvciBpcyBvcGVuZWQuCisgKiBAcGFyYW0gbG9jYWxlICAgIFRoZSBsb2NhbGUg
dG8gY29uc2lkZXIsIG9yICIiIGZvciB0aGUgcm9vdCBsb2NhbGUgb3IgTlVMTCBmb3IgdGhlIGRl
ZmF1bHQgbG9jYWxlLgorICogQHBhcmFtIHBFcnJvckNvZGUgTXVzdCBiZSBhIHZhbGlkIHBvaW50
ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKKyAqICAgICAgICAgICAgICAgICAgd2hpY2ggbXVz
dCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAqIEBy
ZXR1cm4gVGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IHN0cmluZy4gSXQgbWF5IGJlIGdyZWF0ZXIg
dGhhbiBkZXN0Q2FwYWNpdHkuIEluIHRoYXQgY2FzZSwKKyAqICAgICAgICAgb25seSBzb21lIG9m
IHRoZSByZXN1bHQgd2FzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAqIEBz
dGFibGUgSUNVIDIuMQorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9zdHJUb1Rp
dGxlKFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICAgICBjb25z
dCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICBVQnJlYWtJdGVy
YXRvciAqdGl0bGVJdGVyLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxvY2FsZSwKKyAgICAg
ICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworI2VuZGlmCisKKy8qKgorICogQ2Fz
ZS1mb2xkIHRoZSBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLgorICogQ2FzZS1mb2xkaW5nIGlzIGxv
Y2FsZS1pbmRlcGVuZGVudCBhbmQgbm90IGNvbnRleHQtc2Vuc2l0aXZlLAorICogYnV0IHRoZXJl
IGlzIGFuIG9wdGlvbiBmb3Igd2hldGhlciB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgbWFwcGluZ3Mg
Zm9yIGRvdHRlZCBJCisgKiBhbmQgZG90bGVzcyBpIHRoYXQgYXJlIG1hcmtlZCB3aXRoICdJJyBp
biBDYXNlRm9sZGluZy50eHQuCisgKiBUaGUgcmVzdWx0IG1heSBiZSBsb25nZXIgb3Igc2hvcnRl
ciB0aGFuIHRoZSBvcmlnaW5hbC4KKyAqIFRoZSBzb3VyY2Ugc3RyaW5nIGFuZCB0aGUgZGVzdGlu
YXRpb24gYnVmZmVyIGFyZSBhbGxvd2VkIHRvIG92ZXJsYXAuCisgKgorICogQHBhcmFtIGRlc3Qg
ICAgICBBIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBzdHJpbmcuIFRoZSByZXN1bHQgd2lsbCBiZSB6
ZXJvLXRlcm1pbmF0ZWQgaWYKKyAqICAgICAgICAgICAgICAgICAgdGhlIGJ1ZmZlciBpcyBsYXJn
ZSBlbm91Z2guCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5IFRoZSBzaXplIG9mIHRoZSBidWZmZXIg
KG51bWJlciBvZiBVQ2hhcnMpLiBJZiBpdCBpcyAwLCB0aGVuCisgKiAgICAgICAgICAgICAgICAg
IGRlc3QgbWF5IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBs
ZW5ndGggb2YgdGhlIHJlc3VsdAorICogICAgICAgICAgICAgICAgICB3aXRob3V0IHdyaXRpbmcg
YW55IG9mIHRoZSByZXN1bHQgc3RyaW5nLgorICogQHBhcmFtIHNyYyAgICAgICBUaGUgb3JpZ2lu
YWwgc3RyaW5nCisgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFs
IHN0cmluZy4gSWYgLTEsIHRoZW4gc3JjIG11c3QgYmUgemVyby10ZXJtaW5hdGVkLgorICogQHBh
cmFtIG9wdGlvbnMgICBFaXRoZXIgVV9GT0xEX0NBU0VfREVGQVVMVCBvciBVX0ZPTERfQ0FTRV9F
WENMVURFX1NQRUNJQUxfSQorICogQHBhcmFtIHBFcnJvckNvZGUgTXVzdCBiZSBhIHZhbGlkIHBv
aW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKKyAqICAgICAgICAgICAgICAgICAgd2hpY2gg
bXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAq
IEByZXR1cm4gVGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IHN0cmluZy4gSXQgbWF5IGJlIGdyZWF0
ZXIgdGhhbiBkZXN0Q2FwYWNpdHkuIEluIHRoYXQgY2FzZSwKKyAqICAgICAgICAgb25seSBzb21l
IG9mIHRoZSByZXN1bHQgd2FzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9zdHJG
b2xkQ2FzZShVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAg
IGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICB1aW50
MzJfdCBvcHRpb25zLAorICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKwor
LyoqCisgKiBDb252ZXJ0cyBhIHNlcXVlbmNlIG9mIFVDaGFycyB0byB3Y2hhcl90IHVuaXRzLgor
ICoKKyAqIEBwYXJhbSBkZXN0ICAgICAgICAgIEEgYnVmZmVyIGZvciB0aGUgcmVzdWx0IHN0cmlu
Zy4gVGhlIHJlc3VsdCB3aWxsIGJlIHplcm8tdGVybWluYXRlZCBpZgorICogICAgICAgICAgICAg
ICAgICAgICAgdGhlIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2guCisgKiBAcGFyYW0gZGVzdENhcGFj
aXR5ICBUaGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChudW1iZXIgb2Ygd2NoYXJfdCdzKS4gSWYgaXQg
aXMgMCwgdGhlbgorICogICAgICAgICAgICAgICAgICAgICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQg
dGhlIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgCisgKiAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgd2l0aG91dCB3cml0aW5nIGFueSBvZiB0aGUgcmVzdWx0
IHN0cmluZyAocHJlLWZsaWdodGluZykuCisgKiBAcGFyYW0gcERlc3RMZW5ndGggICBBIHBvaW50
ZXIgdG8gcmVjZWl2ZSB0aGUgbnVtYmVyIG9mIHVuaXRzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0
aW9uLiBJZiAKKyAqICAgICAgICAgICAgICAgICAgICAgIHBEZXN0TGVuZ3RoIT1OVUxMIHRoZW4g
KnBEZXN0TGVuZ3RoIGlzIGFsd2F5cyBzZXQgdG8gdGhlIAorICogICAgICAgICAgICAgICAgICAg
ICAgbnVtYmVyIG9mIG91dHB1dCB1bml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0cmFuc2Zvcm1h
dGlvbiBvZiAKKyAqICAgICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgaW5wdXQgdW5pdHMsIGV2
ZW4gaW4gY2FzZSBvZiBhIGJ1ZmZlciBvdmVyZmxvdy4KKyAqIEBwYXJhbSBzcmMgICAgICAgICAg
IFRoZSBvcmlnaW5hbCBzb3VyY2Ugc3RyaW5nCisgKiBAcGFyYW0gc3JjTGVuZ3RoICAgICBUaGUg
bGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBtdXN0IGJlIHpl
cm8tdGVybWluYXRlZC4KKyAqIEBwYXJhbSBwRXJyb3JDb2RlICAgIE11c3QgYmUgYSB2YWxpZCBw
b2ludGVyIHRvIGFuIGVycm9yIGNvZGUgdmFsdWUsCisgKiAgICAgICAgICAgICAgICAgICAgICB3
aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxs
LgorICogQHJldHVybiBUaGUgcG9pbnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIuCisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgd2NoYXJfdCogVV9FWFBPUlQyCit1X3N0clRvV0NT
KHdjaGFyX3QgKmRlc3QsIAorICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAg
ICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsCisgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMs
IAorICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgVUVycm9yQ29kZSAq
cEVycm9yQ29kZSk7CisvKioKKyAqIENvbnZlcnRzIGEgc2VxdWVuY2Ugb2Ygd2NoYXJfdCB1bml0
cyB0byBVQ2hhcnMKKyAqCisgKiBAcGFyYW0gZGVzdCAgICAgICAgICBBIGJ1ZmZlciBmb3IgdGhl
IHJlc3VsdCBzdHJpbmcuIFRoZSByZXN1bHQgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0ZWQgaWYKKyAq
ICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgorICogQHBh
cmFtIGRlc3RDYXBhY2l0eSAgVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAobnVtYmVyIG9mIFVDaGFy
cykuIElmIGl0IGlzIDAsIHRoZW4KKyAqICAgICAgICAgICAgICAgICAgICAgIGRlc3QgbWF5IGJl
IE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhl
IAorICogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHdpdGhvdXQgd3JpdGluZyBhbnkgb2Yg
dGhlIHJlc3VsdCBzdHJpbmcgKHByZS1mbGlnaHRpbmcpLgorICogQHBhcmFtIHBEZXN0TGVuZ3Ro
ICAgQSBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIG51bWJlciBvZiB1bml0cyB3cml0dGVuIHRvIHRo
ZSBkZXN0aW5hdGlvbi4gSWYgCisgKiAgICAgICAgICAgICAgICAgICAgICBwRGVzdExlbmd0aCE9
TlVMTCB0aGVuICpwRGVzdExlbmd0aCBpcyBhbHdheXMgc2V0IHRvIHRoZSAKKyAqICAgICAgICAg
ICAgICAgICAgICAgIG51bWJlciBvZiBvdXRwdXQgdW5pdHMgY29ycmVzcG9uZGluZyB0byB0aGUg
dHJhbnNmb3JtYXRpb24gb2YgCisgKiAgICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIGlucHV0
IHVuaXRzLCBldmVuIGluIGNhc2Ugb2YgYSBidWZmZXIgb3ZlcmZsb3cuCisgKiBAcGFyYW0gc3Jj
ICAgICAgICAgICBUaGUgb3JpZ2luYWwgc291cmNlIHN0cmluZworICogQHBhcmFtIHNyY0xlbmd0
aCAgICAgVGhlIGxlbmd0aCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMg
bXVzdCBiZSB6ZXJvLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gcEVycm9yQ29kZSAgICBNdXN0IGJl
IGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLAorICogICAgICAgICAgICAg
ICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVu
Y3Rpb24gY2FsbC4KKyAqIEByZXR1cm4gVGhlIHBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVy
LgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIKK3Vf
c3RyRnJvbVdDUyhVQ2hhciAgICpkZXN0LAorICAgICAgICAgICAgIGludDMyX3QgZGVzdENhcGFj
aXR5LCAKKyAgICAgICAgICAgICBpbnQzMl90ICpwRGVzdExlbmd0aCwKKyAgICAgICAgICAgICBj
b25zdCB3Y2hhcl90ICpzcmMsCisgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisgICAg
ICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisvKioKKyAqIENvbnZlcnRzIGEgc2Vx
dWVuY2Ugb2YgVUNoYXJzIChVVEYtMTYpIHRvIFVURi04IGJ5dGVzCisgKgorICogQHBhcmFtIGRl
c3QgICAgICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQgc3RyaW5nLiBUaGUgcmVzdWx0IHdp
bGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCisgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVm
ZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgIFRoZSBzaXplIG9m
IHRoZSBidWZmZXIgKG51bWJlciBvZiBjaGFycykuIElmIGl0IGlzIDAsIHRoZW4KKyAqICAgICAg
ICAgICAgICAgICAgICAgIGRlc3QgbWF5IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9u
bHkgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIAorICogICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0IHdpdGhvdXQgd3JpdGluZyBhbnkgb2YgdGhlIHJlc3VsdCBzdHJpbmcgKHByZS1mbGlnaHRp
bmcpLgorICogQHBhcmFtIHBEZXN0TGVuZ3RoICAgQSBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIG51
bWJlciBvZiB1bml0cyB3cml0dGVuIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgCisgKiAgICAgICAg
ICAgICAgICAgICAgICBwRGVzdExlbmd0aCE9TlVMTCB0aGVuICpwRGVzdExlbmd0aCBpcyBhbHdh
eXMgc2V0IHRvIHRoZSAKKyAqICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBvdXRwdXQg
dW5pdHMgY29ycmVzcG9uZGluZyB0byB0aGUgdHJhbnNmb3JtYXRpb24gb2YgCisgKiAgICAgICAg
ICAgICAgICAgICAgICBhbGwgdGhlIGlucHV0IHVuaXRzLCBldmVuIGluIGNhc2Ugb2YgYSBidWZm
ZXIgb3ZlcmZsb3cuCisgKiBAcGFyYW0gc3JjICAgICAgICAgICBUaGUgb3JpZ2luYWwgc291cmNl
IHN0cmluZworICogQHBhcmFtIHNyY0xlbmd0aCAgICAgVGhlIGxlbmd0aCBvZiB0aGUgb3JpZ2lu
YWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMgbXVzdCBiZSB6ZXJvLXRlcm1pbmF0ZWQuCisgKiBA
cGFyYW0gcEVycm9yQ29kZSAgICBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBj
b2RlIHZhbHVlLAorICogICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNh
dGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAqIEByZXR1cm4gVGhlIHBv
aW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1Vf
U1RBQkxFIGNoYXIqIFVfRVhQT1JUMiAKK3Vfc3RyVG9VVEY4KGNoYXIgKmRlc3QsICAgICAgICAg
ICAKKyAgICAgICAgICAgIGludDMyX3QgZGVzdENhcGFjaXR5LAorICAgICAgICAgICAgaW50MzJf
dCAqcERlc3RMZW5ndGgsCisgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLCAKKyAgICAgICAg
ICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29k
ZSk7CisKKy8qKgorICogQ29udmVydHMgYSBzZXF1ZW5jZSBvZiBVVEYtOCBieXRlcyB0byBVQ2hh
cnMgKFVURi0xNikuCisgKgorICogQHBhcmFtIGRlc3QgICAgICAgICAgQSBidWZmZXIgZm9yIHRo
ZSByZXN1bHQgc3RyaW5nLiBUaGUgcmVzdWx0IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCisg
KiAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAqIEBw
YXJhbSBkZXN0Q2FwYWNpdHkgIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBVQ2hh
cnMpLiBJZiBpdCBpcyAwLCB0aGVuCisgKiAgICAgICAgICAgICAgICAgICAgICBkZXN0IG1heSBi
ZSBOVUxMIGFuZCB0aGUgZnVuY3Rpb24gd2lsbCBvbmx5IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRo
ZSAKKyAqICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB3aXRob3V0IHdyaXRpbmcgYW55IG9m
IHRoZSByZXN1bHQgc3RyaW5nIChwcmUtZmxpZ2h0aW5nKS4KKyAqIEBwYXJhbSBwRGVzdExlbmd0
aCAgIEEgcG9pbnRlciB0byByZWNlaXZlIHRoZSBudW1iZXIgb2YgdW5pdHMgd3JpdHRlbiB0byB0
aGUgZGVzdGluYXRpb24uIElmIAorICogICAgICAgICAgICAgICAgICAgICAgcERlc3RMZW5ndGgh
PU5VTEwgdGhlbiAqcERlc3RMZW5ndGggaXMgYWx3YXlzIHNldCB0byB0aGUgCisgKiAgICAgICAg
ICAgICAgICAgICAgICBudW1iZXIgb2Ygb3V0cHV0IHVuaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhl
IHRyYW5zZm9ybWF0aW9uIG9mIAorICogICAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBpbnB1
dCB1bml0cywgZXZlbiBpbiBjYXNlIG9mIGEgYnVmZmVyIG92ZXJmbG93LgorICogQHBhcmFtIHNy
YyAgICAgICAgICAgVGhlIG9yaWdpbmFsIHNvdXJjZSBzdHJpbmcKKyAqIEBwYXJhbSBzcmNMZW5n
dGggICAgIFRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gSWYgLTEsIHRoZW4gc3Jj
IG11c3QgYmUgemVyby10ZXJtaW5hdGVkLgorICogQHBhcmFtIHBFcnJvckNvZGUgICAgTXVzdCBi
ZSBhIHZhbGlkIHBvaW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKKyAqICAgICAgICAgICAg
ICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhlIGZ1
bmN0aW9uIGNhbGwuCisgKiBAcmV0dXJuIFRoZSBwb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1ZmZl
ci4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQyCit1
X3N0ckZyb21VVEY4KFVDaGFyICpkZXN0LCAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgaW50
MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAgIGludDMyX3QgKnBEZXN0TGVuZ3RoLAor
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsIAorICAgICAgICAgICAgICBpbnQzMl90IHNy
Y0xlbmd0aCwKKyAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisKKy8qKgor
ICogQ29udmVydHMgYSBzZXF1ZW5jZSBvZiBVQ2hhcnMgKFVURi0xNikgdG8gVVRGMzIgdW5pdHMu
CisgKgorICogQHBhcmFtIGRlc3QgICAgICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQgc3Ry
aW5nLiBUaGUgcmVzdWx0IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCisgKiAgICAgICAgICAg
ICAgICAgICAgICB0aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAqIEBwYXJhbSBkZXN0Q2Fw
YWNpdHkgIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBVQ2hhcjMycykuIElmIGl0
IGlzIDAsIHRoZW4KKyAqICAgICAgICAgICAgICAgICAgICAgIGRlc3QgbWF5IGJlIE5VTEwgYW5k
IHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIAorICogICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0IHdpdGhvdXQgd3JpdGluZyBhbnkgb2YgdGhlIHJlc3Vs
dCBzdHJpbmcgKHByZS1mbGlnaHRpbmcpLgorICogQHBhcmFtIHBEZXN0TGVuZ3RoICAgQSBwb2lu
dGVyIHRvIHJlY2VpdmUgdGhlIG51bWJlciBvZiB1bml0cyB3cml0dGVuIHRvIHRoZSBkZXN0aW5h
dGlvbi4gSWYgCisgKiAgICAgICAgICAgICAgICAgICAgICBwRGVzdExlbmd0aCE9TlVMTCB0aGVu
ICpwRGVzdExlbmd0aCBpcyBhbHdheXMgc2V0IHRvIHRoZSAKKyAqICAgICAgICAgICAgICAgICAg
ICAgIG51bWJlciBvZiBvdXRwdXQgdW5pdHMgY29ycmVzcG9uZGluZyB0byB0aGUgdHJhbnNmb3Jt
YXRpb24gb2YgCisgKiAgICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIGlucHV0IHVuaXRzLCBl
dmVuIGluIGNhc2Ugb2YgYSBidWZmZXIgb3ZlcmZsb3cuCisgKiBAcGFyYW0gc3JjICAgICAgICAg
ICBUaGUgb3JpZ2luYWwgc291cmNlIHN0cmluZworICogQHBhcmFtIHNyY0xlbmd0aCAgICAgVGhl
IGxlbmd0aCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMgbXVzdCBiZSB6
ZXJvLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gcEVycm9yQ29kZSAgICBNdXN0IGJlIGEgdmFsaWQg
cG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLAorICogICAgICAgICAgICAgICAgICAgICAg
d2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2Fs
bC4KKyAqIEByZXR1cm4gVGhlIHBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyLgorICogQHN0
YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyMzIqIFVfRVhQT1JUMiAKK3Vfc3RyVG9V
VEYzMihVQ2hhcjMyICpkZXN0LCAKKyAgICAgICAgICAgICBpbnQzMl90ICBkZXN0Q2FwYWNpdHks
CisgICAgICAgICAgICAgaW50MzJfdCAgKnBEZXN0TGVuZ3RoLAorICAgICAgICAgICAgIGNvbnN0
IFVDaGFyICpzcmMsIAorICAgICAgICAgICAgIGludDMyX3QgIHNyY0xlbmd0aCwKKyAgICAgICAg
ICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisgKiBDb252ZXJ0cyBhIHNlcXVl
bmNlIG9mIFVURjMyIHVuaXRzIHRvIFVDaGFycyAoVVRGLTE2KQorICoKKyAqIEBwYXJhbSBkZXN0
ICAgICAgICAgIEEgYnVmZmVyIGZvciB0aGUgcmVzdWx0IHN0cmluZy4gVGhlIHJlc3VsdCB3aWxs
IGJlIHplcm8tdGVybWluYXRlZCBpZgorICogICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1ZmZl
ciBpcyBsYXJnZSBlbm91Z2guCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSBvZiB0
aGUgYnVmZmVyIChudW1iZXIgb2YgVUNoYXJzKS4gSWYgaXQgaXMgMCwgdGhlbgorICogICAgICAg
ICAgICAgICAgICAgICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwgb25s
eSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgCisgKiAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQgd2l0aG91dCB3cml0aW5nIGFueSBvZiB0aGUgcmVzdWx0IHN0cmluZyAocHJlLWZsaWdodGlu
ZykuCisgKiBAcGFyYW0gcERlc3RMZW5ndGggICBBIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUgbnVt
YmVyIG9mIHVuaXRzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiAKKyAqICAgICAgICAg
ICAgICAgICAgICAgIHBEZXN0TGVuZ3RoIT1OVUxMIHRoZW4gKnBEZXN0TGVuZ3RoIGlzIGFsd2F5
cyBzZXQgdG8gdGhlIAorICogICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIG91dHB1dCB1
bml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiAKKyAqICAgICAgICAg
ICAgICAgICAgICAgIGFsbCB0aGUgaW5wdXQgdW5pdHMsIGV2ZW4gaW4gY2FzZSBvZiBhIGJ1ZmZl
ciBvdmVyZmxvdy4KKyAqIEBwYXJhbSBzcmMgICAgICAgICAgIFRoZSBvcmlnaW5hbCBzb3VyY2Ug
c3RyaW5nCisgKiBAcGFyYW0gc3JjTGVuZ3RoICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5h
bCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBtdXN0IGJlIHplcm8tdGVybWluYXRlZC4KKyAqIEBw
YXJhbSBwRXJyb3JDb2RlICAgIE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9yIGNv
ZGUgdmFsdWUsCisgKiAgICAgICAgICAgICAgICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0
ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgorICogQHJldHVybiBUaGUgcG9p
bnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9T
VEFCTEUgVUNoYXIqIFVfRVhQT1JUMiAKK3Vfc3RyRnJvbVVURjMyKFVDaGFyICAgKmRlc3QsCisg
ICAgICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwgCisgICAgICAgICAgICAgICBpbnQz
Ml90ICpwRGVzdExlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyMzIgKnNyYywKKyAg
ICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICAgVUVycm9yQ29k
ZSAqcEVycm9yQ29kZSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUvaWN1
L3VuaWNvZGUvdXRmLmggYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dGYuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDE2OTFkCi0tLSAvZGV2L251bGwKKysrIGIv
SmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXRmLmgKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDQsIElu
dGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJz
LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBm
aWxlIG5hbWU6ICB1dGYuaAorKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgdGFiIHNpemU6
ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50YXRpb246NAorKgorKiAgIGNyZWF0ZWQgb246IDE5
OTlzZXAwOQorKiAgIGNyZWF0ZWQgYnk6IE1hcmt1cyBXLiBTY2hlcmVyCisqLworCisvKioKKyAq
IFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6IENvZGUgcG9pbnQgbWFjcm9zCisgKgorICogVGhpcyBm
aWxlIGRlZmluZXMgbWFjcm9zIGZvciBjaGVja2luZyB3aGV0aGVyIGEgY29kZSBwb2ludCBpcwor
ICogYSBzdXJyb2dhdGUgb3IgYSBub24tY2hhcmFjdGVyIGV0Yy4KKyAqCisgKiBUaGUgVUNoYXIg
YW5kIFVDaGFyMzIgZGF0YSB0eXBlcyBmb3IgVW5pY29kZSBjb2RlIHVuaXRzIGFuZCBjb2RlIHBv
aW50cworICogYXJlIGRlZmluZWQgaW4gdW1hY2hpbmVzLmggYmVjYXVzZSB0aGV5IGNhbiBiZSBt
YWNoaW5lLWRlcGVuZGVudC4KKyAqCisgKiB1dGYuaCBpcyBpbmNsdWRlZCBieSB1dHlwZXMuaCBh
bmQgaXRzZWxmIGluY2x1ZGVzIHV0ZjguaCBhbmQgdXRmMTYuaCBhZnRlciBzb21lCisgKiBjb21t
b24gZGVmaW5pdGlvbnMuIFRob3NlIGZpbGVzIGRlZmluZSBtYWNyb3MgZm9yIGVmZmljaWVudGx5
IGdldHRpbmcgY29kZSBwb2ludHMKKyAqIGluIGFuZCBvdXQgb2YgVVRGLTgvMTYgc3RyaW5ncy4K
KyAqIHV0ZjE2LmggbWFjcm9zIGhhdmUgIlUxNl8iIHByZWZpeGVzLgorICogdXRmOC5oIGRlZmlu
ZXMgc2ltaWxhciBtYWNyb3Mgd2l0aCAiVThfIiBwcmVmaXhlcyBmb3IgVVRGLTggc3RyaW5nIGhh
bmRsaW5nLgorICoKKyAqIElDVSBwcm9jZXNzZXMgMTYtYml0IFVuaWNvZGUgc3RyaW5ncy4KKyAq
IE1vc3Qgb2YgdGhlIHRpbWUsIHN1Y2ggc3RyaW5ncyBhcmUgd2VsbC1mb3JtZWQgVVRGLTE2Lgor
ICogU2luZ2xlLCB1bnBhaXJlZCBzdXJyb2dhdGVzIG11c3QgYmUgaGFuZGxlZCBhcyB3ZWxsLCBh
bmQgYXJlIHRyZWF0ZWQgaW4gSUNVCisgKiBsaWtlIHJlZ3VsYXIgY29kZSBwb2ludHMgd2hlcmUg
cG9zc2libGUuCisgKiAoUGFpcnMgb2Ygc3Vycm9nYXRlIGNvZGUgcG9pbnRzIGFyZSBpbmRpc3Rp
bmd1aXNoYWJsZSBmcm9tIHN1cHBsZW1lbnRhcnkKKyAqIGNvZGUgcG9pbnRzIGVuY29kZWQgYXMg
cGFpcnMgb2Ygc3VwcGxlbWVudGFyeSBjb2RlIHVuaXRzLikKKyAqCisgKiBJbiBmYWN0LCBhbG1v
c3QgYWxsIFVuaWNvZGUgY29kZSBwb2ludHMgaW4gbm9ybWFsIHRleHQgKD45OSUpCisgKiBhcmUg
b24gdGhlIEJNUCAoPD1VK2ZmZmYpIGFuZCBldmVuIDw9VStkN2ZmLgorICogSUNVIGZ1bmN0aW9u
cyBoYW5kbGUgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cyAoVSsxMDAwMC4uVSsxMGZmZmYpCisg
KiBidXQgYXJlIG9wdGltaXplZCBmb3IgdGhlIG11Y2ggbW9yZSBmcmVxdWVudGx5IG9jY3Vycmlu
ZyBCTVAgY29kZSBwb2ludHMuCisgKgorICogdXRmLmggZGVmaW5lcyBVQ2hhciB0byBiZSBhbiB1
bnNpZ25lZCAxNi1iaXQgaW50ZWdlci4gSWYgdGhpcyBtYXRjaGVzIHdjaGFyX3QsIHRoZW4KKyAq
IFVDaGFyIGlzIGRlZmluZWQgdG8gYmUgZXhhY3RseSB3Y2hhcl90LCBvdGhlcndpc2UgdWludDE2
X3QuCisgKgorICogVUNoYXIzMiBpcyBkZWZpbmVkIHRvIGJlIGEgc2lnbmVkIDMyLWJpdCBpbnRl
Z2VyIChpbnQzMl90KSwgbGFyZ2UgZW5vdWdoIGZvciBhIDIxLWJpdAorICogVW5pY29kZSBjb2Rl
IHBvaW50IChVbmljb2RlIHNjYWxhciB2YWx1ZSwgMC4uMHgxMGZmZmYpLgorICogQmVmb3JlIElD
VSAyLjQsIHRoZSBkZWZpbml0aW9uIG9mIFVDaGFyMzIgd2FzIHNpbWlsYXJseSBwbGF0Zm9ybS1k
ZXBlbmRlbnQgYXMKKyAqIHRoZSBkZWZpbml0aW9uIG9mIFVDaGFyLiBGb3IgZGV0YWlscyBzZWUg
dGhlIGRvY3VtZW50YXRpb24gZm9yIFVDaGFyMzIgaXRzZWxmLgorICoKKyAqIHV0Zi5oIGFsc28g
ZGVmaW5lcyBhIHNtYWxsIG51bWJlciBvZiBDIG1hY3JvcyBmb3Igc2luZ2xlIFVuaWNvZGUgY29k
ZSBwb2ludHMuCisgKiBUaGVzZSBhcmUgc2ltcGxlIGNoZWNrcyBmb3Igc3Vycm9nYXRlcyBhbmQg
bm9uLWNoYXJhY3RlcnMuCisgKiBGb3IgYWN0dWFsIFVuaWNvZGUgY2hhcmFjdGVyIHByb3BlcnRp
ZXMgc2VlIHVjaGFyLmguCisgKgorICogQnkgZGVmYXVsdCwgc3RyaW5nIG9wZXJhdGlvbnMgbXVz
dCBiZSBkb25lIHdpdGggZXJyb3IgY2hlY2tpbmcgaW4gY2FzZQorICogYSBzdHJpbmcgaXMgbm90
IHdlbGwtZm9ybWVkIFVURi0xNi4KKyAqIFRoZSBtYWNyb3Mgd2lsbCBkZXRlY3QgaWYgYSBzdXJy
b2dhdGUgY29kZSB1bml0IGlzIHVucGFpcmVkCisgKiAobGVhZCB1bml0IHdpdGhvdXQgdHJhaWwg
dW5pdCBvciB2aWNlIHZlcnNhKSBhbmQganVzdCByZXR1cm4gdGhlIHVuaXQgaXRzZWxmCisgKiBh
cyB0aGUgY29kZSBwb2ludC4KKyAqIChJdCBpcyBhbiBhY2NpZGVudGFsIHByb3BlcnR5IG9mIFVu
aWNvZGUgYW5kIFVURi0xNiB0aGF0IGFsbAorICogbWFsZm9ybWVkIHNlcXVlbmNlcyBjYW4gYmUg
ZXhwcmVzc2VkIHVuYW1iaWd1b3VzbHkgd2l0aCBhIGRpc3RpbmN0IHN1YnJhbmdlCisgKiBvZiBV
bmljb2RlIGNvZGUgcG9pbnRzLikKKyAqCisgKiBXaGVuIGl0IGlzIHNhZmUgdG8gYXNzdW1lIHRo
YXQgdGV4dCBpcyB3ZWxsLWZvcm1lZCBVVEYtMTYKKyAqIChkb2VzIG5vdCBjb250YWluIHNpbmds
ZSwgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gb25lIGNhbiB1c2UKKyAqIFUxNl8uLi5fVU5T
QUZFIG1hY3Jvcy4KKyAqIFRoZXNlIGRvIG5vdCBjaGVjayBmb3IgcHJvcGVyIGNvZGUgdW5pdCBz
ZXF1ZW5jZXMgb3IgdHJ1bmNhdGVkIHRleHQgYW5kIG1heQorICogeWllbGQgd3JvbmcgcmVzdWx0
cyBvciBldmVuIGNhdXNlIGEgY3Jhc2ggaWYgdGhleSBhcmUgdXNlZCB3aXRoICJtYWxmb3JtZWQi
CisgKiB0ZXh0LgorICogSW4gcHJhY3RpY2UsIFUxNl8uLi5fVU5TQUZFIG1hY3JvcyB3aWxsIHBy
b2R1Y2Ugc2xpZ2h0bHkgbGVzcyBjb2RlIGJ1dAorICogc2hvdWxkIG5vdCBiZSBmYXN0ZXIgYmVj
YXVzZSB0aGUgcHJvY2Vzc2luZyBpcyBvbmx5IGRpZmZlcmVudCB3aGVuIGEKKyAqIHN1cnJvZ2F0
ZSBjb2RlIHVuaXQgaXMgZGV0ZWN0ZWQsIHdoaWNoIHdpbGwgYmUgcmFyZS4KKyAqCisgKiBTaW1p
bGFybHkgZm9yIFVURi04LCB0aGVyZSBhcmUgInNhZmUiIG1hY3JvcyB3aXRob3V0IGEgc3VmZml4
LAorICogYW5kIFU4Xy4uLl9VTlNBRkUgdmVyc2lvbnMuCisgKiBUaGUgcGVyZm9ybWFuY2UgZGlm
ZmVyZW5jZXMgYXJlIG11Y2ggbGFyZ2VyIGhlcmUgYmVjYXVzZSBVVEYtOCBwcm92aWRlcyBzbwor
ICogbWFueSBvcHBvcnR1bml0aWVzIGZvciBtYWxmb3JtZWQgc2VxdWVuY2VzLgorICogVGhlIHVu
c2FmZSBVVEYtOCBtYWNyb3MgYXJlIGVudGlyZWx5IGltcGxlbWVudGVkIGluc2lkZSB0aGUgbWFj
cm8gZGVmaW5pdGlvbnMKKyAqIGFuZCBhcmUgZmFzdCwgd2hpbGUgdGhlIHNhZmUgVVRGLTggbWFj
cm9zIGNhbGwgZnVuY3Rpb25zIGZvciBhbGwgYnV0IHRoZQorICogdHJpdmlhbCAoQVNDSUkpIGNh
c2VzLgorICoKKyAqIFVubGlrZSB3aXRoIFVURi0xNiwgbWFsZm9ybWVkIHNlcXVlbmNlcyBjYW5u
b3QgYmUgZXhwcmVzc2VkIHdpdGggZGlzdGluY3QKKyAqIGNvZGUgcG9pbnQgdmFsdWVzICgwLi5V
KzEwZmZmZikuIFRoZXkgYXJlIGluZGljYXRlZCB3aXRoIG5lZ2F0aXZlIHZhbHVlcyBpbnN0ZWFk
LgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgSUNVIFVzZXIgR3VpZGUgU3Ry
aW5ncyBjaGFwdGVyCisgKiAoaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3Vp
ZGUvKS4KKyAqCisgKiA8ZW0+VXNhZ2U6PC9lbT4KKyAqIElDVSBjb2RpbmcgZ3VpZGVsaW5lcyBm
b3IgaWYoKSBzdGF0ZW1lbnRzIHNob3VsZCBiZSBmb2xsb3dlZCB3aGVuIHVzaW5nIHRoZXNlIG1h
Y3Jvcy4KKyAqIENvbXBvdW5kIHN0YXRlbWVudHMgKGN1cmx5IGJyYWNlcyB7fSkgbXVzdCBiZSB1
c2VkICBmb3IgaWYtZWxzZS13aGlsZS4uLiAKKyAqIGJvZGllcyBhbmQgYWxsIG1hY3JvIHN0YXRl
bWVudHMgc2hvdWxkIGJlIHRlcm1pbmF0ZWQgd2l0aCBzZW1pY29sb24uCisgKgorICogQHN0YWJs
ZSBJQ1UgMi40CisgKi8KKworI2lmbmRlZiBfX1VURl9IX18KKyNkZWZpbmUgX19VVEZfSF9fCisK
KyNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgorLyogaW5jbHVkZSB0aGUgdXRmWFguaCBhZnRl
ciB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zICovCisKKy8qIHNpbmdsZS1jb2RlIHBvaW50IGRl
ZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov
CisKKy8qKgorICogVGhpcyB2YWx1ZSBpcyBpbnRlbmRlZCBmb3Igc2VudGluZWwgdmFsdWVzIGZv
ciBBUElzIHRoYXQKKyAqICh0YWtlIG9yKSByZXR1cm4gc2luZ2xlIGNvZGUgcG9pbnRzIChVQ2hh
cjMyKS4KKyAqIEl0IGlzIG91dHNpZGUgb2YgdGhlIFVuaWNvZGUgY29kZSBwb2ludCByYW5nZSAw
Li4weDEwZmZmZi4KKyAqIAorICogRm9yIGV4YW1wbGUsIGEgImRvbmUiIG9yICJlcnJvciIgdmFs
dWUgaW4gYSBuZXcgQVBJCisgKiBjb3VsZCBiZSBpbmRpY2F0ZWQgd2l0aCBVX1NFTlRJTkVMLgor
ICoKKyAqIElDVSBBUElzIGRlc2lnbmVkIGJlZm9yZSBJQ1UgMi40IHVzdWFsbHkgZGVmaW5lIHNl
cnZpY2Utc3BlY2lmaWMgImRvbmUiCisgKiB2YWx1ZXMsIG1vc3RseSAweGZmZmYuCisgKiBUaG9z
ZSBtYXkgbmVlZCB0byBiZSBkaXN0aW5ndWlzaGVkIGZyb20KKyAqIGFjdHVhbCBVK2ZmZmYgdGV4
dCBjb250ZW50cyBieSBjYWxsaW5nIGZ1bmN0aW9ucyBsaWtlCisgKiBDaGFyYWN0ZXJJdGVyYXRv
cjo6aGFzTmV4dCgpIG9yIFVuaWNvZGVTdHJpbmc6Omxlbmd0aCgpLgorICoKKyAqIEByZXR1cm4g
LTEKKyAqIEBzZWUgVUNoYXIzMgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVV9T
RU5USU5FTCAoLTEpCisKKy8qKgorICogSXMgdGhpcyBjb2RlIHBvaW50IGEgVW5pY29kZSBub25j
aGFyYWN0ZXI/CisgKiBAcGFyYW0gYyAzMi1iaXQgY29kZSBwb2ludAorICogQHJldHVybiBUUlVF
IG9yIEZBTFNFCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVX0lTX1VOSUNPREVf
Tk9OQ0hBUihjKSBcCisgICAgKChjKT49MHhmZGQwICYmIFwKKyAgICAgKCh1aW50MzJfdCkoYyk8
PTB4ZmRlZiB8fCAoKGMpJjB4ZmZmZSk9PTB4ZmZmZSkgJiYgXAorICAgICAodWludDMyX3QpKGMp
PD0weDEwZmZmZikKKworLyoqCisgKiBJcyBjIGEgVW5pY29kZSBjb2RlIHBvaW50IHZhbHVlICgw
Li5VKzEwZmZmZikKKyAqIHRoYXQgY2FuIGJlIGFzc2lnbmVkIGEgY2hhcmFjdGVyPworICoKKyAq
IENvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCBjaGFyYWN0ZXJzIGluY2x1ZGU6CisgKiAtIHNpbmds
ZSBzdXJyb2dhdGUgY29kZSBwb2ludHMgKFUrZDgwMC4uVStkZmZmLCAyMDQ4IGNvZGUgcG9pbnRz
KQorICogLSB0aGUgbGFzdCB0d28gY29kZSBwb2ludHMgb24gZWFjaCBwbGFuZSAoVStfX2ZmZmUg
YW5kIFUrX19mZmZmLCAzNCBjb2RlIHBvaW50cykKKyAqIC0gVStmZGQwLi5VK2ZkZWYgKG5ldyB3
aXRoIFVuaWNvZGUgMy4xLCAzMiBjb2RlIHBvaW50cykKKyAqIC0gdGhlIGhpZ2hlc3QgVW5pY29k
ZSBjb2RlIHBvaW50IHZhbHVlIGlzIFUrMTBmZmZmCisgKgorICogVGhpcyBtZWFucyB0aGF0IGFs
bCBjb2RlIHBvaW50cyBiZWxvdyBVK2Q4MDAgYXJlIGNoYXJhY3RlciBjb2RlIHBvaW50cywKKyAq
IGFuZCB0aGF0IGJvdW5kYXJ5IGlzIHRlc3RlZCBmaXJzdCBmb3IgcGVyZm9ybWFuY2UuCisgKgor
ICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQor
ICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVV9JU19VTklDT0RFX0NIQVIoYykgXAor
ICAgICgodWludDMyX3QpKGMpPDB4ZDgwMCB8fCBcCisgICAgICAgICgodWludDMyX3QpKGMpPjB4
ZGZmZiAmJiBcCisgICAgICAgICAodWludDMyX3QpKGMpPD0weDEwZmZmZiAmJiBcCisgICAgICAg
ICAhVV9JU19VTklDT0RFX05PTkNIQVIoYykpKQorCisjaWZuZGVmIFVfSElERV9EUkFGVF9BUEkK
KworLyoqCisgKiBJcyB0aGlzIGNvZGUgcG9pbnQgYSBCTVAgY29kZSBwb2ludCAoVSswMDAwLi5V
K2ZmZmYpPworICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gVFJVRSBv
ciBGQUxTRQorICogQGRyYWZ0IElDVSAyLjgKKyAqLworI2RlZmluZSBVX0lTX0JNUChjKSAoKHVp
bnQzMl90KShjKTw9MHhmZmZmKQorCisvKioKKyAqIElzIHRoaXMgY29kZSBwb2ludCBhIHN1cHBs
ZW1lbnRhcnkgY29kZSBwb2ludCAoVSsxMDAwMC4uVSsxMGZmZmYpPworICogQHBhcmFtIGMgMzIt
Yml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQorICogQGRyYWZ0IElDVSAy
LjgKKyAqLworI2RlZmluZSBVX0lTX1NVUFBMRU1FTlRBUlkoYykgKCh1aW50MzJfdCkoKGMpLTB4
MTAwMDApPD0weGZmZmZmKQorCisjZW5kaWYgLypVX0hJREVfRFJBRlRfQVBJKi8KKyAKKy8qKgor
ICogSXMgdGhpcyBjb2RlIHBvaW50IGEgbGVhZCBzdXJyb2dhdGUgKFUrZDgwMC4uVStkYmZmKT8K
KyAqIEBwYXJhbSBjIDMyLWJpdCBjb2RlIHBvaW50CisgKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UK
KyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFVfSVNfTEVBRChjKSAoKChjKSYweGZm
ZmZmYzAwKT09MHhkODAwKQorCisvKioKKyAqIElzIHRoaXMgY29kZSBwb2ludCBhIHRyYWlsIHN1
cnJvZ2F0ZSAoVStkYzAwLi5VK2RmZmYpPworICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQK
KyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZp
bmUgVV9JU19UUkFJTChjKSAoKChjKSYweGZmZmZmYzAwKT09MHhkYzAwKQorCisvKioKKyAqIElz
IHRoaXMgY29kZSBwb2ludCBhIHN1cnJvZ2F0ZSAoVStkODAwLi5VK2RmZmYpPworICogQHBhcmFt
IGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQorICogQHN0YWJs
ZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVV9JU19TVVJST0dBVEUoYykgKCgoYykmMHhmZmZmZjgw
MCk9PTB4ZDgwMCkKKworLyoqCisgKiBBc3N1bWluZyBjIGlzIGEgc3Vycm9nYXRlIGNvZGUgcG9p
bnQgKFVfSVNfU1VSUk9HQVRFKGMpKSwKKyAqIGlzIGl0IGEgbGVhZCBzdXJyb2dhdGU/CisgKiBA
cGFyYW0gYyAzMi1iaXQgY29kZSBwb2ludAorICogQHJldHVybiBUUlVFIG9yIEZBTFNFCisgKiBA
c3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVX0lTX1NVUlJPR0FURV9MRUFEKGMpICgoKGMp
JjB4NDAwKT09MCkKKworLyogaW5jbHVkZSB0aGUgdXRmWFguaCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2luY2x1ZGUgInVuaWNv
ZGUvdXRmOC5oIgorI2luY2x1ZGUgInVuaWNvZGUvdXRmMTYuaCIKKworLyogdXRmX29sZC5oIGNv
bnRhaW5zIGRlcHJlY2F0ZWQsIHByZS1JQ1UgMi40IGRlZmluaXRpb25zICovCisjaW5jbHVkZSAi
dW5pY29kZS91dGZfb2xkLmgiCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUv
aWN1L3VuaWNvZGUvdXRmMTYuaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0ZjE2LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JmMzg3MgotLS0gL2Rldi9udWxs
CisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0ZjE2LmgKQEAgLTAsMCArMSw2MDUg
QEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBh
bmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKKyogICBmaWxlIG5hbWU6ICB1dGYxNi5oCisqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkKKyog
ICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0CisqCisqICAgY3Jl
YXRlZCBvbjogMTk5OXNlcDA5CisqICAgY3JlYXRlZCBieTogTWFya3VzIFcuIFNjaGVyZXIKKyov
CisKKy8qKgorICogXGZpbGUKKyAqIFxicmllZiBDIEFQSTogMTYtYml0IFVuaWNvZGUgaGFuZGxp
bmcgbWFjcm9zCisgKiAKKyAqIFRoaXMgZmlsZSBkZWZpbmVzIG1hY3JvcyB0byBkZWFsIHdpdGgg
MTYtYml0IFVuaWNvZGUgKFVURi0xNikgY29kZSB1bml0cyBhbmQgc3RyaW5ncy4KKyAqIHV0ZjE2
LmggaXMgaW5jbHVkZWQgYnkgdXRmLmggYWZ0ZXIgdW5pY29kZS91bWFjaGluZS5oCisgKiBhbmQg
c29tZSBjb21tb24gZGVmaW5pdGlvbnMuCisgKgorICogRm9yIG1vcmUgaW5mb3JtYXRpb24gc2Vl
IHV0Zi5oIGFuZCB0aGUgSUNVIFVzZXIgR3VpZGUgU3RyaW5ncyBjaGFwdGVyCisgKiAoaHR0cDov
L29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvKS4KKyAqCisgKiA8ZW0+VXNhZ2U6
PC9lbT4KKyAqIElDVSBjb2RpbmcgZ3VpZGVsaW5lcyBmb3IgaWYoKSBzdGF0ZW1lbnRzIHNob3Vs
ZCBiZSBmb2xsb3dlZCB3aGVuIHVzaW5nIHRoZXNlIG1hY3Jvcy4KKyAqIENvbXBvdW5kIHN0YXRl
bWVudHMgKGN1cmx5IGJyYWNlcyB7fSkgbXVzdCBiZSB1c2VkICBmb3IgaWYtZWxzZS13aGlsZS4u
LiAKKyAqIGJvZGllcyBhbmQgYWxsIG1hY3JvIHN0YXRlbWVudHMgc2hvdWxkIGJlIHRlcm1pbmF0
ZWQgd2l0aCBzZW1pY29sb24uCisgKi8KKworI2lmbmRlZiBfX1VURjE2X0hfXworI2RlZmluZSBf
X1VURjE2X0hfXworCisvKiB1dGYuaCBtdXN0IGJlIGluY2x1ZGVkIGZpcnN0LiAqLworI2lmbmRl
ZiBfX1VURl9IX18KKyMgICBpbmNsdWRlICJ1bmljb2RlL3V0Zi5oIgorI2VuZGlmCisKKy8qIHNp
bmdsZS1jb2RlIHBvaW50IGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorICogRG9lcyB0aGlzIGNvZGUgdW5pdCBhbG9uZSBl
bmNvZGUgYSBjb2RlIHBvaW50IChCTVAsIG5vdCBhIHN1cnJvZ2F0ZSk/CisgKiBAcGFyYW0gYyAx
Ni1iaXQgY29kZSB1bml0CisgKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UKKyAqIEBzdGFibGUgSUNV
IDIuNAorICovCisjZGVmaW5lIFUxNl9JU19TSU5HTEUoYykgIVVfSVNfU1VSUk9HQVRFKGMpCisK
Ky8qKgorICogSXMgdGhpcyBjb2RlIHVuaXQgYSBsZWFkIHN1cnJvZ2F0ZSAoVStkODAwLi5VK2Ri
ZmYpPworICogQHBhcmFtIGMgMTYtYml0IGNvZGUgdW5pdAorICogQHJldHVybiBUUlVFIG9yIEZB
TFNFCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVMTZfSVNfTEVBRChjKSAoKChj
KSYweGZmZmZmYzAwKT09MHhkODAwKQorCisvKioKKyAqIElzIHRoaXMgY29kZSB1bml0IGEgdHJh
aWwgc3Vycm9nYXRlIChVK2RjMDAuLlUrZGZmZik/CisgKiBAcGFyYW0gYyAxNi1iaXQgY29kZSB1
bml0CisgKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisj
ZGVmaW5lIFUxNl9JU19UUkFJTChjKSAoKChjKSYweGZmZmZmYzAwKT09MHhkYzAwKQorCisvKioK
KyAqIElzIHRoaXMgY29kZSB1bml0IGEgc3Vycm9nYXRlIChVK2Q4MDAuLlUrZGZmZik/CisgKiBA
cGFyYW0gYyAxNi1iaXQgY29kZSB1bml0CisgKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UKKyAqIEBz
dGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9JU19TVVJST0dBVEUoYykgVV9JU19TVVJS
T0dBVEUoYykKKworLyoqCisgKiBBc3N1bWluZyBjIGlzIGEgc3Vycm9nYXRlIGNvZGUgcG9pbnQg
KFUxNl9JU19TVVJST0dBVEUoYykpLAorICogaXMgaXQgYSBsZWFkIHN1cnJvZ2F0ZT8KKyAqIEBw
YXJhbSBjIDE2LWJpdCBjb2RlIHVuaXQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQorICogQHN0
YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVTE2X0lTX1NVUlJPR0FURV9MRUFEKGMpICgoKGMp
JjB4NDAwKT09MCkKKworLyoqCisgKiBIZWxwZXIgY29uc3RhbnQgZm9yIFUxNl9HRVRfU1VQUExF
TUVOVEFSWS4KKyAqIEBpbnRlcm5hbAorICovCisjZGVmaW5lIFUxNl9TVVJST0dBVEVfT0ZGU0VU
ICgoMHhkODAwPDwxMFVMKSsweGRjMDAtMHgxMDAwMCkKKworLyoqCisgKiBHZXQgYSBzdXBwbGVt
ZW50YXJ5IGNvZGUgcG9pbnQgdmFsdWUgKFUrMTAwMDAuLlUrMTBmZmZmKQorICogZnJvbSBpdHMg
bGVhZCBhbmQgdHJhaWwgc3Vycm9nYXRlcy4KKyAqIFRoZSByZXN1bHQgaXMgdW5kZWZpbmVkIGlm
IHRoZSBpbnB1dCB2YWx1ZXMgYXJlIG5vdAorICogbGVhZCBhbmQgdHJhaWwgc3Vycm9nYXRlcy4K
KyAqCisgKiBAcGFyYW0gbGVhZCBsZWFkIHN1cnJvZ2F0ZSAoVStkODAwLi5VK2RiZmYpCisgKiBA
cGFyYW0gdHJhaWwgdHJhaWwgc3Vycm9nYXRlIChVK2RjMDAuLlUrZGZmZikKKyAqIEByZXR1cm4g
c3VwcGxlbWVudGFyeSBjb2RlIHBvaW50IChVKzEwMDAwLi5VKzEwZmZmZikKKyAqIEBzdGFibGUg
SUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9HRVRfU1VQUExFTUVOVEFSWShsZWFkLCB0cmFpbCkg
XAorICAgICgoKFVDaGFyMzIpKGxlYWQpPDwxMFVMKSsoVUNoYXIzMikodHJhaWwpLVUxNl9TVVJS
T0dBVEVfT0ZGU0VUKQorCisKKy8qKgorICogR2V0IHRoZSBsZWFkIHN1cnJvZ2F0ZSAoMHhkODAw
Li4weGRiZmYpIGZvciBhCisgKiBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQgKDB4MTAwMDAuLjB4
MTBmZmZmKS4KKyAqIEBwYXJhbSBzdXBwbGVtZW50YXJ5IDMyLWJpdCBjb2RlIHBvaW50IChVKzEw
MDAwLi5VKzEwZmZmZikKKyAqIEByZXR1cm4gbGVhZCBzdXJyb2dhdGUgKFUrZDgwMC4uVStkYmZm
KSBmb3Igc3VwcGxlbWVudGFyeQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVTE2
X0xFQUQoc3VwcGxlbWVudGFyeSkgKFVDaGFyKSgoKHN1cHBsZW1lbnRhcnkpPj4xMCkrMHhkN2Mw
KQorCisvKioKKyAqIEdldCB0aGUgdHJhaWwgc3Vycm9nYXRlICgweGRjMDAuLjB4ZGZmZikgZm9y
IGEKKyAqIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCAoMHgxMDAwMC4uMHgxMGZmZmYpLgorICog
QHBhcmFtIHN1cHBsZW1lbnRhcnkgMzItYml0IGNvZGUgcG9pbnQgKFUrMTAwMDAuLlUrMTBmZmZm
KQorICogQHJldHVybiB0cmFpbCBzdXJyb2dhdGUgKFUrZGMwMC4uVStkZmZmKSBmb3Igc3VwcGxl
bWVudGFyeQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVTE2X1RSQUlMKHN1cHBs
ZW1lbnRhcnkpIChVQ2hhcikoKChzdXBwbGVtZW50YXJ5KSYweDNmZil8MHhkYzAwKQorCisvKioK
KyAqIEhvdyBtYW55IDE2LWJpdCBjb2RlIHVuaXRzIGFyZSB1c2VkIHRvIGVuY29kZSB0aGlzIFVu
aWNvZGUgY29kZSBwb2ludD8gKDEgb3IgMikKKyAqIFRoZSByZXN1bHQgaXMgbm90IGRlZmluZWQg
aWYgYyBpcyBub3QgYSBVbmljb2RlIGNvZGUgcG9pbnQgKFUrMDAwMC4uVSsxMGZmZmYpLgorICog
QHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gMSBvciAyCisgKiBAc3RhYmxl
IElDVSAyLjQKKyAqLworI2RlZmluZSBVMTZfTEVOR1RIKGMpICgodWludDMyX3QpKGMpPD0weGZm
ZmYgPyAxIDogMikKKworLyoqCisgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgMTYtYml0IGNvZGUg
dW5pdHMgcGVyIFVuaWNvZGUgY29kZSBwb2ludCAoVSswMDAwLi5VKzEwZmZmZikuCisgKiBAcmV0
dXJuIDIKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9NQVhfTEVOR1RIIDIK
KworLyoqCisgKiBHZXQgYSBjb2RlIHBvaW50IGZyb20gYSBzdHJpbmcgYXQgYSByYW5kb20tYWNj
ZXNzIG9mZnNldCwKKyAqIHdpdGhvdXQgY2hhbmdpbmcgdGhlIG9mZnNldC4KKyAqICJVbnNhZmUi
IG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi0xNi4KKyAqCisgKiBUaGUgb2Zmc2V0IG1h
eSBwb2ludCB0byBlaXRoZXIgdGhlIGxlYWQgb3IgdHJhaWwgc3Vycm9nYXRlIHVuaXQKKyAqIGZv
ciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgaW4gd2hpY2ggY2FzZSB0aGUgbWFjcm8gd2ls
bCByZWFkCisgKiB0aGUgYWRqYWNlbnQgbWF0Y2hpbmcgc3Vycm9nYXRlIGFzIHdlbGwuCisgKiBU
aGUgcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHNpbmdsZSwg
dW5wYWlyZWQgc3Vycm9nYXRlLgorICogSXRlcmF0aW9uIHRocm91Z2ggYSBzdHJpbmcgaXMgbW9y
ZSBlZmZpY2llbnQgd2l0aCBVMTZfTkVYVF9VTlNBRkUgb3IgVTE2X05FWFQuCisgKgorICogQHBh
cmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKKyAq
IEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlCisgKiBAc2VlIFUxNl9HRVQKKyAqIEBz
dGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9HRVRfVU5TQUZFKHMsIGksIGMpIHsgXAor
ICAgIChjKT0ocylbaV07IFwKKyAgICBpZihVMTZfSVNfU1VSUk9HQVRFKGMpKSB7IFwKKyAgICAg
ICAgaWYoVTE2X0lTX1NVUlJPR0FURV9MRUFEKGMpKSB7IFwKKyAgICAgICAgICAgIChjKT1VMTZf
R0VUX1NVUFBMRU1FTlRBUlkoKGMpLCAocylbKGkpKzFdKTsgXAorICAgICAgICB9IGVsc2UgeyBc
CisgICAgICAgICAgICAoYyk9VTE2X0dFVF9TVVBQTEVNRU5UQVJZKChzKVsoaSktMV0sIChjKSk7
IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9CisKKy8qKgorICogR2V0IGEgY29kZSBwb2ludCBm
cm9tIGEgc3RyaW5nIGF0IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQsCisgKiB3aXRob3V0IGNoYW5n
aW5nIHRoZSBvZmZzZXQuCisgKiAiU2FmZSIgbWFjcm8sIGhhbmRsZXMgdW5wYWlyZWQgc3Vycm9n
YXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRhcmllcy4KKyAqCisgKiBUaGUgb2Zmc2V0
IG1heSBwb2ludCB0byBlaXRoZXIgdGhlIGxlYWQgb3IgdHJhaWwgc3Vycm9nYXRlIHVuaXQKKyAq
IGZvciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgaW4gd2hpY2ggY2FzZSB0aGUgbWFjcm8g
d2lsbCByZWFkCisgKiB0aGUgYWRqYWNlbnQgbWF0Y2hpbmcgc3Vycm9nYXRlIGFzIHdlbGwuCisg
KiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHNpbmdsZSwgdW5wYWlyZWQgc3Vycm9nYXRlLCB0
aGVuIHRoYXQgaXRzZWxmCisgKiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBvaW50Lgor
ICogSXRlcmF0aW9uIHRocm91Z2ggYSBzdHJpbmcgaXMgbW9yZSBlZmZpY2llbnQgd2l0aCBVMTZf
TkVYVF9VTlNBRkUgb3IgVTE2X05FWFQuCisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBz
dHJpbmcKKyAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJpbmcgb2Zmc2V0ICh1c3VhbGx5IDAp
CisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9aTxsZW5ndGgKKyAqIEBwYXJhbSBs
ZW5ndGggc3RyaW5nIGxlbmd0aAorICogQHBhcmFtIGMgb3V0cHV0IFVDaGFyMzIgdmFyaWFibGUK
KyAqIEBzZWUgVTE2X0dFVF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5l
IFUxNl9HRVQocywgc3RhcnQsIGksIGxlbmd0aCwgYykgeyBcCisgICAgKGMpPShzKVtpXTsgXAor
ICAgIGlmKFUxNl9JU19TVVJST0dBVEUoYykpIHsgXAorICAgICAgICB1aW50MTZfdCBfX2MyOyBc
CisgICAgICAgIGlmKFUxNl9JU19TVVJST0dBVEVfTEVBRChjKSkgeyBcCisgICAgICAgICAgICBp
ZigoaSkrMTwobGVuZ3RoKSAmJiBVMTZfSVNfVFJBSUwoX19jMj0ocylbKGkpKzFdKSkgeyBcCisg
ICAgICAgICAgICAgICAgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWSgoYyksIF9fYzIpOyBcCisg
ICAgICAgICAgICB9IFwKKyAgICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgICAgaWYoKGkpLTE+
PShzdGFydCkgJiYgVTE2X0lTX0xFQUQoX19jMj0ocylbKGkpLTFdKSkgeyBcCisgICAgICAgICAg
ICAgICAgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWShfX2MyLCAoYykpOyBcCisgICAgICAgICAg
ICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9CisKKy8qIGRlZmluaXRpb25zIHdpdGggZm9y
d2FyZCBpdGVyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov
CisKKy8qKgorICogR2V0IGEgY29kZSBwb2ludCBmcm9tIGEgc3RyaW5nIGF0IGEgY29kZSBwb2lu
dCBib3VuZGFyeSBvZmZzZXQsCisgKiBhbmQgYWR2YW5jZSB0aGUgb2Zmc2V0IHRvIHRoZSBuZXh0
IGNvZGUgcG9pbnQgYm91bmRhcnkuCisgKiAoUG9zdC1pbmNyZW1lbnRpbmcgZm9yd2FyZCBpdGVy
YXRpb24uKQorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1mb3JtZWQgVVRGLTE2Lgor
ICoKKyAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRvIHRoZSBsZWFkIHN1cnJvZ2F0ZSB1bml0Cisg
KiBmb3IgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQsIGluIHdoaWNoIGNhc2UgdGhlIG1hY3Jv
IHdpbGwgcmVhZAorICogdGhlIGZvbGxvd2luZyB0cmFpbCBzdXJyb2dhdGUgYXMgd2VsbC4KKyAq
IElmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgdHJhaWwgc3Vycm9nYXRlLCB0aGVuIHRoYXQgaXRz
ZWxmCisgKiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBvaW50LgorICogVGhlIHJlc3Vs
dCBpcyB1bmRlZmluZWQgaWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYSBzaW5nbGUsIHVucGFpcmVk
IGxlYWQgc3Vycm9nYXRlLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisg
KiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJp
YWJsZQorICogQHNlZSBVMTZfTkVYVAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUg
VTE2X05FWFRfVU5TQUZFKHMsIGksIGMpIHsgXAorICAgIChjKT0ocylbKGkpKytdOyBcCisgICAg
aWYoVTE2X0lTX0xFQUQoYykpIHsgXAorICAgICAgICAoYyk9VTE2X0dFVF9TVVBQTEVNRU5UQVJZ
KChjKSwgKHMpWyhpKSsrXSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBHZXQgYSBjb2RlIHBv
aW50IGZyb20gYSBzdHJpbmcgYXQgYSBjb2RlIHBvaW50IGJvdW5kYXJ5IG9mZnNldCwKKyAqIGFu
ZCBhZHZhbmNlIHRoZSBvZmZzZXQgdG8gdGhlIG5leHQgY29kZSBwb2ludCBib3VuZGFyeS4KKyAq
IChQb3N0LWluY3JlbWVudGluZyBmb3J3YXJkIGl0ZXJhdGlvbi4pCisgKiAiU2FmZSIgbWFjcm8s
IGhhbmRsZXMgdW5wYWlyZWQgc3Vycm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRh
cmllcy4KKyAqCisgKiBUaGUgb2Zmc2V0IG1heSBwb2ludCB0byB0aGUgbGVhZCBzdXJyb2dhdGUg
dW5pdAorICogZm9yIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50LCBpbiB3aGljaCBjYXNlIHRo
ZSBtYWNybyB3aWxsIHJlYWQKKyAqIHRoZSBmb2xsb3dpbmcgdHJhaWwgc3Vycm9nYXRlIGFzIHdl
bGwuCisgKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHRyYWlsIHN1cnJvZ2F0ZSBvcgorICog
dG8gYSBzaW5nbGUsIHVucGFpcmVkIGxlYWQgc3Vycm9nYXRlLCB0aGVuIHRoYXQgaXRzZWxmCisg
KiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBvaW50LgorICoKKyAqIEBwYXJhbSBzIGNv
bnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBpPGxlbmd0aAor
ICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3RoCisgKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIz
MiB2YXJpYWJsZQorICogQHNlZSBVMTZfTkVYVF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAor
ICovCisjZGVmaW5lIFUxNl9ORVhUKHMsIGksIGxlbmd0aCwgYykgeyBcCisgICAgKGMpPShzKVso
aSkrK107IFwKKyAgICBpZihVMTZfSVNfTEVBRChjKSkgeyBcCisgICAgICAgIHVpbnQxNl90IF9f
YzI7IFwKKyAgICAgICAgaWYoKGkpPChsZW5ndGgpICYmIFUxNl9JU19UUkFJTChfX2MyPShzKVso
aSldKSkgeyBcCisgICAgICAgICAgICArKyhpKTsgXAorICAgICAgICAgICAgKGMpPVUxNl9HRVRf
U1VQUExFTUVOVEFSWSgoYyksIF9fYzIpOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorfQorCisv
KioKKyAqIEFwcGVuZCBhIGNvZGUgcG9pbnQgdG8gYSBzdHJpbmcsIG92ZXJ3cml0aW5nIDEgb3Ig
MiBjb2RlIHVuaXRzLgorICogVGhlIG9mZnNldCBwb2ludHMgdG8gdGhlIGN1cnJlbnQgZW5kIG9m
IHRoZSBzdHJpbmcgY29udGVudHMKKyAqIGFuZCBpcyBhZHZhbmNlZCAocG9zdC1pbmNyZW1lbnQp
LgorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgYSB2YWxpZCBjb2RlIHBvaW50IGFuZCBzdWZm
aWNpZW50IHNwYWNlIGluIHRoZSBzdHJpbmcuCisgKiBPdGhlcndpc2UsIHRoZSByZXN1bHQgaXMg
dW5kZWZpbmVkLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nIGJ1ZmZlcgor
ICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAorICogQHBhcmFtIGMgY29kZSBwb2ludCB0byBhcHBl
bmQKKyAqIEBzZWUgVTE2X0FQUEVORAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUg
VTE2X0FQUEVORF9VTlNBRkUocywgaSwgYykgeyBcCisgICAgaWYoKHVpbnQzMl90KShjKTw9MHhm
ZmZmKSB7IFwKKyAgICAgICAgKHMpWyhpKSsrXT0odWludDE2X3QpKGMpOyBcCisgICAgfSBlbHNl
IHsgXAorICAgICAgICAocylbKGkpKytdPSh1aW50MTZfdCkoKChjKT4+MTApKzB4ZDdjMCk7IFwK
KyAgICAgICAgKHMpWyhpKSsrXT0odWludDE2X3QpKCgoYykmMHgzZmYpfDB4ZGMwMCk7IFwKKyAg
ICB9IFwKK30KKworLyoqCisgKiBBcHBlbmQgYSBjb2RlIHBvaW50IHRvIGEgc3RyaW5nLCBvdmVy
d3JpdGluZyAxIG9yIDIgY29kZSB1bml0cy4KKyAqIFRoZSBvZmZzZXQgcG9pbnRzIHRvIHRoZSBj
dXJyZW50IGVuZCBvZiB0aGUgc3RyaW5nIGNvbnRlbnRzCisgKiBhbmQgaXMgYWR2YW5jZWQgKHBv
c3QtaW5jcmVtZW50KS4KKyAqICJTYWZlIiBtYWNybywgY2hlY2tzIGZvciBhIHZhbGlkIGNvZGUg
cG9pbnQuCisgKiBJZiBhIHN1cnJvZ2F0ZSBwYWlyIGlzIHdyaXR0ZW4sIGNoZWNrcyBmb3Igc3Vm
ZmljaWVudCBzcGFjZSBpbiB0aGUgc3RyaW5nLgorICogSWYgdGhlIGNvZGUgcG9pbnQgaXMgbm90
IHZhbGlkIG9yIGEgdHJhaWwgc3Vycm9nYXRlIGRvZXMgbm90IGZpdCwKKyAqIHRoZW4gaXNFcnJv
ciBpcyBzZXQgdG8gVFJVRS4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZyBi
dWZmZXIKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIGk8bGVuZ3RoCisgKiBAcGFyYW0gY2Fw
YWNpdHkgc2l6ZSBvZiB0aGUgc3RyaW5nIGJ1ZmZlcgorICogQHBhcmFtIGMgY29kZSBwb2ludCB0
byBhcHBlbmQKKyAqIEBwYXJhbSBpc0Vycm9yIG91dHB1dCBVQm9vbCBzZXQgdG8gVFJVRSBpZiBh
biBlcnJvciBvY2N1cnMsIG90aGVyd2lzZSBub3QgbW9kaWZpZWQKKyAqIEBzZWUgVTE2X0FQUEVO
RF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9BUFBFTkQocywg
aSwgY2FwYWNpdHksIGMsIGlzRXJyb3IpIHsgXAorICAgIGlmKCh1aW50MzJfdCkoYyk8PTB4ZmZm
ZikgeyBcCisgICAgICAgIChzKVsoaSkrK109KHVpbnQxNl90KShjKTsgXAorICAgIH0gZWxzZSBp
ZigodWludDMyX3QpKGMpPD0weDEwZmZmZiAmJiAoaSkrMTwoY2FwYWNpdHkpKSB7IFwKKyAgICAg
ICAgKHMpWyhpKSsrXT0odWludDE2X3QpKCgoYyk+PjEwKSsweGQ3YzApOyBcCisgICAgICAgIChz
KVsoaSkrK109KHVpbnQxNl90KSgoKGMpJjB4M2ZmKXwweGRjMDApOyBcCisgICAgfSBlbHNlIC8q
IGM+MHgxMGZmZmYgb3Igbm90IGVub3VnaCBzcGFjZSAqLyB7IFwKKyAgICAgICAgKGlzRXJyb3Ip
PVRSVUU7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZHZhbmNlIHRoZSBzdHJpbmcgb2Zmc2V0
IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG5leHQuCisgKiAoUG9zdC1pbmNy
ZW1lbnRpbmcgaXRlcmF0aW9uLikKKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9y
bWVkIFVURi0xNi4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZworICogQHBh
cmFtIGkgc3RyaW5nIG9mZnNldAorICogQHNlZSBVMTZfRldEXzEKKyAqIEBzdGFibGUgSUNVIDIu
NAorICovCisjZGVmaW5lIFUxNl9GV0RfMV9VTlNBRkUocywgaSkgeyBcCisgICAgaWYoVTE2X0lT
X0xFQUQoKHMpWyhpKSsrXSkpIHsgXAorICAgICAgICArKyhpKTsgXAorICAgIH0gXAorfQorCisv
KioKKyAqIEFkdmFuY2UgdGhlIHN0cmluZyBvZmZzZXQgZnJvbSBvbmUgY29kZSBwb2ludCBib3Vu
ZGFyeSB0byB0aGUgbmV4dC4KKyAqIChQb3N0LWluY3JlbWVudGluZyBpdGVyYXRpb24uKQorICog
IlNhZmUiIG1hY3JvLCBoYW5kbGVzIHVucGFpcmVkIHN1cnJvZ2F0ZXMgYW5kIGNoZWNrcyBmb3Ig
c3RyaW5nIGJvdW5kYXJpZXMuCisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcK
KyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIGk8bGVuZ3RoCisgKiBAcGFyYW0gbGVuZ3RoIHN0
cmluZyBsZW5ndGgKKyAqIEBzZWUgVTE2X0ZXRF8xX1VOU0FGRQorICogQHN0YWJsZSBJQ1UgMi40
CisgKi8KKyNkZWZpbmUgVTE2X0ZXRF8xKHMsIGksIGxlbmd0aCkgeyBcCisgICAgaWYoVTE2X0lT
X0xFQUQoKHMpWyhpKSsrXSkgJiYgKGkpPChsZW5ndGgpICYmIFUxNl9JU19UUkFJTCgocylbaV0p
KSB7IFwKKyAgICAgICAgKysoaSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZHZhbmNlIHRo
ZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGgg
bmV4dCBvbmUsCisgKiBpLmUuLCBtb3ZlIGZvcndhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQ
b3N0LWluY3JlbWVudGluZyBpdGVyYXRpb24uKQorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMg
d2VsbC1mb3JtZWQgVVRGLTE2LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5n
CisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gbiBudW1iZXIgb2YgY29kZSBw
b2ludHMgdG8gc2tpcAorICogQHNlZSBVMTZfRldEX04KKyAqIEBzdGFibGUgSUNVIDIuNAorICov
CisjZGVmaW5lIFUxNl9GV0RfTl9VTlNBRkUocywgaSwgbikgeyBcCisgICAgaW50MzJfdCBfX049
KG4pOyBcCisgICAgd2hpbGUoX19OPjApIHsgXAorICAgICAgICBVMTZfRldEXzFfVU5TQUZFKHMs
IGkpOyBcCisgICAgICAgIC0tX19OOyBcCisgICAgfSBcCit9CisKKy8qKgorICogQWR2YW5jZSB0
aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBuLXRo
IG5leHQgb25lLAorICogaS5lLiwgbW92ZSBmb3J3YXJkIGJ5IG4gY29kZSBwb2ludHMuCisgKiAo
UG9zdC1pbmNyZW1lbnRpbmcgaXRlcmF0aW9uLikKKyAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1
bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoK
KyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zm
c2V0LCBpPGxlbmd0aAorICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3RoCisgKiBAcGFyYW0g
biBudW1iZXIgb2YgY29kZSBwb2ludHMgdG8gc2tpcAorICogQHNlZSBVMTZfRldEX05fVU5TQUZF
CisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVMTZfRldEX04ocywgaSwgbGVuZ3Ro
LCBuKSB7IFwKKyAgICBpbnQzMl90IF9fTj0obik7IFwKKyAgICB3aGlsZShfX04+MCAmJiAoaSk8
KGxlbmd0aCkpIHsgXAorICAgICAgICBVMTZfRldEXzEocywgaSwgbGVuZ3RoKTsgXAorICAgICAg
ICAtLV9fTjsgXAorICAgIH0gXAorfQorCisvKioKKyAqIEFkanVzdCBhIHJhbmRvbS1hY2Nlc3Mg
b2Zmc2V0IHRvIGEgY29kZSBwb2ludCBib3VuZGFyeQorICogYXQgdGhlIHN0YXJ0IG9mIGEgY29k
ZSBwb2ludC4KKyAqIElmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIHRoZSB0cmFpbCBzdXJyb2dhdGUg
b2YgYSBzdXJyb2dhdGUgcGFpciwKKyAqIHRoZW4gdGhlIG9mZnNldCBpcyBkZWNyZW1lbnRlZC4K
KyAqIE90aGVyd2lzZSwgaXQgaXMgbm90IG1vZGlmaWVkLgorICogIlVuc2FmZSIgbWFjcm8sIGFz
c3VtZXMgd2VsbC1mb3JtZWQgVVRGLTE2LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICog
c3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAc2VlIFUxNl9TRVRfQ1BfU1RB
UlQKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9TRVRfQ1BfU1RBUlRfVU5T
QUZFKHMsIGkpIHsgXAorICAgIGlmKFUxNl9JU19UUkFJTCgocylbaV0pKSB7IFwKKyAgICAgICAg
LS0oaSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9m
ZnNldCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkKKyAqIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUg
cG9pbnQuCisgKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byB0aGUgdHJhaWwgc3Vycm9nYXRlIG9m
IGEgc3Vycm9nYXRlIHBhaXIsCisgKiB0aGVuIHRoZSBvZmZzZXQgaXMgZGVjcmVtZW50ZWQuCisg
KiBPdGhlcndpc2UsIGl0IGlzIG5vdCBtb2RpZmllZC4KKyAqICJTYWZlIiBtYWNybywgaGFuZGxl
cyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgor
ICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQgc3Rh
cnRpbmcgc3RyaW5nIG9mZnNldCAodXN1YWxseSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNl
dCwgc3RhcnQ8PWkKKyAqIEBzZWUgVTE2X1NFVF9DUF9TVEFSVF9VTlNBRkUKKyAqIEBzdGFibGUg
SUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9TRVRfQ1BfU1RBUlQocywgc3RhcnQsIGkpIHsgXAor
ICAgIGlmKFUxNl9JU19UUkFJTCgocylbaV0pICYmIChpKT4oc3RhcnQpICYmIFUxNl9JU19MRUFE
KChzKVsoaSktMV0pKSB7IFwKKyAgICAgICAgLS0oaSk7IFwKKyAgICB9IFwKK30KKworLyogZGVm
aW5pdGlvbnMgd2l0aCBiYWNrd2FyZCBpdGVyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20g
b25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIHByZXZpb3VzIG9uZQorICogYW5kIGdldCB0
aGUgY29kZSBwb2ludCBiZXR3ZWVuIHRoZW0uCisgKiAoUHJlLWRlY3JlbWVudGluZyBiYWNrd2Fy
ZCBpdGVyYXRpb24uKQorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1mb3JtZWQgVVRG
LTE2LgorICoKKyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJp
bmcgbGVuZ3RoLgorICogSWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYSB0cmFpbCBzdXJyb2dhdGUg
dW5pdAorICogZm9yIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50LCB0aGVuIHRoZSBtYWNybyB3
aWxsIHJlYWQKKyAqIHRoZSBwcmVjZWRpbmcgbGVhZCBzdXJyb2dhdGUgYXMgd2VsbC4KKyAqIElm
IHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgbGVhZCBzdXJyb2dhdGUsIHRoZW4gdGhhdCBpdHNlbGYK
KyAqIHdpbGwgYmUgcmV0dXJuZWQgYXMgdGhlIGNvZGUgcG9pbnQuCisgKiBUaGUgcmVzdWx0IGlz
IHVuZGVmaW5lZCBpZiB0aGUgb2Zmc2V0IGlzIGJlaGluZCBhIHNpbmdsZSwgdW5wYWlyZWQgdHJh
aWwgc3Vycm9nYXRlLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBA
cGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJpYWJs
ZQorICogQHNlZSBVMTZfUFJFVgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVTE2
X1BSRVZfVU5TQUZFKHMsIGksIGMpIHsgXAorICAgIChjKT0ocylbLS0oaSldOyBcCisgICAgaWYo
VTE2X0lTX1RSQUlMKGMpKSB7IFwKKyAgICAgICAgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWSgo
cylbLS0oaSldLCAoYykpOyBcCisgICAgfSBcCit9CisKKy8qKgorICogTW92ZSB0aGUgc3RyaW5n
IG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUK
KyAqIGFuZCBnZXQgdGhlIGNvZGUgcG9pbnQgYmV0d2VlbiB0aGVtLgorICogKFByZS1kZWNyZW1l
bnRpbmcgYmFja3dhcmQgaXRlcmF0aW9uLikKKyAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1bnBh
aXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAq
IFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVuZ3RoLgor
ICogSWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYSB0cmFpbCBzdXJyb2dhdGUgdW5pdAorICogZm9y
IGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50LCB0aGVuIHRoZSBtYWNybyB3aWxsIHJlYWQKKyAq
IHRoZSBwcmVjZWRpbmcgbGVhZCBzdXJyb2dhdGUgYXMgd2VsbC4KKyAqIElmIHRoZSBvZmZzZXQg
aXMgYmVoaW5kIGEgbGVhZCBzdXJyb2dhdGUgb3IgYmVoaW5kIGEgc2luZ2xlLCB1bnBhaXJlZAor
ICogdHJhaWwgc3Vycm9nYXRlLCB0aGVuIHRoYXQgaXRzZWxmCisgKiB3aWxsIGJlIHJldHVybmVk
IGFzIHRoZSBjb2RlIHBvaW50LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5n
CisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9mZnNldCAodXN1YWxseSAwKQorICog
QHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWkKKyAqIEBwYXJhbSBjIG91dHB1dCBVQ2hh
cjMyIHZhcmlhYmxlCisgKiBAc2VlIFUxNl9QUkVWX1VOU0FGRQorICogQHN0YWJsZSBJQ1UgMi40
CisgKi8KKyNkZWZpbmUgVTE2X1BSRVYocywgc3RhcnQsIGksIGMpIHsgXAorICAgIChjKT0ocylb
LS0oaSldOyBcCisgICAgaWYoVTE2X0lTX1RSQUlMKGMpKSB7IFwKKyAgICAgICAgdWludDE2X3Qg
X19jMjsgXAorICAgICAgICBpZigoaSk+KHN0YXJ0KSAmJiBVMTZfSVNfTEVBRChfX2MyPShzKVso
aSktMV0pKSB7IFwKKyAgICAgICAgICAgIC0tKGkpOyBcCisgICAgICAgICAgICAoYyk9VTE2X0dF
VF9TVVBQTEVNRU5UQVJZKF9fYzIsIChjKSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9CisK
Ky8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5k
YXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUuCisgKiAoUHJlLWRlY3JlbWVudGluZyBiYWNrd2FyZCBp
dGVyYXRpb24uKQorICogVGhlIGlucHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMgdGhlIHN0
cmluZyBsZW5ndGguCisgKiAiVW5zYWZlIiBtYWNybywgYXNzdW1lcyB3ZWxsLWZvcm1lZCBVVEYt
MTYuCisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0
cmluZyBvZmZzZXQKKyAqIEBzZWUgVTE2X0JBQ0tfMQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8K
KyNkZWZpbmUgVTE2X0JBQ0tfMV9VTlNBRkUocywgaSkgeyBcCisgICAgaWYoVTE2X0lTX1RSQUlM
KChzKVstLShpKV0pKSB7IFwKKyAgICAgICAgLS0oaSk7IFwKKyAgICB9IFwKK30KKworLyoqCisg
KiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8g
dGhlIHByZXZpb3VzIG9uZS4KKyAqIChQcmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlv
bi4pCisgKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxl
bmd0aC4KKyAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBj
aGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFy
ICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9mZnNldCAodXN1YWxs
eSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWkKKyAqIEBzZWUgVTE2X0JB
Q0tfMV9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9CQUNLXzEo
cywgc3RhcnQsIGkpIHsgXAorICAgIGlmKFUxNl9JU19UUkFJTCgocylbLS0oaSldKSAmJiAoaSk+
KHN0YXJ0KSAmJiBVMTZfSVNfTEVBRCgocylbKGkpLTFdKSkgeyBcCisgICAgICAgIC0tKGkpOyBc
CisgICAgfSBcCit9CisKKy8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBj
b2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBuLXRoIG9uZSBiZWZvcmUgaXQsCisgKiBpLmUuLCBt
b3ZlIGJhY2t3YXJkIGJ5IG4gY29kZSBwb2ludHMuCisgKiAoUHJlLWRlY3JlbWVudGluZyBiYWNr
d2FyZCBpdGVyYXRpb24uKQorICogVGhlIGlucHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMg
dGhlIHN0cmluZyBsZW5ndGguCisgKiAiVW5zYWZlIiBtYWNybywgYXNzdW1lcyB3ZWxsLWZvcm1l
ZCBVVEYtMTYuCisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJh
bSBpIHN0cmluZyBvZmZzZXQKKyAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50cyB0byBz
a2lwCisgKiBAc2VlIFUxNl9CQUNLX04KKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5l
IFUxNl9CQUNLX05fVU5TQUZFKHMsIGksIG4pIHsgXAorICAgIGludDMyX3QgX19OPShuKTsgXAor
ICAgIHdoaWxlKF9fTj4wKSB7IFwKKyAgICAgICAgVTE2X0JBQ0tfMV9VTlNBRkUocywgaSk7IFwK
KyAgICAgICAgLS1fX047IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJpbmcg
b2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggb25lIGJlZm9y
ZSBpdCwKKyAqIGkuZS4sIG1vdmUgYmFja3dhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQcmUt
ZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCisgKiBUaGUgaW5wdXQgb2Zmc2V0IG1h
eSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAqICJTYWZlIiBtYWNybywgaGFu
ZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVz
LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQg
c3RhcnQgb2Ygc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBpPGxlbmd0aAorICog
QHBhcmFtIG4gbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRvIHNraXAKKyAqIEBzZWUgVTE2X0JBQ0tf
Tl9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9CQUNLX04ocywg
c3RhcnQsIGksIG4pIHsgXAorICAgIGludDMyX3QgX19OPShuKTsgXAorICAgIHdoaWxlKF9fTj4w
ICYmIChpKT4oc3RhcnQpKSB7IFwKKyAgICAgICAgVTE2X0JBQ0tfMShzLCBzdGFydCwgaSk7IFwK
KyAgICAgICAgLS1fX047IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZGp1c3QgYSByYW5kb20t
YWNjZXNzIG9mZnNldCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkgYWZ0ZXIgYSBjb2RlIHBvaW50
LgorICogSWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgdGhlIGxlYWQgc3Vycm9nYXRlIG9mIGEgc3Vy
cm9nYXRlIHBhaXIsCisgKiB0aGVuIHRoZSBvZmZzZXQgaXMgaW5jcmVtZW50ZWQuCisgKiBPdGhl
cndpc2UsIGl0IGlzIG5vdCBtb2RpZmllZC4KKyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRo
ZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVuZ3RoLgorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMg
d2VsbC1mb3JtZWQgVVRGLTE2LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5n
CisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAc2VlIFUxNl9TRVRfQ1BfTElNSVQKKyAq
IEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9TRVRfQ1BfTElNSVRfVU5TQUZFKHMs
IGkpIHsgXAorICAgIGlmKFUxNl9JU19MRUFEKChzKVsoaSktMV0pKSB7IFwKKyAgICAgICAgKyso
aSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9mZnNl
dCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkgYWZ0ZXIgYSBjb2RlIHBvaW50LgorICogSWYgdGhl
IG9mZnNldCBpcyBiZWhpbmQgdGhlIGxlYWQgc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXIs
CisgKiB0aGVuIHRoZSBvZmZzZXQgaXMgaW5jcmVtZW50ZWQuCisgKiBPdGhlcndpc2UsIGl0IGlz
IG5vdCBtb2RpZmllZC4KKyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRo
ZSBzdHJpbmcgbGVuZ3RoLgorICogIlNhZmUiIG1hY3JvLCBoYW5kbGVzIHVucGFpcmVkIHN1cnJv
Z2F0ZXMgYW5kIGNoZWNrcyBmb3Igc3RyaW5nIGJvdW5kYXJpZXMuCisgKgorICogQHBhcmFtIHMg
Y29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJpbmcgb2Zm
c2V0ICh1c3VhbGx5IDApCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9aTw9bGVu
Z3RoCisgKiBAcGFyYW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgKKyAqIEBzZWUgVTE2X1NFVF9DUF9M
SU1JVF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9TRVRfQ1Bf
TElNSVQocywgc3RhcnQsIGksIGxlbmd0aCkgeyBcCisgICAgaWYoKHN0YXJ0KTwoaSkgJiYgKGkp
PChsZW5ndGgpICYmIFUxNl9JU19MRUFEKChzKVsoaSktMV0pICYmIFUxNl9JU19UUkFJTCgocylb
aV0pKSB7IFwKKyAgICAgICAgKysoaSk7IFwKKyAgICB9IFwKK30KKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dGY4LmggYi9KYXZhU2NyaXB0R2x1ZS9p
Y3UvdW5pY29kZS91dGY4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgz
NjYyYgotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0Zjgu
aApAQCAtMCwwICsxLDYyNyBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwor
KiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKgorKiAgIGZpbGUgbmFtZTogIHV0ZjguaAorKiAgIGVuY29kaW5n
OiAgIFVTLUFTQ0lJCisqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50YXRp
b246NAorKgorKiAgIGNyZWF0ZWQgb246IDE5OTlzZXAxMworKiAgIGNyZWF0ZWQgYnk6IE1hcmt1
cyBXLiBTY2hlcmVyCisqLworCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6IDgtYml0
IFVuaWNvZGUgaGFuZGxpbmcgbWFjcm9zCisgKiAKKyAqIFRoaXMgZmlsZSBkZWZpbmVzIG1hY3Jv
cyB0byBkZWFsIHdpdGggOC1iaXQgVW5pY29kZSAoVVRGLTgpIGNvZGUgdW5pdHMgKGJ5dGVzKSBh
bmQgc3RyaW5ncy4KKyAqIHV0ZjguaCBpcyBpbmNsdWRlZCBieSB1dGYuaCBhZnRlciB1bmljb2Rl
L3VtYWNoaW5lLmgKKyAqIGFuZCBzb21lIGNvbW1vbiBkZWZpbml0aW9ucy4KKyAqCisgKiBGb3Ig
bW9yZSBpbmZvcm1hdGlvbiBzZWUgdXRmLmggYW5kIHRoZSBJQ1UgVXNlciBHdWlkZSBTdHJpbmdz
IGNoYXB0ZXIKKyAqIChodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS8p
LgorICoKKyAqIDxlbT5Vc2FnZTo8L2VtPgorICogSUNVIGNvZGluZyBndWlkZWxpbmVzIGZvciBp
ZigpIHN0YXRlbWVudHMgc2hvdWxkIGJlIGZvbGxvd2VkIHdoZW4gdXNpbmcgdGhlc2UgbWFjcm9z
LgorICogQ29tcG91bmQgc3RhdGVtZW50cyAoY3VybHkgYnJhY2VzIHt9KSBtdXN0IGJlIHVzZWQg
IGZvciBpZi1lbHNlLXdoaWxlLi4uIAorICogYm9kaWVzIGFuZCBhbGwgbWFjcm8gc3RhdGVtZW50
cyBzaG91bGQgYmUgdGVybWluYXRlZCB3aXRoIHNlbWljb2xvbi4KKyAqLworCisjaWZuZGVmIF9f
VVRGOF9IX18KKyNkZWZpbmUgX19VVEY4X0hfXworCisvKiB1dGYuaCBtdXN0IGJlIGluY2x1ZGVk
IGZpcnN0LiAqLworI2lmbmRlZiBfX1VURl9IX18KKyMgICBpbmNsdWRlICJ1bmljb2RlL3V0Zi5o
IgorI2VuZGlmCisKKy8qIGludGVybmFsIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorICogXHZhciB1dGY4
X2NvdW50VHJhaWxCeXRlcworICogSW50ZXJuYWwgYXJyYXkgd2l0aCBudW1iZXJzIG9mIHRyYWls
IGJ5dGVzIGZvciBhbnkgZ2l2ZW4gYnl0ZSB1c2VkIGluCisgKiBsZWFkIGJ5dGUgcG9zaXRpb24u
CisgKiBAaW50ZXJuYWwKKyAqLworI2lmZGVmIFVfVVRGOF9JTVBMCitVX0lOVEVSTkFMIGNvbnN0
IHVpbnQ4X3QgCisjZWxpZiBkZWZpbmVkKFVfU1RBVElDX0lNUExFTUVOVEFUSU9OKQorVV9DRlVO
QyBjb25zdCB1aW50OF90CisjZWxzZQorVV9DRlVOQyBVX0lNUE9SVCBjb25zdCB1aW50OF90IC8q
IFVfSU1QT1JUMj8gKi8gLypVX0lNUE9SVCovIAorI2VuZGlmCit1dGY4X2NvdW50VHJhaWxCeXRl
c1syNTZdOworCisvKioKKyAqIENvdW50IHRoZSB0cmFpbCBieXRlcyBmb3IgYSBVVEYtOCBsZWFk
IGJ5dGUuCisgKiBAaW50ZXJuYWwKKyAqLworI2RlZmluZSBVOF9DT1VOVF9UUkFJTF9CWVRFUyhs
ZWFkQnl0ZSkgKHV0ZjhfY291bnRUcmFpbEJ5dGVzWyh1aW50OF90KWxlYWRCeXRlXSkKKworLyoq
CisgKiBNYXNrIGEgVVRGLTggbGVhZCBieXRlLCBsZWF2ZSBvbmx5IHRoZSBsb3dlciBiaXRzIHRo
YXQgZm9ybSBwYXJ0IG9mIHRoZSBjb2RlIHBvaW50IHZhbHVlLgorICogQGludGVybmFsCisgKi8K
KyNkZWZpbmUgVThfTUFTS19MRUFEX0JZVEUobGVhZEJ5dGUsIGNvdW50VHJhaWxCeXRlcykgKChs
ZWFkQnl0ZSkmPSgxPDwoNi0oY291bnRUcmFpbEJ5dGVzKSkpLTEpCisKKy8qKgorICogRnVuY3Rp
b24gZm9yIGhhbmRsaW5nICJuZXh0IGNvZGUgcG9pbnQiIHdpdGggZXJyb3ItY2hlY2tpbmcuCisg
KiBAaW50ZXJuYWwKKyAqLworVV9JTlRFUk5BTCBVQ2hhcjMyIFVfRVhQT1JUMgordXRmOF9uZXh0
Q2hhclNhZmVCb2R5KGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3QgKnBpLCBpbnQzMl90IGxlbmd0
aCwgVUNoYXIzMiBjLCBVQm9vbCBzdHJpY3QpOworCisvKioKKyAqIEZ1bmN0aW9uIGZvciBoYW5k
bGluZyAiYXBwZW5kIGNvZGUgcG9pbnQiIHdpdGggZXJyb3ItY2hlY2tpbmcuCisgKiBAaW50ZXJu
YWwKKyAqLworVV9JTlRFUk5BTCBpbnQzMl90IFVfRVhQT1JUMgordXRmOF9hcHBlbmRDaGFyU2Fm
ZUJvZHkodWludDhfdCAqcywgaW50MzJfdCBpLCBpbnQzMl90IGxlbmd0aCwgVUNoYXIzMiBjLCBV
Qm9vbCAqcElzRXJyb3IpOworCisvKioKKyAqIEZ1bmN0aW9uIGZvciBoYW5kbGluZyAicHJldmlv
dXMgY29kZSBwb2ludCIgd2l0aCBlcnJvci1jaGVja2luZy4KKyAqIEBpbnRlcm5hbAorICovCitV
X0lOVEVSTkFMIFVDaGFyMzIgVV9FWFBPUlQyCit1dGY4X3ByZXZDaGFyU2FmZUJvZHkoY29uc3Qg
dWludDhfdCAqcywgaW50MzJfdCBzdGFydCwgaW50MzJfdCAqcGksIFVDaGFyMzIgYywgVUJvb2wg
c3RyaWN0KTsKKworLyoqCisgKiBGdW5jdGlvbiBmb3IgaGFuZGxpbmcgInNraXAgYmFja3dhcmQg
b25lIGNvZGUgcG9pbnQiIHdpdGggZXJyb3ItY2hlY2tpbmcuCisgKiBAaW50ZXJuYWwKKyAqLwor
VV9JTlRFUk5BTCBpbnQzMl90IFVfRVhQT1JUMgordXRmOF9iYWNrMVNhZmVCb2R5KGNvbnN0IHVp
bnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CisKKy8qIHNpbmdsZS1jb2RlIHBv
aW50IGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tICovCisKKy8qKgorICogRG9lcyB0aGlzIGNvZGUgdW5pdCAoYnl0ZSkgZW5jb2RlIGEgY29k
ZSBwb2ludCBieSBpdHNlbGYgKFVTLUFTQ0lJIDAuLjB4N2YpPworICogQHBhcmFtIGMgOC1iaXQg
Y29kZSB1bml0IChieXRlKQorICogQHJldHVybiBUUlVFIG9yIEZBTFNFCisgKiBAc3RhYmxlIElD
VSAyLjQKKyAqLworI2RlZmluZSBVOF9JU19TSU5HTEUoYykgKCgoYykmMHg4MCk9PTApCisKKy8q
KgorICogSXMgdGhpcyBjb2RlIHVuaXQgKGJ5dGUpIGEgVVRGLTggbGVhZCBieXRlPworICogQHBh
cmFtIGMgOC1iaXQgY29kZSB1bml0IChieXRlKQorICogQHJldHVybiBUUlVFIG9yIEZBTFNFCisg
KiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9JU19MRUFEKGMpICgodWludDhfdCko
KGMpLTB4YzApPDB4M2UpCisKKy8qKgorICogSXMgdGhpcyBjb2RlIHVuaXQgKGJ5dGUpIGEgVVRG
LTggdHJhaWwgYnl0ZT8KKyAqIEBwYXJhbSBjIDgtYml0IGNvZGUgdW5pdCAoYnl0ZSkKKyAqIEBy
ZXR1cm4gVFJVRSBvciBGQUxTRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThf
SVNfVFJBSUwoYykgKCgoYykmMHhjMCk9PTB4ODApCisKKy8qKgorICogSG93IG1hbnkgY29kZSB1
bml0cyAoYnl0ZXMpIGFyZSB1c2VkIGZvciB0aGUgVVRGLTggZW5jb2RpbmcKKyAqIG9mIHRoaXMg
VW5pY29kZSBjb2RlIHBvaW50PworICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEBy
ZXR1cm4gMS4uNCwgb3IgMCBpZiBjIGlzIGEgc3Vycm9nYXRlIG9yIG5vdCBhIFVuaWNvZGUgY29k
ZSBwb2ludAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfTEVOR1RIKGMpIFwK
KyAgICAoKHVpbnQzMl90KShjKTw9MHg3ZiA/IDEgOiBcCisgICAgICAgICgodWludDMyX3QpKGMp
PD0weDdmZiA/IDIgOiBcCisgICAgICAgICAgICAoKHVpbnQzMl90KShjKTw9MHhkN2ZmID8gMyA6
IFwKKyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShjKTw9MHhkZmZmIHx8ICh1aW50MzJfdCko
Yyk+MHgxMGZmZmYgPyAwIDogXAorICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShjKTw9
MHhmZmZmID8gMyA6IDQpXAorICAgICAgICAgICAgICAgICkgXAorICAgICAgICAgICAgKSBcCisg
ICAgICAgICkgXAorICAgICkKKworLyoqCisgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgVVRGLTgg
Y29kZSB1bml0cyAoYnl0ZXMpIHBlciBVbmljb2RlIGNvZGUgcG9pbnQgKFUrMDAwMC4uVSsxMGZm
ZmYpLgorICogQHJldHVybiA0CisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9N
QVhfTEVOR1RIIDQKKworLyoqCisgKiBHZXQgYSBjb2RlIHBvaW50IGZyb20gYSBzdHJpbmcgYXQg
YSByYW5kb20tYWNjZXNzIG9mZnNldCwKKyAqIHdpdGhvdXQgY2hhbmdpbmcgdGhlIG9mZnNldC4K
KyAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRvIGVpdGhlciB0aGUgbGVhZCBieXRlIG9yIG9uZSBv
ZiB0aGUgdHJhaWwgYnl0ZXMKKyAqIGZvciBhIGNvZGUgcG9pbnQsIGluIHdoaWNoIGNhc2UgdGhl
IG1hY3JvIHdpbGwgcmVhZCBhbGwgb2YgdGhlIGJ5dGVzCisgKiBmb3IgdGhlIGNvZGUgcG9pbnQu
CisgKiBUaGUgcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhbiBp
bGxlZ2FsIFVURi04CisgKiBieXRlIHNlcXVlbmNlLgorICogSXRlcmF0aW9uIHRocm91Z2ggYSBz
dHJpbmcgaXMgbW9yZSBlZmZpY2llbnQgd2l0aCBVOF9ORVhUX1VOU0FGRSBvciBVOF9ORVhULgor
ICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0cmlu
ZyBvZmZzZXQKKyAqIEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlCisgKiBAc2VlIFU4
X0dFVAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfR0VUX1VOU0FGRShzLCBp
LCBjKSB7IFwKKyAgICBpbnQzMl90IF91OF9nZXRfdW5zYWZlX2luZGV4PShpbnQzMl90KShpKTsg
XAorICAgIFU4X1NFVF9DUF9TVEFSVF9VTlNBRkUocywgX3U4X2dldF91bnNhZmVfaW5kZXgpOyBc
CisgICAgVThfTkVYVF9VTlNBRkUocywgX3U4X2dldF91bnNhZmVfaW5kZXgsIGMpOyBcCit9CisK
Ky8qKgorICogR2V0IGEgY29kZSBwb2ludCBmcm9tIGEgc3RyaW5nIGF0IGEgcmFuZG9tLWFjY2Vz
cyBvZmZzZXQsCisgKiB3aXRob3V0IGNoYW5naW5nIHRoZSBvZmZzZXQuCisgKiBUaGUgb2Zmc2V0
IG1heSBwb2ludCB0byBlaXRoZXIgdGhlIGxlYWQgYnl0ZSBvciBvbmUgb2YgdGhlIHRyYWlsIGJ5
dGVzCisgKiBmb3IgYSBjb2RlIHBvaW50LCBpbiB3aGljaCBjYXNlIHRoZSBtYWNybyB3aWxsIHJl
YWQgYWxsIG9mIHRoZSBieXRlcworICogZm9yIHRoZSBjb2RlIHBvaW50LgorICogSWYgdGhlIG9m
ZnNldCBwb2ludHMgdG8gYW4gaWxsZWdhbCBVVEYtOCBieXRlIHNlcXVlbmNlLCB0aGVuCisgKiBj
IGlzIHNldCB0byBhIG5lZ2F0aXZlIHZhbHVlLgorICogSXRlcmF0aW9uIHRocm91Z2ggYSBzdHJp
bmcgaXMgbW9yZSBlZmZpY2llbnQgd2l0aCBVOF9ORVhUX1VOU0FGRSBvciBVOF9ORVhULgorICoK
KyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBzdGFy
dGluZyBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9aTxs
ZW5ndGgKKyAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICogQHBhcmFtIGMgb3V0cHV0
IFVDaGFyMzIgdmFyaWFibGUsIHNldCB0byA8MCBpbiBjYXNlIG9mIGFuIGVycm9yCisgKiBAc2Vl
IFU4X0dFVF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFU4X0dFVChz
LCBzdGFydCwgaSwgbGVuZ3RoLCBjKSB7IFwKKyAgICBpbnQzMl90IF91OF9nZXRfaW5kZXg9KGlu
dDMyX3QpKGkpOyBcCisgICAgVThfU0VUX0NQX1NUQVJUKHMsIHN0YXJ0LCBfdThfZ2V0X2luZGV4
KTsgXAorICAgIFU4X05FWFQocywgX3U4X2dldF9pbmRleCwgbGVuZ3RoLCBjKTsgXAorfQorCisv
KiBkZWZpbml0aW9ucyB3aXRoIGZvcndhcmQgaXRlcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKKyAqIEdldCBhIGNvZGUgcG9pbnQgZnJvbSBh
IHN0cmluZyBhdCBhIGNvZGUgcG9pbnQgYm91bmRhcnkgb2Zmc2V0LAorICogYW5kIGFkdmFuY2Ug
dGhlIG9mZnNldCB0byB0aGUgbmV4dCBjb2RlIHBvaW50IGJvdW5kYXJ5LgorICogKFBvc3QtaW5j
cmVtZW50aW5nIGZvcndhcmQgaXRlcmF0aW9uLikKKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVz
IHdlbGwtZm9ybWVkIFVURi04LgorICoKKyAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRvIHRoZSBs
ZWFkIGJ5dGUgb2YgYSBtdWx0aS1ieXRlIHNlcXVlbmNlLAorICogaW4gd2hpY2ggY2FzZSB0aGUg
bWFjcm8gd2lsbCByZWFkIHRoZSB3aG9sZSBzZXF1ZW5jZS4KKyAqIFRoZSByZXN1bHQgaXMgdW5k
ZWZpbmVkIGlmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgdHJhaWwgYnl0ZQorICogb3IgYW4gaWxs
ZWdhbCBVVEYtOCBzZXF1ZW5jZS4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3Ry
aW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIz
MiB2YXJpYWJsZQorICogQHNlZSBVOF9ORVhUCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2Rl
ZmluZSBVOF9ORVhUX1VOU0FGRShzLCBpLCBjKSB7IFwKKyAgICAoYyk9KHMpWyhpKSsrXTsgXAor
ICAgIGlmKCh1aW50OF90KSgoYyktMHhjMCk8MHgzNSkgeyBcCisgICAgICAgIHVpbnQ4X3QgX19j
b3VudD1VOF9DT1VOVF9UUkFJTF9CWVRFUyhjKTsgXAorICAgICAgICBVOF9NQVNLX0xFQURfQllU
RShjLCBfX2NvdW50KTsgXAorICAgICAgICBzd2l0Y2goX19jb3VudCkgeyBcCisgICAgICAgIC8q
IGVhY2ggZm9sbG93aW5nIGJyYW5jaCBmYWxscyB0aHJvdWdoIHRvIHRoZSBuZXh0IG9uZSAqLyBc
CisgICAgICAgIGNhc2UgMzogXAorICAgICAgICAgICAgKGMpPSgoYyk8PDYpfCgocylbKGkpKytd
JjB4M2YpOyBcCisgICAgICAgIGNhc2UgMjogXAorICAgICAgICAgICAgKGMpPSgoYyk8PDYpfCgo
cylbKGkpKytdJjB4M2YpOyBcCisgICAgICAgIGNhc2UgMTogXAorICAgICAgICAgICAgKGMpPSgo
Yyk8PDYpfCgocylbKGkpKytdJjB4M2YpOyBcCisgICAgICAgIC8qIG5vIG90aGVyIGJyYW5jaGVz
IHRvIG9wdGltaXplIHN3aXRjaCgpICovIFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAg
IH0gXAorICAgIH0gXAorfQorCisvKioKKyAqIEdldCBhIGNvZGUgcG9pbnQgZnJvbSBhIHN0cmlu
ZyBhdCBhIGNvZGUgcG9pbnQgYm91bmRhcnkgb2Zmc2V0LAorICogYW5kIGFkdmFuY2UgdGhlIG9m
ZnNldCB0byB0aGUgbmV4dCBjb2RlIHBvaW50IGJvdW5kYXJ5LgorICogKFBvc3QtaW5jcmVtZW50
aW5nIGZvcndhcmQgaXRlcmF0aW9uLikKKyAqICJTYWZlIiBtYWNybywgY2hlY2tzIGZvciBpbGxl
Z2FsIHNlcXVlbmNlcyBhbmQgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIFRoZSBvZmZz
ZXQgbWF5IHBvaW50IHRvIHRoZSBsZWFkIGJ5dGUgb2YgYSBtdWx0aS1ieXRlIHNlcXVlbmNlLAor
ICogaW4gd2hpY2ggY2FzZSB0aGUgbWFjcm8gd2lsbCByZWFkIHRoZSB3aG9sZSBzZXF1ZW5jZS4K
KyAqIElmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgdHJhaWwgYnl0ZSBvciBhbiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlLCB0aGVuCisgKiBjIGlzIHNldCB0byBhIG5lZ2F0aXZlIHZhbHVlLgorICoK
KyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0cmluZyBv
ZmZzZXQsIGk8bGVuZ3RoCisgKiBAcGFyYW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgKKyAqIEBwYXJh
bSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlLCBzZXQgdG8gPDAgaW4gY2FzZSBvZiBhbiBlcnJv
cgorICogQHNlZSBVOF9ORVhUX1VOU0FGRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZp
bmUgVThfTkVYVChzLCBpLCBsZW5ndGgsIGMpIHsgXAorICAgIChjKT0ocylbKGkpKytdOyBcCisg
ICAgaWYoKCh1aW50OF90KShjKSk+PTB4ODApIHsgXAorICAgICAgICBpZihVOF9JU19MRUFEKGMp
KSB7IFwKKyAgICAgICAgICAgIChjKT11dGY4X25leHRDaGFyU2FmZUJvZHkoKGNvbnN0IHVpbnQ4
X3QgKilzLCAmKGkpLCAoaW50MzJfdCkobGVuZ3RoKSwgYywgLTEpOyBcCisgICAgICAgIH0gZWxz
ZSB7IFwKKyAgICAgICAgICAgIChjKT1VX1NFTlRJTkVMOyBcCisgICAgICAgIH0gXAorICAgIH0g
XAorfQorCisvKioKKyAqIEFwcGVuZCBhIGNvZGUgcG9pbnQgdG8gYSBzdHJpbmcsIG92ZXJ3cml0
aW5nIDEgdG8gNCBieXRlcy4KKyAqIFRoZSBvZmZzZXQgcG9pbnRzIHRvIHRoZSBjdXJyZW50IGVu
ZCBvZiB0aGUgc3RyaW5nIGNvbnRlbnRzCisgKiBhbmQgaXMgYWR2YW5jZWQgKHBvc3QtaW5jcmVt
ZW50KS4KKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIGEgdmFsaWQgY29kZSBwb2ludCBhbmQg
c3VmZmljaWVudCBzcGFjZSBpbiB0aGUgc3RyaW5nLgorICogT3RoZXJ3aXNlLCB0aGUgcmVzdWx0
IGlzIHVuZGVmaW5lZC4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5nIGJ1
ZmZlcgorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAorICogQHBhcmFtIGMgY29kZSBwb2ludCB0
byBhcHBlbmQKKyAqIEBzZWUgVThfQVBQRU5ECisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2Rl
ZmluZSBVOF9BUFBFTkRfVU5TQUZFKHMsIGksIGMpIHsgXAorICAgIGlmKCh1aW50MzJfdCkoYyk8
PTB4N2YpIHsgXAorICAgICAgICAocylbKGkpKytdPSh1aW50OF90KShjKTsgXAorICAgIH0gZWxz
ZSB7IFwKKyAgICAgICAgaWYoKHVpbnQzMl90KShjKTw9MHg3ZmYpIHsgXAorICAgICAgICAgICAg
KHMpWyhpKSsrXT0odWludDhfdCkoKChjKT4+Nil8MHhjMCk7IFwKKyAgICAgICAgfSBlbHNlIHsg
XAorICAgICAgICAgICAgaWYoKHVpbnQzMl90KShjKTw9MHhmZmZmKSB7IFwKKyAgICAgICAgICAg
ICAgICAocylbKGkpKytdPSh1aW50OF90KSgoKGMpPj4xMil8MHhlMCk7IFwKKyAgICAgICAgICAg
IH0gZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAocylbKGkpKytdPSh1aW50OF90KSgoKGMpPj4x
OCl8MHhmMCk7IFwKKyAgICAgICAgICAgICAgICAocylbKGkpKytdPSh1aW50OF90KSgoKChjKT4+
MTIpJjB4M2YpfDB4ODApOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIChzKVsoaSkr
K109KHVpbnQ4X3QpKCgoKGMpPj42KSYweDNmKXwweDgwKTsgXAorICAgICAgICB9IFwKKyAgICAg
ICAgKHMpWyhpKSsrXT0odWludDhfdCkoKChjKSYweDNmKXwweDgwKTsgXAorICAgIH0gXAorfQor
CisvKioKKyAqIEFwcGVuZCBhIGNvZGUgcG9pbnQgdG8gYSBzdHJpbmcsIG92ZXJ3cml0aW5nIDEg
b3IgMiBjb2RlIHVuaXRzLgorICogVGhlIG9mZnNldCBwb2ludHMgdG8gdGhlIGN1cnJlbnQgZW5k
IG9mIHRoZSBzdHJpbmcgY29udGVudHMKKyAqIGFuZCBpcyBhZHZhbmNlZCAocG9zdC1pbmNyZW1l
bnQpLgorICogIlNhZmUiIG1hY3JvLCBjaGVja3MgZm9yIGEgdmFsaWQgY29kZSBwb2ludC4KKyAq
IElmIGEgbm9uLUFTQ0lJIGNvZGUgcG9pbnQgaXMgd3JpdHRlbiwgY2hlY2tzIGZvciBzdWZmaWNp
ZW50IHNwYWNlIGluIHRoZSBzdHJpbmcuCisgKiBJZiB0aGUgY29kZSBwb2ludCBpcyBub3QgdmFs
aWQgb3IgdHJhaWwgYnl0ZXMgZG8gbm90IGZpdCwKKyAqIHRoZW4gaXNFcnJvciBpcyBzZXQgdG8g
VFJVRS4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5nIGJ1ZmZlcgorICog
QHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5ndGgKKyAqIEBwYXJhbSBsZW5ndGggc2l6ZSBv
ZiB0aGUgc3RyaW5nIGJ1ZmZlcgorICogQHBhcmFtIGMgY29kZSBwb2ludCB0byBhcHBlbmQKKyAq
IEBwYXJhbSBpc0Vycm9yIG91dHB1dCBVQm9vbCBzZXQgdG8gVFJVRSBpZiBhbiBlcnJvciBvY2N1
cnMsIG90aGVyd2lzZSBub3QgbW9kaWZpZWQKKyAqIEBzZWUgVThfQVBQRU5EX1VOU0FGRQorICog
QHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfQVBQRU5EKHMsIGksIGxlbmd0aCwgYywg
aXNFcnJvcikgeyBcCisgICAgaWYoKHVpbnQzMl90KShjKTw9MHg3ZikgeyBcCisgICAgICAgIChz
KVsoaSkrK109KHVpbnQ4X3QpKGMpOyBcCisgICAgfSBlbHNlIHsgXAorICAgICAgICAoaSk9dXRm
OF9hcHBlbmRDaGFyU2FmZUJvZHkocywgKGludDMyX3QpKGkpLCAoaW50MzJfdCkobGVuZ3RoKSwg
YywgJihpc0Vycm9yKSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZHZhbmNlIHRoZSBzdHJp
bmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG5leHQuCisgKiAo
UG9zdC1pbmNyZW1lbnRpbmcgaXRlcmF0aW9uLikKKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVz
IHdlbGwtZm9ybWVkIFVURi04LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJp
bmcKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKKyAqIEBzZWUgVThfRldEXzEKKyAqIEBzdGFi
bGUgSUNVIDIuNAorICovCisjZGVmaW5lIFU4X0ZXRF8xX1VOU0FGRShzLCBpKSB7IFwKKyAgICAo
aSkrPTErVThfQ09VTlRfVFJBSUxfQllURVMoKHMpW2ldKTsgXAorfQorCisvKioKKyAqIEFkdmFu
Y2UgdGhlIHN0cmluZyBvZmZzZXQgZnJvbSBvbmUgY29kZSBwb2ludCBib3VuZGFyeSB0byB0aGUg
bmV4dC4KKyAqIChQb3N0LWluY3JlbWVudGluZyBpdGVyYXRpb24uKQorICogIlNhZmUiIG1hY3Jv
LCBjaGVja3MgZm9yIGlsbGVnYWwgc2VxdWVuY2VzIGFuZCBmb3Igc3RyaW5nIGJvdW5kYXJpZXMu
CisgKgorICogQHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZworICogQHBhcmFtIGkgc3Ry
aW5nIG9mZnNldCwgaTxsZW5ndGgKKyAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICog
QHNlZSBVOF9GV0RfMV9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFU4
X0ZXRF8xKHMsIGksIGxlbmd0aCkgeyBcCisgICAgdWludDhfdCBfX2I9KHMpWyhpKSsrXTsgXAor
ICAgIGlmKFU4X0lTX0xFQUQoX19iKSkgeyBcCisgICAgICAgIHVpbnQ4X3QgX19jb3VudD1VOF9D
T1VOVF9UUkFJTF9CWVRFUyhfX2IpOyBcCisgICAgICAgIGlmKChpKStfX2NvdW50PihsZW5ndGgp
KSB7IFwKKyAgICAgICAgICAgIF9fY291bnQ9KHVpbnQ4X3QpKChsZW5ndGgpLShpKSk7IFwKKyAg
ICAgICAgfSBcCisgICAgICAgIHdoaWxlKF9fY291bnQ+MCAmJiBVOF9JU19UUkFJTCgocylbaV0p
KSB7IFwKKyAgICAgICAgICAgICsrKGkpOyBcCisgICAgICAgICAgICAtLV9fY291bnQ7IFwKKyAg
ICAgICAgfSBcCisgICAgfSBcCit9CisKKy8qKgorICogQWR2YW5jZSB0aGUgc3RyaW5nIG9mZnNl
dCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBuLXRoIG5leHQgb25lLAorICog
aS5lLiwgbW92ZSBmb3J3YXJkIGJ5IG4gY29kZSBwb2ludHMuCisgKiAoUG9zdC1pbmNyZW1lbnRp
bmcgaXRlcmF0aW9uLikKKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVU
Ri04LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBp
IHN0cmluZyBvZmZzZXQKKyAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50cyB0byBza2lw
CisgKiBAc2VlIFU4X0ZXRF9OCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9G
V0RfTl9VTlNBRkUocywgaSwgbikgeyBcCisgICAgaW50MzJfdCBfX049KG4pOyBcCisgICAgd2hp
bGUoX19OPjApIHsgXAorICAgICAgICBVOF9GV0RfMV9VTlNBRkUocywgaSk7IFwKKyAgICAgICAg
LS1fX047IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZHZhbmNlIHRoZSBzdHJpbmcgb2Zmc2V0
IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggbmV4dCBvbmUsCisgKiBp
LmUuLCBtb3ZlIGZvcndhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQb3N0LWluY3JlbWVudGlu
ZyBpdGVyYXRpb24uKQorICogIlNhZmUiIG1hY3JvLCBjaGVja3MgZm9yIGlsbGVnYWwgc2VxdWVu
Y2VzIGFuZCBmb3Igc3RyaW5nIGJvdW5kYXJpZXMuCisgKgorICogQHBhcmFtIHMgY29uc3QgdWlu
dDhfdCAqIHN0cmluZworICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5ndGgKKyAqIEBw
YXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICogQHBhcmFtIG4gbnVtYmVyIG9mIGNvZGUgcG9p
bnRzIHRvIHNraXAKKyAqIEBzZWUgVThfRldEX05fVU5TQUZFCisgKiBAc3RhYmxlIElDVSAyLjQK
KyAqLworI2RlZmluZSBVOF9GV0RfTihzLCBpLCBsZW5ndGgsIG4pIHsgXAorICAgIGludDMyX3Qg
X19OPShuKTsgXAorICAgIHdoaWxlKF9fTj4wICYmIChpKTwobGVuZ3RoKSkgeyBcCisgICAgICAg
IFU4X0ZXRF8xKHMsIGksIGxlbmd0aCk7IFwKKyAgICAgICAgLS1fX047IFwKKyAgICB9IFwKK30K
KworLyoqCisgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9mZnNldCB0byBhIGNvZGUgcG9pbnQg
Ym91bmRhcnkKKyAqIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgcG9pbnQuCisgKiBJZiB0aGUgb2Zm
c2V0IHBvaW50cyB0byBhIFVURi04IHRyYWlsIGJ5dGUsCisgKiB0aGVuIHRoZSBvZmZzZXQgaXMg
bW92ZWQgYmFja3dhcmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVhZCBieXRlLgorICogT3RoZXJ3
aXNlLCBpdCBpcyBub3QgbW9kaWZpZWQuCisgKiAiVW5zYWZlIiBtYWNybywgYXNzdW1lcyB3ZWxs
LWZvcm1lZCBVVEYtOC4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5nCisg
KiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAc2VlIFU4X1NFVF9DUF9TVEFSVAorICogQHN0
YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfU0VUX0NQX1NUQVJUX1VOU0FGRShzLCBpKSB7
IFwKKyAgICB3aGlsZShVOF9JU19UUkFJTCgocylbaV0pKSB7IC0tKGkpOyB9IFwKK30KKworLyoq
CisgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9mZnNldCB0byBhIGNvZGUgcG9pbnQgYm91bmRh
cnkKKyAqIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgcG9pbnQuCisgKiBJZiB0aGUgb2Zmc2V0IHBv
aW50cyB0byBhIFVURi04IHRyYWlsIGJ5dGUsCisgKiB0aGVuIHRoZSBvZmZzZXQgaXMgbW92ZWQg
YmFja3dhcmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVhZCBieXRlLgorICogT3RoZXJ3aXNlLCBp
dCBpcyBub3QgbW9kaWZpZWQuCisgKiAiU2FmZSIgbWFjcm8sIGNoZWNrcyBmb3IgaWxsZWdhbCBz
ZXF1ZW5jZXMgYW5kIGZvciBzdHJpbmcgYm91bmRhcmllcy4KKyAqCisgKiBAcGFyYW0gcyBjb25z
dCB1aW50OF90ICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9mZnNl
dCAodXN1YWxseSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWkKKyAqIEBz
ZWUgVThfU0VUX0NQX1NUQVJUX1VOU0FGRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZp
bmUgVThfU0VUX0NQX1NUQVJUKHMsIHN0YXJ0LCBpKSB7IFwKKyAgICBpZihVOF9JU19UUkFJTCgo
cylbKGkpXSkpIHsgXAorICAgICAgICAoaSk9dXRmOF9iYWNrMVNhZmVCb2R5KHMsIHN0YXJ0LCAo
aW50MzJfdCkoaSkpOyBcCisgICAgfSBcCit9CisKKy8qIGRlZmluaXRpb25zIHdpdGggYmFja3dh
cmQgaXRlcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisK
Ky8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5k
YXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUKKyAqIGFuZCBnZXQgdGhlIGNvZGUgcG9pbnQgYmV0d2Vl
biB0aGVtLgorICogKFByZS1kZWNyZW1lbnRpbmcgYmFja3dhcmQgaXRlcmF0aW9uLikKKyAqICJV
bnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi04LgorICoKKyAqIFRoZSBpbnB1
dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVuZ3RoLgorICogSWYgdGhl
IG9mZnNldCBpcyBiZWhpbmQgYSBtdWx0aS1ieXRlIHNlcXVlbmNlLCB0aGVuIHRoZSBtYWNybyB3
aWxsIHJlYWQKKyAqIHRoZSB3aG9sZSBzZXF1ZW5jZS4KKyAqIElmIHRoZSBvZmZzZXQgaXMgYmVo
aW5kIGEgbGVhZCBieXRlLCB0aGVuIHRoYXQgaXRzZWxmCisgKiB3aWxsIGJlIHJldHVybmVkIGFz
IHRoZSBjb2RlIHBvaW50LgorICogVGhlIHJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIG9mZnNl
dCBpcyBiZWhpbmQgYW4gaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZS4KKyAqCisgKiBAcGFyYW0gcyBj
b25zdCB1aW50OF90ICogc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFy
YW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJpYWJsZQorICogQHNlZSBVOF9QUkVWCisgKiBAc3RhYmxl
IElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9QUkVWX1VOU0FGRShzLCBpLCBjKSB7IFwKKyAgICAo
Yyk9KHMpWy0tKGkpXTsgXAorICAgIGlmKFU4X0lTX1RSQUlMKGMpKSB7IFwKKyAgICAgICAgdWlu
dDhfdCBfX2IsIF9fY291bnQ9MSwgX19zaGlmdD02OyBcCitcCisgICAgICAgIC8qIGMgaXMgYSB0
cmFpbCBieXRlICovIFwKKyAgICAgICAgKGMpJj0weDNmOyBcCisgICAgICAgIGZvcig7OykgeyBc
CisgICAgICAgICAgICBfX2I9KHMpWy0tKGkpXTsgXAorICAgICAgICAgICAgaWYoX19iPj0weGMw
KSB7IFwKKyAgICAgICAgICAgICAgICBVOF9NQVNLX0xFQURfQllURShfX2IsIF9fY291bnQpOyBc
CisgICAgICAgICAgICAgICAgKGMpfD0oVUNoYXIzMilfX2I8PF9fc2hpZnQ7IFwKKyAgICAgICAg
ICAgICAgICBicmVhazsgXAorICAgICAgICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgICAgICAg
IChjKXw9KFVDaGFyMzIpKF9fYiYweDNmKTw8X19zaGlmdDsgXAorICAgICAgICAgICAgICAgICsr
X19jb3VudDsgXAorICAgICAgICAgICAgICAgIF9fc2hpZnQrPTY7IFwKKyAgICAgICAgICAgIH0g
XAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJpbmcgb2Zm
c2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIHByZXZpb3VzIG9uZQorICog
YW5kIGdldCB0aGUgY29kZSBwb2ludCBiZXR3ZWVuIHRoZW0uCisgKiAoUHJlLWRlY3JlbWVudGlu
ZyBiYWNrd2FyZCBpdGVyYXRpb24uKQorICogIlNhZmUiIG1hY3JvLCBjaGVja3MgZm9yIGlsbGVn
YWwgc2VxdWVuY2VzIGFuZCBmb3Igc3RyaW5nIGJvdW5kYXJpZXMuCisgKgorICogVGhlIGlucHV0
IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMgdGhlIHN0cmluZyBsZW5ndGguCisgKiBJZiB0aGUg
b2Zmc2V0IGlzIGJlaGluZCBhIG11bHRpLWJ5dGUgc2VxdWVuY2UsIHRoZW4gdGhlIG1hY3JvIHdp
bGwgcmVhZAorICogdGhlIHdob2xlIHNlcXVlbmNlLgorICogSWYgdGhlIG9mZnNldCBpcyBiZWhp
bmQgYSBsZWFkIGJ5dGUsIHRoZW4gdGhhdCBpdHNlbGYKKyAqIHdpbGwgYmUgcmV0dXJuZWQgYXMg
dGhlIGNvZGUgcG9pbnQuCisgKiBJZiB0aGUgb2Zmc2V0IGlzIGJlaGluZCBhbiBpbGxlZ2FsIFVU
Ri04IHNlcXVlbmNlLCB0aGVuIGMgaXMgc2V0IHRvIGEgbmVnYXRpdmUgdmFsdWUuCisgKgorICog
QHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZworICogQHBhcmFtIHN0YXJ0IHN0YXJ0aW5n
IHN0cmluZyBvZmZzZXQgKHVzdWFsbHkgMCkKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIHN0
YXJ0PD1pCisgKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJpYWJsZSwgc2V0IHRvIDwwIGlu
IGNhc2Ugb2YgYW4gZXJyb3IKKyAqIEBzZWUgVThfUFJFVl9VTlNBRkUKKyAqIEBzdGFibGUgSUNV
IDIuNAorICovCisjZGVmaW5lIFU4X1BSRVYocywgc3RhcnQsIGksIGMpIHsgXAorICAgIChjKT0o
cylbLS0oaSldOyBcCisgICAgaWYoKGMpPj0weDgwKSB7IFwKKyAgICAgICAgaWYoKGMpPD0weGJm
KSB7IFwKKyAgICAgICAgICAgIChjKT11dGY4X3ByZXZDaGFyU2FmZUJvZHkocywgc3RhcnQsICYo
aSksIGMsIC0xKTsgXAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICAoYyk9VV9TRU5U
SU5FTDsgXAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJp
bmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIHByZXZpb3VzIG9u
ZS4KKyAqIChQcmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCisgKiBUaGUgaW5w
dXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAqICJVbnNh
ZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi04LgorICoKKyAqIEBwYXJhbSBzIGNv
bnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKKyAqIEBzZWUg
VThfQkFDS18xCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9CQUNLXzFfVU5T
QUZFKHMsIGkpIHsgXAorICAgIHdoaWxlKFU4X0lTX1RSQUlMKChzKVstLShpKV0pKSB7fSBcCit9
CisKKy8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJv
dW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUuCisgKiAoUHJlLWRlY3JlbWVudGluZyBiYWNrd2Fy
ZCBpdGVyYXRpb24uKQorICogVGhlIGlucHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMgdGhl
IHN0cmluZyBsZW5ndGguCisgKiAiU2FmZSIgbWFjcm8sIGNoZWNrcyBmb3IgaWxsZWdhbCBzZXF1
ZW5jZXMgYW5kIGZvciBzdHJpbmcgYm91bmRhcmllcy4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1
aW50OF90ICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9mZnNldCAo
dXN1YWxseSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWkKKyAqIEBzZWUg
VThfQkFDS18xX1VOU0FGRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfQkFD
S18xKHMsIHN0YXJ0LCBpKSB7IFwKKyAgICBpZihVOF9JU19UUkFJTCgocylbLS0oaSldKSkgeyBc
CisgICAgICAgIChpKT11dGY4X2JhY2sxU2FmZUJvZHkocywgc3RhcnQsIChpbnQzMl90KShpKSk7
IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25l
IGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggb25lIGJlZm9yZSBpdCwKKyAqIGkuZS4s
IG1vdmUgYmFja3dhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQcmUtZGVjcmVtZW50aW5nIGJh
Y2t3YXJkIGl0ZXJhdGlvbi4pCisgKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBh
cyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9y
bWVkIFVURi04LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBw
YXJhbSBpIHN0cmluZyBvZmZzZXQKKyAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50cyB0
byBza2lwCisgKiBAc2VlIFU4X0JBQ0tfTgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZp
bmUgVThfQkFDS19OX1VOU0FGRShzLCBpLCBuKSB7IFwKKyAgICBpbnQzMl90IF9fTj0obik7IFwK
KyAgICB3aGlsZShfX04+MCkgeyBcCisgICAgICAgIFU4X0JBQ0tfMV9VTlNBRkUocywgaSk7IFwK
KyAgICAgICAgLS1fX047IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJpbmcg
b2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggb25lIGJlZm9y
ZSBpdCwKKyAqIGkuZS4sIG1vdmUgYmFja3dhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQcmUt
ZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCisgKiBUaGUgaW5wdXQgb2Zmc2V0IG1h
eSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAqICJTYWZlIiBtYWNybywgY2hl
Y2tzIGZvciBpbGxlZ2FsIHNlcXVlbmNlcyBhbmQgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoK
KyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBpbmRl
eCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZworICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwg
aTxsZW5ndGgKKyAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50cyB0byBza2lwCisgKiBA
c2VlIFU4X0JBQ0tfTl9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFU4
X0JBQ0tfTihzLCBzdGFydCwgaSwgbikgeyBcCisgICAgaW50MzJfdCBfX049KG4pOyBcCisgICAg
d2hpbGUoX19OPjAgJiYgKGkpPihzdGFydCkpIHsgXAorICAgICAgICBVOF9CQUNLXzEocywgc3Rh
cnQsIGkpOyBcCisgICAgICAgIC0tX19OOyBcCisgICAgfSBcCit9CisKKy8qKgorICogQWRqdXN0
IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQgdG8gYSBjb2RlIHBvaW50IGJvdW5kYXJ5IGFmdGVyIGEg
Y29kZSBwb2ludC4KKyAqIElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgcGFydGlhbCBtdWx0aS1i
eXRlIHNlcXVlbmNlLAorICogdGhlbiB0aGUgb2Zmc2V0IGlzIGluY3JlbWVudGVkIHRvIGJlaGlu
ZCB0aGUgd2hvbGUgc2VxdWVuY2UuCisgKiBPdGhlcndpc2UsIGl0IGlzIG5vdCBtb2RpZmllZC4K
KyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVuZ3Ro
LgorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1mb3JtZWQgVVRGLTguCisgKgorICog
QHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZworICogQHBhcmFtIGkgc3RyaW5nIG9mZnNl
dAorICogQHNlZSBVOF9TRVRfQ1BfTElNSVQKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVm
aW5lIFU4X1NFVF9DUF9MSU1JVF9VTlNBRkUocywgaSkgeyBcCisgICAgVThfQkFDS18xX1VOU0FG
RShzLCBpKTsgXAorICAgIFU4X0ZXRF8xX1VOU0FGRShzLCBpKTsgXAorfQorCisvKioKKyAqIEFk
anVzdCBhIHJhbmRvbS1hY2Nlc3Mgb2Zmc2V0IHRvIGEgY29kZSBwb2ludCBib3VuZGFyeSBhZnRl
ciBhIGNvZGUgcG9pbnQuCisgKiBJZiB0aGUgb2Zmc2V0IGlzIGJlaGluZCBhIHBhcnRpYWwgbXVs
dGktYnl0ZSBzZXF1ZW5jZSwKKyAqIHRoZW4gdGhlIG9mZnNldCBpcyBpbmNyZW1lbnRlZCB0byBi
ZWhpbmQgdGhlIHdob2xlIHNlcXVlbmNlLgorICogT3RoZXJ3aXNlLCBpdCBpcyBub3QgbW9kaWZp
ZWQuCisgKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxl
bmd0aC4KKyAqICJTYWZlIiBtYWNybywgY2hlY2tzIGZvciBpbGxlZ2FsIHNlcXVlbmNlcyBhbmQg
Zm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBz
dHJpbmcKKyAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJpbmcgb2Zmc2V0ICh1c3VhbGx5IDAp
CisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9aTw9bGVuZ3RoCisgKiBAcGFyYW0g
bGVuZ3RoIHN0cmluZyBsZW5ndGgKKyAqIEBzZWUgVThfU0VUX0NQX0xJTUlUX1VOU0FGRQorICog
QHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfU0VUX0NQX0xJTUlUKHMsIHN0YXJ0LCBp
LCBsZW5ndGgpIHsgXAorICAgIGlmKChzdGFydCk8KGkpICYmIChpKTwobGVuZ3RoKSkgeyBcCisg
ICAgICAgIFU4X0JBQ0tfMShzLCBzdGFydCwgaSk7IFwKKyAgICAgICAgVThfRldEXzEocywgaSwg
bGVuZ3RoKTsgXAorICAgIH0gXAorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRH
bHVlL2ljdS91bmljb2RlL3V0Zl9vbGQuaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0
Zl9vbGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dHlwZXMuaCBiL0phdmFTY3JpcHRH
bHVlL2ljdS91bmljb2RlL3V0eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmUyMGNkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29k
ZS91dHlwZXMuaApAQCAtMCwwICsxLDc0NSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5
cmlnaHQgKEMpIDE5OTYtMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAg
IENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgorKgorKiAgRklMRSBOQU1FIDogVVRZUEVTLkggKGZvcm1lcmx5IHB0eXBlcy5oKQorKgor
KiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMTIvMTEvOTYgICAg
aGVsZW5hICAgICAgQ3JlYXRpb24uCisqICAgMDIvMjcvOTcgICAgYWxpdSAgICAgICAgQWRkZWQg
dHlwZWRlZnMgZm9yIFVDbGFzc0lELCBpbnQ4LCBpbnQxNiwgaW50MzIsCisqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDgsIHVpbnQxNiwgYW5kIHVpbnQzMi4KKyogICAwNC8wMS85NyAg
ICBhbGl1ICAgICAgICBBZGRlZCBYUF9DUExVU1BMVVMgYW5kIG1vZGlmaWVkIHRvIHdvcmsgdW5k
ZXIgQyBhcworKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWxsIGFzIEMrKy4KKyogICAg
ICAgICAgICAgICAgICAgICAgICAgICBNb2RpZmllZCB0byB1c2UgbWVtY3B5KCkgZm9yIHVwcnZf
YXJyYXlDb3B5KCkgZm5zLgorKiAgIDA0LzE0Lzk3ICAgIGFsaXUgICAgICAgIEFkZGVkIFRQbGF0
Zm9ybVV0aWxpdGllcy4KKyogICAwNS8wNy85NyAgICBhbGl1ICAgICAgICBBZGRlZCBpbXBvcnQv
ZXhwb3J0IHNwZWNpZmllcnMgKHJlcGxhY2luZyB0aGUgb2xkCisqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJva2VuIEVYVF9DTEFTUykuICBBZGRlZCB2ZXJzaW9uIG51bWJlciBmb3Igb3Vy
CisqICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS4gIENsZWFuZWQgdXAgaGVhZGVyLgor
KiAgICA2LzIwLzk3ICAgIGhlbGVuYSAgICAgIEphdmEgY2xhc3MgbmFtZSBjaGFuZ2UuCisqICAg
MDgvMTEvOTggICAgc3RlcGhlbiAgICAgVUVycm9yQ29kZSBjaGFuZ2VkIGZyb20gdHlwZWRlZiB0
byBlbnVtCisqICAgMDgvMTIvOTggICAgZXJtICAgICAgICAgQ2hhbmdlZCBUX0FOQUxZVElDX1BB
Q0tBR0VfVkVSU0lPTiB0byAzCisqICAgMDgvMTQvOTggICAgc3RlcGhlbiAgICAgQWRkZWQgdXBy
dl9hcnJheUNvcHkoKSBmb3IgaW50OF90LCBpbnQxNl90LCBpbnQzMl90CisqICAgMTIvMDkvOTgg
ICAgamZpdHogICAgICAgQWRkZWQgQlVGRkVSX09WRVJGTE9XX0VSUk9SIChidWcgMTEwMDA2NikK
KyogICAwNC8yMC85OSAgICBzdGVwaGVuICAgICBDbGVhbmVkIHVwICYgcmV3b3JrZWQgZm9yIGF1
dG9jb25mLgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmFtZWQgdG8gdXR5cGVzLmgu
CisqICAgMDUvMDUvOTkgICAgc3RlcGhlbiAgICAgQ2hhbmdlZCB0byB1c2UgPGludHR5cGVzLmg+
CisqICAgMTIvMDcvOTkgICAgaGVsZW5hICAgICAgTW92ZWQgY29weXJpZ2h0IG5vdGljZSBzdHJp
bmcgZnJvbSB1Y252X2JsZC5oIGhlcmUuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisj
aWZuZGVmIFVUWVBFU19ICisjZGVmaW5lIFVUWVBFU19ICisKKworI2luY2x1ZGUgInVuaWNvZGUv
dW1hY2hpbmUuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3V0Zi5oIgorI2luY2x1ZGUgInVuaWNvZGUv
dXZlcnNpb24uaCIKKyNpbmNsdWRlICJ1bmljb2RlL3Vjb25maWcuaCIKKworI2lmZGVmIFVfSElE
RV9EUkFGVF9BUEkKKyNpbmNsdWRlICJ1bmljb2RlL3VkcmFmdC5oIgorI2VuZGlmCisKKyNpZmRl
ZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyNpbmNsdWRlICJ1bmljb2RlL3VkZXByY3RkLmgiCisj
ZW5kaWYKKworI2lmZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorI2luY2x1ZGUgInVuaWNvZGUv
dW9ic2xldGUuaCIKKyNlbmRpZgorCisKKy8qIQorICogXGZpbGUKKyAqIFxicmllZiBCYXNpYyBk
ZWZpbml0aW9ucyBmb3IgSUNVLCBmb3IgYm90aCBDIGFuZCBDKysgQVBJcworICoKKyAqIFRoaXMg
ZmlsZSBkZWZpbmVzIGJhc2ljIHR5cGVzLCBjb25zdGFudHMsIGFuZCBlbnVtZXJhdGlvbnMgZGly
ZWN0bHkgb3IKKyAqIGluZGlyZWN0bHkgYnkgaW5jbHVkaW5nIG90aGVyIGhlYWRlciBmaWxlcywg
ZXNwZWNpYWxseSB1dGYuaCBmb3IgdGhlCisgKiBiYXNpYyBjaGFyYWN0ZXIgYW5kIHN0cmluZyBk
ZWZpbml0aW9ucyBhbmQgdW1hY2hpbmUuaCBmb3IgY29uc2lzdGVudAorICogaW50ZWdlciBhbmQg
b3RoZXIgdHlwZXMuCisgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogY2hhciBDaGFy
YWN0ZXIgc2V0IGZhbWlseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKioKKyAqIFVfQ0hBUlNFVF9G
QU1JTFkgaXMgZXF1YWwgdG8gdGhpcyB2YWx1ZSB3aGVuIHRoZSBwbGF0Zm9ybSBpcyBhbiBBU0NJ
SSBiYXNlZCBwbGF0Zm9ybS4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisjZGVmaW5lIFVfQVND
SUlfRkFNSUxZIDAKKworLyoqCisgKiBVX0NIQVJTRVRfRkFNSUxZIGlzIGVxdWFsIHRvIHRoaXMg
dmFsdWUgd2hlbiB0aGUgcGxhdGZvcm0gaXMgYW4gRUJDRElDIGJhc2VkIHBsYXRmb3JtLgorICog
QHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVV9FQkNESUNfRkFNSUxZIDEKKworLyoqCisg
KiBcZGVmIFVfQ0hBUlNFVF9GQU1JTFkKKyAqCisgKiA8cD5UaGVzZSBkZWZpbml0aW9ucyBhbGxv
dyB0byBzcGVjaWZ5IHRoZSBlbmNvZGluZyBvZiB0ZXh0CisgKiBpbiB0aGUgY2hhciBkYXRhIHR5
cGUgYXMgZGVmaW5lZCBieSB0aGUgcGxhdGZvcm0gYW5kIHRoZSBjb21waWxlci4KKyAqIEl0IGlz
IGVub3VnaCB0byBkZXRlcm1pbmUgdGhlIGNvZGUgcG9pbnQgdmFsdWVzIG9mICJpbnZhcmlhbnQg
Y2hhcmFjdGVycyIsCisgKiB3aGljaCBhcmUgdGhlIG9uZXMgc2hhcmVkIGJ5IGFsbCBlbmNvZGlu
Z3MgdGhhdCBhcmUgaW4gdXNlCisgKiBvbiBhIGdpdmVuIHBsYXRmb3JtLjwvcD4KKyAqCisgKiA8
cD5UaG9zZSAiaW52YXJpYW50IGNoYXJhY3RlcnMiIHNob3VsZCBiZSBhbGwgdGhlIHVwcGVyY2Fz
ZSBhbmQgbG93ZXJjYXNlCisgKiBsYXRpbiBsZXR0ZXJzLCB0aGUgZGlnaXRzLCB0aGUgc3BhY2Us
IGFuZCAiYmFzaWMgcHVuY3R1YXRpb24iLgorICogQWxzbywgJ1xcbicsICdcXHInLCAnXFx0JyBz
aG91bGQgYmUgYXZhaWxhYmxlLjwvcD4KKyAqCisgKiA8cD5UaGUgbGlzdCBvZiAiaW52YXJpYW50
IGNoYXJhY3RlcnMiIGlzOjxicj4KKyAqIFxjb2RlCisgKiAgICBBLVogIGEteiAgMC05ICBTUEFD
RSAgIiAgJSAgJmFtcDsgICcgICggICkgICogICsgICwgIC0gIC4gIC8gIDogIDsgIDwgID0gID4g
ID8gIF8KKyAqIFxlbmRjb2RlCisgKiA8YnI+CisgKiAoNTIgbGV0dGVycyArIDEwIG51bWJlcnMg
KyAyMCBwdW5jL3N5bS9zcGFjZSA9IDgyIHRvdGFsKTwvcD4KKyAqCisgKiA8cD5UaGlzIG1hdGNo
ZXMgdGhlIElCTSBTeW50YWN0aWMgQ2hhcmFjdGVyIFNldCAoQ1MgNjQwKS48L3A+CisgKgorICog
PHA+SW4gb3RoZXIgd29yZHMsIGFsbCB0aGUgZ3JhcGhpYyBjaGFyYWN0ZXJzIGluIDctYml0IEFT
Q0lJIHNob3VsZAorICogYmUgc2FmZWx5IGFjY2Vzc2libGUgZXhjZXB0IHRoZSBmb2xsb3dpbmc6
PC9wPgorICoKKyAqIFxjb2RlCisgKiAgICAnXCcgPGJhY2tzbGFzaD4KKyAqICAgICdbJyA8bGVm
dCBicmFja2V0PgorICogICAgJ10nIDxyaWdodCBicmFja2V0PgorICogICAgJ3snIDxsZWZ0IGJy
YWNlPgorICogICAgJ30nIDxyaWdodCBicmFjZT4KKyAqICAgICdeJyA8Y2lyY3VtZmxleD4KKyAq
ICAgICd+JyA8dGlsZGU+CisgKiAgICAnIScgPGV4Y2xhbWF0aW9uIG1hcms+CisgKiAgICAnIycg
PG51bWJlciBzaWduPgorICogICAgJ3wnIDx2ZXJ0aWNhbCBsaW5lPgorICogICAgJyQnIDxkb2xs
YXIgc2lnbj4KKyAqICAgICdAJyA8Y29tbWVyY2lhbCBhdD4KKyAqICAgICdgJyA8Z3JhdmUgYWNj
ZW50PgorICogXGVuZGNvZGUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisKKyNpZm5kZWYgVV9D
SEFSU0VUX0ZBTUlMWQorIyAgIGRlZmluZSBVX0NIQVJTRVRfRkFNSUxZIDAKKyNlbmRpZgorCisv
Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSovCisvKiBJQ1VEQVRBIG5hbWluZyBzY2hlbWUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSovCisKKy8qKgorICogXGRlZiBVX0lDVURBVEFfVFlQRV9MRVRURVIKKyAqCisg
KiBUaGlzIGlzIGEgcGxhdGZvcm0tZGVwZW5kZW50IHN0cmluZyBjb250YWluaW5nIG9uZSBsZXR0
ZXI6CisgKiAtIGIgZm9yIGJpZy1lbmRpYW4sIEFTQ0lJLWZhbWlseSBwbGF0Zm9ybXMKKyAqIC0g
bCBmb3IgbGl0dGxlLWVuZGlhbiwgQVNDSUktZmFtaWx5IHBsYXRmb3JtcworICogLSBlIGZvciBi
aWctZW5kaWFuLCBFQkNESUMtZmFtaWx5IHBsYXRmb3JtcworICogVGhpcyBsZXR0ZXIgaXMgcGFy
dCBvZiB0aGUgY29tbW9uIGRhdGEgZmlsZSBuYW1lLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8K
KworLyoqCisgKiBcZGVmIFVfSUNVREFUQV9UWVBFX0xJVExFVFRFUgorICogVGhlIG5vbi1zdHJp
bmcgZm9ybSBvZiBVX0lDVURBVEFfVFlQRV9MRVRURVIKKyAqIEBzdGFibGUgSUNVIDIuMAorICov
CisjaWYgVV9DSEFSU0VUX0ZBTUlMWQorIyAgIGlmIFVfSVNfQklHX0VORElBTgorICAgLyogRUJD
RElDIC0gc2hvdWxkIGFsd2F5cyBiZSBCRSAqLworIyAgICAgZGVmaW5lIFVfSUNVREFUQV9UWVBF
X0xFVFRFUiAiZSIKKyMgICAgIGRlZmluZSBVX0lDVURBVEFfVFlQRV9MSVRMRVRURVIgZQorIyAg
IGVsc2UKKyMgICAgIGVycm9yICJEb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCBsaXR0bGUgZW5k
aWFuIEVCQ0RJQyEiCisjICAgICBkZWZpbmUgVV9JQ1VEQVRBX1RZUEVfTEVUVEVSICJ4IgorIyAg
ICAgZGVmaW5lIFVfSUNVREFUQV9UWVBFX0xJVExFVFRFUiB4CisjICAgZW5kaWYKKyNlbHNlCisj
ICAgaWYgVV9JU19CSUdfRU5ESUFOCisgICAgICAvKiBCaWctZW5kaWFuIEFTQ0lJICovCisjICAg
ICBkZWZpbmUgVV9JQ1VEQVRBX1RZUEVfTEVUVEVSICJiIgorIyAgICAgZGVmaW5lIFVfSUNVREFU
QV9UWVBFX0xJVExFVFRFUiBiCisjICAgZWxzZQorICAgICAgLyogTGl0dGxlLWVuZGlhbiBBU0NJ
SSAqLworIyAgICAgZGVmaW5lIFVfSUNVREFUQV9UWVBFX0xFVFRFUiAibCIKKyMgICAgIGRlZmlu
ZSBVX0lDVURBVEFfVFlQRV9MSVRMRVRURVIgbAorIyAgIGVuZGlmCisjZW5kaWYKKworLyoqCisg
KiBBIHNpbmdsZSBzdHJpbmcgbGl0ZXJhbCBjb250YWluaW5nIHRoZSBpY3VkYXRhIHN0dWIgbmFt
ZS4gaS5lLiAnaWN1ZHQxOGUnIGZvcgorICogSUNVIDEuOC54IG9uIEVCQ0RJQywgZXRjLi4KKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCisjZGVmaW5lIFVfSUNVREFUQV9OQU1FICAgICJpY3VkdCIg
VV9JQ1VfVkVSU0lPTl9TSE9SVCBVX0lDVURBVEFfVFlQRV9MRVRURVIKKworCisvKioKKyAqICBV
X0lDVV9FTlRSWV9QT0lOVCBpcyB0aGUgbmFtZSBvZiB0aGUgRExMIGVudHJ5IHBvaW50IHRvIHRo
ZSBJQ1UgZGF0YSBsaWJyYXJ5LgorICogICAgRGVmaW5lZCBhcyBhIGxpdGVyYWwsIG5vdCBhIHN0
cmluZy4KKyAqICAgIFRyaWNreSBQcmVwcm9jZXNzb3IgdXNlIC0gIyMgb3BlcmF0b3IgcmVwbGFj
ZXMgbWFjcm8gcGFyYW10ZXJzIHdpdGggdGhlIGxpdGVyYWwgc3RyaW5nCisgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgbWFjcm8gaW52b2NhdGlv
biwgX2JlZm9yZV8gb3RoZXIgbWFjcm8gc3Vic3RpdHV0aW9ucy4KKyAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmVlZCBhIG5lc3RlZCAjZGVmaW5lcyB0byBnZXQgdGhlIGFjdHVhbCB2
ZXJzaW9uIG51bWJlcnMgcmF0aGVyIHRoYW4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhlIGxpdGVyYWwgdGV4dCBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSBpbnRvIHRoZSBuYW1l
LgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmV0IHJlc3VsdCB3aWxsIGJl
IHNvbWV0aGluZyBvZiB0aGUgZm9ybQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgI2RlZmluZSBVX0lDVV9FTlRSWV9QT0lOVCBpY3VkdDE5X2RhdAorICogQHN0YWJsZSBJQ1Ug
Mi40CisgKi8KKyNkZWZpbmUgVV9JQ1VEQVRBX0VOVFJZX1BPSU5UICBVX0RFRjJfSUNVREFUQV9F
TlRSWV9QT0lOVChVX0lDVV9WRVJTSU9OX01BSk9SX05VTSwgVV9JQ1VfVkVSU0lPTl9NSU5PUl9O
VU0pCisvKioKKyAqIEBpbnRlcm5hbAorICovCisjZGVmaW5lIFVfREVGMl9JQ1VEQVRBX0VOVFJZ
X1BPSU5UKG1ham9yLCBtaW5vcikgVV9ERUZfSUNVREFUQV9FTlRSWV9QT0lOVChtYWpvciwgbWlu
b3IpCisvKioKKyAqIEBpbnRlcm5hbAorICovCisjZGVmaW5lIFVfREVGX0lDVURBVEFfRU5UUllf
UE9JTlQobWFqb3IsIG1pbm9yKSBpY3VkdCMjbWFqb3IjI21pbm9yIyNfZGF0CisKKy8qKgorICog
XGRlZiBVX0NBTExDT05WCisgKiBTaW1pbGFyIHRvIFVfQ0RFQ0xfQkVHSU4vVV9DREVDTF9FTkQs
IHRoaXMgcXVhbGlmaWVyIGlzIG5lY2Vzc2FyeQorICogaW4gY2FsbGJhY2sgZnVuY3Rpb24gdHlw
ZWRlZnMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNhbGxpbmcgY29udmVudGlvbgorICogaXMgY29t
cGF0aWJsZS4KKyAqCisgKiBUaGlzIGlzIG9ubHkgdXNlZCBmb3Igbm9uLUlDVS1BUEkgZnVuY3Rp
b25zLgorICogV2hlbiBhIGZ1bmN0aW9uIGlzIGEgcHVibGljIElDVSBBUEksCisgKiB5b3UgbXVz
dCB1c2UgdGhlIFVfQ0FQSSBhbmQgVV9FWFBPUlQyIHF1YWxpZmllcnMuCisgKiBAc3RhYmxlIElD
VSAyLjAKKyAqLworI2lmIGRlZmluZWQoT1MzOTApICYmIChfX0NPTVBJTEVSX1ZFUl9fIDwgMHg0
MTAyMDAwMCkgJiYgZGVmaW5lZChYUF9DUExVU1BMVVMpCisjICAgIGRlZmluZSBVX0NBTExDT05W
IF9fY2RlY2wKKyNlbHNlCisjICAgIGRlZmluZSBVX0NBTExDT05WIFVfRVhQT1JUMgorI2VuZGlm
CisKKy8qKgorICogXGRlZiBOVUxMCisgKiBEZWZpbmUgTlVMTCBpZiBuZWNlc3NhcnksIHRvIDAg
Zm9yIEMrKyBhbmQgdG8gKCh2b2lkICopMCkgZm9yIEMuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAq
LworI2lmbmRlZiBOVUxMCisjaWZkZWYgWFBfQ1BMVVNQTFVTCisjZGVmaW5lIE5VTEwgICAgMAor
I2Vsc2UKKyNkZWZpbmUgTlVMTCAgICAoKHZvaWQgKikwKQorI2VuZGlmCisjZW5kaWYKKworLyo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0qLworLyogQ2FsZW5kYXIvVGltZVpvbmUgZGF0YSB0eXBlcyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0qLworCisvKioKKyAqIERhdGUgYW5kIFRpbWUgZGF0YSB0eXBlLgorICogVGhpcyBp
cyBhIHByaW1pdGl2ZSBkYXRhIHR5cGUgdGhhdCBob2xkcyB0aGUgZGF0ZSBhbmQgdGltZQorICog
YXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MC1qYW4tMDEsIDAwOjAwIFVU
Qy4KKyAqIFVUQyBsZWFwIHNlY29uZHMgYXJlIGlnbm9yZWQuCisgKiBAc3RhYmxlIElDVSAyLjAK
KyAqLwordHlwZWRlZiBkb3VibGUgVURhdGU7CisKKy8qKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vj
b25kcyBwZXIgc2Vjb25kIEBzdGFibGUgSUNVIDIuMCAqLworI2RlZmluZSBVX01JTExJU19QRVJf
U0VDT05EICAgICAgICAoMTAwMCkKKy8qKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBwZXIg
bWludXRlIEBzdGFibGUgSUNVIDIuMCAqLworI2RlZmluZSBVX01JTExJU19QRVJfTUlOVVRFICAg
ICAgICg2MDAwMCkKKy8qKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBwZXIgaG91ciBAc3Rh
YmxlIElDVSAyLjAgKi8KKyNkZWZpbmUgVV9NSUxMSVNfUEVSX0hPVVIgICAgICAgKDM2MDAwMDAp
CisvKiogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgcGVyIGRheSBAc3RhYmxlIElDVSAyLjAg
Ki8KKyNkZWZpbmUgVV9NSUxMSVNfUEVSX0RBWSAgICAgICAoODY0MDAwMDApCisKKworLyo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0qLworLyogVUNsYXNzSUQtYmFzZWQgUlRUSSAqLworLyo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0qLworCisvKioKKyAqIFVDbGFzc0lEIGlzIHVzZWQgdG8gaWRlbnRpZnkgY2xhc3Nl
cyB3aXRob3V0IHVzaW5nIFJUVEksIHNpbmNlIFJUVEkKKyAqIGlzIG5vdCB5ZXQgc3VwcG9ydGVk
IGJ5IGFsbCBDKysgY29tcGlsZXJzLiAgRWFjaCBjbGFzcyBoaWVyYXJjaHkgd2hpY2ggbmVlZHMK
KyAqIHRvIGltcGxlbWVudCBwb2x5bW9ycGhpYyBjbG9uZSgpIG9yIG9wZXJhdG9yPT0oKSBkZWZp
bmVzIHR3byBtZXRob2RzLAorICogZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy4gIFVDbGFzc0lE
IHZhbHVlcyBjYW4gYmUgY29tcGFyZWQgdXNpbmcKKyAqIG9wZXJhdG9yPT0oKS4gTm90aGluZyBl
bHNlIHNob3VsZCBiZSBkb25lIHdpdGggdGhlbS4KKyAqCisgKiBccGFyCisgKiBnZXREeW5hbWlj
Q2xhc3NJRCgpIGlzIGRlY2xhcmVkIGluIHRoZSBiYXNlIGNsYXNzIG9mIHRoZSBoaWVyYXJjaHkg
YXMKKyAqIGEgcHVyZSB2aXJ0dWFsLiAgRWFjaCBjb25jcmV0ZSBzdWJjbGFzcyBpbXBsZW1lbnRz
IGl0IGluIHRoZSBzYW1lIHdheToKKyAqCisgKiBcY29kZQorICogICAgICBjbGFzcyBCYXNlIHsK
KyAqICAgICAgcHVibGljOgorICogICAgICAgICAgdmlydHVhbCBVQ2xhc3NJRCBnZXREeW5hbWlj
Q2xhc3NJRCgpIGNvbnN0ID0gMDsKKyAqICAgICAgfQorICoKKyAqICAgICAgY2xhc3MgRGVyaXZl
ZCB7CisgKiAgICAgIHB1YmxpYzoKKyAqICAgICAgICAgIHZpcnR1YWwgVUNsYXNzSUQgZ2V0RHlu
YW1pY0NsYXNzSUQoKSBjb25zdAorICogICAgICAgICAgICB7IHJldHVybiBEZXJpdmVkOjpnZXRT
dGF0aWNDbGFzc0lEKCk7IH0KKyAqICAgICAgfQorICogXGVuZGNvZGUKKyAqCisgKiBFYWNoIGNv
bmNyZXRlIGNsYXNzIGltcGxlbWVudHMgZ2V0U3RhdGljQ2xhc3NJRCgpIGFzIHdlbGwsIHdoaWNo
IGFsbG93cworICogY2xpZW50cyB0byB0ZXN0IGZvciBhIHNwZWNpZmljIHR5cGUuCisgKgorICog
XGNvZGUKKyAqICAgICAgY2xhc3MgRGVyaXZlZCB7CisgKiAgICAgIHB1YmxpYzoKKyAqICAgICAg
ICAgIHN0YXRpYyBVQ2xhc3NJRCBVX0VYUE9SVDIgZ2V0U3RhdGljQ2xhc3NJRCgpOworICogICAg
ICBwcml2YXRlOgorICogICAgICAgICAgc3RhdGljIGNoYXIgZmdDbGFzc0lEOworICogICAgICB9
CisgKgorICogICAgICAvLyBJbiBEZXJpdmVkLmNwcDoKKyAqICAgICAgVUNsYXNzSUQgRGVyaXZl
ZDo6Z2V0U3RhdGljQ2xhc3NJRCgpCisgKiAgICAgICAgeyByZXR1cm4gKFVDbGFzc0lEKSZEZXJp
dmVkOjpmZ0NsYXNzSUQ7IH0KKyAqICAgICAgY2hhciBEZXJpdmVkOjpmZ0NsYXNzSUQgPSAwOyAv
LyBWYWx1ZSBpcyBpcnJlbGV2YW50CisgKiBcZW5kY29kZQorICogQHN0YWJsZSBJQ1UgMi4wCisg
Ki8KK3R5cGVkZWYgdm9pZCogVUNsYXNzSUQ7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8q
IFNoYXJlZCBsaWJyYXJ5L0RMTCBpbXBvcnQtZXhwb3J0IEFQSSBjb250cm9sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyoKKyAqIENv
bnRyb2wgb2Ygc3ltYm9sIGltcG9ydC9leHBvcnQuCisgKiBJQ1UgaXMgc2VwYXJhdGVkIGludG8g
dGhyZWUgbGlicmFyaWVzLgorICovCisKKy8qCisgKiBcZGVmIFVfQ09NQklORURfSU1QTEVNRU5U
QVRJT04KKyAqIFNldCB0byBleHBvcnQgbGlicmFyeSBzeW1ib2xzIGZyb20gaW5zaWRlIHRoZSBJ
Q1UgbGlicmFyeQorICogd2hlbiBhbGwgb2YgSUNVIGlzIGluIGEgc2luZ2xlIGxpYnJhcnkuCisg
KiBUaGlzIGNhbiBiZSBzZXQgYXMgYSBjb21waWxlciBvcHRpb24gd2hpbGUgYnVpbGRpbmcgSUNV
LCBhbmQgaXQKKyAqIG5lZWRzIHRvIGJlIHRoZSBmaXJzdCBvbmUgdGVzdGVkIHRvIG92ZXJyaWRl
IFVfQ09NTU9OX0FQSSwgVV9JMThOX0FQSSwgZXRjLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8K
KworLyoqCisgKiBcZGVmIFVfREFUQV9BUEkKKyAqIFNldCB0byBleHBvcnQgbGlicmFyeSBzeW1i
b2xzIGZyb20gaW5zaWRlIHRoZSBzdHViZGF0YSBsaWJyYXJ5LAorICogYW5kIHRvIGltcG9ydCB0
aGVtIGZyb20gb3V0c2lkZS4KKyAqIEBkcmFmdCBJQ1UgMy4wCisgKi8KKworLyoqCisgKiBcZGVm
IFVfQ09NTU9OX0FQSQorICogU2V0IHRvIGV4cG9ydCBsaWJyYXJ5IHN5bWJvbHMgZnJvbSBpbnNp
ZGUgdGhlIGNvbW1vbiBsaWJyYXJ5LAorICogYW5kIHRvIGltcG9ydCB0aGVtIGZyb20gb3V0c2lk
ZS4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisKKy8qKgorICogXGRlZiBVX0kxOE5fQVBJCisg
KiBTZXQgdG8gZXhwb3J0IGxpYnJhcnkgc3ltYm9scyBmcm9tIGluc2lkZSB0aGUgaTE4biBsaWJy
YXJ5LAorICogYW5kIHRvIGltcG9ydCB0aGVtIGZyb20gb3V0c2lkZS4KKyAqIEBzdGFibGUgSUNV
IDIuMAorICovCisKKy8qKgorICogXGRlZiBVX0xBWU9VVF9BUEkKKyAqIFNldCB0byBleHBvcnQg
bGlicmFyeSBzeW1ib2xzIGZyb20gaW5zaWRlIHRoZSBsYXlvdXQgZW5naW5lIGxpYnJhcnksCisg
KiBhbmQgdG8gaW1wb3J0IHRoZW0gZnJvbSBvdXRzaWRlLgorICogQHN0YWJsZSBJQ1UgMi4wCisg
Ki8KKworLyoqCisgKiBcZGVmIFVfTEFZT1VURVhfQVBJCisgKiBTZXQgdG8gZXhwb3J0IGxpYnJh
cnkgc3ltYm9scyBmcm9tIGluc2lkZSB0aGUgbGF5b3V0IGV4dGVuc2lvbnMgbGlicmFyeSwKKyAq
IGFuZCB0byBpbXBvcnQgdGhlbSBmcm9tIG91dHNpZGUuCisgKiBAc3RhYmxlIElDVSAyLjYKKyAq
LworCisvKioKKyAqIFxkZWYgVV9JT19BUEkKKyAqIFNldCB0byBleHBvcnQgbGlicmFyeSBzeW1i
b2xzIGZyb20gaW5zaWRlIHRoZSB1c3RkaW8gbGlicmFyeSwKKyAqIGFuZCB0byBpbXBvcnQgdGhl
bSBmcm9tIG91dHNpZGUuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworCisjaWYgZGVmaW5lZChV
X0NPTUJJTkVEX0lNUExFTUVOVEFUSU9OKQorI2RlZmluZSBVX0RBVEFfQVBJICAgICBVX0VYUE9S
VAorI2RlZmluZSBVX0NPTU1PTl9BUEkgICBVX0VYUE9SVAorI2RlZmluZSBVX0kxOE5fQVBJICAg
ICBVX0VYUE9SVAorI2RlZmluZSBVX0xBWU9VVF9BUEkgICBVX0VYUE9SVAorI2RlZmluZSBVX0xB
WU9VVEVYX0FQSSBVX0VYUE9SVAorI2RlZmluZSBVX0lPX0FQSSAgICAgICBVX0VYUE9SVAorI2Vs
aWYgZGVmaW5lZChVX1NUQVRJQ19JTVBMRU1FTlRBVElPTikKKyNkZWZpbmUgVV9EQVRBX0FQSQor
I2RlZmluZSBVX0NPTU1PTl9BUEkKKyNkZWZpbmUgVV9JMThOX0FQSQorI2RlZmluZSBVX0xBWU9V
VF9BUEkKKyNkZWZpbmUgVV9MQVlPVVRFWF9BUEkKKyNkZWZpbmUgVV9JT19BUEkKKyNlbGlmIGRl
ZmluZWQoVV9DT01NT05fSU1QTEVNRU5UQVRJT04pCisjZGVmaW5lIFVfREFUQV9BUEkgICAgIFVf
SU1QT1JUCisjZGVmaW5lIFVfQ09NTU9OX0FQSSAgIFVfRVhQT1JUCisjZGVmaW5lIFVfSTE4Tl9B
UEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfTEFZT1VUX0FQSSAgIFVfSU1QT1JUCisjZGVmaW5l
IFVfTEFZT1VURVhfQVBJIFVfSU1QT1JUCisjZGVmaW5lIFVfSU9fQVBJICAgICAgIFVfSU1QT1JU
CisjZWxpZiBkZWZpbmVkKFVfSTE4Tl9JTVBMRU1FTlRBVElPTikKKyNkZWZpbmUgVV9EQVRBX0FQ
SSAgICAgVV9JTVBPUlQKKyNkZWZpbmUgVV9DT01NT05fQVBJICAgVV9JTVBPUlQKKyNkZWZpbmUg
VV9JMThOX0FQSSAgICAgVV9FWFBPUlQKKyNkZWZpbmUgVV9MQVlPVVRfQVBJICAgVV9JTVBPUlQK
KyNkZWZpbmUgVV9MQVlPVVRFWF9BUEkgVV9JTVBPUlQKKyNkZWZpbmUgVV9JT19BUEkgICAgICAg
VV9JTVBPUlQKKyNlbGlmIGRlZmluZWQoVV9MQVlPVVRfSU1QTEVNRU5UQVRJT04pCisjZGVmaW5l
IFVfREFUQV9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfQ09NTU9OX0FQSSAgIFVfSU1QT1JU
CisjZGVmaW5lIFVfSTE4Tl9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfTEFZT1VUX0FQSSAg
IFVfRVhQT1JUCisjZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVfSU1QT1JUCisjZGVmaW5lIFVfSU9f
QVBJICAgICAgIFVfSU1QT1JUCisjZWxpZiBkZWZpbmVkKFVfTEFZT1VURVhfSU1QTEVNRU5UQVRJ
T04pCisjZGVmaW5lIFVfREFUQV9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfQ09NTU9OX0FQ
SSAgIFVfSU1QT1JUCisjZGVmaW5lIFVfSTE4Tl9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVf
TEFZT1VUX0FQSSAgIFVfSU1QT1JUCisjZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVfRVhQT1JUCisj
ZGVmaW5lIFVfSU9fQVBJICAgICAgIFVfSU1QT1JUCisjZWxpZiBkZWZpbmVkKFVfSU9fSU1QTEVN
RU5UQVRJT04pCisjZGVmaW5lIFVfREFUQV9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfQ09N
TU9OX0FQSSAgIFVfSU1QT1JUCisjZGVmaW5lIFVfSTE4Tl9BUEkgICAgIFVfSU1QT1JUCisjZGVm
aW5lIFVfTEFZT1VUX0FQSSAgIFVfSU1QT1JUCisjZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVfSU1Q
T1JUCisjZGVmaW5lIFVfSU9fQVBJICAgICAgIFVfRVhQT1JUCisjZWxzZQorI2RlZmluZSBVX0RB
VEFfQVBJICAgICBVX0lNUE9SVAorI2RlZmluZSBVX0NPTU1PTl9BUEkgICBVX0lNUE9SVAorI2Rl
ZmluZSBVX0kxOE5fQVBJICAgICBVX0lNUE9SVAorI2RlZmluZSBVX0xBWU9VVF9BUEkgICBVX0lN
UE9SVAorI2RlZmluZSBVX0xBWU9VVEVYX0FQSSBVX0lNUE9SVAorI2RlZmluZSBVX0lPX0FQSSAg
ICAgICBVX0lNUE9SVAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVX1NUQU5EQVJEX0NQUF9OQU1F
U1BBQ0UKKyAqIENvbnRyb2wgb2YgQysrIE5hbWVzcGFjZQorICogQHN0YWJsZSBJQ1UgMi4wCisg
Ki8KKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBVX1NUQU5EQVJEX0NQUF9OQU1FU1BBQ0Ug
ICAgICAgIDo6CisjZWxzZQorI2RlZmluZSBVX1NUQU5EQVJEX0NQUF9OQU1FU1BBQ0UKKyNlbmRp
ZgorCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEdsb2JhbCBkZWxldGUgb3BlcmF0b3Ig
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8q
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ki8KKworLyoKKyAqIFRoZSBJQ1U0QyBsaWJyYXJ5IG11c3Qgbm90
IHVzZSB0aGUgZ2xvYmFsIG5ldyBhbmQgZGVsZXRlIG9wZXJhdG9ycy4KKyAqIFRoZXNlIG9wZXJh
dG9ycyBoZXJlIGFyZSBkZWZpbmVkIHRvIGVuYWJsZSB0ZXN0aW5nIGZvciB0aGlzLgorICogU2Vl
IEppdHRlcmJ1ZyAyNTgxIGZvciBkZXRhaWxzIG9mIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4KKyAq
CisgKiBWZXJpZmljYXRpb24gdGhhdCBJQ1U0QydzIG1lbW9yeSB1c2FnZSBpcyBjb3JyZWN0LCBp
LmUuLAorICogdGhhdCBnbG9iYWwgbmV3L2RlbGV0ZSBhcmUgbm90IHVzZWQ6CisgKgorICogYSkg
Q2hlY2sgZm9yIGltcG9ydHMgb2YgZ2xvYmFsIG5ldy9kZWxldGUgKHNlZSB1b2JqZWN0LmNwcCBm
b3IgZGV0YWlscykKKyAqIGIpIFZlcmlmeSB0aGF0IG5ldyBpcyBuZXZlciBpbXBvcnRlZC4KKyAq
IGMpIFZlcmlmeSB0aGF0IGRlbGV0ZSBpcyBvbmx5IGltcG9ydGVkIGZyb20gb2JqZWN0IGNvZGUg
Zm9yIGludGVyZmFjZS9taXhpbiBjbGFzc2VzLgorICogZCkgQWRkIGdsb2JhbCBkZWxldGUgYW5k
IGRlbGV0ZVtdIG9ubHkgZm9yIHRoZSBJQ1U0QyBsaWJyYXJ5IGl0c2VsZgorICogICAgYW5kIGRl
ZmluZSB0aGVtIGluIGEgd2F5IHRoYXQgY3Jhc2hlcyBvciBvdGhlcndpc2UgZWFzaWx5IHNob3dz
IGEgcHJvYmxlbS4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgZCkuCisgKiBUaGUg
b3BlcmF0b3IgaW1wbGVtZW50YXRpb25zIGNyYXNoOyB0aGlzIGlzIGludGVudGlvbmFsIGFuZCB1
c2VkIGZvciBsaWJyYXJ5IGRlYnVnZ2luZy4KKyAqCisgKiBOb3RlOiBUaGlzIGlzIGN1cnJlbnRs
eSBvbmx5IGRvbmUgb24gV2luZG93cyBiZWNhdXNlCisgKiBzb21lIExpbnV4L1VuaXggY29tcGls
ZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBkZWZpbmluZyBnbG9iYWwgbmV3L2RlbGV0ZS4KKyAqIE9u
IFdpbmRvd3MsIFdJTjMyIGlzIGRlZmluZWQsIGFuZCBpdCBpcyBfTVNDX1Zlcj49MTIwMCBmb3Ig
TVNWQyA2LjAgYW5kIGhpZ2hlci4KKyAqLworI2lmIGRlZmluZWQoWFBfQ1BMVVNQTFVTKSAmJiBk
ZWZpbmVkKFdJTjMyKSAmJiAoX01TQ19WZXI+PTEyMDApICYmIChkZWZpbmVkKFVfQ09NTU9OX0lN
UExFTUVOVEFUSU9OKSB8fCBkZWZpbmVkKFVfSTE4Tl9JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5l
ZChVX0xBWU9VVF9JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChVX1VTVERJT19JTVBMRU1FTlRB
VElPTikpCisKKy8qKgorICogR2xvYmFsIG9wZXJhdG9yIG5ldywgZGVmaW5lZCBvbmx5IGluc2lk
ZSBJQ1U0QywgbXVzdCBub3QgYmUgdXNlZC4KKyAqIENyYXNoZXMgaW50ZW50aW9uYWxseS4KKyAq
IEBpbnRlcm5hbAorICovCitpbmxpbmUgdm9pZCAqCitvcGVyYXRvciBuZXcoc2l6ZV90IC8qc2l6
ZSovKSB7CisgICAgY2hhciAqcT1OVUxMOworICAgICpxPTU7IC8qIGJyZWFrIGl0ICovCisgICAg
cmV0dXJuIHE7Cit9CisKKy8qKgorICogR2xvYmFsIG9wZXJhdG9yIG5ld1tdLCBkZWZpbmVkIG9u
bHkgaW5zaWRlIElDVTRDLCBtdXN0IG5vdCBiZSB1c2VkLgorICogQ3Jhc2hlcyBpbnRlbnRpb25h
bGx5LgorICogQGludGVybmFsCisgKi8KK2lubGluZSB2b2lkICoKK29wZXJhdG9yIG5ld1tdKHNp
emVfdCAvKnNpemUqLykgeworICAgIGNoYXIgKnE9TlVMTDsKKyAgICAqcT01OyAvKiBicmVhayBp
dCAqLworICAgIHJldHVybiBxOworfQorCisvKioKKyAqIEdsb2JhbCBvcGVyYXRvciBkZWxldGUs
IGRlZmluZWQgb25seSBpbnNpZGUgSUNVNEMsIG11c3Qgbm90IGJlIHVzZWQuCisgKiBDcmFzaGVz
IGludGVudGlvbmFsbHkuCisgKiBAaW50ZXJuYWwKKyAqLworaW5saW5lIHZvaWQKK29wZXJhdG9y
IGRlbGV0ZSh2b2lkICogLypwKi8pIHsKKyAgICBjaGFyICpxPU5VTEw7CisgICAgKnE9NTsgLyog
YnJlYWsgaXQgKi8KK30KKworLyoqCisgKiBHbG9iYWwgb3BlcmF0b3IgZGVsZXRlW10sIGRlZmlu
ZWQgb25seSBpbnNpZGUgSUNVNEMsIG11c3Qgbm90IGJlIHVzZWQuCisgKiBDcmFzaGVzIGludGVu
dGlvbmFsbHkuCisgKiBAaW50ZXJuYWwKKyAqLworaW5saW5lIHZvaWQKK29wZXJhdG9yIGRlbGV0
ZVtdKHZvaWQgKiAvKnAqLykgeworICAgIGNoYXIgKnE9TlVMTDsKKyAgICAqcT01OyAvKiBicmVh
ayBpdCAqLworfQorCisjZW5kaWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogVUVycm9y
Q29kZSAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKioKKyAqIEVycm9yIGNvZGUgdG8g
cmVwbGFjZSBleGNlcHRpb24gaGFuZGxpbmcsIHNvIHRoYXQgdGhlIGNvZGUgaXMgY29tcGF0aWJs
ZSB3aXRoIGFsbCBDKysgY29tcGlsZXJzLAorICogYW5kIHRvIHVzZSB0aGUgc2FtZSBtZWNoYW5p
c20gZm9yIEMgYW5kIEMrKy4KKyAqCisgKiBccGFyCisgKiBJQ1UgZnVuY3Rpb25zIHRoYXQgdGFr
ZSBhIHJlZmVyZW5jZSAoQysrKSBvciBhIHBvaW50ZXIgKEMpIHRvIGEgVUVycm9yQ29kZQorICog
Zmlyc3QgdGVzdCBpZihVX0ZBSUxVUkUoZXJyb3JDb2RlKSkgeyByZXR1cm4gaW1tZWRpYXRlbHk7
IH0KKyAqIHNvIHRoYXQgaW4gYSBjaGFpbiBvZiBzdWNoIGZ1bmN0aW9ucyB0aGUgZmlyc3Qgb25l
IHRoYXQgc2V0cyBhbiBlcnJvciBjb2RlCisgKiBjYXVzZXMgdGhlIGZvbGxvd2luZyBvbmVzIHRv
IG5vdCBwZXJmb3JtIGFueSBvcGVyYXRpb25zLgorICoKKyAqIFxwYXIKKyAqIEVycm9yIGNvZGVz
IHNob3VsZCBiZSB0ZXN0ZWQgdXNpbmcgVV9GQUlMVVJFKCkgYW5kIFVfU1VDQ0VTUygpLgorICog
QHN0YWJsZSBJQ1UgMi4wCisgKi8KK3R5cGVkZWYgZW51bSBVRXJyb3JDb2RlIHsKKyAgICAvKiBU
aGUgb3JkZXJpbmcgb2YgVV9FUlJPUl9JTkZPX1NUQVJUIFZzIFVfVVNJTkdfRkFMTEJBQ0tfV0FS
TklORyBsb29rcyB3ZWlyZAorICAgICAqIGFuZCBpcyB0aGF0IHdheSBiZWNhdXNlIFZDKysgZGVi
dWdnZXIgZGlzcGxheXMgZmlyc3QgZW5jb3VudGVyZWQgY29uc3RhbnQsCisgICAgICogd2hpY2gg
aXMgbm90IHRoZSB3aGF0IHRoZSBjb2RlIGlzIHVzZWQgZm9yCisgICAgICovCisKKyAgICBVX1VT
SU5HX0ZBTExCQUNLX1dBUk5JTkcgID0gLTEyOCwgICAvKio8IEEgcmVzb3VyY2UgYnVuZGxlIGxv
b2t1cCByZXR1cm5lZCBhIGZhbGxiYWNrIHJlc3VsdCAobm90IGFuIGVycm9yKSAqLworCisgICAg
VV9FUlJPUl9XQVJOSU5HX1NUQVJUICAgICA9IC0xMjgsICAgLyoqPCBTdGFydCBvZiBpbmZvcm1h
dGlvbiByZXN1bHRzIChzZW1hbnRpY2FsbHkgc3VjY2Vzc2Z1bCkgKi8KKworICAgIFVfVVNJTkdf
REVGQVVMVF9XQVJOSU5HICAgPSAtMTI3LCAgIC8qKjwgQSByZXNvdXJjZSBidW5kbGUgbG9va3Vw
IHJldHVybmVkIGEgcmVzdWx0IGZyb20gdGhlIHJvb3QgbG9jYWxlIChub3QgYW4gZXJyb3IpICov
CisKKyAgICBVX1NBRkVDTE9ORV9BTExPQ0FURURfV0FSTklORyA9IC0xMjYsIC8qKjwgQSBTYWZl
Q2xvbmUgb3BlcmF0aW9uIHJlcXVpcmVkIGFsbG9jYXRpbmcgbWVtb3J5IChpbmZvcm1hdGlvbmFs
IG9ubHkpICovCisKKyAgICBVX1NUQVRFX09MRF9XQVJOSU5HICAgICAgID0gLTEyNSwgICAvKio8
IElDVSBoYXMgdG8gdXNlIGNvbXBhdGliaWxpdHkgbGF5ZXIgdG8gY29uc3RydWN0IHRoZSBzZXJ2
aWNlLiBFeHBlY3QgcGVyZm9ybWFuY2UvbWVtb3J5IHVzYWdlIGRlZ3JhZGF0aW9uLiBDb25zaWRl
ciB1cGdyYWRpbmcgKi8KKworICAgIFVfU1RSSU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkcgPSAt
MTI0LC8qKjwgQW4gb3V0cHV0IHN0cmluZyBjb3VsZCBub3QgYmUgTlVMLXRlcm1pbmF0ZWQgYmVj
YXVzZSBvdXRwdXQgbGVuZ3RoPT1kZXN0Q2FwYWNpdHkuICovCisKKyAgICBVX1NPUlRfS0VZX1RP
T19TSE9SVF9XQVJOSU5HID0gLTEyMywgLyoqPCBOdW1iZXIgb2YgbGV2ZWxzIHJlcXVlc3RlZCBp
biBnZXRCb3VuZCBpcyBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGxldmVscyBpbiB0aGUgc29y
dCBrZXkgKi8KKworICAgIFVfQU1CSUdVT1VTX0FMSUFTX1dBUk5JTkcgPSAtMTIyLCAgIC8qKjwg
VGhpcyBjb252ZXJ0ZXIgYWxpYXMgY2FuIGdvIHRvIGRpZmZlcmVudCBjb252ZXJ0ZXIgaW1wbGVt
ZW50YXRpb25zICovCisKKyAgICBVX0RJRkZFUkVOVF9VQ0FfVkVSU0lPTiA9IC0xMjEsICAgICAv
Kio8IHVjb2xfb3BlbiBlbmNvdW50ZXJlZCBhIG1pc21hdGNoIGJldHdlZW4gVUNBIHZlcnNpb24g
YW5kIGNvbGxhdG9yIGltYWdlIHZlcnNpb24sIHNvIHRoZSBjb2xsYXRvciB3YXMgY29uc3RydWN0
ZWQgZnJvbSBydWxlcy4gTm8gaW1wYWN0IHRvIGZ1cnRoZXIgZnVuY3Rpb24gKi8KKworICAgIFVf
RVJST1JfV0FSTklOR19MSU1JVCwgICAgICAgICAgICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBi
ZSB0aGUgbGFzdCB3YXJuaW5nIHZhbHVlIHRvIGluZGljYXRlIHRoZSBsaW1pdCBmb3IgVUVycm9y
Q29kZSB3YXJuaW5ncyAobGFzdCB3YXJuaW5nIGNvZGUgKzEpICovCisKKworICAgIFVfWkVST19F
UlJPUiAgICAgICAgICAgICAgPSAgMCwgICAgIC8qKjwgTm8gZXJyb3IsIG5vIHdhcm5pbmcuICov
CisKKyAgICBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IgID0gIDEsICAgICAvKio8IFN0YXJ0IG9m
IGNvZGVzIGluZGljYXRpbmcgZmFpbHVyZSAqLworICAgIFVfTUlTU0lOR19SRVNPVVJDRV9FUlJP
UiAgPSAgMiwgICAgIC8qKjwgVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjYW5ub3QgYmUgZm91bmQg
Ki8KKyAgICBVX0lOVkFMSURfRk9STUFUX0VSUk9SICAgID0gIDMsICAgICAvKio8IERhdGEgZm9y
bWF0IGlzIG5vdCB3aGF0IGlzIGV4cGVjdGVkICovCisgICAgVV9GSUxFX0FDQ0VTU19FUlJPUiAg
ICAgICA9ICA0LCAgICAgLyoqPCBUaGUgcmVxdWVzdGVkIGZpbGUgY2Fubm90IGJlIGZvdW5kICov
CisgICAgVV9JTlRFUk5BTF9QUk9HUkFNX0VSUk9SICA9ICA1LCAgICAgLyoqPCBJbmRpY2F0ZXMg
YSBidWcgaW4gdGhlIGxpYnJhcnkgY29kZSAqLworICAgIFVfTUVTU0FHRV9QQVJTRV9FUlJPUiAg
ICAgPSAgNiwgICAgIC8qKjwgVW5hYmxlIHRvIHBhcnNlIGEgbWVzc2FnZSAobWVzc2FnZSBmb3Jt
YXQpICovCisgICAgVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUiA9ICA3LCAgICAgLyoqPCBNZW1v
cnkgYWxsb2NhdGlvbiBlcnJvciAqLworICAgIFVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1IgPSAg
OCwgICAgIC8qKjwgVHJ5aW5nIHRvIGFjY2VzcyB0aGUgaW5kZXggdGhhdCBpcyBvdXQgb2YgYm91
bmRzICovCisgICAgVV9QQVJTRV9FUlJPUiAgICAgICAgICAgICA9ICA5LCAgICAgLyoqPCBFcXVp
dmFsZW50IHRvIEphdmEgUGFyc2VFeGNlcHRpb24gKi8KKyAgICBVX0lOVkFMSURfQ0hBUl9GT1VO
RCAgICAgID0gMTAsICAgICAvKio8IENoYXJhY3RlciBjb252ZXJzaW9uOiBVbm1hcHBhYmxlIGlu
cHV0IHNlcXVlbmNlLiBJbiBvdGhlciBBUElzOiBJbnZhbGlkIGNoYXJhY3Rlci4gKi8KKyAgICBV
X1RSVU5DQVRFRF9DSEFSX0ZPVU5EICAgID0gMTEsICAgICAvKio8IENoYXJhY3RlciBjb252ZXJz
aW9uOiBJbmNvbXBsZXRlIGlucHV0IHNlcXVlbmNlLiAqLworICAgIFVfSUxMRUdBTF9DSEFSX0ZP
VU5EICAgICAgPSAxMiwgICAgIC8qKjwgQ2hhcmFjdGVyIGNvbnZlcnNpb246IElsbGVnYWwgaW5w
dXQgc2VxdWVuY2UvY29tYmluYXRpb24gb2YgaW5wdXQgdW5pdHMuLiAqLworICAgIFVfSU5WQUxJ
RF9UQUJMRV9GT1JNQVQgICAgPSAxMywgICAgIC8qKjwgQ29udmVyc2lvbiB0YWJsZSBmaWxlIGZv
dW5kLCBidXQgY29ycnVwdGVkICovCisgICAgVV9JTlZBTElEX1RBQkxFX0ZJTEUgICAgICA9IDE0
LCAgICAgLyoqPCBDb252ZXJzaW9uIHRhYmxlIGZpbGUgbm90IGZvdW5kICovCisgICAgVV9CVUZG
RVJfT1ZFUkZMT1dfRVJST1IgICA9IDE1LCAgICAgLyoqPCBBIHJlc3VsdCB3b3VsZCBub3QgZml0
IGluIHRoZSBzdXBwbGllZCBidWZmZXIgKi8KKyAgICBVX1VOU1VQUE9SVEVEX0VSUk9SICAgICAg
ID0gMTYsICAgICAvKio8IFJlcXVlc3RlZCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBpbiBjdXJy
ZW50IGNvbnRleHQgKi8KKyAgICBVX1JFU09VUkNFX1RZUEVfTUlTTUFUQ0ggID0gMTcsICAgICAv
Kio8IGFuIG9wZXJhdGlvbiBpcyByZXF1ZXN0ZWQgb3ZlciBhIHJlc291cmNlIHRoYXQgZG9lcyBu
b3Qgc3VwcG9ydCBpdCAqLworICAgIFVfSUxMRUdBTF9FU0NBUEVfU0VRVUVOQ0UgPSAxOCwgICAg
IC8qKjwgSVNPLTIwMjIgaWxsbGVnYWwgZXNjYXBlIHNlcXVlbmNlICovCisgICAgVV9VTlNVUFBP
UlRFRF9FU0NBUEVfU0VRVUVOQ0UgPSAxOSwgLyoqPCBJU08tMjAyMiB1bnN1cHBvcnRlZCBlc2Nh
cGUgc2VxdWVuY2UgKi8KKyAgICBVX05PX1NQQUNFX0FWQUlMQUJMRSAgICAgID0gMjAsICAgICAv
Kio8IE5vIHNwYWNlIGF2YWlsYWJsZSBmb3IgaW4tYnVmZmVyIGV4cGFuc2lvbiBmb3IgQXJhYmlj
IHNoYXBpbmcgKi8KKyAgICBVX0NFX05PVF9GT1VORF9FUlJPUiAgICAgID0gMjEsICAgICAvKio8
IEN1cnJlbnRseSB1c2VkIG9ubHkgd2hpbGUgc2V0dGluZyB2YXJpYWJsZSB0b3AsIGJ1dCBjYW4g
YmUgdXNlZCBnZW5lcmFsbHkgKi8KKyAgICBVX1BSSU1BUllfVE9PX0xPTkdfRVJST1IgID0gMjIs
ICAgICAvKio8IFVzZXIgdHJpZWQgdG8gc2V0IHZhcmlhYmxlIHRvcCB0byBhIHByaW1hcnkgdGhh
dCBpcyBsb25nZXIgdGhhbiB0d28gYnl0ZXMgKi8KKyAgICBVX1NUQVRFX1RPT19PTERfRVJST1Ig
ICAgID0gMjMsICAgICAvKio8IElDVSBjYW5ub3QgY29uc3RydWN0IGEgc2VydmljZSBmcm9tIHRo
aXMgc3RhdGUsIGFzIGl0IGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgKi8KKyAgICBVX1RPT19NQU5Z
X0FMSUFTRVNfRVJST1IgID0gMjQsICAgICAvKio8IFRoZXJlIGFyZSB0b28gbWFueSBhbGlhc2Vz
IGluIHRoZSBwYXRoIHRvIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyB2ZXJ5IHBvc3NpYmxlIHRoYXQgYSBj
aXJjdWxhciBhbGlhcyBkZWZpbml0aW9uIGhhcyBvY2N1cmVkICovCisgICAgVV9FTlVNX09VVF9P
Rl9TWU5DX0VSUk9SICA9IDI1LCAgICAgLyoqPCBVRW51bWVyYXRpb24gb3V0IG9mIHN5bmMgd2l0
aCB1bmRlcmx5aW5nIGNvbGxlY3Rpb24gKi8KKyAgICBVX0lOVkFSSUFOVF9DT05WRVJTSU9OX0VS
Uk9SID0gMjYsICAvKio8IFVuYWJsZSB0byBjb252ZXJ0IGEgVUNoYXIqIHN0cmluZyB0byBjaGFy
KiB3aXRoIHRoZSBpbnZhcmlhbnQgY29udmVydGVyLiAqLworICAgIFVfSU5WQUxJRF9TVEFURV9F
UlJPUiAgICAgPSAyNywgICAgIC8qKjwgUmVxdWVzdGVkIG9wZXJhdGlvbiBjYW4gbm90IGJlIGNv
bXBsZXRlZCB3aXRoIElDVSBpbiBpdHMgY3VycmVudCBzdGF0ZSAqLworICAgIFVfQ09MTEFUT1Jf
VkVSU0lPTl9NSVNNQVRDSCA9IDI4LCAgIC8qKjwgQ29sbGF0b3IgdmVyc2lvbiBpcyBub3QgY29t
cGF0aWJsZSB3aXRoIHRoZSBiYXNlIHZlcnNpb24gKi8KKyAgICBVX1VTRUxFU1NfQ09MTEFUT1Jf
RVJST1IgID0gMjksICAgICAvKio8IENvbGxhdG9yIGlzIG9wdGlvbnMgb25seSBhbmQgbm8gYmFz
ZSBpcyBzcGVjaWZpZWQgKi8KKworICAgIFVfU1RBTkRBUkRfRVJST1JfTElNSVQsICAgICAgICAg
ICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCB2YWx1ZSB0byBpbmRpY2F0ZSB0
aGUgbGltaXQgZm9yIHN0YW5kYXJkIGVycm9ycyAqLworICAgIC8qCisgICAgICogdGhlIGVycm9y
IGNvZGUgcmFuZ2UgMHgxMDAwMCAweDEwMTAwIGFyZSByZXNlcnZlZCBmb3IgVHJhbnNsaXRlcmF0
b3IKKyAgICAgKi8KKyAgICBVX0JBRF9WQVJJQUJMRV9ERUZJTklUSU9OPTB4MTAwMDAsLyoqPCBN
aXNzaW5nICckJyBvciBkdXBsaWNhdGUgdmFyaWFibGUgbmFtZSAqLworICAgIFVfUEFSU0VfRVJS
T1JfU1RBUlQgPSAweDEwMDAwLCAgICAvKio8IFN0YXJ0IG9mIFRyYW5zbGl0ZXJhdG9yIGVycm9y
cyAqLworICAgIFVfTUFMRk9STUVEX1JVTEUsICAgICAgICAgICAgICAgICAvKio8IEVsZW1lbnRz
IG9mIGEgcnVsZSBhcmUgbWlzcGxhY2VkICovCisgICAgVV9NQUxGT1JNRURfU0VULCAgICAgICAg
ICAgICAgICAgIC8qKjwgQSBVbmljb2RlU2V0IHBhdHRlcm4gaXMgaW52YWxpZCovCisgICAgVV9N
QUxGT1JNRURfU1lNQk9MX1JFRkVSRU5DRSwgICAgIC8qKjwgVU5VU0VEIGFzIG9mIElDVSAyLjQg
Ki8KKyAgICBVX01BTEZPUk1FRF9VTklDT0RFX0VTQ0FQRSwgICAgICAgLyoqPCBBIFVuaWNvZGUg
ZXNjYXBlIHBhdHRlcm4gaXMgaW52YWxpZCovCisgICAgVV9NQUxGT1JNRURfVkFSSUFCTEVfREVG
SU5JVElPTiwgIC8qKjwgQSB2YXJpYWJsZSBkZWZpbml0aW9uIGlzIGludmFsaWQgKi8KKyAgICBV
X01BTEZPUk1FRF9WQVJJQUJMRV9SRUZFUkVOQ0UsICAgLyoqPCBBIHZhcmlhYmxlIHJlZmVyZW5j
ZSBpcyBpbnZhbGlkICovCisgICAgVV9NSVNNQVRDSEVEX1NFR01FTlRfREVMSU1JVEVSUywgIC8q
KjwgVU5VU0VEIGFzIG9mIElDVSAyLjQgKi8KKyAgICBVX01JU1BMQUNFRF9BTkNIT1JfU1RBUlQs
ICAgICAgICAgLyoqPCBBIHN0YXJ0IGFuY2hvciBhcHBlYXJzIGF0IGFuIGlsbGVnYWwgcG9zaXRp
b24gKi8KKyAgICBVX01JU1BMQUNFRF9DVVJTT1JfT0ZGU0VULCAgICAgICAgLyoqPCBBIGN1cnNv
ciBvZmZzZXQgb2NjdXJzIGF0IGFuIGlsbGVnYWwgcG9zaXRpb24gKi8KKyAgICBVX01JU1BMQUNF
RF9RVUFOVElGSUVSLCAgICAgICAgICAgLyoqPCBBIHF1YW50aWZpZXIgYXBwZWFycyBhZnRlciBh
IHNlZ21lbnQgY2xvc2UgZGVsaW1pdGVyICovCisgICAgVV9NSVNTSU5HX09QRVJBVE9SLCAgICAg
ICAgICAgICAgIC8qKjwgQSBydWxlIGNvbnRhaW5zIG5vIG9wZXJhdG9yICovCisgICAgVV9NSVNT
SU5HX1NFR01FTlRfQ0xPU0UsICAgICAgICAgIC8qKjwgVU5VU0VEIGFzIG9mIElDVSAyLjQgKi8K
KyAgICBVX01VTFRJUExFX0FOVEVfQ09OVEVYVFMsICAgICAgICAgLyoqPCBNb3JlIHRoYW4gb25l
IGFudGUgY29udGV4dCAqLworICAgIFVfTVVMVElQTEVfQ1VSU09SUywgICAgICAgICAgICAgICAv
Kio8IE1vcmUgdGhhbiBvbmUgY3Vyc29yICovCisgICAgVV9NVUxUSVBMRV9QT1NUX0NPTlRFWFRT
LCAgICAgICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBwb3N0IGNvbnRleHQgKi8KKyAgICBVX1RSQUlM
SU5HX0JBQ0tTTEFTSCwgICAgICAgICAgICAgLyoqPCBBIGRhbmdsaW5nIGJhY2tzbGFzaCAqLwor
ICAgIFVfVU5ERUZJTkVEX1NFR01FTlRfUkVGRVJFTkNFLCAgICAvKio8IEEgc2VnbWVudCByZWZl
cmVuY2UgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGRlZmluZWQgc2VnbWVudCAqLworICAgIFVf
VU5ERUZJTkVEX1ZBUklBQkxFLCAgICAgICAgICAgICAvKio8IEEgdmFyaWFibGUgcmVmZXJlbmNl
IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIHZhcmlhYmxlICovCisgICAgVV9VTlFV
T1RFRF9TUEVDSUFMLCAgICAgICAgICAgICAgIC8qKjwgQSBzcGVjaWFsIGNoYXJhY3RlciB3YXMg
bm90IHF1b3RlZCBvciBlc2NhcGVkICovCisgICAgVV9VTlRFUk1JTkFURURfUVVPVEUsICAgICAg
ICAgICAgIC8qKjwgQSBjbG9zaW5nIHNpbmdsZSBxdW90ZSBpcyBtaXNzaW5nICovCisgICAgVV9S
VUxFX01BU0tfRVJST1IsICAgICAgICAgICAgICAgIC8qKjwgQSBydWxlIGlzIGhpZGRlbiBieSBh
biBlYXJsaWVyIG1vcmUgZ2VuZXJhbCBydWxlICovCisgICAgVV9NSVNQTEFDRURfQ09NUE9VTkRf
RklMVEVSLCAgICAgIC8qKjwgQSBjb21wb3VuZCBmaWx0ZXIgaXMgaW4gYW4gaW52YWxpZCBsb2Nh
dGlvbiAqLworICAgIFVfTVVMVElQTEVfQ09NUE9VTkRfRklMVEVSUywgICAgICAvKio8IE1vcmUg
dGhhbiBvbmUgY29tcG91bmQgZmlsdGVyICovCisgICAgVV9JTlZBTElEX1JCVF9TWU5UQVgsICAg
ICAgICAgICAgIC8qKjwgQSAiOjppZCIgcnVsZSB3YXMgcGFzc2VkIHRvIHRoZSBSdWxlQmFzZWRU
cmFuc2xpdGVyYXRvciBwYXJzZXIgKi8KKyAgICBVX0lOVkFMSURfUFJPUEVSVFlfUEFUVEVSTiwg
ICAgICAgLyoqPCBVTlVTRUQgYXMgb2YgSUNVIDIuNCAqLworICAgIFVfTUFMRk9STUVEX1BSQUdN
QSwgICAgICAgICAgICAgICAvKio8IEEgJ3VzZScgcHJhZ21hIGlzIGludmxhbGlkICovCisgICAg
VV9VTkNMT1NFRF9TRUdNRU5ULCAgICAgICAgICAgICAgIC8qKjwgQSBjbG9zaW5nICcpJyBpcyBt
aXNzaW5nICovCisgICAgVV9JTExFR0FMX0NIQVJfSU5fU0VHTUVOVCwgICAgICAgIC8qKjwgVU5V
U0VEIGFzIG9mIElDVSAyLjQgKi8KKyAgICBVX1ZBUklBQkxFX1JBTkdFX0VYSEFVU1RFRCwgICAg
ICAgLyoqPCBUb28gbWFueSBzdGFuZC1pbnMgZ2VuZXJhdGVkIGZvciB0aGUgZ2l2ZW4gdmFyaWFi
bGUgcmFuZ2UgKi8KKyAgICBVX1ZBUklBQkxFX1JBTkdFX09WRVJMQVAsICAgICAgICAgLyoqPCBU
aGUgdmFyaWFibGUgcmFuZ2Ugb3ZlcmxhcHMgY2hhcmFjdGVycyB1c2VkIGluIHJ1bGVzICovCisg
ICAgVV9JTExFR0FMX0NIQVJBQ1RFUiwgICAgICAgICAgICAgIC8qKjwgQSBzcGVjaWFsIGNoYXJh
Y3RlciBpcyBvdXRzaWRlIGl0cyBhbGxvd2VkIGNvbnRleHQgKi8KKyAgICBVX0lOVEVSTkFMX1RS
QU5TTElURVJBVE9SX0VSUk9SLCAgLyoqPCBJbnRlcm5hbCB0cmFuc2xpdGVyYXRvciBzeXN0ZW0g
ZXJyb3IgKi8KKyAgICBVX0lOVkFMSURfSUQsICAgICAgICAgICAgICAgICAgICAgLyoqPCBBICI6
OmlkIiBydWxlIHNwZWNpZmllcyBhbiB1bmtub3duIHRyYW5zbGl0ZXJhdG9yICovCisgICAgVV9J
TlZBTElEX0ZVTkNUSU9OLCAgICAgICAgICAgICAgIC8qKjwgQSAiJmZuKCkiIHJ1bGUgc3BlY2lm
aWVzIGFuIHVua25vd24gdHJhbnNsaXRlcmF0b3IgKi8KKyAgICBVX1BBUlNFX0VSUk9SX0xJTUlU
LCAgICAgICAgICAgICAgLyoqPCBUaGUgbGltaXQgZm9yIFRyYW5zbGl0ZXJhdG9yIGVycm9ycyAq
LworCisgICAgLyoKKyAgICAgKiB0aGUgZXJyb3IgY29kZSByYW5nZSAweDEwMTAwIDB4MTAyMDAg
YXJlIHJlc2VydmVkIGZvciBmb3JtYXR0aW5nIEFQSSBwYXJzaW5nIGVycm9yCisgICAgICovCisg
ICAgVV9VTkVYUEVDVEVEX1RPS0VOPTB4MTAxMDAsICAgICAgIC8qKjwgU3ludGF4IGVycm9yIGlu
IGZvcm1hdCBwYXR0ZXJuICovCisgICAgVV9GTVRfUEFSU0VfRVJST1JfU1RBUlQ9MHgxMDEwMCwg
IC8qKjwgU3RhcnQgb2YgZm9ybWF0IGxpYnJhcnkgZXJyb3JzICovCisgICAgVV9NVUxUSVBMRV9E
RUNJTUFMX1NFUEFSQVRPUlMsICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBkZWNpbWFsIHNlcGFyYXRv
ciBpbiBudW1iZXIgcGF0dGVybiAqLworICAgIFVfTVVMVElQTEVfREVDSU1BTF9TRVBFUkFUT1JT
ID0gVV9NVUxUSVBMRV9ERUNJTUFMX1NFUEFSQVRPUlMsIC8qKjwgVHlwbzoga2VwdCBmb3IgYmFj
a3dhcmQgY29tcGF0aWJpbGl0eS4gVXNlIFVfTVVMVElQTEVfREVDSU1BTF9TRVBBUkFUT1JTICov
CisgICAgVV9NVUxUSVBMRV9FWFBPTkVOVElBTF9TWU1CT0xTLCAgIC8qKjwgTW9yZSB0aGFuIG9u
ZSBleHBvbmVudCBzeW1ib2wgaW4gbnVtYmVyIHBhdHRlcm4gKi8KKyAgICBVX01BTEZPUk1FRF9F
WFBPTkVOVElBTF9QQVRURVJOLCAgLyoqPCBHcm91cGluZyBzeW1ib2wgaW4gZXhwb25lbnQgcGF0
dGVybiAqLworICAgIFVfTVVMVElQTEVfUEVSQ0VOVF9TWU1CT0xTLCAgICAgICAvKio8IE1vcmUg
dGhhbiBvbmUgcGVyY2VudCBzeW1ib2wgaW4gbnVtYmVyIHBhdHRlcm4gKi8KKyAgICBVX01VTFRJ
UExFX1BFUk1JTExfU1lNQk9MUywgICAgICAgLyoqPCBNb3JlIHRoYW4gb25lIHBlcm1pbGwgc3lt
Ym9sIGluIG51bWJlciBwYXR0ZXJuICovCisgICAgVV9NVUxUSVBMRV9QQURfU1BFQ0lGSUVSUywg
ICAgICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBwYWQgc3ltYm9sIGluIG51bWJlciBwYXR0ZXJuICov
CisgICAgVV9QQVRURVJOX1NZTlRBWF9FUlJPUiwgICAgICAgICAgIC8qKjwgU3ludGF4IGVycm9y
IGluIGZvcm1hdCBwYXR0ZXJuICovCisgICAgVV9JTExFR0FMX1BBRF9QT1NJVElPTiwgICAgICAg
ICAgIC8qKjwgUGFkIHN5bWJvbCBtaXNwbGFjZWQgaW4gbnVtYmVyIHBhdHRlcm4gKi8KKyAgICBV
X1VOTUFUQ0hFRF9CUkFDRVMsICAgICAgICAgICAgICAgLyoqPCBCcmFjZXMgZG8gbm90IG1hdGNo
IGluIG1lc3NhZ2UgcGF0dGVybiAqLworICAgIFVfVU5TVVBQT1JURURfUFJPUEVSVFksICAgICAg
ICAgICAvKio8IFVOVVNFRCBhcyBvZiBJQ1UgMi40ICovCisgICAgVV9VTlNVUFBPUlRFRF9BVFRS
SUJVVEUsICAgICAgICAgIC8qKjwgVU5VU0VEIGFzIG9mIElDVSAyLjQgKi8KKyAgICBVX0ZNVF9Q
QVJTRV9FUlJPUl9MSU1JVCwgICAgICAgICAgLyoqPCBUaGUgbGltaXQgZm9yIGZvcm1hdCBsaWJy
YXJ5IGVycm9ycyAqLworCisgICAgLyoKKyAgICAgKiB0aGUgZXJyb3IgY29kZSByYW5nZSAweDEw
MjAwIDB4MTAyZmYgYXJlIHJlc2VydmVkIGZvciBCcmVhayBJdGVyYXRvciByZWxhdGVkIGVycm9y
CisgICAgICovCisgICAgVV9CUktfRVJST1JfU1RBUlQ9MHgxMDIwMCwgICAgICAgICAgICAgLyoq
PCBTdGFydCBvZiBjb2RlcyBpbmRpY2F0aW5nIEJyZWFrIEl0ZXJhdG9yIGZhaWx1cmVzICovCisg
ICAgVV9CUktfSU5URVJOQUxfRVJST1IsICAgICAgICAgICAgICAgICAgLyoqPCBBbiBpbnRlcm5h
bCBlcnJvciAoYnVnKSB3YXMgZGV0ZWN0ZWQuICAgICAgICAgICAgICovCisgICAgVV9CUktfSEVY
X0RJR0lUU19FWFBFQ1RFRCwgICAgICAgICAgICAgLyoqPCBIZXggZGlnaXRzIGV4cGVjdGVkIGFz
IHBhcnQgb2YgYSBlc2NhcGVkIGNoYXIgaW4gYSBydWxlLiAqLworICAgIFVfQlJLX1NFTUlDT0xP
Tl9FWFBFQ1RFRCwgICAgICAgICAgICAgIC8qKjwgTWlzc2luZyAnOycgYXQgdGhlIGVuZCBvZiBh
IFJCQkkgcnVsZS4gICAgICAgICAgICAqLworICAgIFVfQlJLX1JVTEVfU1lOVEFYLCAgICAgICAg
ICAgICAgICAgICAgIC8qKjwgU3ludGF4IGVycm9yIGluIFJCQkkgcnVsZS4gICAgICAgICAgICAg
ICAgICAgICAgICAqLworICAgIFVfQlJLX1VOQ0xPU0VEX1NFVCwgICAgICAgICAgICAgICAgICAg
IC8qKjwgVW5pY29kZVNldCB3aXRpbmcgYW4gUkJCSSBydWxlIG1pc3NpbmcgYSBjbG9zaW5nICdd
Jy4gICovCisgICAgVV9CUktfQVNTSUdOX0VSUk9SLCAgICAgICAgICAgICAgICAgICAgLyoqPCBT
eW50YXggZXJyb3IgaW4gUkJCSSBydWxlIGFzc2lnbm1lbnQgc3RhdGVtZW50LiAgICovCisgICAg
VV9CUktfVkFSSUFCTEVfUkVERklOSVRJT04sICAgICAgICAgICAgLyoqPCBSQkJJIHJ1bGUgJFZh
cmlhYmxlIHJlZGVmaW5lZC4gICAgICAgICAgICAgICAgICAgICovCisgICAgVV9CUktfTUlTTUFU
Q0hFRF9QQVJFTiwgICAgICAgICAgICAgICAgLyoqPCBNaXMtbWF0Y2hlZCBwYXJlbnRoZXNlcyBp
biBhbiBSQkJJIHJ1bGUuICAgICAgICAgICovCisgICAgVV9CUktfTkVXX0xJTkVfSU5fUVVPVEVE
X1NUUklORywgICAgICAgLyoqPCBNaXNzaW5nIGNsb3NpbmcgcXVvdGUgaW4gYW4gUkJCSSBydWxl
LiAgICAgICAgICAgICovCisgICAgVV9CUktfVU5ERUZJTkVEX1ZBUklBQkxFLCAgICAgICAgICAg
ICAgLyoqPCBVc2Ugb2YgYW4gdW5kZWZpbmVkICRWYXJpYWJsZSBpbiBhbiBSQkJJIHJ1bGUuICAg
ICovCisgICAgVV9CUktfSU5JVF9FUlJPUiwgICAgICAgICAgICAgICAgICAgICAgLyoqPCBJbml0
aWFsaXphdGlvbiBmYWlsdXJlLiAgUHJvYmFibGUgbWlzc2luZyBJQ1UgRGF0YS4gKi8KKyAgICBV
X0JSS19SVUxFX0VNUFRZX1NFVCwgICAgICAgICAgICAgICAgICAvKio8IFJ1bGUgY29udGFpbnMg
YW4gZW1wdHkgVW5pY29kZSBTZXQuICAgICAgICAgICAgICAgKi8KKyAgICBVX0JSS19VTlJFQ09H
TklaRURfT1BUSU9OLCAgICAgICAgICAgICAvKio8ICEhb3B0aW9uIGluIFJCQkkgcnVsZXMgbm90
IHJlY29nbml6ZWQuICAgICAgICAgICAgKi8KKyAgICBVX0JSS19NQUxGT1JNRURfUlVMRV9UQUcs
ICAgICAgICAgICAgICAvKio8IFRoZSB7bm5ufSB0YWcgb24gYSBydWxlIGlzIG1hbCBmb3JtZWQg
ICAgICAgICAgICAgKi8KKyAgICBVX0JSS19FUlJPUl9MSU1JVCwgICAgICAgICAgICAgICAgICAg
ICAvKio8IFRoaXMgbXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgdmFsdWUgdG8gaW5kaWNhdGUgdGhl
IGxpbWl0IGZvciBCcmVhayBJdGVyYXRvciBmYWlsdXJlcyAqLworCisgICAgLyoKKyAgICAgKiBU
aGUgZXJyb3IgY29kZXMgaW4gdGhlIHJhbmdlIDB4MTAzMDAtMHgxMDNmZiBhcmUgcmVzZXJ2ZWQg
Zm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiByZWxhdGVkIGVycnJzCisgICAgICovCisgICAgVV9SRUdF
WF9FUlJPUl9TVEFSVD0weDEwMzAwLCAgICAgICAgICAvKio8IFN0YXJ0IG9mIGNvZGVzIGluZGlj
YXRpbmcgUmVnZXhwIGZhaWx1cmVzICAgICAgICAgICovCisgICAgVV9SRUdFWF9JTlRFUk5BTF9F
UlJPUiwgICAgICAgICAgICAgICAvKio8IEFuIGludGVybmFsIGVycm9yIChidWcpIHdhcyBkZXRl
Y3RlZC4gICAgICAgICAgICAgICovCisgICAgVV9SRUdFWF9SVUxFX1NZTlRBWCwgICAgICAgICAg
ICAgICAgICAvKio8IFN5bnRheCBlcnJvciBpbiByZWdleHAgcGF0dGVybi4gICAgICAgICAgICAg
ICAgICAgICovCisgICAgVV9SRUdFWF9JTlZBTElEX1NUQVRFLCAgICAgICAgICAgICAgICAvKio8
IFJlZ2V4TWF0Y2hlciBpbiBpbnZhbGlkIHN0YXRlIGZvciByZXF1ZXN0ZWQgb3BlcmF0aW9uICov
CisgICAgVV9SRUdFWF9CQURfRVNDQVBFX1NFUVVFTkNFLCAgICAgICAgICAvKio8IFVucmVjb2du
aXplZCBiYWNrc2xhc2ggZXNjYXBlIHNlcXVlbmNlIGluIHBhdHRlcm4gICovCisgICAgVV9SRUdF
WF9QUk9QRVJUWV9TWU5UQVgsICAgICAgICAgICAgICAvKio8IEluY29ycmVjdCBVbmljb2RlIHBy
b3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgVV9SRUdFWF9VTklNUExFTUVO
VEVELCAgICAgICAgICAgICAgICAvKio8IFVzZSBvZiByZWdleHAgZmVhdHVyZSB0aGF0IGlzIG5v
dCB5ZXQgaW1wbGVtZW50ZWQuICovCisgICAgVV9SRUdFWF9NSVNNQVRDSEVEX1BBUkVOLCAgICAg
ICAgICAgICAvKio8IEluY29ycmVjdGx5IG5lc3RlZCBwYXJlbnRoZXNlcyBpbiByZWdleHAgcGF0
dGVybi4gICovCisgICAgVV9SRUdFWF9OVU1CRVJfVE9PX0JJRywgICAgICAgICAgICAgICAvKio8
IERlY2ltYWwgbnVtYmVyIGlzIHRvbyBsYXJnZS4gICAgICAgICAgICAgICAgICAgICAgICovCisg
ICAgVV9SRUdFWF9CQURfSU5URVJWQUwsICAgICAgICAgICAgICAgICAvKio8IEVycm9yIGluIHtt
aW4sbWF4fSBpbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgVV9SRUdFWF9N
QVhfTFRfTUlOLCAgICAgICAgICAgICAgICAgICAvKio8IEluIHttaW4sbWF4fSwgbWF4IGlzIGxl
c3MgdGhhbiBtaW4uICAgICAgICAgICAgICAgICovCisgICAgVV9SRUdFWF9JTlZBTElEX0JBQ0tf
UkVGLCAgICAgICAgICAgICAvKio8IEJhY2stcmVmZXJlbmNlIHRvIGEgbm9uLWV4aXN0ZW50IGNh
cHR1cmUgZ3JvdXAuICAgICovCisgICAgVV9SRUdFWF9JTlZBTElEX0ZMQUcsICAgICAgICAgICAg
ICAgICAvKio8IEludmFsaWQgdmFsdWUgZm9yIG1hdGNoIG1vZGUgZmxhZ3MuICAgICAgICAgICAg
ICAgICovCisgICAgVV9SRUdFWF9MT09LX0JFSElORF9MSU1JVCwgICAgICAgICAgICAvKio8IExv
b2stQmVoaW5kIHBhdHRlcm4gbWF0Y2hlcyBtdXN0IGhhdmUgYSBib3VuZGVkIG1heGltdW0gbGVu
Z3RoLiAgICAqLworICAgIFVfUkVHRVhfU0VUX0NPTlRBSU5TX1NUUklORywgICAgICAgICAgLyoq
PCBSZWdleHBzIGNhbm5vdCBoYXZlIFVuaWNvZGVTZXRzIGNvbnRhaW5pbmcgc3RyaW5ncy4qLwor
ICAgIFVfUkVHRVhfRVJST1JfTElNSVQsICAgICAgICAgICAgICAgICAgLyoqPCBUaGlzIG11c3Qg
YWx3YXlzIGJlIHRoZSBsYXN0IHZhbHVlIHRvIGluZGljYXRlIHRoZSBsaW1pdCBmb3IgcmVnZXhw
IGVycm9ycyAqLworCisgICAgLyoKKyAgICAgKiBUaGUgZXJyb3IgY29kZSBpbiB0aGUgcmFuZ2Ug
MHgxMDQwMC0weDEwNGZmIGFyZSByZXNlcnZlZCBmb3IgSUROQSByZWxhdGVkIGVycm9yIGNvZGVz
CisgICAgICovCisgICAgVV9JRE5BX0VSUk9SX1NUQVJUPTB4MTA0MDAsCisgICAgVV9JRE5BX1BS
T0hJQklURURfRVJST1IsCisgICAgVV9JRE5BX1VOQVNTSUdORURfRVJST1IsCisgICAgVV9JRE5B
X0NIRUNLX0JJRElfRVJST1IsCisgICAgVV9JRE5BX1NURDNfQVNDSUlfUlVMRVNfRVJST1IsCisg
ICAgVV9JRE5BX0FDRV9QUkVGSVhfRVJST1IsCisgICAgVV9JRE5BX1ZFUklGSUNBVElPTl9FUlJP
UiwKKyAgICBVX0lETkFfTEFCRUxfVE9PX0xPTkdfRVJST1IsCisgICAgVV9JRE5BX0VSUk9SX0xJ
TUlULAorICAgIC8qCisgICAgICogQWxpYXNlcyBmb3IgU3RyaW5nUHJlcAorICAgICAqLworICAg
IFVfU1RSSU5HUFJFUF9QUk9ISUJJVEVEX0VSUk9SID0gVV9JRE5BX1BST0hJQklURURfRVJST1Is
CisgICAgVV9TVFJJTkdQUkVQX1VOQVNTSUdORURfRVJST1IgPSBVX0lETkFfVU5BU1NJR05FRF9F
UlJPUiwKKyAgICBVX1NUUklOR1BSRVBfQ0hFQ0tfQklESV9FUlJPUiA9IFVfSUROQV9DSEVDS19C
SURJX0VSUk9SLAorCisKKyAgICBVX0VSUk9SX0xJTUlUPVVfSUROQV9FUlJPUl9MSU1JVCAgICAg
IC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCB2YWx1ZSB0byBpbmRpY2F0ZSB0aGUg
bGltaXQgZm9yIFVFcnJvckNvZGUgKGxhc3QgZXJyb3IgY29kZSArMSkgKi8KK30gVUVycm9yQ29k
ZTsKKworLyogVXNlIHRoZSBmb2xsb3dpbmcgdG8gZGV0ZXJtaW5lIGlmIGFuIFVFcnJvckNvZGUg
cmVwcmVzZW50cyAqLworLyogb3BlcmF0aW9uYWwgc3VjY2VzcyBvciBmYWlsdXJlLiAqLworCisj
aWZkZWYgWFBfQ1BMVVNQTFVTCisgICAgLyoqCisgICAgICogRG9lcyB0aGUgZXJyb3IgY29kZSBp
bmRpY2F0ZSBzdWNjZXNzPworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAgIHN0
YXRpYworICAgIGlubGluZSBVQm9vbCBVX1NVQ0NFU1MoVUVycm9yQ29kZSBjb2RlKSB7IHJldHVy
biAoVUJvb2wpKGNvZGU8PVVfWkVST19FUlJPUik7IH0KKyAgICAvKioKKyAgICAgKiBEb2VzIHRo
ZSBlcnJvciBjb2RlIGluZGljYXRlIGEgZmFpbHVyZT8KKyAgICAgKiBAc3RhYmxlIElDVSAyLjAK
KyAgICAgKi8KKyAgICBzdGF0aWMKKyAgICBpbmxpbmUgVUJvb2wgVV9GQUlMVVJFKFVFcnJvckNv
ZGUgY29kZSkgeyByZXR1cm4gKFVCb29sKShjb2RlPlVfWkVST19FUlJPUik7IH0KKyNlbHNlCisg
ICAgLyoqCisgICAgICogRG9lcyB0aGUgZXJyb3IgY29kZSBpbmRpY2F0ZSBzdWNjZXNzPworICAg
ICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworIyAgIGRlZmluZSBVX1NVQ0NFU1MoeCkgKCh4
KTw9VV9aRVJPX0VSUk9SKQorICAgIC8qKgorICAgICAqIERvZXMgdGhlIGVycm9yIGNvZGUgaW5k
aWNhdGUgYSBmYWlsdXJlPworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworIyAgIGRl
ZmluZSBVX0ZBSUxVUkUoeCkgKCh4KT5VX1pFUk9fRVJST1IpCisjZW5kaWYKKworLyoqCisgKiBS
ZXR1cm4gYSBzdHJpbmcgZm9yIGEgVUVycm9yQ29kZSB2YWx1ZS4KKyAqIFRoZSBzdHJpbmcgd2ls
bCBiZSB0aGUgc2FtZSBhcyB0aGUgbmFtZSBvZiB0aGUgZXJyb3IgY29kZSBjb25zdGFudAorICog
aW4gdGhlIFVFcnJvckNvZGUgZW51bSBhYm92ZS4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitV
X1NUQUJMRSBjb25zdCBjaGFyICogVV9FWFBPUlQyCit1X2Vycm9yTmFtZShVRXJyb3JDb2RlIGNv
ZGUpOworCisKKyNlbmRpZiAvKiBfVVRZUEVTICovCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0R2x1
ZS9pY3UvdW5pY29kZS91dmVyc2lvbi5oIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXZl
cnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWE3NzU1Ci0tLSAv
ZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXZlcnNpb24uaApAQCAt
MCwwICsxLDIxNiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQg
KEMpIDIwMDAtMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorKgorKiAgIGZpbGUgbmFtZTogIHV2ZXJzaW9uLmgKKyogICBlbmNvZGluZzogICBV
Uy1BU0NJSQorKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQorKiAgIGluZGVudGF0aW9uOjQK
KyoKKyogICBDcmVhdGVkIGJ5OiBWbGFkaW1pciBXZWluc3RlaW4KKyoKKyogIENvbnRhaW5zIGFs
bCB0aGUgaW1wb3J0YW50IHZlcnNpb24gbnVtYmVycyBmb3IgSUNVLiAKKyogIEdldHMgaW5jbHVk
ZWQgYnkgdXR5cGVzLmggYW5kIFdpbmRvd3MgLnJjIGZpbGVzCisqLworCisvKj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PSovCisvKiBNYWluIElDVSB2ZXJzaW9uIGluZm9ybWF0aW9uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSov
CisKKyNpZm5kZWYgVVZFUlNJT05fSAorI2RlZmluZSBVVkVSU0lPTl9ICisKKy8qKiBJTVBPUlRB
TlQ6IFdoZW4gdXBkYXRpbmcgdmVyc2lvbiwgdGhlIGZvbGxvd2luZyB0aGluZ3MgbmVlZCB0byBi
ZSBkb25lOiAgICovCisvKiogc291cmNlL2NvbW1vbi91bmljb2RlL3V2ZXJzaW9uLmggLSB0aGlz
IGZpbGU6IHVwZGF0ZSBtYWpvciwgbWlub3IsICAgICAgICAqLworLyoqICAgICAgICBwYXRjaGxl
dmVsLCBzdWZmaXgsIHZlcnNpb24sIHNob3J0IHZlcnNpb24gY29uc3RhbnRzLCBuYW1lc3BhY2Us
ICAgKi8KKy8qKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmQgY29weXJpZ2h0ICovCisvKiogc291cmNlL2NvbW1vbi9jb21tb24u
ZHNwIC0gdXBkYXRlICdPdXRwdXQgZmlsZSBuYW1lJyBvbiB0aGUgbGluayB0YWIgc28gICAqLwor
LyoqICAgICAgICAgICAgICAgICAgIHRoYXQgaXQgY29udGFpbnMgdGhlIG5ldyBtYWpvci9taW5v
ciBjb21iaW5hdGlvbiAgICAgICAgKi8KKy8qKiBzb3VyY2UvaTE4bi9pMThuLmRzcCAtIHNhbWUg
YXMgZm9yIHRoZSBjb21tb24uZHNwICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiogc291
cmNlL2xheW91dC9sYXlvdXQuZHNwIC0gc2FtZSBhcyBmb3IgdGhlIGNvbW1vbi5kc3AgICAgICAg
ICAgICAgICAgICAgICAqLworLyoqIHNvdXJjZS9zdHViZGF0YS9zdHViZGF0YS5kc3AgLSBzYW1l
IGFzIGZvciB0aGUgY29tbW9uLmRzcCAgICAgICAgICAgICAgICAgKi8KKy8qKiBzb3VyY2UvZXh0
cmEvdXN0ZGlvL3VzdGRpby5kc3AgLSBzYW1lIGFzIGZvciB0aGUgY29tbW9uLmRzcCAgICAgICAg
ICAgICAgICovCisvKiogc291cmNlL2RhdGEvbWFrZWRhdGEubWFrIC0gY2hhbmdlIFVfSUNVREFU
QV9OQU1FIHNvIHRoYXQgaXQgY29udGFpbnMgICAgICAqLworLyoqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoZSBuZXcgbWFqb3IvbWlub3IgY29tYmluYXRpb24gICAgICAgICAgICAgICAg
Ki8KKy8qKiBzb3VyY2UvdG9vbHMvZ2VucmVuL2dlbnJlbi5wbCAtIHVzZSB0aGlzIHNjcmlwdCBh
Y2NvcmRpbmcgdG8gdGhlIFJFQURNRSAgICovCisvKiogICAgICAgICAgICAgICAgICAgIGluIHRo
YXQgZm9sZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisj
aW5jbHVkZSAidW5pY29kZS91bWFjaGluZS5oIgorCisvKiogVGhlIHN0YW5kYXJkIGNvcHlyaWdo
dCBub3RpY2UgdGhhdCBnZXRzIGNvbXBpbGVkIGludG8gZWFjaCBsaWJyYXJ5LiAKKyAqICBUaGlz
IHZhbHVlIHdpbGwgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQorICog
IEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFVfQ09QWVJJR0hUX1NUUklORyBcCisgICIg
Q29weXJpZ2h0IChDKSAyMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBv
cmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICIKKworLyoqIE1heGltdW0g
bGVuZ3RoIG9mIHRoZSBjb3B5cmlnaHQgc3RyaW5nLgorICogIEBzdGFibGUgSUNVIDIuNAorICov
CisjZGVmaW5lIFVfQ09QWVJJR0hUX1NUUklOR19MRU5HVEggIDEyOAorCisvKiogVGhlIGN1cnJl
bnQgSUNVIG1ham9yIHZlcnNpb24gYXMgYW4gaW50ZWdlci4gCisgKiAgVGhpcyB2YWx1ZSB3aWxs
IGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqICBAc3RhYmxlIElD
VSAyLjQKKyAqLworI2RlZmluZSBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSAzCisKKy8qKiBUaGUg
Y3VycmVudCBJQ1UgbWlub3IgdmVyc2lvbiBhcyBhbiBpbnRlZ2VyLiAKKyAqICBUaGlzIHZhbHVl
IHdpbGwgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQorICogIEBzdGFi
bGUgSUNVIDIuNgorICovCisjZGVmaW5lIFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVNIDIKKworLyoq
IFRoZSBjdXJyZW50IElDVSBwYXRjaGxldmVsIHZlcnNpb24gYXMgYW4gaW50ZWdlci4gIAorICog
IFRoaXMgdmFsdWUgd2lsbCBjaGFuZ2UgaW4gdGhlIHN1YnNlcXVlbnQgcmVsZWFzZXMgb2YgSUNV
CisgKiAgQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVV9JQ1VfVkVSU0lPTl9QQVRDSExF
VkVMX05VTSAwCisKKy8qKiBHbHVlZCB2ZXJzaW9uIHN1ZmZpeCBmb3IgcmVuYW1lcnMgCisgKiAg
VGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UK
KyAqICBAc3RhYmxlIElDVSAyLjYKKyAqLworI2RlZmluZSBVX0lDVV9WRVJTSU9OX1NVRkZJWCBf
M18yCisKKy8qKiBUaGUgY3VycmVudCBJQ1UgbGlicmFyeSB2ZXJzaW9uIGFzIGEgZG90dGVkLWRl
Y2ltYWwgc3RyaW5nLiBUaGUgcGF0Y2hsZXZlbAorICogIG9ubHkgYXBwZWFycyBpbiB0aGlzIHN0
cmluZyBpZiBpdCBub24temVyby4gCisgKiAgVGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSBpbiB0aGUg
c3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqICBAc3RhYmxlIElDVSAyLjQKKyAqLworI2Rl
ZmluZSBVX0lDVV9WRVJTSU9OICIzLjIiCisKKy8qKiBUaGUgY3VycmVudCBJQ1UgbGlicmFyeSBt
YWpvci9taW5vciB2ZXJzaW9uIGFzIGEgc3RyaW5nIHdpdGhvdXQgZG90cywgZm9yIGxpYnJhcnkg
bmFtZSBzdWZmaXhlcy4gCisgKiAgVGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSBpbiB0aGUgc3Vic2Vx
dWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqICBAc3RhYmxlIElDVSAyLjYKKyAqLworI2RlZmluZSBV
X0lDVV9WRVJTSU9OX1NIT1JUICIzMiIKKworLyoqIEFuIElDVSB2ZXJzaW9uIGNvbnNpc3RzIG9m
IHVwIHRvIDQgbnVtYmVycyBmcm9tIDAuLjI1NS4KKyAqICBAc3RhYmxlIElDVSAyLjQKKyAqLwor
I2RlZmluZSBVX01BWF9WRVJTSU9OX0xFTkdUSCA0CisKKy8qKiBJbiBhIHN0cmluZywgSUNVIHZl
cnNpb24gZmllbGRzIGFyZSBkZWxpbWl0ZWQgYnkgZG90cy4KKyAqICBAc3RhYmxlIElDVSAyLjQK
KyAqLworI2RlZmluZSBVX1ZFUlNJT05fREVMSU1JVEVSICcuJworCisvKiogVGhlIG1heGltdW0g
bGVuZ3RoIG9mIGFuIElDVSB2ZXJzaW9uIHN0cmluZy4KKyAqICBAc3RhYmxlIElDVSAyLjQKKyAq
LworI2RlZmluZSBVX01BWF9WRVJTSU9OX1NUUklOR19MRU5HVEggMjAKKworLyoqIFRoZSBiaW5h
cnkgZm9ybSBvZiBhIHZlcnNpb24gb24gSUNVIEFQSXMgaXMgYW4gYXJyYXkgb2YgNCB1aW50OF90
LgorICogIEBzdGFibGUgSUNVIDIuNAorICovCit0eXBlZGVmIHVpbnQ4X3QgVVZlcnNpb25JbmZv
W1VfTUFYX1ZFUlNJT05fTEVOR1RIXTsKKworI2lmIFVfSEFWRV9OQU1FU1BBQ0UgJiYgZGVmaW5l
ZChYUF9DUExVU1BMVVMpCisjaWYgVV9ESVNBQkxFX1JFTkFNSU5HCisjZGVmaW5lIFVfSUNVX05B
TUVTUEFDRSBpY3UKK25hbWVzcGFjZSBVX0lDVV9OQU1FU1BBQ0UgeyB9CisjZWxzZQorI2RlZmlu
ZSBVX0lDVV9OQU1FU1BBQ0UgaWN1XzNfMgorbmFtZXNwYWNlIFVfSUNVX05BTUVTUEFDRSB7IH0K
K25hbWVzcGFjZSBpY3UgPSBVX0lDVV9OQU1FU1BBQ0U7CisjZW5kaWYKK1VfTkFNRVNQQUNFX1VT
RQorI2VuZGlmCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogR2VuZXJhbCB2ZXJzaW9u
IGhlbHBlciBmdW5jdGlvbnMuIERlZmluaXRpb25zIGluIHB1dGlsLmMgICAgICAgICAgICAgICAg
ICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKioKKyAqIFBhcnNlIGEgc3RyaW5nIHdp
dGggZG90dGVkLWRlY2ltYWwgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQKKyAqIGZpbGwgaW4gYSBV
VmVyc2lvbkluZm8gc3RydWN0dXJlIHdpdGggdGhlIHJlc3VsdC4KKyAqIERlZmluaXRpb24gb2Yg
dGhpcyBmdW5jdGlvbiBsaXZlcyBpbiBwdXRpbC5jCisgKgorICogQHBhcmFtIHZlcnNpb25BcnJh
eSBUaGUgZGVzdGluYXRpb24gc3RydWN0dXJlIGZvciB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbi4K
KyAqIEBwYXJhbSB2ZXJzaW9uU3RyaW5nIEEgc3RyaW5nIHdpdGggZG90dGVkLWRlY2ltYWwgdmVy
c2lvbiBpbmZvcm1hdGlvbiwKKyAqICAgICAgICAgICAgICAgICAgICAgIHdpdGggdXAgdG8gZm91
ciBub24tbmVnYXRpdmUgbnVtYmVyIGZpZWxkcyB3aXRoCisgKiAgICAgICAgICAgICAgICAgICAg
ICB2YWx1ZXMgb2YgdXAgdG8gMjU1IGVhY2guCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworVV9T
VEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VfdmVyc2lvbkZyb21TdHJpbmcoVVZlcnNpb25JbmZvIHZl
cnNpb25BcnJheSwgY29uc3QgY2hhciAqdmVyc2lvblN0cmluZyk7CisKKy8qKgorICogV3JpdGUg
YSBzdHJpbmcgd2l0aCBkb3R0ZWQtZGVjaW1hbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFjY29yZGlu
ZworICogdG8gdGhlIGlucHV0IFVWZXJzaW9uSW5mby4KKyAqIERlZmluaXRpb24gb2YgdGhpcyBm
dW5jdGlvbiBsaXZlcyBpbiBwdXRpbC5jCisgKgorICogQHBhcmFtIHZlcnNpb25BcnJheSBUaGUg
dmVyc2lvbiBpbmZvcm1hdGlvbiB0byBiZSB3cml0dGVuIGFzIGEgc3RyaW5nLgorICogQHBhcmFt
IHZlcnNpb25TdHJpbmcgQSBzdHJpbmcgYnVmZmVyIHRoYXQgd2lsbCBiZSBmaWxsZWQgaW4gd2l0
aAorICogICAgICAgICAgICAgICAgICAgICAgYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0aGUg
bnVtZXJpYyB2ZXJzaW9uCisgKiAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpbiB2
ZXJzaW9uQXJyYXkuCisgKiAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVmZmVyIHNpemUgbXVz
dCBiZSBhdCBsZWFzdCBVX01BWF9WRVJTSU9OX1NUUklOR19MRU5HVEguCisgKiBAc3RhYmxlIElD
VSAyLjQKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VfdmVyc2lvblRvU3RyaW5nKFVW
ZXJzaW9uSW5mbyB2ZXJzaW9uQXJyYXksIGNoYXIgKnZlcnNpb25TdHJpbmcpOworCisvKioKKyAq
IEdldHMgdGhlIElDVSByZWxlYXNlIHZlcnNpb24uICBUaGUgdmVyc2lvbiBhcnJheSBzdG9yZXMg
dGhlIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqIGZvciBJQ1UuICBGb3IgZXhhbXBsZSwgcmVsZWFz
ZSAiMS4zLjMxLjIiIGlzIHRoZW4gcmVwcmVzZW50ZWQgYXMgMHgwMTAzMUYwMi4KKyAqIERlZmlu
aXRpb24gb2YgdGhpcyBmdW5jdGlvbiBsaXZlcyBpbiBwdXRpbC5jCisgKgorICogQHBhcmFtIHZl
cnNpb25BcnJheSB0aGUgdmVyc2lvbiAjIGluZm9ybWF0aW9uLCB0aGUgcmVzdWx0IHdpbGwgYmUg
ZmlsbGVkIGluCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9S
VDIKK3VfZ2V0VmVyc2lvbihVVmVyc2lvbkluZm8gdmVyc2lvbkFycmF5KTsKKworCisvKj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorICogSUNVIGNvbGxhdGlvbiBmcmFtZXdvcmsgdmVyc2lvbiBpbmZvcm1h
dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAqIFZlcnNpb24gaW5mbyB0aGF0
IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGEgY29sbGF0b3IgaXMgYWZmZWN0ZWQgYnkgdGhlc2UgICAg
CisgKiBudW1iZXJzIGluIGEgc2VjcmV0IGFuZCBtYWdpYyB3YXkuIFBsZWFzZSB1c2UgY29sbGF0
b3IgdmVyc2lvbiBhcyB3aG9sZQorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworCisvKiogQ29s
bGF0aW9uIHJ1bnRpbWUgdmVyc2lvbiAoc29ydCBrZXkgZ2VuZXJhdG9yLCBzdHJjb2xsKS4gCisg
KiBJZiB0aGUgdmVyc2lvbiBpcyBkaWZmZXJlbnQsIHNvcnRrZXlzIGZvciB0aGUgc2FtZSBzdHJp
bmcgY291bGQgYmUgZGlmZmVyZW50IAorICogdmVyc2lvbiAyIHdhcyBpbiBJQ1UgMS44LjEuIGNo
YW5nZWQgaXM6IGNvbXByZXNzaW9uIGludGVydmFscywgRnJlbmNoIHNlY29uZGFyeSAKKyAqIGNv
bXByZXNzaW9uLCBnZW5lcmF0aW5nIHF1YWQgbGV2ZWwgYWx3YXlzIHdoZW4gc3RyZW5ndGggaXMg
cXVhZCBvciBtb3JlIAorICogdmVyc2lvbiA0IC0gSUNVIDIuMiAtIHRyYWNraW5nIFVDQSBjaGFu
Z2VzLCBpZ25vcmUgY29tcGxldGVseSBpZ25vcmFibGVzIAorICogaW4gY29udHJhY3Rpb25zLCBp
Z25vcmUgcHJpbWFyeSBpZ25vcmFibGVzIGFmdGVyIHNoaWZ0ZWQgCisgKiB2ZXJzaW9uIDUgLSBJ
Q1UgMi44IC0gY2hhbmdlZCBpbXBsaWNpdCBnZW5lcmF0aW9uIGNvZGUKKyAqIFRoaXMgdmFsdWUg
bWF5IGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqIEBzdGFibGUg
SUNVIDIuNAorICovCisjZGVmaW5lIFVDT0xfUlVOVElNRV9WRVJTSU9OIDUKKworLyoqIEJ1aWxk
ZXIgY29kZSB2ZXJzaW9uLiBXaGVuIHRoaXMgaXMgZGlmZmVyZW50LCBzYW1lIHRhaWxvcmluZyBt
aWdodCByZXN1bHQKKyAqIGluIGFzc2lnbmluZyBkaWZmZXJlbnQgY29sbGF0aW9uIGVsZW1lbnRz
IHRvIGNvZGUgcG9pbnRzICAgICAgICAgICAgICAgICAgCisgKiB2ZXJzaW9uIDIgd2FzIGluIElD
VSAxLjguMS4gYWRkZWQgc3VwcG9ydCBmb3IgcHJlZml4ZXMsIHR3ZWFrZWQgY2Fub25pY2FsIAor
ICogY2xvc3VyZS4gSG93ZXZlciwgdGhlIHRhaWxvcmluZ3Mgc2hvdWxkIHByb2JhYmx5IGdldCBz
YW1lIENFcyBhc3NpZ25lZCAgICAKKyAqIHZlcnNpb24gNSAtIElDVSAyLjIgLSBmaXhlZCBzb21l
IGJ1Z3MsIHJlbmFtZWQgc29tZSBpbmRpcmVjdCB2YWx1ZXMuICAgICAgCisgKiB2ZXJzaW9uIDYg
LSBJQ1UgMi44IC0gZml4ZWQgYnVnIGluIGJ1aWxkZXIgdGhhdCBhbGxvd2VkIDB4RkYgaW4gcHJp
bWFyeSB2YWx1ZXMKKyAqIEJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIHJ1bGVzLiAK
KyAqIFRoaXMgdmFsdWUgbWF5IGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJ
Q1UKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFVDT0xfQlVJTERFUl9WRVJTSU9O
IDYKKworLyoqICoqKiBSZW1vdmVkICoqKiBJbnN0ZWFkIHdlIHVzZSB0aGUgZGF0YSB3ZSByZWFk
IGZyb20gRnJhY3Rpb25hbFVDQS50eHQKKyAqIFRoaXMgaXMgdGhlIHZlcnNpb24gb2YgRnJhY3Rp
b25hbFVDQS50eHQgdGFpbG9yaW5nIHJ1bGVzCisgKiBWZXJzaW9uIDEgd2FzIGluIElDVSAxLjgu
MS4gVmVyc2lvbiB0d28gY29udGFpbnMgY2Fub25pY2FsIGNsb3N1cmUgZm9yCisgKiBzdXBwbGVt
ZW50YXJ5IGNvZGUgcG9pbnRzIAorICogVmVyc2lvbiA0IGluIElDVSAyLjIsIGZvbGxvd2luZyBV
Q0E9My4xLjFkNiwgVUNEPTMuMi4wIAorICogVGhpcyB2YWx1ZSBtYXkgY2hhbmdlIGluIHRoZSBz
dWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKy8qI2Rl
ZmluZSBVQ09MX0ZSQUNUSU9OQUxfVUNBX1ZFUlNJT04gNCovCisKKy8qKiBUaGlzIGlzIHRoZSB2
ZXJzaW9uIG9mIHRoZSB0YWlsb3JpbmdzIAorICogIFRoaXMgdmFsdWUgbWF5IGNoYW5nZSBpbiB0
aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqICBAc3RhYmxlIElDVSAyLjQKKyAqLwor
I2RlZmluZSBVQ09MX1RBSUxPUklOR1NfVkVSU0lPTiAxCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlOTNmZWQ1Li4yNTkxMjYyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQyMzYsNyArMTQy
MzYsNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8g
PSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0
OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WFByb2plY3QgIldlYkNvcmUiICovOwotCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUg
Mi40IjsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0g
KAogCQkJCUVuZ2xpc2gsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94
eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAKaW5kZXggNjkyNWUxOC4u
ZTZhM2YwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfcHJveHkuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNwcApAQCAtODQsNyArODQsNyBAQCBK
U1ZhbHVlKiBLSlNQcm94eTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50IGJh
c2VMaW5lLCBjb25zdCBTdHJpbmcmCiAgICAgSlNWYWx1ZSogdGhpc05vZGUgPSBXaW5kb3c6OnJl
dHJpZXZlKG1fZnJhbWUpOwogICAKICAgICBtX2dsb2JhbE9iamVjdC0+c3RhcnRUaW1lb3V0Q2hl
Y2soKTsKLSAgICBDb21wbGV0aW9uIGNvbXAgPSBJbnRlcnByZXRlcjo6ZXZhbHVhdGUoZXhlYywg
ZmlsZW5hbWUsIGJhc2VMaW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6VUNoYXIqPihz
dHIuY2hhcmFjdGVycygpKSwgc3RyLmxlbmd0aCgpLCB0aGlzTm9kZSk7CisgICAgQ29tcGxldGlv
biBjb21wID0gSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGV4ZWMsIGZpbGVuYW1lLCBiYXNlTGluZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ci5jaGFyYWN0ZXJzKCkpLCBzdHIubGVu
Z3RoKCksIHRoaXNOb2RlKTsKICAgICBtX2dsb2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygp
OwogICAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwgfHwgY29tcC5jb21wbFR5
cGUoKSA9PSBSZXR1cm5WYWx1ZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfd2luZG93LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAKaW5kZXgg
MTNmYjNiZi4uMjZlNjIyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2lu
ZG93LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCkBAIC0xMDA2
LDcgKzEwMDYsNyBAQCBKU1ZhbHVlKiB3aW5kb3dQcm90b0Z1bmNBVG9CKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QmIGFyZwogCiAgICAgVmVjdG9yPGNoYXI+
IGluKHMuc2l6ZSgpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMuc2l6ZSgpOyArK2kpCi0g
ICAgICAgIGluW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4ocy5kYXRhKClbaV0udW5pY29kZSgpKTsK
KyAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzLmRhdGEoKVtpXSk7CiAgICAgVmVj
dG9yPGNoYXI+IG91dDsKIAogICAgIGlmICghYmFzZTY0RGVjb2RlKGluLCBvdXQpKQpAQCAtMTAz
NSw3ICsxMDM1LDcgQEAgSlNWYWx1ZSogd2luZG93UHJvdG9GdW5jQlRvQShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0JiBhcmcKIAogICAgIFZlY3RvcjxjaGFy
PiBpbihzLnNpemUoKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLnNpemUoKTsgKytpKQot
ICAgICAgICBpbltpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHMuZGF0YSgpW2ldLnVuaWNvZGUoKSk7
CisgICAgICAgIGluW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4ocy5kYXRhKClbaV0pOwogICAgIFZl
Y3RvcjxjaGFyPiBvdXQ7CiAKICAgICBiYXNlNjRFbmNvZGUoaW4sIG91dCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9EZXByZWNhdGVkU3RyaW5nLmNwcAppbmRleCAzNjU2MjI0Li5jOTkzMWYxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHAKQEAgLTI2NDYsMTQgKzI2NDYsMTQgQEAgRGVwcmVj
YXRlZFN0cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKGlzTnVs
bCgpKQogICAgICAgICByZXR1cm4gSWRlbnRpZmllcigpOwotICAgIHJldHVybiBJZGVudGlmaWVy
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgS0pTOjpVQ2hhcio+KHVuaWNvZGUoKSksIGxlbmd0aCgp
KTsKKyAgICByZXR1cm4gSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
dW5pY29kZSgpKSwgbGVuZ3RoKCkpOwogfQogCiBEZXByZWNhdGVkU3RyaW5nOjpvcGVyYXRvciBV
U3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBVU3Ry
aW5nKCk7Ci0gICAgcmV0dXJuIFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBLSlM6OlVD
aGFyKj4odW5pY29kZSgpKSwgbGVuZ3RoKCkpOworICAgIHJldHVybiBVU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih1bmljb2RlKCkpLCBsZW5ndGgoKSk7CiB9CiAKIGJvb2wg
ZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgYSwgY29uc3QgRGVwcmVj
YXRlZFN0cmluZyYgYikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKaW5kZXggOTY3ZTdjOC4uZmJh
NGY2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKQEAgLTU2MSwxNCArNTYxLDE0IEBAIFN0
cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ltcGwpCiAg
ICAgICAgIHJldHVybiBJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIElkZW50aWZpZXIocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBLSlM6OlVDaGFyKj4obV9pbXBsLT5jaGFyYWN0ZXJzKCkpLCBtX2lt
cGwtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNv
bnN0IFVDaGFyKj4obV9pbXBsLT5jaGFyYWN0ZXJzKCkpLCBtX2ltcGwtPmxlbmd0aCgpKTsKIH0K
IAogU3RyaW5nOjpvcGVyYXRvciBVU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkK
ICAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKLSAgICByZXR1cm4gVVN0cmluZyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IEtKUzo6VUNoYXIqPihtX2ltcGwtPmNoYXJhY3RlcnMoKSksIG1faW1wbC0+
bGVuZ3RoKCkpOworICAgIHJldHVybiBVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPihtX2ltcGwtPmNoYXJhY3RlcnMoKSksIG1faW1wbC0+bGVuZ3RoKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18704</attachid>
            <date>2008-01-26 03:26:25 -0800</date>
            <delta_ts>2008-01-28 18:06:39 -0800</delta_ts>
            <desc>Add ICU and appropriate Unicode forwarding headers to JSG (ENTIRELY ICU headers)</desc>
            <filename>Add-ICU-and-appropriate-Unicode-forwarding-headers-to-JSG-ENTIRELY-ICU-headers-.patch</filename>
            <type>text/plain</type>
            <size>375905</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MzU1NWM4MWRjZGViYjlkZjU2NzhhMDE3ZTJlNGI1MTFhMzUwYTg3NQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdEdsdWUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL0phdmFTY3JpcHRHbHVl
L0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKaW5kZXggMTViYmJlYS4uZjdlNWI4MiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdEdsdWUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysg
Yi9KYXZhU2NyaXB0R2x1ZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0zMCw3ICsz
MCw3IEBAIFdBUk5JTkdfQ0ZMQUdTX3BwYyA9ICQoV0FSTklOR19DRkxBR1NfQkFTRSkgLVdzaG9y
dGVuLTY0LXRvLTMyOwogLy8gRklYTUU6IEphdmFTY3JpcHRHbHVlIDY0LWJpdCBidWlsZHMgc2hv
dWxkIGJ1aWxkIHdpdGggLVdzaG9ydGVuLTY0LXRvLTMyCiBXQVJOSU5HX0NGTEFHU19wcGM2NCA9
ICQoV0FSTklOR19DRkxBR1NfQkFTRSk7CiBXQVJOSU5HX0NGTEFHU194ODZfNjQgPSAkKFdBUk5J
TkdfQ0ZMQUdTX0JBU0UpOwotCitIRUFERVJfU0VBUkNIX1BBVEhTID0gLiBpY3UgJChIRUFERVJf
U0VBUkNIX1BBVEhTKTsKIAogLy8gPHJkYXI6Ly9wcm9ibGVtLzU0ODg2Nzg+OiBQcm9kdWN0aW9u
IGJ1aWxkcyBvbiAxMC40IFBvd2VyUEMgbmVlZCB0byBoYXZlIGRlYnVnZ2luZyBzeW1ib2xzIGRp
c2FibGVkIHRvIHByZXZlbnQgYSBodWdlIFNUQUJTIHNlY3Rpb24gYmVpbmcgZ2VuZXJhdGVkLgog
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICBYY29kZSBvbiAxMC40IGRvZXMgbm90IGRlZmlu
ZSBNQUNfT1NfWF9WRVJTSU9OX01BSk9SLCBzbyB0aGUgZGVmYXVsdCBNYWMgT1MgWCB2ZXJzaW9u
IGlzIHRyZWF0ZWQgYXMgMTAuNC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi91bmljb2RlL1VuaWNvZGUuaCBiL0phdmFTY3JpcHRHbHVlL0ZvcndhcmRp
bmdIZWFkZXJzL3d0Zi91bmljb2RlL1VuaWNvZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42MjM5MTdmCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdEdsdWUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUvVW5pY29kZS5oCkBAIC0wLDAgKzEgQEAKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Vbmljb2RlLmg+CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0R2x1
ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvdW5pY29kZS9pY3UvVW5pY29kZUljdS5oIGIvSmF2YVNj
cmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUvaWN1L1VuaWNvZGVJY3UuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjY0ZWI1Ci0tLSAvZGV2L251bGwK
KysrIGIvSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL3VuaWNvZGUvaWN1L1Vu
aWNvZGVJY3UuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVW5pY29k
ZUljdS5oPgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUvaWN1L0xJQ0VOU0UgYi9KYXZhU2Ny
aXB0R2x1ZS9pY3UvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4z
ODVkMTMwCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdEdsdWUvaWN1L0xJQ0VOU0UKQEAg
LTAsMCArMSwyNSBAQAorQ09QWVJJR0hUIEFORCBQRVJNSVNTSU9OIE5PVElDRQorCitDb3B5cmln
aHQgKGMpIDE5OTUtMjAwNiBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0
aW9uIGFuZCBvdGhlcnMKKworQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weSBvZiB0aGlzCitzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlCit3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBj
b3B5LCBtb2RpZnksCittZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgYW5kL29yIHNlbGwgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zCit0byB3aG9tIHRoZSBT
b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UocykKK2FuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBh
bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSBhbmQgdGhhdCBib3RoIHRoZSBhYm92ZQorY29weXJp
Z2h0IG5vdGljZShzKSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9y
dGluZyBkb2N1bWVudGF0aW9uLgorCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg
V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELAorSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5UIE9G
IFRISVJEIFBBUlRZIFJJR0hUUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVIKK09SIEhPTERFUlMgSU5DTFVERUQgSU4gVEhJUyBOT1RJQ0UgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIE9SIEFOWSBTUEVDSUFMIElORElSRUNUIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMs
IE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERB
VEEgT1IKK1BST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdF
TkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORworT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisKK0V4
Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIGEgY29weXJpZ2h0
IGhvbGRlciBzaGFsbCBub3QgYmUgdXNlZCBpbgorYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRv
IHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsaW5ncyBpbiB0aGlzIFNvZnR3YXJl
Cit3aXRob3V0IHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBvZiB0aGUgY29weXJpZ2h0IGhv
bGRlci4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRHbHVlL2ljdS9SRUFETUUgYi9KYXZhU2NyaXB0
R2x1ZS9pY3UvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OWUy
ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9pY3UvUkVBRE1FCkBAIC0wLDAg
KzEsNCBAQAorVGhlIGhlYWRlcnMgaW4gdGhpcyBkaXJlY3RvcnkgYXJlIGZvciBjb21waWxpbmcg
b24gTWFjIE9TIFggMTAuNC4KK1RoZSBNYWMgT1MgWCAxMC40IHJlbGVhc2UgaW5jbHVkZXMgdGhl
IElDVSBiaW5hcnksIGJ1dCBub3QgSUNVIGhlYWRlcnMuCitGb3Igb3RoZXIgcGxhdGZvcm1zLCBp
bnN0YWxsZWQgSUNVIGhlYWRlcnMgc2hvdWxkIGJlIHVzZWQgcmF0aGVyIHRoYW4gdGhlc2UuCitU
aGV5IGFyZSBzcGVjaWZpYyB0byBNYWMgT1MgWCAxMC40LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dEdsdWUvaWN1L3VuaWNvZGUvcGxhdGZvcm0uaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2Rl
L3BsYXRmb3JtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU5NWEyNgot
LS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3BsYXRmb3JtLmgK
QEAgLTAsMCArMSwyNjcgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5
cmlnaHQgKEMpIDE5OTctMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAg
IENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisqCisqICBGSUxFIE5BTUUgOiBwbGF0Zm9ybS5oCisqCisqICAgRGF0
ZSAgICAgICAgTmFtZSAgICAgICAgRGVzY3JpcHRpb24KKyogICAwNS8xMy85OCAgICBub3MgICAg
ICAgICBDcmVhdGlvbiAoY29udGVudCBtb3ZlZCBoZXJlIGZyb20gcHR5cGVzLmgpLgorKiAgIDAz
LzAyLzk5ICAgIHN0ZXBoZW4gICAgIEFkZGVkIEFTNDAwIHN1cHBvcnQuCisqICAgMDMvMzAvOTkg
ICAgc3RlcGhlbiAgICAgQWRkZWQgTGludXggc3VwcG9ydC4KKyogICAwNC8xMy85OSAgICBzdGVw
aGVuICAgICBSZXdvcmtlZCBmb3IgYXV0b2NvbmYuCisqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyov
CisKKy8qIERlZmluZSB0aGUgcGxhdGZvcm0gd2UncmUgb24uICovCisjaWZuZGVmIFVfREFSV0lO
CisjZGVmaW5lIFVfREFSV0lOCisjZW5kaWYKKworLyogRGVmaW5lIHdoZXRoZXIgaW50dHlwZXMu
aCBpcyBhdmFpbGFibGUgKi8KKyNpZm5kZWYgVV9IQVZFX0lOVFRZUEVTX0gKKyNkZWZpbmUgVV9I
QVZFX0lOVFRZUEVTX0ggMQorI2VuZGlmCisKKy8qCisgKiBEZWZpbmUgd2hhdCBzdXBwb3J0IGZv
ciBDKysgc3RyZWFtcyBpcyBhdmFpbGFibGUuCisgKiAgICAgSWYgVV9JT1NUUkVBTV9TT1VSQ0Ug
aXMgc2V0IHRvIDE5OTcxMSwgdGhlbiA8aW9zdHJlYW0+IGlzIGF2YWlsYWJsZQorICogKDE5OTc3
MTEgaXMgdGhlIGRhdGUgdGhlIElTTy9JRUMgQysrIEZESVMgd2FzIHB1Ymxpc2hlZCksIGFuZCB0
aGVuCisgKiBvbmUgc2hvdWxkIHF1YWxpZnkgc3RyZWFtcyB1c2luZyB0aGUgc3RkIG5hbWVzcGFj
ZSBpbiBJQ1UgaGVhZGVyCisgKiBmaWxlcy4KKyAqICAgICBJZiBVX0lPU1RSRUFNX1NPVVJDRSBp
cyBzZXQgdG8gMTk4NTA2LCB0aGVuIDxpb3N0cmVhbS5oPiBpcworICogYXZhaWxhYmxlIGluc3Rl
YWQgKDE5ODUwNiBpcyB0aGUgZGF0ZSB3aGVuIFN0cm91c3RydXAgcHVibGlzaGVkCisgKiAiQW4g
RXh0ZW5zaWJsZSBJL08gRmFjaWxpdHkgZm9yIEMrKyIgYXQgdGhlIHN1bW1lciBVU0VOSVggY29u
ZmVyZW5jZSkuCisgKiAgICAgSWYgVV9JT1NUUkVBTV9TT1VSQ0UgaXMgMCwgdGhlbiBDKysgc3Ry
ZWFtcyBhcmUgbm90IGF2YWlsYWJsZSBhbmQKKyAqIHN1cHBvcnQgZm9yIHRoZW0gd2lsbCBiZSBz
aWxlbnRseSBzdXBwcmVzc2VkIGluIElDVS4KKyAqCisgKi8KKworI2lmbmRlZiBVX0lPU1RSRUFN
X1NPVVJDRQorI2RlZmluZSBVX0lPU1RSRUFNX1NPVVJDRSAxOTk3MTEKKyNlbmRpZgorCisvKiBE
ZXRlcm1pbmVzIHdoZXRoZXIgc3BlY2lmaWMgdHlwZXMgYXJlIGF2YWlsYWJsZSAqLworI2lmbmRl
ZiBVX0hBVkVfSU5UOF9UCisjZGVmaW5lIFVfSEFWRV9JTlQ4X1QgMQorI2VuZGlmCisKKyNpZm5k
ZWYgVV9IQVZFX1VJTlQ4X1QKKyNkZWZpbmUgVV9IQVZFX1VJTlQ4X1QgMAorI2VuZGlmCisKKyNp
Zm5kZWYgVV9IQVZFX0lOVDE2X1QKKyNkZWZpbmUgVV9IQVZFX0lOVDE2X1QgMQorI2VuZGlmCisK
KyNpZm5kZWYgVV9IQVZFX1VJTlQxNl9UCisjZGVmaW5lIFVfSEFWRV9VSU5UMTZfVCAwCisjZW5k
aWYKKworI2lmbmRlZiBVX0hBVkVfSU5UMzJfVAorI2RlZmluZSBVX0hBVkVfSU5UMzJfVCAxCisj
ZW5kaWYKKworI2lmbmRlZiBVX0hBVkVfVUlOVDMyX1QKKyNkZWZpbmUgVV9IQVZFX1VJTlQzMl9U
IDAKKyNlbmRpZgorCisjaWZuZGVmIFVfSEFWRV9JTlQ2NF9UCisjZGVmaW5lIFVfSEFWRV9JTlQ2
NF9UIDEKKyNlbmRpZgorCisjaWZuZGVmIFVfSEFWRV9VSU5UNjRfVAorI2RlZmluZSBVX0hBVkVf
VUlOVDY0X1QgMAorI2VuZGlmCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEdlbmVyaWMg
ZGF0YSB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2luY2x1ZGUgPHN5cy90eXBl
cy5oPgorCisvKiBJZiB5b3VyIHBsYXRmb3JtIGRvZXMgbm90IGhhdmUgdGhlIDxpbnR0eXBlcy5o
PiBoZWFkZXIsIHlvdSBtYXkKKyAgIG5lZWQgdG8gZWRpdCB0aGUgdHlwZWRlZnMgYmVsb3cuICov
CisjaWYgVV9IQVZFX0lOVFRZUEVTX0gKKworLyogYXV0b2NvbmYgMi4xMyBzb21ldGltZXMgY2Fu
J3QgcHJvcGVybHkgZmluZCB0aGUgZGF0YSB0eXBlcyBpbiA8aW50dHlwZXMuaD4gKi8KKy8qIG9z
LzM5MCBuZWVkcyA8aW50dHlwZXMuaD4sIGJ1dCBpdCBkb2Vzbid0IGhhdmUgaW50OF90LCBhbmQg
aXQgc29tZXRpbWVzICovCisvKiBkb2Vzbid0IGhhdmUgdWludDhfdCBkZXBlbmRpbmcgb24gdGhl
IE9TIHZlcnNpb24uICovCisvKiBTbyB3ZSBoYXZlIHRoaXMgd29yayBhcm91bmQuICovCisjaWZk
ZWYgT1MzOTAKKy8qIFRoZSBmZWF0dXJlcyBoZWFkZXIgaXMgbmVlZGVkIHRvIGdldCAodSlpbnQ2
NF90IHNvbWV0aW1lcy4gKi8KKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgorI2lmICEgVV9IQVZFX0lO
VDhfVAordHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7CisjZW5kaWYKKyNpZiAhZGVmaW5lZChf
X3VpbnQ4X3QpCisjZGVmaW5lIF9fdWludDhfdCAxCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWlu
dDhfdDsKKyNlbmRpZgorI2VuZGlmIC8qIE9TMzkwICovCisKKyNpbmNsdWRlIDxpbnR0eXBlcy5o
PgorCisjZWxzZSAvKiBVX0hBVkVfSU5UVFlQRVNfSCAqLworCisjaWYgISBVX0hBVkVfSU5UOF9U
Cit0eXBlZGVmIHNpZ25lZCBjaGFyIGludDhfdDsKKyNlbmRpZgorCisjaWYgISBVX0hBVkVfVUlO
VDhfVAordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7CisjZW5kaWYKKworI2lmICEgVV9I
QVZFX0lOVDE2X1QKK3R5cGVkZWYgc2lnbmVkIHNob3J0IGludDE2X3Q7CisjZW5kaWYKKworI2lm
ICEgVV9IQVZFX1VJTlQxNl9UCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90OworI2Vu
ZGlmCisKKyNpZiAhIFVfSEFWRV9JTlQzMl9UCit0eXBlZGVmIHNpZ25lZCBpbnQgaW50MzJfdDsK
KyNlbmRpZgorCisjaWYgISBVX0hBVkVfVUlOVDMyX1QKK3R5cGVkZWYgdW5zaWduZWQgaW50IHVp
bnQzMl90OworI2VuZGlmCisKKyNpZiAhIFVfSEFWRV9JTlQ2NF9UCisgICAgdHlwZWRlZiBzaWdu
ZWQgbG9uZyBsb25nIGludDY0X3Q7CisvKiBlbHNlIHdlIG1heSBub3QgaGF2ZSBhIDY0LWJpdCB0
eXBlICovCisjZW5kaWYKKworI2lmICEgVV9IQVZFX1VJTlQ2NF9UCisgICAgdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcgdWludDY0X3Q7CisvKiBlbHNlIHdlIG1heSBub3QgaGF2ZSBhIDY0LWJp
dCB0eXBlICovCisjZW5kaWYKKworI2VuZGlmCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8q
IENvbXBpbGVyIGFuZCBlbnZpcm9ubWVudCBmZWF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyogRGVmaW5l
IHdoZXRoZXIgbmFtZXNwYWNlIGlzIHN1cHBvcnRlZCAqLworI2lmbmRlZiBVX0hBVkVfTkFNRVNQ
QUNFCisjZGVmaW5lIFVfSEFWRV9OQU1FU1BBQ0UgMQorI2VuZGlmCisKKy8qIERldGVybWluZXMg
dGhlIGVuZGlhbm5lc3Mgb2YgdGhlIHBsYXRmb3JtCisgICBJdCdzIGRvbmUgdGhpcyB3YXkgaW4g
Y2FzZSBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzIGFyZSBiZWluZyBidWlsdCBhdCBvbmNlLgorICAg
Rm9yIGV4YW1wbGUsIERhcndpbiBzdXBwb3J0cyBmYXQgYmluYXJpZXMsIHdoaWNoIGNhbiBiZSBi
b3RoIFBQQyBhbmQgeDg2IGJhc2VkLiAqLworI2lmIGRlZmluZWQoQllURV9PUkRFUikgJiYgZGVm
aW5lZChCSUdfRU5ESUFOKQorI2RlZmluZSBVX0lTX0JJR19FTkRJQU4gKEJZVEVfT1JERVIgPT0g
QklHX0VORElBTikKKyNlbHNlCisjZGVmaW5lIFVfSVNfQklHX0VORElBTiAxCisjZW5kaWYKKwor
LyogMSBvciAwIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRocmVhZHMuICBJZiB1bmRlZmluZWQsIGRl
ZmF1bHQgaXM6IGVuYWJsZSB0aHJlYWRzLiAqLworI2RlZmluZSBJQ1VfVVNFX1RIUkVBRFMgMQor
CisjaWZuZGVmIFVfREVCVUcKKyNkZWZpbmUgVV9ERUJVRyAwCisjZW5kaWYKKworI2lmbmRlZiBV
X1JFTEVBU0UKKyNkZWZpbmUgVV9SRUxFQVNFIDEKKyNlbmRpZgorCisvKiBEZXRlcm1pbmUgd2hl
dGhlciB0byBkaXNhYmxlIHJlbmFtaW5nIG9yIG5vdC4gVGhpcyBvdmVycmlkZXMgdGhlCisgICBz
ZXR0aW5nIGluIHVtYWNoaW5lLmggd2hpY2ggaXMgZm9yIGFsbCBwbGF0Zm9ybXMuICovCisjaWZu
ZGVmIFVfRElTQUJMRV9SRU5BTUlORworI2RlZmluZSBVX0RJU0FCTEVfUkVOQU1JTkcgMQorI2Vu
ZGlmCisKKy8qIERldGVybWluZSB3aGV0aGVyIHRvIG92ZXJyaWRlIG5ldyBhbmQgZGVsZXRlLiAq
LworI2lmbmRlZiBVX09WRVJSSURFX0NYWF9BTExPQ0FUSU9OCisjZGVmaW5lIFVfT1ZFUlJJREVf
Q1hYX0FMTE9DQVRJT04gMQorI2VuZGlmCisvKiBEZXRlcm1pbmUgd2hldGhlciB0byBvdmVycmlk
ZSBwbGFjZW1lbnQgbmV3IGFuZCBkZWxldGUgZm9yIFNUTC4gKi8KKyNpZm5kZWYgVV9IQVZFX1BM
QUNFTUVOVF9ORVcKKyNkZWZpbmUgVV9IQVZFX1BMQUNFTUVOVF9ORVcgMQorI2VuZGlmCisKKy8q
IERldGVybWluZSB3aGV0aGVyIHRvIGVuYWJsZSB0cmFjaW5nLiAqLworI2lmbmRlZiBVX0VOQUJM
RV9UUkFDSU5HCisjZGVmaW5lIFVfRU5BQkxFX1RSQUNJTkcgMQorI2VuZGlmCisKKy8qIERlZmlu
ZSB0aGUgbGlicmFyeSBzdWZmaXggaW4gYSBDIHN5bnRheC4gKi8KKyNkZWZpbmUgVV9IQVZFX0xJ
Ql9TVUZGSVggMAorI2RlZmluZSBVX0xJQl9TVUZGSVhfQ19OQU1FIAorI2RlZmluZSBVX0xJQl9T
VUZGSVhfQ19OQU1FX1NUUklORyAiIgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBDaGFy
YWN0ZXIgZGF0YSB0eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNpZiBkZWZpbmVkKE9T
MzkwKSB8fCBkZWZpbmVkKE9TNDAwKQorIyAgIGRlZmluZSBVX0NIQVJTRVRfRkFNSUxZIDEKKyNl
bmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBJbmZvcm1hdGlvbiBhYm91dCB3Y2hh
ciBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisv
Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgVV9IQVZFX1dDSEFSX0ggICAgICAxCisj
ZGVmaW5lIFVfU0laRU9GX1dDSEFSX1QgICAgNAorCisjZGVmaW5lIFVfSEFWRV9XQ1NDUFkgICAg
ICAgMQorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBJbmZvcm1hdGlvbiBhYm91dCBQT1NJ
WCBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisv
Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PSovCisKKyNkZWZpbmUgVV9IQVZFX05MX0xBTkdJTkZPICAgICAg
ICAgIDEKKyNkZWZpbmUgVV9IQVZFX05MX0xBTkdJTkZPX0NPREVTRVQgIDEKKyNkZWZpbmUgVV9O
TF9MQU5HSU5GT19DT0RFU0VUICAgICAgIENPREVTRVQKKworI2lmIDEKKyNkZWZpbmUgVV9UWlNF
VCAgICAgICAgIHR6c2V0CisjZW5kaWYKKyNpZiAwCisjZGVmaW5lIFVfVElNRVpPTkUgICAgICAK
KyNlbmRpZgorI2lmIDEKKyNkZWZpbmUgVV9UWk5BTUUgICAgICAgIHR6bmFtZQorI2VuZGlmCisK
KyNkZWZpbmUgVV9IQVZFX01NQVAgICAgIDEKKyNkZWZpbmUgVV9IQVZFX1BPUEVOICAgIDEKKwor
Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0qLworLyogU3ltYm9sIGltcG9ydC1leHBvcnQgY29udHJvbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0qLworCisjZGVmaW5lIFVfRVhQT1JUCisvKiBVX0NBTExDT05WIGlzIHJlbGVh
dGVkIHRvIFVfRVhQT1JUMiAqLworI2RlZmluZSBVX0VYUE9SVDIKKworLyogY3lnd2luIG5lZWRz
IHRvIGV4cG9ydC9pbXBvcnQgZGF0YSAqLworI2lmZGVmIFVfQ1lHV0lOCisjZGVmaW5lIFVfSU1Q
T1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorI2Vsc2UKKyNkZWZpbmUgVV9JTVBPUlQgCisjZW5k
aWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogQ29kZSBhbGlnbm1lbnQgYW5kIEMgZnVu
Y3Rpb24gaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0qLworCisjaWZuZGVmIFVfSU5MSU5FCisjZGVmaW5lIFVfSU5MSU5F
IGlubGluZQorI2VuZGlmCisKKyNkZWZpbmUgVV9BTElHTl9DT0RFKG4pIAorCisvKj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSovCisvKiBQcm9ncmFtcyB1c2VkIGJ5IElDVSBjb2RlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSovCisKKyNkZWZpbmUgVV9NQUtFICAiL3Vzci9iaW4vZ251bWFrZSIKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3B1dGlsLmggYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5p
Y29kZS9wdXRpbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NWRmNTMK
LS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS9wdXRpbC5oCkBA
IC0wLDAgKzEsMTgwIEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJp
Z2h0IChDKSAxOTk3LTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBD
b3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgorKgorKiAgRklMRSBOQU1FIDogcHV0aWwuaAorKgorKiAgIERhdGUgICAg
ICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMDUvMTQvOTggICAgbm9zICAgICAgICAg
Q3JlYXRpb24gKGNvbnRlbnQgbW92ZWQgaGVyZSBmcm9tIHV0eXBlcy5oKS4KKyogICAwNi8xNy85
OSAgICBlcm0gICAgICAgICBBZGRlZCBJRUVFXzc1NAorKiAgIDA3LzIyLzk4ICAgIHN0ZXBoZW4g
ICAgIEFkZGVkIElFRUVyZW1haW5kZXIsIG1heCwgbWluLCB0cnVuYworKiAgIDA4LzEzLzk4ICAg
IHN0ZXBoZW4gICAgIEFkZGVkIGlzTmVnYXRpdmVJbmZpbml0eSwgaXNQb3NpdGl2ZUluZmluaXR5
CisqICAgMDgvMjQvOTggICAgc3RlcGhlbiAgICAgQWRkZWQgbG9uZ0JpdHNGcm9tRG91YmxlCisq
ICAgMDMvMDIvOTkgICAgc3RlcGhlbiAgICAgUmVtb3ZlZCBvcGVuRmlsZSgpLiAgQWRkZWQgQVM0
MDAgc3VwcG9ydC4KKyogICAwNC8xNS85OSAgICBzdGVwaGVuICAgICBDb252ZXJ0ZWQgdG8gQwor
KiAgIDExLzE1Lzk5ICAgIGhlbGVuYSAgICAgIEludGVncmF0ZWQgUy8zOTAgY2hhbmdlcyBmb3Ig
SUVFRSBzdXBwb3J0LgorKiAgIDAxLzExLzAwICAgIGhlbGVuYSAgICAgIEFkZGVkIHVfZ2V0VmVy
c2lvbi4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworI2lmbmRlZiBQVVRJTF9ICisjZGVm
aW5lIFBVVElMX0gKKworI2luY2x1ZGUgInVuaWNvZGUvdXR5cGVzLmgiCisKKy8qIERlZmluZSB0
aGlzIHRvIDEgaWYgeW91ciBwbGF0Zm9ybSBzdXBwb3J0cyBJRUVFIDc1NCBmbG9hdGluZyBwb2lu
dCwKKyAgIHRvIDAgaWYgaXQgZG9lcyBub3QuICovCisjaWZuZGVmIElFRUVfNzU0CisjICAgZGVm
aW5lIElFRUVfNzU0IDEKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFBsYXRm
b3JtIHV0aWxpdGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKy8qKgorICogUGxhdGZvcm0g
dXRpbGl0aWVzIGlzb2xhdGVzIHRoZSBwbGF0Zm9ybSBkZXBlbmRlbmNpZXMgb2YgdGhlCisgKiBs
aWJhcmFyeS4gIEZvciBlYWNoIHBsYXRmb3JtIHdoaWNoIHRoaXMgY29kZSBpcyBwb3J0ZWQgdG8s
IHRoZXNlCisgKiBmdW5jdGlvbnMgbWF5IGhhdmUgdG8gYmUgcmUtaW1wbGVtZW50ZWQuCisgKi8K
KworLyoqCisgKiBSZXR1cm4gdGhlIElDVSBkYXRhIGRpcmVjdG9yeS4gCisgKiBUaGUgZGF0YSBk
aXJlY3RvcnkgaXMgd2hlcmUgY29tbW9uIGZvcm1hdCBJQ1UgZGF0YSBmaWxlcyAoLmRhdCBmaWxl
cykKKyAqICAgYXJlIGxvYWRlZCBmcm9tLiAgTm90ZSB0aGF0IG5vcm1hbCB1c2Ugb2YgdGhlIGJ1
aWx0LWluIElDVQorICogICBmYWNpbGl0aWVzIGRvZXMgbm90IHJlcXVpcmUgbG9hZGluZyBvZiBh
biBleHRlcm5hbCBkYXRhIGZpbGU7CisgKiAgIHVubGVzcyB5b3UgYXJlIGFkZGluZyBjdXN0b20g
ZGF0YSB0byBJQ1UsIHRoZSBkYXRhIGRpcmVjdG9yeQorICogICBkb2VzIG5vdCBuZWVkIHRvIGJl
IHNldC4KKyAqCisgKiBUaGUgZGF0YSBkaXJlY3RvcnkgaXMgZGV0ZXJtaW5lZCBhcyBmb2xsb3dz
OgorICogICAgSWYgdV9zZXREYXRhRGlyZWN0b3J5KCkgaGFzIGJlZW4gY2FsbGVkLCB0aGF0IGlz
IGl0LCBvdGhlcndpc2UKKyAqICAgIGlmIHRoZSBJQ1VfREFUQSBlbnZpcm9ubWVudCB2YXJpYWJs
ZSBpcyBzZXQsIHVzZSB0aGF0LCBvdGhlcndpc2UKKyAqICAgIElmIGEgZGF0YSBkaXJlY3Rvcnkg
d2FzIHNwZWNpZmVkIGF0IElDVSBidWlsZCB0aW1lCisgKiAgICAgICgjZGVmaW5lIElDVV9EQVRB
X0RJUiAicGF0aCIpLCB1c2UgdGhhdCwKKyAqICAgIG90aGVyd2lzZSBubyBkYXRhIGRpcmVjdG9y
eSBpcyBhdmFpbGFibGUuCisgKgorICogQHJldHVybiB0aGUgZGF0YSBkaXJlY3RvcnksIG9yIGFu
IGVtcHR5IHN0cmluZyAoIiIpIGlmIG5vIGRhdGEgZGlyZWN0b3J5IGhhcworICogICAgICAgICBi
ZWVuIHNwZWNpZmllZC4KKyAqICAgCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUg
Y29uc3QgY2hhciogVV9FWFBPUlQyIHVfZ2V0RGF0YURpcmVjdG9yeSh2b2lkKTsKKworLyoqIAor
ICogU2V0IHRoZSBJQ1UgZGF0YSBkaXJlY3RvcnkuIAorICogVGhlIGRhdGEgZGlyZWN0b3J5IGlz
IHdoZXJlIGNvbW1vbiBmb3JtYXQgSUNVIGRhdGEgZmlsZXMgKC5kYXQgZmlsZXMpCisgKiAgIGFy
ZSBsb2FkZWQgZnJvbS4gIE5vdGUgdGhhdCBub3JtYWwgdXNlIG9mIHRoZSBidWlsdC1pbiBJQ1UK
KyAqICAgZmFjaWxpdGllcyBkb2VzIG5vdCByZXF1aXJlIGxvYWRpbmcgb2YgYW4gZXh0ZXJuYWwg
ZGF0YSBmaWxlOworICogICB1bmxlc3MgeW91IGFyZSBhZGRpbmcgY3VzdG9tIGRhdGEgdG8gSUNV
LCB0aGUgZGF0YSBkaXJlY3RvcnkKKyAqICAgZG9lcyBub3QgbmVlZCB0byBiZSBzZXQuCisgKgor
ICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGF0IG1vc3Qgb25jZSBpbiBhIHByb2Nl
c3MsIGJlZm9yZSB0aGUKKyAqIGZpcnN0IElDVSBvcGVyYXRpb24gKGUuZy4sIHVfaW5pdCgpKSB0
aGF0IHdpbGwgcmVxdWlyZSB0aGUgbG9hZGluZyBvZiBhbgorICogSUNVIGRhdGEgZmlsZS4KKyAq
IFRoaXMgZnVuY3Rpb24gaXMgbm90IHRocmVhZC1zYWZlLiBVc2UgaXQgYmVmb3JlIGNhbGxpbmcg
SUNVIEFQSXMgZnJvbQorICogbXVsdGlwbGUgdGhyZWFkcy4KKyAqCisgKiBAcGFyYW0gZGlyZWN0
b3J5IFRoZSBkaXJlY3RvcnkgdG8gYmUgc2V0LgorICoKKyAqIEBzZWUgdV9pbml0CisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIgdV9zZXREYXRhRGlyZWN0
b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSk7CisKKy8qKgorICogUGxlYXNlIHVzZSB1Y252X2dl
dERlZmF1bHROYW1lKCkgaW5zdGVhZC4KKyAqIFJldHVybiB0aGUgZGVmYXVsdCBjb2RlcGFnZSBm
b3IgdGhpcyBwbGF0Zm9ybSBhbmQgbG9jYWxlLgorICogVGhpcyBmdW5jdGlvbiBjYW4gY2FsbCBz
ZXRsb2NhbGUoKSBvbiBVbml4IHBsYXRmb3Jtcy4gUGxlYXNlIHJlYWQgdGhlCisgKiBwbGF0Zm9y
bSBkb2N1bWVudGF0aW9uIG9uIHNldGxvY2FsZSgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rp
b24uCisgKiBAcmV0dXJuIHRoZSBkZWZhdWx0IGNvZGVwYWdlIGZvciB0aGlzIHBsYXRmb3JtIAor
ICogQGludGVybmFsCisgKi8KK1VfSU5URVJOQUwgY29uc3QgY2hhciogIFVfRVhQT1JUMiB1cHJ2
X2dldERlZmF1bHRDb2RlcGFnZSh2b2lkKTsKKworLyoqCisgKiBQbGVhc2UgdXNlIHVsb2NfZ2V0
RGVmYXVsdCgpIGluc3RlYWQuCisgKiBSZXR1cm4gdGhlIGRlZmF1bHQgbG9jYWxlIElEIHN0cmlu
ZyBieSBxdWVyeWluZyB0aHMgc3lzdGVtLCBvcgorICogICAgIHplcm8gaWYgb25lIGNhbm5vdCBi
ZSBmb3VuZC4gCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBjYWxsIHNldGxvY2FsZSgpIG9uIFVuaXgg
cGxhdGZvcm1zLiBQbGVhc2UgcmVhZCB0aGUKKyAqIHBsYXRmb3JtIGRvY3VtZW50YXRpb24gb24g
c2V0bG9jYWxlKCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KKyAqIEByZXR1cm4gdGhl
IGRlZmF1bHQgbG9jYWxlIElEIHN0cmluZworICogQGludGVybmFsCisgKi8KK1VfSU5URVJOQUwg
Y29uc3QgY2hhciogIFVfRVhQT1JUMiB1cHJ2X2dldERlZmF1bHRMb2NhbGVJRCh2b2lkKTsKKwor
LyoqCisgKiBGaWxlc3lzdGVtIGZpbGUgYW5kIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCisg
KiBFeGFtcGxlOiAnLycgYW5kICc6JyBvbiBVbml4LCAnXFwnIGFuZCAnOycgb24gV2luZG93cy4K
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCisjaWZkZWYgWFBfTUFDCisjICAgZGVmaW5lIFVfRklM
RV9TRVBfQ0hBUiAnOicKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfQ0hBUiAnOicKKyMgICBk
ZWZpbmUgVV9QQVRIX1NFUF9DSEFSICc7JworIyAgIGRlZmluZSBVX0ZJTEVfU0VQX1NUUklORyAi
OiIKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfU1RSSU5HICI6IgorIyAgIGRlZmluZSBVX1BB
VEhfU0VQX1NUUklORyAiOyIKKyNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoT1MyKQor
IyAgIGRlZmluZSBVX0ZJTEVfU0VQX0NIQVIgJ1xcJworIyAgIGRlZmluZSBVX0ZJTEVfQUxUX1NF
UF9DSEFSICcvJworIyAgIGRlZmluZSBVX1BBVEhfU0VQX0NIQVIgJzsnCisjICAgZGVmaW5lIFVf
RklMRV9TRVBfU1RSSU5HICJcXCIKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfU1RSSU5HICIv
IgorIyAgIGRlZmluZSBVX1BBVEhfU0VQX1NUUklORyAiOyIKKyNlbHNlCisjICAgZGVmaW5lIFVf
RklMRV9TRVBfQ0hBUiAnLycKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfQ0hBUiAnLycKKyMg
ICBkZWZpbmUgVV9QQVRIX1NFUF9DSEFSICc6JworIyAgIGRlZmluZSBVX0ZJTEVfU0VQX1NUUklO
RyAiLyIKKyMgICBkZWZpbmUgVV9GSUxFX0FMVF9TRVBfU1RSSU5HICIvIgorIyAgIGRlZmluZSBV
X1BBVEhfU0VQX1NUUklORyAiOiIKKyNlbmRpZgorCisvKioKKyAqIENvbnZlcnQgY2hhciBjaGFy
YWN0ZXJzIHRvIFVDaGFyIGNoYXJhY3RlcnMuCisgKiBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gaXMg
dXNlZnVsIG9ubHkgZm9yICJpbnZhcmlhbnQgY2hhcmFjdGVycyIKKyAqIHRoYXQgYXJlIGVuY29k
ZWQgaW4gdGhlIHBsYXRmb3JtIGRlZmF1bHQgZW5jb2RpbmcuCisgKiBUaGV5IGFyZSBhIHNtYWxs
LCBjb25zdGFudCBzdWJzZXQgb2YgdGhlIGVuY29kaW5nIGFuZCBpbmNsdWRlCisgKiBqdXN0IHRo
ZSBsYXRpbiBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9uLgorICogRm9yIGRl
dGFpbHMsIHNlZSBVX0NIQVJTRVRfRkFNSUxZLgorICoKKyAqIEBwYXJhbSBjcyBJbnB1dCBzdHJp
bmcsIHBvaW50cyB0byA8Y29kZT5sZW5ndGg8L2NvZGU+CisgKiAgICAgICAgICAgY2hhcmFjdGVy
IGJ5dGVzIGZyb20gYSBzdWJzZXQgb2YgdGhlIHBsYXRmb3JtIGVuY29kaW5nLgorICogQHBhcmFt
IHVzIE91dHB1dCBzdHJpbmcsIHBvaW50cyB0byBtZW1vcnkgZm9yIDxjb2RlPmxlbmd0aDwvY29k
ZT4KKyAqICAgICAgICAgICBVbmljb2RlIGNoYXJhY3RlcnMuCisgKiBAcGFyYW0gbGVuZ3RoIFRo
ZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb252ZXJ0OyB0aGlzIG1heQorICogICAgICAgICAg
ICAgICBpbmNsdWRlIHRoZSB0ZXJtaW5hdGluZyA8Y29kZT5OVUw8L2NvZGU+LgorICoKKyAqIEBz
ZWUgVV9DSEFSU0VUX0ZBTUlMWQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIHZv
aWQgVV9FWFBPUlQyCit1X2NoYXJzVG9VQ2hhcnMoY29uc3QgY2hhciAqY3MsIFVDaGFyICp1cywg
aW50MzJfdCBsZW5ndGgpOworCisvKioKKyAqIENvbnZlcnQgVUNoYXIgY2hhcmFjdGVycyB0byBj
aGFyIGNoYXJhY3RlcnMuCisgKiBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gaXMgdXNlZnVsIG9ubHkg
Zm9yICJpbnZhcmlhbnQgY2hhcmFjdGVycyIKKyAqIHRoYXQgY2FuIGJlIGVuY29kZWQgaW4gdGhl
IHBsYXRmb3JtIGRlZmF1bHQgZW5jb2RpbmcuCisgKiBUaGV5IGFyZSBhIHNtYWxsLCBjb25zdGFu
dCBzdWJzZXQgb2YgdGhlIGVuY29kaW5nIGFuZCBpbmNsdWRlCisgKiBqdXN0IHRoZSBsYXRpbiBs
ZXR0ZXJzLCBkaWdpdHMsIGFuZCBzb21lIHB1bmN0dWF0aW9uLgorICogRm9yIGRldGFpbHMsIHNl
ZSBVX0NIQVJTRVRfRkFNSUxZLgorICoKKyAqIEBwYXJhbSB1cyBJbnB1dCBzdHJpbmcsIHBvaW50
cyB0byA8Y29kZT5sZW5ndGg8L2NvZGU+CisgKiAgICAgICAgICAgVW5pY29kZSBjaGFyYWN0ZXJz
IHRoYXQgY2FuIGJlIGVuY29kZWQgd2l0aCB0aGUKKyAqICAgICAgICAgICBjb2RlcGFnZS1pbnZh
cmlhbnQgc3Vic2V0IG9mIHRoZSBwbGF0Zm9ybSBlbmNvZGluZy4KKyAqIEBwYXJhbSBjcyBPdXRw
dXQgc3RyaW5nLCBwb2ludHMgdG8gbWVtb3J5IGZvciA8Y29kZT5sZW5ndGg8L2NvZGU+CisgKiAg
ICAgICAgICAgY2hhcmFjdGVyIGJ5dGVzLgorICogQHBhcmFtIGxlbmd0aCBUaGUgbnVtYmVyIG9m
IGNoYXJhY3RlcnMgdG8gY29udmVydDsgdGhpcyBtYXkKKyAqICAgICAgICAgICAgICAgaW5jbHVk
ZSB0aGUgdGVybWluYXRpbmcgPGNvZGU+TlVMPC9jb2RlPi4KKyAqCisgKiBAc2VlIFVfQ0hBUlNF
VF9GQU1JTFkKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JU
MgordV9VQ2hhcnNUb0NoYXJzKGNvbnN0IFVDaGFyICp1cywgY2hhciAqY3MsIGludDMyX3QgbGVu
Z3RoKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91
Y2hhci5oIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWNoYXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmQ0OTBjCi0tLSAvZGV2L251bGwKKysrIGIvSmF2YVNj
cmlwdEdsdWUvaWN1L3VuaWNvZGUvdWNoYXIuaApAQCAtMCwwICsxLDI3OTggQEAKKy8qCisqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisqICAgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDQsIEludGVybmF0aW9uYWwgQnVz
aW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogRmlsZSBVQ0hBUi5ICisqCisqIE1vZGlmaWNh
dGlvbiBIaXN0b3J5OgorKgorKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9u
CisqICAgMDQvMDIvOTcgICAgYWxpdSAgICAgICAgQ3JlYXRpb24uCisqICAgMDMvMjkvOTkgICAg
aGVsZW5hICAgICAgVXBkYXRlZCBmb3IgQyBBUElzLgorKiAgIDQvMTUvOTkgICAgIE1hZGh1ICAg
ICAgIFVwZGF0ZWQgZm9yIEMgSW1wbGVtZW50YXRpb24gYW5kIEphdmFkb2MKKyogICA1LzIwLzk5
ICAgICBNYWRodSAgICAgICBBZGRlZCB0aGUgZnVuY3Rpb24gdV9nZXRWZXJzaW9uKCkKKyogICA4
LzE5LzE5OTkgICBzcmwgICAgICAgICBVcGdyYWRlZCBzY3JpcHRzIHRvIFVuaWNvZGUgMy4wCisq
ICAgOC8yNy8xOTk5ICAgc2NoZXJlcm0gICAgVUNoYXJEaXJlY3Rpb24gY29uc3RhbnRzOiBVXy4u
LgorKiAgIDExLzExLzE5OTkgIHdlaXYgICAgICAgIGFkZGVkIHVfaXNhbG51bSgpLCBjbGVhbmVk
IGNvbW1lbnRzCisqICAgMDEvMTEvMjAwMCAgaGVsZW5hICAgICAgUmVuYW1lZCB1X2dldFZlcnNp
b24gdG8gdV9nZXRVbmljb2RlVmVyc2lvbigpLgorKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLwor
CisjaWZuZGVmIFVDSEFSX0gKKyNkZWZpbmUgVUNIQVJfSAorCisjaW5jbHVkZSAidW5pY29kZS91
dHlwZXMuaCIKKworVV9DREVDTF9CRUdJTgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIFVu
aWNvZGUgdmVyc2lvbiBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKioKKyAqIFVuaWNvZGUg
dmVyc2lvbiBudW1iZXIsIGRlZmF1bHQgZm9yIHRoZSBjdXJyZW50IElDVSB2ZXJzaW9uLgorICog
VGhlIGFjdHVhbCBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSBkYXRhIGlzIHN0b3Jl
ZCBpbiB1cHJvcHMuZGF0CisgKiBhbmQgbWF5IGJlIGdlbmVyYXRlZCBmcm9tIFVDRCBmaWxlcyBm
cm9tIGEgZGlmZmVyZW50IFVuaWNvZGUgdmVyc2lvbi4KKyAqIENhbGwgdV9nZXRVbmljb2RlVmVy
c2lvbiB0byBnZXQgdGhlIGFjdHVhbCBVbmljb2RlIHZlcnNpb24gb2YgdGhlIGRhdGEuCisgKgor
ICogQHNlZSB1X2dldFVuaWNvZGVWZXJzaW9uCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworI2Rl
ZmluZSBVX1VOSUNPREVfVkVSU0lPTiAiNC4wLjEiCisKKy8qKgorICogXGZpbGUKKyAqIFxicmll
ZiBDIEFQSTogVW5pY29kZSBQcm9wZXJ0aWVzCisgKgorICogVGhpcyBDIEFQSSBwcm92aWRlcyBs
b3ctbGV2ZWwgYWNjZXNzIHRvIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZS4KKyAqIElu
IGFkZGl0aW9uIHRvIHJhdyBwcm9wZXJ0eSB2YWx1ZXMsIHNvbWUgY29udmVuaWVuY2UgZnVuY3Rp
b25zIGNhbGN1bGF0ZQorICogZGVyaXZlZCBwcm9wZXJ0aWVzLCBmb3IgZXhhbXBsZSBmb3IgSmF2
YS1zdHlsZSBwcm9ncmFtbWluZy4KKyAqCisgKiBVbmljb2RlIGFzc2lnbnMgZWFjaCBjb2RlIHBv
aW50IChub3QganVzdCBhc3NpZ25lZCBjaGFyYWN0ZXIpIHZhbHVlcyBmb3IKKyAqIG1hbnkgcHJv
cGVydGllcy4KKyAqIE1vc3Qgb2YgdGhlbSBhcmUgc2ltcGxlIGJvb2xlYW4gZmxhZ3MsIG9yIGNv
bnN0YW50cyBmcm9tIGEgc21hbGwgZW51bWVyYXRlZCBsaXN0LgorICogRm9yIHNvbWUgcHJvcGVy
dGllcywgdmFsdWVzIGFyZSBzdHJpbmdzIG9yIG90aGVyIHJlbGF0aXZlbHkgbW9yZSBjb21wbGV4
IHR5cGVzLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZQorICogIkFib3V0IHRoZSBV
bmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdWNkLykK
KyAqIGFuZCB0aGUgSUNVIFVzZXIgR3VpZGUgY2hhcHRlciBvbiBQcm9wZXJ0aWVzIChodHRwOi8v
b3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlkZS9wcm9wZXJ0aWVzLmh0bWwpLgorICoK
KyAqIE1hbnkgZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYXRjaCBqYXZhLmxhbmcuQ2hhcmFj
dGVyIGZ1bmN0aW9ucy4KKyAqIFNlZSB0aGUgaW5kaXZpZHVhbCBmdW5jdGlvbiBkb2N1bWVudGF0
aW9uLAorICogYW5kIHNlZSB0aGUgSkRLIDEuNC4xIGphdmEubGFuZy5DaGFyYWN0ZXIgZG9jdW1l
bnRhdGlvbgorICogYXQgaHR0cDovL2phdmEuc3VuLmNvbS9qMnNlLzEuNC4xL2RvY3MvYXBpL2ph
dmEvbGFuZy9DaGFyYWN0ZXIuaHRtbAorICoKKyAqIFRoZXJlIGFyZSBhbHNvIGZ1bmN0aW9ucyB0
aGF0IHByb3ZpZGUgZWFzeSBtaWdyYXRpb24gZnJvbSBDL1BPU0lYIGZ1bmN0aW9ucworICogbGlr
ZSBpc2JsYW5rKCkuIFRoZWlyIHVzZSBpcyBnZW5lcmFsbHkgZGlzY291cmFnZWQgYmVjYXVzZSB0
aGUgQy9QT1NJWAorICogc3RhbmRhcmRzIGRvIG5vdCBkZWZpbmUgdGhlaXIgc2VtYW50aWNzIGJl
eW9uZCB0aGUgQVNDSUkgcmFuZ2UsIHdoaWNoIG1lYW5zCisgKiB0aGF0IGRpZmZlcmVudCBpbXBs
ZW1lbnRhdGlvbnMgZXhoaWJpdCB2ZXJ5IGRpZmZlcmVudCBiZWhhdmlvci4KKyAqIEluc3RlYWQs
IFVuaWNvZGUgcHJvcGVydGllcyBzaG91bGQgYmUgdXNlZCBkaXJlY3RseS4KKyAqCisgKiBUaGVy
ZSBhcmUgYWxzbyBvbmx5IGEgZmV3LCBicm9hZCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2VzLCBh
bmQgdGhleSB0ZW5kCisgKiB0byBiZSB1c2VkIGZvciBjb25mbGljdGluZyBwdXJwb3Nlcy4gRm9y
IGV4YW1wbGUsIHRoZSAiaXNhbHBoYSgpIiBjbGFzcworICogaXMgc29tZXRpbWVzIHVzZWQgdG8g
ZGV0ZXJtaW5lIHdvcmQgYm91bmRhcmllcywgd2hpbGUgYSBtb3JlIHNvcGhpc3RpY2F0ZWQKKyAq
IGFwcHJvYWNoIHdvdWxkIGF0IGxlYXN0IGRpc3Rpbmd1aXNoIGluaXRpYWwgbGV0dGVycyBmcm9t
IGNvbnRpbnVhdGlvbgorICogY2hhcmFjdGVycyAodGhlIGxhdHRlciBpbmNsdWRpbmcgY29tYmlu
aW5nIG1hcmtzKS4KKyAqIChJbiBJQ1UsIEJyZWFrSXRlcmF0b3IgaXMgdGhlIG1vc3Qgc29waGlz
dGljYXRlZCBBUEkgZm9yIHdvcmQgYm91bmRhcmllcy4pCisgKiBBbm90aGVyIGV4YW1wbGU6IFRo
ZXJlIGlzIG5vICJpc3RpdGxlKCkiIGNsYXNzIGZvciB0aXRsZWNhc2UgY2hhcmFjdGVycy4KKyAq
CisgKiBBIHN1bW1hcnkgb2YgdGhlIGJlaGF2aW9yIG9mIHNvbWUgQy9QT1NJWCBjaGFyYWN0ZXIg
Y2xhc3NpZmljYXRpb24gaW1wbGVtZW50YXRpb25zCisgKiBmb3IgVW5pY29kZSBpcyBhdmFpbGFi
bGUgYXQgaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2N2cy9pY3UvfmNoZWNrb3V0fi9pY3Vo
dG1sL2Rlc2lnbi9wb3NpeF9jbGFzc2VzLmh0bWwKKyAqCisgKiA8c3Ryb25nPkltcG9ydGFudDwv
c3Ryb25nPjoKKyAqIFRoZSBiZWhhdmlvciBvZiB0aGUgSUNVIEMvUE9TSVgtc3R5bGUgY2hhcmFj
dGVyIGNsYXNzaWZpY2F0aW9uCisgKiBmdW5jdGlvbnMgaXMgc3ViamVjdCB0byBjaGFuZ2UgYWNj
b3JkaW5nIHRvIGRpc2N1c3Npb24gb2YgdGhlIGFib3ZlIHN1bW1hcnkuCisgKgorICogTm90ZTog
VGhlcmUgYXJlIHNldmVyYWwgSUNVIHdoaXRlc3BhY2UgZnVuY3Rpb25zLgorICogQ29tcGFyaXNv
bjoKKyAqIC0gdV9pc1VXaGl0ZVNwYWNlPVVDSEFSX1dISVRFX1NQQUNFOiBVbmljb2RlIFdoaXRl
X1NwYWNlIHByb3BlcnR5OworICogICAgICAgbW9zdCBvZiBnZW5lcmFsIGNhdGVnb3JpZXMgIloi
IChzZXBhcmF0b3JzKSArIG1vc3Qgd2hpdGVzcGFjZSBJU08gY29udHJvbHMKKyAqICAgICAgIChp
bmNsdWRpbmcgbm8tYnJlYWsgc3BhY2VzLCBidXQgZXhjbHVkaW5nIElTMS4uSVM0IGFuZCBaV1NQ
KQorICogLSB1X2lzV2hpdGVzcGFjZTogSmF2YSBpc1doaXRlc3BhY2U7IFogKyB3aGl0ZXNwYWNl
IElTTyBjb250cm9scyBidXQgZXhjbHVkaW5nIG5vLWJyZWFrIHNwYWNlcworICogLSB1X2lzSmF2
YVNwYWNlQ2hhcjogSmF2YSBpc1NwYWNlQ2hhcjsganVzdCBaIChpbmNsdWRpbmcgbm8tYnJlYWsg
c3BhY2VzKQorICogLSB1X2lzc3BhY2U6IFogKyB3aGl0ZXNwYWNlIElTTyBjb250cm9scyAoaW5j
bHVkaW5nIG5vLWJyZWFrIHNwYWNlcykKKyAqIC0gdV9pc2JsYW5rOiAiaG9yaXpvbnRhbCBzcGFj
ZXMiID0gVEFCICsgWnMgLSBaV1NQCisgKi8KKworLyoqCisgKiBDb25zdGFudHMuCisgKi8KKwor
LyoqIFRoZSBsb3dlc3QgVW5pY29kZSBjb2RlIHBvaW50IHZhbHVlLiBDb2RlIHBvaW50cyBhcmUg
bm9uLW5lZ2F0aXZlLiBAc3RhYmxlIElDVSAyLjAgKi8KKyNkZWZpbmUgVUNIQVJfTUlOX1ZBTFVF
IDAKKworLyoqCisgKiBUaGUgaGlnaGVzdCBVbmljb2RlIGNvZGUgcG9pbnQgdmFsdWUgKHNjYWxh
ciB2YWx1ZSkgYWNjb3JkaW5nIHRvCisgKiBUaGUgVW5pY29kZSBTdGFuZGFyZC4gVGhpcyBpcyBh
IDIxLWJpdCB2YWx1ZSAoMjAuMSBiaXRzLCByb3VuZGVkIHVwKS4KKyAqIEZvciBhIHNpbmdsZSBj
aGFyYWN0ZXIsIFVDaGFyMzIgaXMgYSBzaW1wbGUgdHlwZSB0aGF0IGNhbiBob2xkIGFueSBjb2Rl
IHBvaW50IHZhbHVlLgorICoKKyAqIEBzZWUgVUNoYXIzMgorICogQHN0YWJsZSBJQ1UgMi4wCisg
Ki8KKyNkZWZpbmUgVUNIQVJfTUFYX1ZBTFVFIDB4MTBmZmZmCisKKy8qKgorICogR2V0IGEgc2lu
Z2xlLWJpdCBiaXQgc2V0IChhIGZsYWcpIGZyb20gYSBiaXQgbnVtYmVyIDAuLjMxLgorICogQHN0
YWJsZSBJQ1UgMi4xCisgKi8KKyNkZWZpbmUgVV9NQVNLKHgpICgodWludDMyX3QpMTw8KHgpKQor
CisvKgorICogISEgTm90ZTogU2V2ZXJhbCBjb21tZW50cyBpbiB0aGlzIGZpbGUgYXJlIG1hY2hp
bmUtcmVhZCBieSB0aGUKKyAqIGdlbnBuYW1lIHRvb2wuICBUaGVzZSBjb21tZW50cyBkZXNjcmli
ZSB0aGUgY29ycmVzcG9uZGVuY2UgYmV0d2VlbgorICogaWN1IGVudW0gY29uc3RhbnRzIGFuZCBV
Q0QgZW50aXRpZXMuICBEbyBub3QgZGVsZXRlIHRoZW0uICBVcGRhdGUKKyAqIHRoZXNlIGNvbW1l
bnRzIGFzIG5lZWRlZC4KKyAqCisgKiBBbnkgY29tbWVudCBvZiB0aGUgZm9ybSAiLyAqW25hbWVd
KiAvIiAoc3BhY2VzIGFkZGVkKSBpcyBzdWNoCisgKiBhIGNvbW1lbnQuCisgKgorICogVGhlIFVf
SkdfKiBhbmQgVV9HQ18qX01BU0sgY29uc3RhbnRzIGFyZSBtYXRjaGVkIGJ5IHRoZWlyIHN5bWJv
bGljCisgKiBuYW1lLCB3aGljaCBtdXN0IG1hdGNoIFByb3BlcnR5VmFsdWVBbGlhc2VzLnR4dC4K
KyAqLworCisvKioKKyAqIFNlbGVjdGlvbiBjb25zdGFudHMgZm9yIFVuaWNvZGUgcHJvcGVydGll
cy4KKyAqIFRoZXNlIGNvbnN0YW50cyBhcmUgdXNlZCBpbiBmdW5jdGlvbnMgbGlrZSB1X2hhc0Jp
bmFyeVByb3BlcnR5IHRvIHNlbGVjdAorICogb25lIG9mIHRoZSBVbmljb2RlIHByb3BlcnRpZXMu
CisgKgorICogVGhlIHByb3BlcnRpZXMgQVBJcyBhcmUgaW50ZW5kZWQgdG8gcmVmbGVjdCBVbmlj
b2RlIHByb3BlcnRpZXMgYXMgZGVmaW5lZAorICogaW4gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERh
dGFiYXNlIChVQ0QpIGFuZCBVbmljb2RlIFRlY2huaWNhbCBSZXBvcnRzIChVVFIpLgorICogRm9y
IGRldGFpbHMgYWJvdXQgdGhlIHByb3BlcnRpZXMgc2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcv
dWNkLyAuCisgKiBGb3IgbmFtZXMgb2YgVW5pY29kZSBwcm9wZXJ0aWVzIHNlZSB0aGUgVUNEIGZp
bGUgUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAqCisgKiBJbXBvcnRhbnQ6IElmIElDVSBpcyBidWls
dCB3aXRoIFVDRCBmaWxlcyBmcm9tIFVuaWNvZGUgdmVyc2lvbnMgYmVsb3csIGUuZy4sIDMuMiwK
KyAqIHRoZW4gcHJvcGVydGllcyBtYXJrZWQgd2l0aCAibmV3IGluIFVuaWNvZGUgMy4yIiBhcmUg
bm90IG9yIG5vdCBmdWxseSBhdmFpbGFibGUuCisgKiBDaGVjayB1X2dldFVuaWNvZGVWZXJzaW9u
IHRvIGJlIHN1cmUuCisgKgorICogQHNlZSB1X2hhc0JpbmFyeVByb3BlcnR5CisgKiBAc2VlIHVf
Z2V0SW50UHJvcGVydHlWYWx1ZQorICogQHNlZSB1X2dldFVuaWNvZGVWZXJzaW9uCisgKiBAc3Rh
YmxlIElDVSAyLjEKKyAqLwordHlwZWRlZiBlbnVtIFVQcm9wZXJ0eSB7CisgICAgLyogIFNlZSBu
b3RlICEhLiAgQ29tbWVudHMgb2YgdGhlIGZvcm0gIkJpbmFyeSBwcm9wZXJ0eSBEYXNoIiwKKyAg
ICAgICAgIkVudW1lcmF0ZWQgcHJvcGVydHkgU2NyaXB0IiwgIkRvdWJsZSBwcm9wZXJ0eSBOdW1l
cmljX1ZhbHVlIiwKKyAgICAgICAgYW5kICJTdHJpbmcgcHJvcGVydHkgQWdlIiBhcmUgcmVhZCBi
eSBnZW5wbmFtZS4gKi8KKworICAgIC8qICBOb3RlOiBQbGFjZSBVQ0hBUl9BTFBIQUJFVElDIGJl
Zm9yZSBVQ0hBUl9CSU5BUllfU1RBUlQgc28gdGhhdAorICAgIGRlYnVnZ2VycyBkaXNwbGF5IFVD
SEFSX0FMUEhBQkVUSUMgYXMgdGhlIHN5bWJvbGljIG5hbWUgZm9yIDAsCisgICAgcmF0aGVyIHRo
YW4gVUNIQVJfQklOQVJZX1NUQVJULiAgTGlrZXdpc2UgZm9yIG90aGVyICpfU1RBUlQKKyAgICBp
ZGVudGlmaWVycy4gKi8KKworICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgQWxwaGFiZXRpYy4gU2Ft
ZSBhcyB1X2lzVUFscGhhYmV0aWMsIGRpZmZlcmVudCBmcm9tIHVfaXNhbHBoYS4KKyAgICAgICAg
THUrTGwrTHQrTG0rTG8rTmwrT3RoZXJfQWxwaGFiZXRpYyBAc3RhYmxlIElDVSAyLjEgKi8KKyAg
ICBVQ0hBUl9BTFBIQUJFVElDPTAsCisgICAgLyoqIEZpcnN0IGNvbnN0YW50IGZvciBiaW5hcnkg
VW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9CSU5BUllf
U1RBUlQ9VUNIQVJfQUxQSEFCRVRJQywKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IEFTQ0lJX0hl
eF9EaWdpdC4gMC05IEEtRiBhLWYgQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfQVNDSUlf
SEVYX0RJR0lULAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgQmlkaV9Db250cm9sLgorICAgICAg
ICBGb3JtYXQgY29udHJvbHMgd2hpY2ggaGF2ZSBzcGVjaWZpYyBmdW5jdGlvbnMKKyAgICAgICAg
aW4gdGhlIEJpZGkgQWxnb3JpdGhtLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9CSURJ
X0NPTlRST0wsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBCaWRpX01pcnJvcmVkLgorICAgICAg
ICBDaGFyYWN0ZXJzIHRoYXQgbWF5IGNoYW5nZSBkaXNwbGF5IGluIFJUTCB0ZXh0LgorICAgICAg
ICBTYW1lIGFzIHVfaXNNaXJyb3JlZC4KKyAgICAgICAgU2VlIEJpZGkgQWxnb3JpdGhtLCBVVFIg
OS4gQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfQklESV9NSVJST1JFRCwKKyAgICAvKiog
QmluYXJ5IHByb3BlcnR5IERhc2guIFZhcmlhdGlvbnMgb2YgZGFzaGVzLiBAc3RhYmxlIElDVSAy
LjEgKi8KKyAgICBVQ0hBUl9EQVNILAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgRGVmYXVsdF9J
Z25vcmFibGVfQ29kZV9Qb2ludCAobmV3IGluIFVuaWNvZGUgMy4yKS4KKyAgICAgICAgSWdub3Jh
YmxlIGluIG1vc3QgcHJvY2Vzc2luZy4KKyAgICAgICAgPDIwNjAuLjIwNkYsIEZGRjAuLkZGRkIs
IEUwMDAwLi5FMEZGRj4rT3RoZXJfRGVmYXVsdF9JZ25vcmFibGVfQ29kZV9Qb2ludCsoQ2YrQ2Mr
Q3MtV2hpdGVfU3BhY2UpIEBzdGFibGUgSUNVIDIuMSAqLworICAgIFVDSEFSX0RFRkFVTFRfSUdO
T1JBQkxFX0NPREVfUE9JTlQsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBEZXByZWNhdGVkIChu
ZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBUaGUgdXNhZ2Ugb2YgZGVwcmVjYXRlZCBjaGFy
YWN0ZXJzIGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBV
Q0hBUl9ERVBSRUNBVEVELAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgRGlhY3JpdGljLiBDaGFy
YWN0ZXJzIHRoYXQgbGluZ3Vpc3RpY2FsbHkgbW9kaWZ5CisgICAgICAgIHRoZSBtZWFuaW5nIG9m
IGFub3RoZXIgY2hhcmFjdGVyIHRvIHdoaWNoIHRoZXkgYXBwbHkuIEBzdGFibGUgSUNVIDIuMSAq
LworICAgIFVDSEFSX0RJQUNSSVRJQywKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IEV4dGVuZGVy
LgorICAgICAgICBFeHRlbmQgdGhlIHZhbHVlIG9yIHNoYXBlIG9mIGEgcHJlY2VkaW5nIGFscGhh
YmV0aWMgY2hhcmFjdGVyLAorICAgICAgICBlLmcuLCBsZW5ndGggYW5kIGl0ZXJhdGlvbiBtYXJr
cy4gQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfRVhURU5ERVIsCisgICAgLyoqIEJpbmFy
eSBwcm9wZXJ0eSBGdWxsX0NvbXBvc2l0aW9uX0V4Y2x1c2lvbi4KKyAgICAgICAgQ29tcG9zaXRp
b25FeGNsdXNpb25zLnR4dCtTaW5nbGV0b24gRGVjb21wb3NpdGlvbnMrCisgICAgICAgIE5vbi1T
dGFydGVyIERlY29tcG9zaXRpb25zLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9GVUxM
X0NPTVBPU0lUSU9OX0VYQ0xVU0lPTiwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IEdyYXBoZW1l
X0Jhc2UgKG5ldyBpbiBVbmljb2RlIDMuMikuCisgICAgICAgIEZvciBwcm9ncmFtbWF0aWMgZGV0
ZXJtaW5hdGlvbiBvZiBncmFwaGVtZSBjbHVzdGVyIGJvdW5kYXJpZXMuCisgICAgICAgIFswLi4x
MEZGRkZdLUNjLUNmLUNzLUNvLUNuLVpsLVpwLUdyYXBoZW1lX0xpbmstR3JhcGhlbWVfRXh0ZW5k
LUNHSiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9HUkFQSEVNRV9CQVNFLAorICAgIC8q
KiBCaW5hcnkgcHJvcGVydHkgR3JhcGhlbWVfRXh0ZW5kIChuZXcgaW4gVW5pY29kZSAzLjIpLgor
ICAgICAgICBGb3IgcHJvZ3JhbW1hdGljIGRldGVybWluYXRpb24gb2YgZ3JhcGhlbWUgY2x1c3Rl
ciBib3VuZGFyaWVzLgorICAgICAgICBNZStNbitNYytPdGhlcl9HcmFwaGVtZV9FeHRlbmQtR3Jh
cGhlbWVfTGluay1DR0ogQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfR1JBUEhFTUVfRVhU
RU5ELAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgR3JhcGhlbWVfTGluayAobmV3IGluIFVuaWNv
ZGUgMy4yKS4KKyAgICAgICAgRm9yIHByb2dyYW1tYXRpYyBkZXRlcm1pbmF0aW9uIG9mIGdyYXBo
ZW1lIGNsdXN0ZXIgYm91bmRhcmllcy4gQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfR1JB
UEhFTUVfTElOSywKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IEhleF9EaWdpdC4KKyAgICAgICAg
Q2hhcmFjdGVycyBjb21tb25seSB1c2VkIGZvciBoZXhhZGVjaW1hbCBudW1iZXJzLiBAc3RhYmxl
IElDVSAyLjEgKi8KKyAgICBVQ0hBUl9IRVhfRElHSVQsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0
eSBIeXBoZW4uIERhc2hlcyB1c2VkIHRvIG1hcmsgY29ubmVjdGlvbnMKKyAgICAgICAgYmV0d2Vl
biBwaWVjZXMgb2Ygd29yZHMsIHBsdXMgdGhlIEthdGFrYW5hIG1pZGRsZSBkb3QuIEBzdGFibGUg
SUNVIDIuMSAqLworICAgIFVDSEFSX0hZUEhFTiwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IElE
X0NvbnRpbnVlLgorICAgICAgICBDaGFyYWN0ZXJzIHRoYXQgY2FuIGNvbnRpbnVlIGFuIGlkZW50
aWZpZXIuCisgICAgICAgIERlcml2ZWRDb3JlUHJvcGVydGllcy50eHQgYWxzbyBzYXlzICJOT1RF
OiBDZiBjaGFyYWN0ZXJzIHNob3VsZCBiZSBmaWx0ZXJlZCBvdXQuIgorICAgICAgICBJRF9TdGFy
dCtNbitNYytOZCtQYyBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9JRF9DT05USU5VRSwK
KyAgICAvKiogQmluYXJ5IHByb3BlcnR5IElEX1N0YXJ0LgorICAgICAgICBDaGFyYWN0ZXJzIHRo
YXQgY2FuIHN0YXJ0IGFuIGlkZW50aWZpZXIuCisgICAgICAgIEx1K0xsK0x0K0xtK0xvK05sIEBz
dGFibGUgSUNVIDIuMSAqLworICAgIFVDSEFSX0lEX1NUQVJULAorICAgIC8qKiBCaW5hcnkgcHJv
cGVydHkgSWRlb2dyYXBoaWMuCisgICAgICAgIENKS1YgaWRlb2dyYXBocy4gQHN0YWJsZSBJQ1Ug
Mi4xICovCisgICAgVUNIQVJfSURFT0dSQVBISUMsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBJ
RFNfQmluYXJ5X09wZXJhdG9yIChuZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBGb3IgcHJv
Z3JhbW1hdGljIGRldGVybWluYXRpb24gb2YKKyAgICAgICAgSWRlb2dyYXBoaWMgRGVzY3JpcHRp
b24gU2VxdWVuY2VzLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9JRFNfQklOQVJZX09Q
RVJBVE9SLAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgSURTX1RyaW5hcnlfT3BlcmF0b3IgKG5l
dyBpbiBVbmljb2RlIDMuMikuCisgICAgICAgIEZvciBwcm9ncmFtbWF0aWMgZGV0ZXJtaW5hdGlv
biBvZgorICAgICAgICBJZGVvZ3JhcGhpYyBEZXNjcmlwdGlvbiBTZXF1ZW5jZXMuIEBzdGFibGUg
SUNVIDIuMSAqLworICAgIFVDSEFSX0lEU19UUklOQVJZX09QRVJBVE9SLAorICAgIC8qKiBCaW5h
cnkgcHJvcGVydHkgSm9pbl9Db250cm9sLgorICAgICAgICBGb3JtYXQgY29udHJvbHMgZm9yIGN1
cnNpdmUgam9pbmluZyBhbmQgbGlnYXRpb24uIEBzdGFibGUgSUNVIDIuMSAqLworICAgIFVDSEFS
X0pPSU5fQ09OVFJPTCwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IExvZ2ljYWxfT3JkZXJfRXhj
ZXB0aW9uIChuZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBDaGFyYWN0ZXJzIHRoYXQgZG8g
bm90IHVzZSBsb2dpY2FsIG9yZGVyIGFuZAorICAgICAgICByZXF1aXJlIHNwZWNpYWwgaGFuZGxp
bmcgaW4gbW9zdCBwcm9jZXNzaW5nLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9MT0dJ
Q0FMX09SREVSX0VYQ0VQVElPTiwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IExvd2VyY2FzZS4g
U2FtZSBhcyB1X2lzVUxvd2VyY2FzZSwgZGlmZmVyZW50IGZyb20gdV9pc2xvd2VyLgorICAgICAg
ICBMbCtPdGhlcl9Mb3dlcmNhc2UgQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfTE9XRVJD
QVNFLAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgTWF0aC4gU20rT3RoZXJfTWF0aCBAc3RhYmxl
IElDVSAyLjEgKi8KKyAgICBVQ0hBUl9NQVRILAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgTm9u
Y2hhcmFjdGVyX0NvZGVfUG9pbnQuCisgICAgICAgIENvZGUgcG9pbnRzIHRoYXQgYXJlIGV4cGxp
Y2l0bHkgZGVmaW5lZCBhcyBpbGxlZ2FsCisgICAgICAgIGZvciB0aGUgZW5jb2Rpbmcgb2YgY2hh
cmFjdGVycy4gQHN0YWJsZSBJQ1UgMi4xICovCisgICAgVUNIQVJfTk9OQ0hBUkFDVEVSX0NPREVf
UE9JTlQsCisgICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBRdW90YXRpb25fTWFyay4gQHN0YWJsZSBJ
Q1UgMi4xICovCisgICAgVUNIQVJfUVVPVEFUSU9OX01BUkssCisgICAgLyoqIEJpbmFyeSBwcm9w
ZXJ0eSBSYWRpY2FsIChuZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBGb3IgcHJvZ3JhbW1h
dGljIGRldGVybWluYXRpb24gb2YKKyAgICAgICAgSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gU2Vx
dWVuY2VzLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9SQURJQ0FMLAorICAgIC8qKiBC
aW5hcnkgcHJvcGVydHkgU29mdF9Eb3R0ZWQgKG5ldyBpbiBVbmljb2RlIDMuMikuCisgICAgICAg
IENoYXJhY3RlcnMgd2l0aCBhICJzb2Z0IGRvdCIsIGxpa2UgaSBvciBqLgorICAgICAgICBBbiBh
Y2NlbnQgcGxhY2VkIG9uIHRoZXNlIGNoYXJhY3RlcnMgY2F1c2VzCisgICAgICAgIHRoZSBkb3Qg
dG8gZGlzYXBwZWFyLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9TT0ZUX0RPVFRFRCwK
KyAgICAvKiogQmluYXJ5IHByb3BlcnR5IFRlcm1pbmFsX1B1bmN0dWF0aW9uLgorICAgICAgICBQ
dW5jdHVhdGlvbiBjaGFyYWN0ZXJzIHRoYXQgZ2VuZXJhbGx5IG1hcmsKKyAgICAgICAgdGhlIGVu
ZCBvZiB0ZXh0dWFsIHVuaXRzLiBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9URVJNSU5B
TF9QVU5DVFVBVElPTiwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IFVuaWZpZWRfSWRlb2dyYXBo
IChuZXcgaW4gVW5pY29kZSAzLjIpLgorICAgICAgICBGb3IgcHJvZ3JhbW1hdGljIGRldGVybWlu
YXRpb24gb2YKKyAgICAgICAgSWRlb2dyYXBoaWMgRGVzY3JpcHRpb24gU2VxdWVuY2VzLiBAc3Rh
YmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9VTklGSUVEX0lERU9HUkFQSCwKKyAgICAvKiogQmlu
YXJ5IHByb3BlcnR5IFVwcGVyY2FzZS4gU2FtZSBhcyB1X2lzVVVwcGVyY2FzZSwgZGlmZmVyZW50
IGZyb20gdV9pc3VwcGVyLgorICAgICAgICBMdStPdGhlcl9VcHBlcmNhc2UgQHN0YWJsZSBJQ1Ug
Mi4xICovCisgICAgVUNIQVJfVVBQRVJDQVNFLAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgV2hp
dGVfU3BhY2UuCisgICAgICAgIFNhbWUgYXMgdV9pc1VXaGl0ZVNwYWNlLCBkaWZmZXJlbnQgZnJv
bSB1X2lzc3BhY2UgYW5kIHVfaXNXaGl0ZXNwYWNlLgorICAgICAgICBTcGFjZSBjaGFyYWN0ZXJz
K1RBQitDUitMRi1aV1NQLVpXTkJTUCBAc3RhYmxlIElDVSAyLjEgKi8KKyAgICBVQ0hBUl9XSElU
RV9TUEFDRSwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IFhJRF9Db250aW51ZS4KKyAgICAgICAg
SURfQ29udGludWUgbW9kaWZpZWQgdG8gYWxsb3cgY2xvc3VyZSB1bmRlcgorICAgICAgICBub3Jt
YWxpemF0aW9uIGZvcm1zIE5GS0MgYW5kIE5GS0QuIEBzdGFibGUgSUNVIDIuMSAqLworICAgIFVD
SEFSX1hJRF9DT05USU5VRSwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IFhJRF9TdGFydC4gSURf
U3RhcnQgbW9kaWZpZWQgdG8gYWxsb3cKKyAgICAgICAgY2xvc3VyZSB1bmRlciBub3JtYWxpemF0
aW9uIGZvcm1zIE5GS0MgYW5kIE5GS0QuIEBzdGFibGUgSUNVIDIuMSAqLworICAgIFVDSEFSX1hJ
RF9TVEFSVCwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5IENhc2VfU2Vuc2l0aXZlLiBFaXRoZXIg
dGhlIHNvdXJjZSBvZiBhIGNhc2UKKyAgICAgICAgbWFwcGluZyBvciBfaW5fIHRoZSB0YXJnZXQg
b2YgYSBjYXNlIG1hcHBpbmcuIE5vdCB0aGUgc2FtZSBhcworICAgICAgICB0aGUgZ2VuZXJhbCBj
YXRlZ29yeSBDYXNlZF9MZXR0ZXIuIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVDSEFSX0NBU0Vf
U0VOU0lUSVZFLAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgU1Rlcm0gKG5ldyBpbiBVbmljb2Rl
IDQuMC4xKS4KKyAgICAgICAgU2VudGVuY2UgVGVybWluYWwuIFVzZWQgaW4gVUFYICMyOTogVGV4
dCBCb3VuZGFyaWVzCisgICAgICAgIChodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIy
OS8pCisgICAgICAgIEBkcmFmdCBJQ1UgMy4wICovCisgICAgVUNIQVJfU19URVJNLAorICAgIC8q
KiBCaW5hcnkgcHJvcGVydHkgVmFyaWF0aW9uX1NlbGVjdG9yIChuZXcgaW4gVW5pY29kZSA0LjAu
MSkuCisgICAgICAgIEluZGljYXRlcyBhbGwgdGhvc2UgY2hhcmFjdGVycyB0aGF0IHF1YWxpZnkg
YXMgVmFyaWF0aW9uIFNlbGVjdG9ycy4KKyAgICAgICAgRm9yIGRldGFpbHMgb24gdGhlIGJlaGF2
aW9yIG9mIHRoZXNlIGNoYXJhY3RlcnMsCisgICAgICAgIHNlZSBTdGFuZGFyZGl6ZWRWYXJpYW50
cy5odG1sIGFuZCAxNS42IFZhcmlhdGlvbiBTZWxlY3RvcnMuCisgICAgICAgIEBkcmFmdCBJQ1Ug
My4wICovCisgICAgVUNIQVJfVkFSSUFUSU9OX1NFTEVDVE9SLAorICAgIC8qKiBCaW5hcnkgcHJv
cGVydHkgTkZEX0luZXJ0LgorICAgICAgICBJQ1Utc3BlY2lmaWMgcHJvcGVydHkgZm9yIGNoYXJh
Y3RlcnMgdGhhdCBhcmUgaW5lcnQgdW5kZXIgTkZELAorICAgICAgICBpLmUuLCB0aGV5IGRvIG5v
dCBpbnRlcmFjdCB3aXRoIGFkamFjZW50IGNoYXJhY3RlcnMuCisgICAgICAgIFVzZWQgZm9yIGV4
YW1wbGUgaW4gbm9ybWFsaXppbmcgdHJhbnNmb3JtcyBpbiBpbmNyZW1lbnRhbCBtb2RlCisgICAg
ICAgIHRvIGZpbmQgdGhlIGJvdW5kYXJ5IG9mIHNhZmVseSBub3JtYWxpemFibGUgdGV4dCBkZXNw
aXRlIHBvc3NpYmxlCisgICAgICAgIHRleHQgYWRkaXRpb25zLgorCisgICAgICAgIFRoZXJlIGlz
IG9uZSBzdWNoIHByb3BlcnR5IHBlciBub3JtYWxpemF0aW9uIGZvcm0uCisgICAgICAgIFRoZXNl
IHByb3BlcnRpZXMgYXJlIGNvbXB1dGVkIGFzIGZvbGxvd3MgLSBhbiBpbmVydCBjaGFyYWN0ZXIg
aXM6CisgICAgICAgIGEpIHVuYXNzaWduZWQsIG9yIEFMTCBvZiB0aGUgZm9sbG93aW5nOgorICAg
ICAgICBiKSBvZiBjb21iaW5pbmcgY2xhc3MgMC4KKyAgICAgICAgYykgbm90IGRlY29tcG9zZWQg
YnkgdGhpcyBub3JtYWxpemF0aW9uIGZvcm0uCisgICAgICAgIEFORCBpZiBORkMgb3IgTkZLQywK
KyAgICAgICAgZCkgY2FuIG5ldmVyIGNvbXBvc2Ugd2l0aCBhIHByZXZpb3VzIGNoYXJhY3Rlci4K
KyAgICAgICAgZSkgY2FuIG5ldmVyIGNvbXBvc2Ugd2l0aCBhIGZvbGxvd2luZyBjaGFyYWN0ZXIu
CisgICAgICAgIGYpIGNhbiBuZXZlciBjaGFuZ2UgaWYgYW5vdGhlciBjaGFyYWN0ZXIgaXMgYWRk
ZWQuCisgICAgICAgICAgIEV4YW1wbGU6IGEtYnJldmUgbWlnaHQgc2F0aXNmeSBhbGwgYnV0IGYs
IGJ1dCBpZiB5b3UKKyAgICAgICAgICAgYWRkIGFuIG9nb25layBpdCBjaGFuZ2VzIHRvIGEtb2dv
bmVrICsgYnJldmUKKworICAgICAgICBTZWUgYWxzbyBjb20uaWJtLnRleHQuVUNELk5GU2tpcHBh
YmxlIGluIHRoZSBJQ1U0SiByZXBvc2l0b3J5LAorICAgICAgICBhbmQgaWN1L3NvdXJjZS9jb21t
b24vdW5vcm1pbXAuaCAuCisgICAgICAgIEBkcmFmdCBJQ1UgMy4wICovCisgICAgVUNIQVJfTkZE
X0lORVJULAorICAgIC8qKiBCaW5hcnkgcHJvcGVydHkgTkZLRF9JbmVydC4KKyAgICAgICAgSUNV
LXNwZWNpZmljIHByb3BlcnR5IGZvciBjaGFyYWN0ZXJzIHRoYXQgYXJlIGluZXJ0IHVuZGVyIE5G
S0QsCisgICAgICAgIGkuZS4sIHRoZXkgZG8gbm90IGludGVyYWN0IHdpdGggYWRqYWNlbnQgY2hh
cmFjdGVycy4KKyAgICAgICAgVXNlZCBmb3IgZXhhbXBsZSBpbiBub3JtYWxpemluZyB0cmFuc2Zv
cm1zIGluIGluY3JlbWVudGFsIG1vZGUKKyAgICAgICAgdG8gZmluZCB0aGUgYm91bmRhcnkgb2Yg
c2FmZWx5IG5vcm1hbGl6YWJsZSB0ZXh0IGRlc3BpdGUgcG9zc2libGUKKyAgICAgICAgdGV4dCBh
ZGRpdGlvbnMuCisgICAgICAgIEBzZWUgVUNIQVJfTkZEX0lORVJUCisgICAgICAgIEBkcmFmdCBJ
Q1UgMy4wICovCisgICAgVUNIQVJfTkZLRF9JTkVSVCwKKyAgICAvKiogQmluYXJ5IHByb3BlcnR5
IE5GQ19JbmVydC4KKyAgICAgICAgSUNVLXNwZWNpZmljIHByb3BlcnR5IGZvciBjaGFyYWN0ZXJz
IHRoYXQgYXJlIGluZXJ0IHVuZGVyIE5GQywKKyAgICAgICAgaS5lLiwgdGhleSBkbyBub3QgaW50
ZXJhY3Qgd2l0aCBhZGphY2VudCBjaGFyYWN0ZXJzLgorICAgICAgICBVc2VkIGZvciBleGFtcGxl
IGluIG5vcm1hbGl6aW5nIHRyYW5zZm9ybXMgaW4gaW5jcmVtZW50YWwgbW9kZQorICAgICAgICB0
byBmaW5kIHRoZSBib3VuZGFyeSBvZiBzYWZlbHkgbm9ybWFsaXphYmxlIHRleHQgZGVzcGl0ZSBw
b3NzaWJsZQorICAgICAgICB0ZXh0IGFkZGl0aW9ucy4KKyAgICAgICAgQHNlZSBVQ0hBUl9ORkRf
SU5FUlQKKyAgICAgICAgQGRyYWZ0IElDVSAzLjAgKi8KKyAgICBVQ0hBUl9ORkNfSU5FUlQsCisg
ICAgLyoqIEJpbmFyeSBwcm9wZXJ0eSBORktDX0luZXJ0LgorICAgICAgICBJQ1Utc3BlY2lmaWMg
cHJvcGVydHkgZm9yIGNoYXJhY3RlcnMgdGhhdCBhcmUgaW5lcnQgdW5kZXIgTkZLQywKKyAgICAg
ICAgaS5lLiwgdGhleSBkbyBub3QgaW50ZXJhY3Qgd2l0aCBhZGphY2VudCBjaGFyYWN0ZXJzLgor
ICAgICAgICBVc2VkIGZvciBleGFtcGxlIGluIG5vcm1hbGl6aW5nIHRyYW5zZm9ybXMgaW4gaW5j
cmVtZW50YWwgbW9kZQorICAgICAgICB0byBmaW5kIHRoZSBib3VuZGFyeSBvZiBzYWZlbHkgbm9y
bWFsaXphYmxlIHRleHQgZGVzcGl0ZSBwb3NzaWJsZQorICAgICAgICB0ZXh0IGFkZGl0aW9ucy4K
KyAgICAgICAgQHNlZSBVQ0hBUl9ORkRfSU5FUlQKKyAgICAgICAgQGRyYWZ0IElDVSAzLjAgKi8K
KyAgICBVQ0hBUl9ORktDX0lORVJULAorICAgIC8qKiBCaW5hcnkgUHJvcGVydHkgU2VnbWVudF9T
dGFydGVyLgorICAgICAgICBJQ1Utc3BlY2lmaWMgcHJvcGVydHkgZm9yIGNoYXJhY3RlcnMgdGhh
dCBhcmUgc3RhcnRlcnMgaW4gdGVybXMgb2YKKyAgICAgICAgVW5pY29kZSBub3JtYWxpemF0aW9u
IGFuZCBjb21iaW5pbmcgY2hhcmFjdGVyIHNlcXVlbmNlcy4KKyAgICAgICAgVGhleSBoYXZlIGNj
Yz0wIGFuZCBkbyBub3Qgb2NjdXIgaW4gbm9uLWluaXRpYWwgcG9zaXRpb24gb2YgdGhlCisgICAg
ICAgIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIG9mIGFueSBjaGFyYWN0ZXIKKyAgICAgICAgKGxp
a2UgIiBpbiBORkQoYS11bWxhdXQpIGFuZCBhIEphbW8gVCBpbiBhbiBORkQoSGFuZ3VsIExWVCkp
LgorICAgICAgICBJQ1UgdXNlcyB0aGlzIHByb3BlcnR5IGZvciBzZWdtZW50aW5nIGEgc3RyaW5n
IGZvciBnZW5lcmF0aW5nIGEgc2V0IG9mCisgICAgICAgIGNhbm9uaWNhbGx5IGVxdWl2YWxlbnQg
c3RyaW5ncywgZS5nLiBmb3IgY2Fub25pY2FsIGNsb3N1cmUgd2hpbGUKKyAgICAgICAgcHJvY2Vz
c2luZyBjb2xsYXRpb24gdGFpbG9yaW5nIHJ1bGVzLgorICAgICAgICBAZHJhZnQgSUNVIDMuMCAq
LworICAgIFVDSEFSX1NFR01FTlRfU1RBUlRFUiwKKyAgICAvKiogT25lIG1vcmUgdGhhbiB0aGUg
bGFzdCBjb25zdGFudCBmb3IgYmluYXJ5IFVuaWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1Ug
Mi4xICovCisgICAgVUNIQVJfQklOQVJZX0xJTUlULAorCisgICAgLyoqIEVudW1lcmF0ZWQgcHJv
cGVydHkgQmlkaV9DbGFzcy4KKyAgICAgICAgU2FtZSBhcyB1X2NoYXJEaXJlY3Rpb24sIHJldHVy
bnMgVUNoYXJEaXJlY3Rpb24gdmFsdWVzLiBAc3RhYmxlIElDVSAyLjIgKi8KKyAgICBVQ0hBUl9C
SURJX0NMQVNTPTB4MTAwMCwKKyAgICAvKiogRmlyc3QgY29uc3RhbnQgZm9yIGVudW1lcmF0ZWQv
aW50ZWdlciBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFS
X0lOVF9TVEFSVD1VQ0hBUl9CSURJX0NMQVNTLAorICAgIC8qKiBFbnVtZXJhdGVkIHByb3BlcnR5
IEJsb2NrLgorICAgICAgICBTYW1lIGFzIHVibG9ja19nZXRDb2RlLCByZXR1cm5zIFVCbG9ja0Nv
ZGUgdmFsdWVzLiBAc3RhYmxlIElDVSAyLjIgKi8KKyAgICBVQ0hBUl9CTE9DSywKKyAgICAvKiog
RW51bWVyYXRlZCBwcm9wZXJ0eSBDYW5vbmljYWxfQ29tYmluaW5nX0NsYXNzLgorICAgICAgICBT
YW1lIGFzIHVfZ2V0Q29tYmluaW5nQ2xhc3MsIHJldHVybnMgOC1iaXQgbnVtZXJpYyB2YWx1ZXMu
IEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFSX0NBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1Ms
CisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgRGVjb21wb3NpdGlvbl9UeXBlLgorICAgICAg
ICBSZXR1cm5zIFVEZWNvbXBvc2l0aW9uVHlwZSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLwor
ICAgIFVDSEFSX0RFQ09NUE9TSVRJT05fVFlQRSwKKyAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0
eSBFYXN0X0FzaWFuX1dpZHRoLgorICAgICAgICBTZWUgaHR0cDovL3d3dy51bmljb2RlLm9yZy9y
ZXBvcnRzL3RyMTEvCisgICAgICAgIFJldHVybnMgVUVhc3RBc2lhbldpZHRoIHZhbHVlcy4gQHN0
YWJsZSBJQ1UgMi4yICovCisgICAgVUNIQVJfRUFTVF9BU0lBTl9XSURUSCwKKyAgICAvKiogRW51
bWVyYXRlZCBwcm9wZXJ0eSBHZW5lcmFsX0NhdGVnb3J5LgorICAgICAgICBTYW1lIGFzIHVfY2hh
clR5cGUsIHJldHVybnMgVUNoYXJDYXRlZ29yeSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLwor
ICAgIFVDSEFSX0dFTkVSQUxfQ0FURUdPUlksCisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkg
Sm9pbmluZ19Hcm91cC4KKyAgICAgICAgUmV0dXJucyBVSm9pbmluZ0dyb3VwIHZhbHVlcy4gQHN0
YWJsZSBJQ1UgMi4yICovCisgICAgVUNIQVJfSk9JTklOR19HUk9VUCwKKyAgICAvKiogRW51bWVy
YXRlZCBwcm9wZXJ0eSBKb2luaW5nX1R5cGUuCisgICAgICAgIFJldHVybnMgVUpvaW5pbmdUeXBl
IHZhbHVlcy4gQHN0YWJsZSBJQ1UgMi4yICovCisgICAgVUNIQVJfSk9JTklOR19UWVBFLAorICAg
IC8qKiBFbnVtZXJhdGVkIHByb3BlcnR5IExpbmVfQnJlYWsuCisgICAgICAgIFJldHVybnMgVUxp
bmVCcmVhayB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFSX0xJTkVfQlJFQUss
CisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgTnVtZXJpY19UeXBlLgorICAgICAgICBSZXR1
cm5zIFVOdW1lcmljVHlwZSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFSX05V
TUVSSUNfVFlQRSwKKyAgICAvKiogRW51bWVyYXRlZCBwcm9wZXJ0eSBTY3JpcHQuCisgICAgICAg
IFNhbWUgYXMgdXNjcmlwdF9nZXRTY3JpcHQsIHJldHVybnMgVVNjcmlwdENvZGUgdmFsdWVzLiBA
c3RhYmxlIElDVSAyLjIgKi8KKyAgICBVQ0hBUl9TQ1JJUFQsCisgICAgLyoqIEVudW1lcmF0ZWQg
cHJvcGVydHkgSGFuZ3VsX1N5bGxhYmxlX1R5cGUsIG5ldyBpbiBVbmljb2RlIDQuCisgICAgICAg
IFJldHVybnMgVUhhbmd1bFN5bGxhYmxlVHlwZSB2YWx1ZXMuIEBzdGFibGUgSUNVIDIuNiAqLwor
ICAgIFVDSEFSX0hBTkdVTF9TWUxMQUJMRV9UWVBFLAorICAgIC8qKiBFbnVtZXJhdGVkIHByb3Bl
cnR5IE5GRF9RdWlja19DaGVjay4KKyAgICAgICAgUmV0dXJucyBVTm9ybWFsaXphdGlvbkNoZWNr
UmVzdWx0IHZhbHVlcy4gQGRyYWZ0IElDVSAzLjAgKi8KKyAgICBVQ0hBUl9ORkRfUVVJQ0tfQ0hF
Q0ssCisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgTkZLRF9RdWlja19DaGVjay4KKyAgICAg
ICAgUmV0dXJucyBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0IHZhbHVlcy4gQGRyYWZ0IElDVSAz
LjAgKi8KKyAgICBVQ0hBUl9ORktEX1FVSUNLX0NIRUNLLAorICAgIC8qKiBFbnVtZXJhdGVkIHBy
b3BlcnR5IE5GQ19RdWlja19DaGVjay4KKyAgICAgICAgUmV0dXJucyBVTm9ybWFsaXphdGlvbkNo
ZWNrUmVzdWx0IHZhbHVlcy4gQGRyYWZ0IElDVSAzLjAgKi8KKyAgICBVQ0hBUl9ORkNfUVVJQ0tf
Q0hFQ0ssCisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVydHkgTkZLQ19RdWlja19DaGVjay4KKyAg
ICAgICAgUmV0dXJucyBVTm9ybWFsaXphdGlvbkNoZWNrUmVzdWx0IHZhbHVlcy4gQGRyYWZ0IElD
VSAzLjAgKi8KKyAgICBVQ0hBUl9ORktDX1FVSUNLX0NIRUNLLAorICAgIC8qKiBFbnVtZXJhdGVk
IHByb3BlcnR5IExlYWRfQ2Fub25pY2FsX0NvbWJpbmluZ19DbGFzcy4KKyAgICAgICAgSUNVLXNw
ZWNpZmljIHByb3BlcnR5IGZvciB0aGUgY2NjIG9mIHRoZSBmaXJzdCBjb2RlIHBvaW50CisgICAg
ICAgIG9mIHRoZSBkZWNvbXBvc2l0aW9uLCBvciBsY2NjKGMpPWNjYyhORkQoYylbMF0pLgorICAg
ICAgICBVc2VmdWwgZm9yIGNoZWNraW5nIGZvciBjYW5vbmljYWxseSBvcmRlcmVkIHRleHQ7Cisg
ICAgICAgIHNlZSBVTk9STV9GQ0QgYW5kIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvbm90ZXMvdG41
LyNGQ0QgLgorICAgICAgICBSZXR1cm5zIDgtYml0IG51bWVyaWMgdmFsdWVzIGxpa2UgVUNIQVJf
Q0FOT05JQ0FMX0NPTUJJTklOR19DTEFTUy4gQGRyYWZ0IElDVSAzLjAgKi8KKyAgICBVQ0hBUl9M
RUFEX0NBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MsCisgICAgLyoqIEVudW1lcmF0ZWQgcHJvcGVy
dHkgVHJhaWxfQ2Fub25pY2FsX0NvbWJpbmluZ19DbGFzcy4KKyAgICAgICAgSUNVLXNwZWNpZmlj
IHByb3BlcnR5IGZvciB0aGUgY2NjIG9mIHRoZSBsYXN0IGNvZGUgcG9pbnQKKyAgICAgICAgb2Yg
dGhlIGRlY29tcG9zaXRpb24sIG9yIHRjY2MoYyk9Y2NjKE5GRChjKVtsYXN0XSkuCisgICAgICAg
IFVzZWZ1bCBmb3IgY2hlY2tpbmcgZm9yIGNhbm9uaWNhbGx5IG9yZGVyZWQgdGV4dDsKKyAgICAg
ICAgc2VlIFVOT1JNX0ZDRCBhbmQgaHR0cDovL3d3dy51bmljb2RlLm9yZy9ub3Rlcy90bjUvI0ZD
RCAuCisgICAgICAgIFJldHVybnMgOC1iaXQgbnVtZXJpYyB2YWx1ZXMgbGlrZSBVQ0hBUl9DQU5P
TklDQUxfQ09NQklOSU5HX0NMQVNTLiBAZHJhZnQgSUNVIDMuMCAqLworICAgIFVDSEFSX1RSQUlM
X0NBTk9OSUNBTF9DT01CSU5JTkdfQ0xBU1MsCisgICAgLyoqIE9uZSBtb3JlIHRoYW4gdGhlIGxh
c3QgY29uc3RhbnQgZm9yIGVudW1lcmF0ZWQvaW50ZWdlciBVbmljb2RlIHByb3BlcnRpZXMuIEBz
dGFibGUgSUNVIDIuMiAqLworICAgIFVDSEFSX0lOVF9MSU1JVCwKKworICAgIC8qKiBCaXRtYXNr
IHByb3BlcnR5IEdlbmVyYWxfQ2F0ZWdvcnlfTWFzay4KKyAgICAgICAgVGhpcyBpcyB0aGUgR2Vu
ZXJhbF9DYXRlZ29yeSBwcm9wZXJ0eSByZXR1cm5lZCBhcyBhIGJpdCBtYXNrLgorICAgICAgICBX
aGVuIHVzZWQgaW4gdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMpLCBzYW1lIGFzIFVfTUFTSyh1X2No
YXJUeXBlKGMpKSwKKyAgICAgICAgcmV0dXJucyBiaXQgbWFza3MgZm9yIFVDaGFyQ2F0ZWdvcnkg
dmFsdWVzIHdoZXJlIGV4YWN0bHkgb25lIGJpdCBpcyBzZXQuCisgICAgICAgIFdoZW4gdXNlZCB3
aXRoIHVfZ2V0UHJvcGVydHlWYWx1ZU5hbWUoKSBhbmQgdV9nZXRQcm9wZXJ0eVZhbHVlRW51bSgp
LAorICAgICAgICBhIG11bHRpLWJpdCBtYXNrIGlzIHVzZWQgZm9yIHNldHMgb2YgY2F0ZWdvcmll
cyBsaWtlICJMZXR0ZXJzIi4KKyAgICAgICAgTWFzayB2YWx1ZXMgc2hvdWxkIGJlIGNhc3QgdG8g
dWludDMyX3QuCisgICAgICAgIEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX0dFTkVSQUxf
Q0FURUdPUllfTUFTSz0weDIwMDAsCisgICAgLyoqIEZpcnN0IGNvbnN0YW50IGZvciBiaXQtbWFz
ayBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX01BU0tf
U1RBUlQ9VUNIQVJfR0VORVJBTF9DQVRFR09SWV9NQVNLLAorICAgIC8qKiBPbmUgbW9yZSB0aGFu
IHRoZSBsYXN0IGNvbnN0YW50IGZvciBiaXQtbWFzayBVbmljb2RlIHByb3BlcnRpZXMuIEBzdGFi
bGUgSUNVIDIuNCAqLworICAgIFVDSEFSX01BU0tfTElNSVQsCisKKyAgICAvKiogRG91YmxlIHBy
b3BlcnR5IE51bWVyaWNfVmFsdWUuCisgICAgICAgIENvcnJlc3BvbmRzIHRvIHVfZ2V0TnVtZXJp
Y1ZhbHVlLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9OVU1FUklDX1ZBTFVFPTB4MzAw
MCwKKyAgICAvKiogRmlyc3QgY29uc3RhbnQgZm9yIGRvdWJsZSBVbmljb2RlIHByb3BlcnRpZXMu
IEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX0RPVUJMRV9TVEFSVD1VQ0hBUl9OVU1FUklD
X1ZBTFVFLAorICAgIC8qKiBPbmUgbW9yZSB0aGFuIHRoZSBsYXN0IGNvbnN0YW50IGZvciBkb3Vi
bGUgVW5pY29kZSBwcm9wZXJ0aWVzLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9ET1VC
TEVfTElNSVQsCisKKyAgICAvKiogU3RyaW5nIHByb3BlcnR5IEFnZS4KKyAgICAgICAgQ29ycmVz
cG9uZHMgdG8gdV9jaGFyQWdlLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9BR0U9MHg0
MDAwLAorICAgIC8qKiBGaXJzdCBjb25zdGFudCBmb3Igc3RyaW5nIFVuaWNvZGUgcHJvcGVydGll
cy4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNIQVJfU1RSSU5HX1NUQVJUPVVDSEFSX0FHRSwK
KyAgICAvKiogU3RyaW5nIHByb3BlcnR5IEJpZGlfTWlycm9yaW5nX0dseXBoLgorICAgICAgICBD
b3JyZXNwb25kcyB0byB1X2NoYXJNaXJyb3IuIEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFS
X0JJRElfTUlSUk9SSU5HX0dMWVBILAorICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgQ2FzZV9Gb2xk
aW5nLgorICAgICAgICBDb3JyZXNwb25kcyB0byB1X3N0ckZvbGRDYXNlIGluIHVzdHJpbmcuaC4g
QHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNIQVJfQ0FTRV9GT0xESU5HLAorICAgIC8qKiBTdHJp
bmcgcHJvcGVydHkgSVNPX0NvbW1lbnQuCisgICAgICAgIENvcnJlc3BvbmRzIHRvIHVfZ2V0SVNP
Q29tbWVudC4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNIQVJfSVNPX0NPTU1FTlQsCisgICAg
LyoqIFN0cmluZyBwcm9wZXJ0eSBMb3dlcmNhc2VfTWFwcGluZy4KKyAgICAgICAgQ29ycmVzcG9u
ZHMgdG8gdV9zdHJUb0xvd2VyIGluIHVzdHJpbmcuaC4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAg
VUNIQVJfTE9XRVJDQVNFX01BUFBJTkcsCisgICAgLyoqIFN0cmluZyBwcm9wZXJ0eSBOYW1lLgor
ICAgICAgICBDb3JyZXNwb25kcyB0byB1X2NoYXJOYW1lLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAg
ICBVQ0hBUl9OQU1FLAorICAgIC8qKiBTdHJpbmcgcHJvcGVydHkgU2ltcGxlX0Nhc2VfRm9sZGlu
Zy4KKyAgICAgICAgQ29ycmVzcG9uZHMgdG8gdV9mb2xkQ2FzZS4gQHN0YWJsZSBJQ1UgMi40ICov
CisgICAgVUNIQVJfU0lNUExFX0NBU0VfRk9MRElORywKKyAgICAvKiogU3RyaW5nIHByb3BlcnR5
IFNpbXBsZV9Mb3dlcmNhc2VfTWFwcGluZy4KKyAgICAgICAgQ29ycmVzcG9uZHMgdG8gdV90b2xv
d2VyLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9TSU1QTEVfTE9XRVJDQVNFX01BUFBJ
TkcsCisgICAgLyoqIFN0cmluZyBwcm9wZXJ0eSBTaW1wbGVfVGl0bGVjYXNlX01hcHBpbmcuCisg
ICAgICAgIENvcnJlc3BvbmRzIHRvIHVfdG90aXRsZS4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAg
VUNIQVJfU0lNUExFX1RJVExFQ0FTRV9NQVBQSU5HLAorICAgIC8qKiBTdHJpbmcgcHJvcGVydHkg
U2ltcGxlX1VwcGVyY2FzZV9NYXBwaW5nLgorICAgICAgICBDb3JyZXNwb25kcyB0byB1X3RvdXBw
ZXIuIEBzdGFibGUgSUNVIDIuNCAqLworICAgIFVDSEFSX1NJTVBMRV9VUFBFUkNBU0VfTUFQUElO
RywKKyAgICAvKiogU3RyaW5nIHByb3BlcnR5IFRpdGxlY2FzZV9NYXBwaW5nLgorICAgICAgICBD
b3JyZXNwb25kcyB0byB1X3N0clRvVGl0bGUgaW4gdXN0cmluZy5oLiBAc3RhYmxlIElDVSAyLjQg
Ki8KKyAgICBVQ0hBUl9USVRMRUNBU0VfTUFQUElORywKKyAgICAvKiogU3RyaW5nIHByb3BlcnR5
IFVuaWNvZGVfMV9OYW1lLgorICAgICAgICBDb3JyZXNwb25kcyB0byB1X2NoYXJOYW1lLiBAc3Rh
YmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9VTklDT0RFXzFfTkFNRSwKKyAgICAvKiogU3RyaW5n
IHByb3BlcnR5IFVwcGVyY2FzZV9NYXBwaW5nLgorICAgICAgICBDb3JyZXNwb25kcyB0byB1X3N0
clRvVXBwZXIgaW4gdXN0cmluZy5oLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAgICBVQ0hBUl9VUFBF
UkNBU0VfTUFQUElORywKKyAgICAvKiogT25lIG1vcmUgdGhhbiB0aGUgbGFzdCBjb25zdGFudCBm
b3Igc3RyaW5nIFVuaWNvZGUgcHJvcGVydGllcy4gQHN0YWJsZSBJQ1UgMi40ICovCisgICAgVUNI
QVJfU1RSSU5HX0xJTUlULAorCisgICAgLyoqIFJlcHJlc2VudHMgYSBub25leGlzdGVudCBvciBp
bnZhbGlkIHByb3BlcnR5IG9yIHByb3BlcnR5IHZhbHVlLiBAc3RhYmxlIElDVSAyLjQgKi8KKyAg
ICBVQ0hBUl9JTlZBTElEX0NPREUgPSAtMQorfSBVUHJvcGVydHk7CisKKy8qKgorICogRGF0YSBm
b3IgZW51bWVyYXRlZCBVbmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkgdHlwZXMuCisgKiBTZWUgaHR0
cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvVU5JREFUQS9Vbmljb2RlRGF0YS5odG1sIC4KKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCit0eXBlZGVmIGVudW0gVUNoYXJDYXRlZ29yeQoreworICAg
IC8qKiBTZWUgbm90ZSAhIS4gIENvbW1lbnRzIG9mIHRoZSBmb3JtICJDbiIgYXJlIHJlYWQgYnkg
Z2VucG5hbWUuICovCisKKyAgICAvKiogTm9uLWNhdGVnb3J5IGZvciB1bmFzc2lnbmVkIGFuZCBu
b24tY2hhcmFjdGVyIGNvZGUgcG9pbnRzLiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1VOQVNT
SUdORUQgICAgICAgICAgICAgID0gMCwKKyAgICAvKiogQ24gIk90aGVyLCBOb3QgQXNzaWduZWQg
KG5vIGNoYXJhY3RlcnMgaW4gW1VuaWNvZGVEYXRhLnR4dF0gaGF2ZSB0aGlzIHByb3BlcnR5KSIg
KHNhbWUgYXMgVV9VTkFTU0lHTkVEISkgQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9HRU5FUkFM
X09USEVSX1RZUEVTICAgICA9IDAsCisgICAgLyoqIEx1IEBzdGFibGUgSUNVIDIuMCAqLworICAg
IFVfVVBQRVJDQVNFX0xFVFRFUiAgICAgICAgPSAxLAorICAgIC8qKiBMbCBAc3RhYmxlIElDVSAy
LjAgKi8KKyAgICBVX0xPV0VSQ0FTRV9MRVRURVIgICAgICAgID0gMiwKKyAgICAvKiogTHQgQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVV9USVRMRUNBU0VfTEVUVEVSICAgICAgICA9IDMsCisgICAg
LyoqIExtIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfTU9ESUZJRVJfTEVUVEVSICAgICAgICAg
PSA0LAorICAgIC8qKiBMbyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX09USEVSX0xFVFRFUiAg
ICAgICAgICAgID0gNSwKKyAgICAvKiogTW4gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9OT05f
U1BBQ0lOR19NQVJLICAgICAgICA9IDYsCisgICAgLyoqIE1lIEBzdGFibGUgSUNVIDIuMCAqLwor
ICAgIFVfRU5DTE9TSU5HX01BUksgICAgICAgICAgPSA3LAorICAgIC8qKiBNYyBAc3RhYmxlIElD
VSAyLjAgKi8KKyAgICBVX0NPTUJJTklOR19TUEFDSU5HX01BUksgID0gOCwKKyAgICAvKiogTmQg
QHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9ERUNJTUFMX0RJR0lUX05VTUJFUiAgICA9IDksCisg
ICAgLyoqIE5sIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfTEVUVEVSX05VTUJFUiAgICAgICAg
ICAgPSAxMCwKKyAgICAvKiogTm8gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9PVEhFUl9OVU1C
RVIgICAgICAgICAgICA9IDExLAorICAgIC8qKiBacyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBV
X1NQQUNFX1NFUEFSQVRPUiAgICAgICAgID0gMTIsCisgICAgLyoqIFpsIEBzdGFibGUgSUNVIDIu
MCAqLworICAgIFVfTElORV9TRVBBUkFUT1IgICAgICAgICAgPSAxMywKKyAgICAvKiogWnAgQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVV9QQVJBR1JBUEhfU0VQQVJBVE9SICAgICA9IDE0LAorICAg
IC8qKiBDYyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX0NPTlRST0xfQ0hBUiAgICAgICAgICAg
ID0gMTUsCisgICAgLyoqIENmIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfRk9STUFUX0NIQVIg
ICAgICAgICAgICAgPSAxNiwKKyAgICAvKiogQ28gQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9Q
UklWQVRFX1VTRV9DSEFSICAgICAgICA9IDE3LAorICAgIC8qKiBDcyBAc3RhYmxlIElDVSAyLjAg
Ki8KKyAgICBVX1NVUlJPR0FURSAgICAgICAgICAgICAgID0gMTgsCisgICAgLyoqIFBkIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVfREFTSF9QVU5DVFVBVElPTiAgICAgICAgPSAxOSwKKyAgICAv
KiogUHMgQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9TVEFSVF9QVU5DVFVBVElPTiAgICAgICA9
IDIwLAorICAgIC8qKiBQZSBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX0VORF9QVU5DVFVBVElP
TiAgICAgICAgID0gMjEsCisgICAgLyoqIFBjIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfQ09O
TkVDVE9SX1BVTkNUVUFUSU9OICAgPSAyMiwKKyAgICAvKiogUG8gQHN0YWJsZSBJQ1UgMi4wICov
CisgICAgVV9PVEhFUl9QVU5DVFVBVElPTiAgICAgICA9IDIzLAorICAgIC8qKiBTbSBAc3RhYmxl
IElDVSAyLjAgKi8KKyAgICBVX01BVEhfU1lNQk9MICAgICAgICAgICAgID0gMjQsCisgICAgLyoq
IFNjIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfQ1VSUkVOQ1lfU1lNQk9MICAgICAgICAgPSAy
NSwKKyAgICAvKiogU2sgQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9NT0RJRklFUl9TWU1CT0wg
ICAgICAgICA9IDI2LAorICAgIC8qKiBTbyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX09USEVS
X1NZTUJPTCAgICAgICAgICAgID0gMjcsCisgICAgLyoqIFBpIEBzdGFibGUgSUNVIDIuMCAqLwor
ICAgIFVfSU5JVElBTF9QVU5DVFVBVElPTiAgICAgPSAyOCwKKyAgICAvKiogUGYgQHN0YWJsZSBJ
Q1UgMi4wICovCisgICAgVV9GSU5BTF9QVU5DVFVBVElPTiAgICAgICA9IDI5LAorICAgIC8qKiBP
bmUgaGlnaGVyIHRoYW4gdGhlIGxhc3QgZW51bSBVQ2hhckNhdGVnb3J5IGNvbnN0YW50LiBAc3Rh
YmxlIElDVSAyLjAgKi8KKyAgICBVX0NIQVJfQ0FURUdPUllfQ09VTlQKK30gVUNoYXJDYXRlZ29y
eTsKKworLyoqCisgKiBVX0dDX1hYX01BU0sgY29uc3RhbnRzIGFyZSBiaXQgZmxhZ3MgY29ycmVz
cG9uZGluZyB0byBVbmljb2RlCisgKiBnZW5lcmFsIGNhdGVnb3J5IHZhbHVlcy4KKyAqIEZvciBl
YWNoIGNhdGVnb3J5LCB0aGUgbnRoIGJpdCBpcyBzZXQgaWYgdGhlIG51bWVyaWMgdmFsdWUgb2Yg
dGhlCisgKiBjb3JyZXNwb25kaW5nIFVDaGFyQ2F0ZWdvcnkgY29uc3RhbnQgaXMgbi4KKyAqCisg
KiBUaGVyZSBhcmUgYWxzbyBzb21lIFVfR0NfWV9NQVNLIGNvbnN0YW50cyBmb3IgZ3JvdXBzIG9m
IGdlbmVyYWwgY2F0ZWdvcmllcworICogbGlrZSBMIGZvciBhbGwgbGV0dGVyIGNhdGVnb3JpZXMu
CisgKgorICogQHNlZSB1X2NoYXJUeXBlCisgKiBAc2VlIFVfR0VUX0dDX01BU0sKKyAqIEBzZWUg
VUNoYXJDYXRlZ29yeQorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KKyNkZWZpbmUgVV9HQ19DTl9N
QVNLICAgIFVfTUFTSyhVX0dFTkVSQUxfT1RIRVJfVFlQRVMpCisKKy8qKiBNYXNrIGNvbnN0YW50
IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xV
X01BU0sgICAgVV9NQVNLKFVfVVBQRVJDQVNFX0xFVFRFUikKKy8qKiBNYXNrIGNvbnN0YW50IGZv
ciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xMX01B
U0sgICAgVV9NQVNLKFVfTE9XRVJDQVNFX0xFVFRFUikKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBh
IFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xUX01BU0sg
ICAgVV9NQVNLKFVfVElUTEVDQVNFX0xFVFRFUikKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVD
aGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xNX01BU0sgICAg
VV9NQVNLKFVfTU9ESUZJRVJfTEVUVEVSKQorLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJD
YXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfTE9fTUFTSyAgICBVX01B
U0soVV9PVEhFUl9MRVRURVIpCisKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdv
cnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX01OX01BU0sgICAgVV9NQVNLKFVf
Tk9OX1NQQUNJTkdfTUFSSykKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnku
IEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX01FX01BU0sgICAgVV9NQVNLKFVfRU5D
TE9TSU5HX01BUkspCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3Rh
YmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19NQ19NQVNLICAgIFVfTUFTSyhVX0NPTUJJTklO
R19TUEFDSU5HX01BUkspCisKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnku
IEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX05EX01BU0sgICAgVV9NQVNLKFVfREVD
SU1BTF9ESUdJVF9OVU1CRVIpCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5
LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19OTF9NQVNLICAgIFVfTUFTSyhVX0xF
VFRFUl9OVU1CRVIpCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3Rh
YmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19OT19NQVNLICAgIFVfTUFTSyhVX09USEVSX05V
TUJFUikKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJ
Q1UgMi4xICovCisjZGVmaW5lIFVfR0NfWlNfTUFTSyAgICBVX01BU0soVV9TUEFDRV9TRVBBUkFU
T1IpCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAy
LjEgKi8KKyNkZWZpbmUgVV9HQ19aTF9NQVNLICAgIFVfTUFTSyhVX0xJTkVfU0VQQVJBVE9SKQor
LyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICov
CisjZGVmaW5lIFVfR0NfWlBfTUFTSyAgICBVX01BU0soVV9QQVJBR1JBUEhfU0VQQVJBVE9SKQor
CisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEg
Ki8KKyNkZWZpbmUgVV9HQ19DQ19NQVNLICAgIFVfTUFTSyhVX0NPTlRST0xfQ0hBUikKKy8qKiBN
YXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2Rl
ZmluZSBVX0dDX0NGX01BU0sgICAgVV9NQVNLKFVfRk9STUFUX0NIQVIpCisvKiogTWFzayBjb25z
dGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9H
Q19DT19NQVNLICAgIFVfTUFTSyhVX1BSSVZBVEVfVVNFX0NIQVIpCisvKiogTWFzayBjb25zdGFu
dCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19D
U19NQVNLICAgIFVfTUFTSyhVX1NVUlJPR0FURSkKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEg
VUNoYXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfUERfTUFTSyAg
ICBVX01BU0soVV9EQVNIX1BVTkNUVUFUSU9OKQorLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNo
YXJDYXRlZ29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfUFNfTUFTSyAgICBV
X01BU0soVV9TVEFSVF9QVU5DVFVBVElPTikKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFy
Q2F0ZWdvcnkuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX1BFX01BU0sgICAgVV9N
QVNLKFVfRU5EX1BVTkNUVUFUSU9OKQorLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRl
Z29yeS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfUENfTUFTSyAgICBVX01BU0so
VV9DT05ORUNUT1JfUFVOQ1RVQVRJT04pCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNh
dGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19QT19NQVNLICAgIFVfTUFT
SyhVX09USEVSX1BVTkNUVUFUSU9OKQorCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNh
dGVnb3J5LiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19TTV9NQVNLICAgIFVfTUFT
SyhVX01BVEhfU1lNQk9MKQorLyoqIE1hc2sgY29uc3RhbnQgZm9yIGEgVUNoYXJDYXRlZ29yeS4g
QHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfU0NfTUFTSyAgICBVX01BU0soVV9DVVJS
RU5DWV9TWU1CT0wpCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3Rh
YmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19TS19NQVNLICAgIFVfTUFTSyhVX01PRElGSUVS
X1NZTUJPTCkKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBhIFVDaGFyQ2F0ZWdvcnkuIEBzdGFibGUg
SUNVIDIuMSAqLworI2RlZmluZSBVX0dDX1NPX01BU0sgICAgVV9NQVNLKFVfT1RIRVJfU1lNQk9M
KQorCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAy
LjEgKi8KKyNkZWZpbmUgVV9HQ19QSV9NQVNLICAgIFVfTUFTSyhVX0lOSVRJQUxfUFVOQ1RVQVRJ
T04pCisvKiogTWFzayBjb25zdGFudCBmb3IgYSBVQ2hhckNhdGVnb3J5LiBAc3RhYmxlIElDVSAy
LjEgKi8KKyNkZWZpbmUgVV9HQ19QRl9NQVNLICAgIFVfTUFTSyhVX0ZJTkFMX1BVTkNUVUFUSU9O
KQorCisKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBtdWx0aXBsZSBVQ2hhckNhdGVnb3J5IGJpdHMg
KEwgTGV0dGVycykuIEBzdGFibGUgSUNVIDIuMSAqLworI2RlZmluZSBVX0dDX0xfTUFTSyBcCisg
ICAgICAgICAgICAoVV9HQ19MVV9NQVNLfFVfR0NfTExfTUFTS3xVX0dDX0xUX01BU0t8VV9HQ19M
TV9NQVNLfFVfR0NfTE9fTUFTSykKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIG11bHRpcGxlIFVD
aGFyQ2F0ZWdvcnkgYml0cyAoTEMgQ2FzZWQgTGV0dGVycykuIEBzdGFibGUgSUNVIDIuMSAqLwor
I2RlZmluZSBVX0dDX0xDX01BU0sgXAorICAgICAgICAgICAgKFVfR0NfTFVfTUFTS3xVX0dDX0xM
X01BU0t8VV9HQ19MVF9NQVNLKQorCisvKiogTWFzayBjb25zdGFudCBmb3IgbXVsdGlwbGUgVUNo
YXJDYXRlZ29yeSBiaXRzIChNIE1hcmtzKS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVf
R0NfTV9NQVNLIChVX0dDX01OX01BU0t8VV9HQ19NRV9NQVNLfFVfR0NfTUNfTUFTSykKKworLyoq
IE1hc2sgY29uc3RhbnQgZm9yIG11bHRpcGxlIFVDaGFyQ2F0ZWdvcnkgYml0cyAoTiBOdW1iZXJz
KS4gQHN0YWJsZSBJQ1UgMi4xICovCisjZGVmaW5lIFVfR0NfTl9NQVNLIChVX0dDX05EX01BU0t8
VV9HQ19OTF9NQVNLfFVfR0NfTk9fTUFTSykKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIG11bHRp
cGxlIFVDaGFyQ2F0ZWdvcnkgYml0cyAoWiBTZXBhcmF0b3JzKS4gQHN0YWJsZSBJQ1UgMi4xICov
CisjZGVmaW5lIFVfR0NfWl9NQVNLIChVX0dDX1pTX01BU0t8VV9HQ19aTF9NQVNLfFVfR0NfWlBf
TUFTSykKKworLyoqIE1hc2sgY29uc3RhbnQgZm9yIG11bHRpcGxlIFVDaGFyQ2F0ZWdvcnkgYml0
cyAoQyBPdGhlcnMpLiBAc3RhYmxlIElDVSAyLjEgKi8KKyNkZWZpbmUgVV9HQ19DX01BU0sgXAor
ICAgICAgICAgICAgKFVfR0NfQ05fTUFTS3xVX0dDX0NDX01BU0t8VV9HQ19DRl9NQVNLfFVfR0Nf
Q09fTUFTS3xVX0dDX0NTX01BU0spCisKKy8qKiBNYXNrIGNvbnN0YW50IGZvciBtdWx0aXBsZSBV
Q2hhckNhdGVnb3J5IGJpdHMgKFAgUHVuY3R1YXRpb24pLiBAc3RhYmxlIElDVSAyLjEgKi8KKyNk
ZWZpbmUgVV9HQ19QX01BU0sgXAorICAgICAgICAgICAgKFVfR0NfUERfTUFTS3xVX0dDX1BTX01B
U0t8VV9HQ19QRV9NQVNLfFVfR0NfUENfTUFTS3xVX0dDX1BPX01BU0t8IFwKKyAgICAgICAgICAg
ICBVX0dDX1BJX01BU0t8VV9HQ19QRl9NQVNLKQorCisvKiogTWFzayBjb25zdGFudCBmb3IgbXVs
dGlwbGUgVUNoYXJDYXRlZ29yeSBiaXRzIChTIFN5bWJvbHMpLiBAc3RhYmxlIElDVSAyLjEgKi8K
KyNkZWZpbmUgVV9HQ19TX01BU0sgKFVfR0NfU01fTUFTS3xVX0dDX1NDX01BU0t8VV9HQ19TS19N
QVNLfFVfR0NfU09fTUFTSykKKworLyoqCisgKiBUaGlzIHNwZWNpZmllcyB0aGUgbGFuZ3VhZ2Ug
ZGlyZWN0aW9uYWwgcHJvcGVydHkgb2YgYSBjaGFyYWN0ZXIgc2V0LgorICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KK3R5cGVkZWYgZW51bSBVQ2hhckRpcmVjdGlvbiB7CisgICAgLyoqIFNlZSBub3Rl
ICEhLiAgQ29tbWVudHMgb2YgdGhlIGZvcm0gIkVOIiBhcmUgcmVhZCBieSBnZW5wbmFtZS4gKi8K
KworICAgIC8qKiBMIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfTEVGVF9UT19SSUdIVCAgICAg
ICAgICAgICAgID0gMCwKKyAgICAvKiogUiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1JJR0hU
X1RPX0xFRlQgICAgICAgICAgICAgICA9IDEsCisgICAgLyoqIEVOIEBzdGFibGUgSUNVIDIuMCAq
LworICAgIFVfRVVST1BFQU5fTlVNQkVSICAgICAgICAgICAgID0gMiwKKyAgICAvKiogRVMgQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SICAgPSAzLAor
ICAgIC8qKiBFVCBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX0VVUk9QRUFOX05VTUJFUl9URVJN
SU5BVE9SICA9IDQsCisgICAgLyoqIEFOIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfQVJBQklD
X05VTUJFUiAgICAgICAgICAgICAgID0gNSwKKyAgICAvKiogQ1MgQHN0YWJsZSBJQ1UgMi4wICov
CisgICAgVV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUiAgICAgPSA2LAorICAgIC8qKiBCIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVfQkxPQ0tfU0VQQVJBVE9SICAgICAgICAgICAgID0gNywKKyAg
ICAvKiogUyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1NFR01FTlRfU0VQQVJBVE9SICAgICAg
ICAgICA9IDgsCisgICAgLyoqIFdTIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfV0hJVEVfU1BB
Q0VfTkVVVFJBTCAgICAgICAgID0gOSwKKyAgICAvKiogT04gQHN0YWJsZSBJQ1UgMi4wICovCisg
ICAgVV9PVEhFUl9ORVVUUkFMICAgICAgICAgICAgICAgPSAxMCwKKyAgICAvKiogTFJFIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcgICAgID0gMTEsCisg
ICAgLyoqIExSTyBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX0xFRlRfVE9fUklHSFRfT1ZFUlJJ
REUgICAgICA9IDEyLAorICAgIC8qKiBBTCBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1JJR0hU
X1RPX0xFRlRfQVJBQklDICAgICAgICA9IDEzLAorICAgIC8qKiBSTEUgQHN0YWJsZSBJQ1UgMi4w
ICovCisgICAgVV9SSUdIVF9UT19MRUZUX0VNQkVERElORyAgICAgPSAxNCwKKyAgICAvKiogUkxP
IEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVfUklHSFRfVE9fTEVGVF9PVkVSUklERSAgICAgID0g
MTUsCisgICAgLyoqIFBERiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVX1BPUF9ESVJFQ1RJT05B
TF9GT1JNQVQgICAgICA9IDE2LAorICAgIC8qKiBOU00gQHN0YWJsZSBJQ1UgMi4wICovCisgICAg
VV9ESVJfTk9OX1NQQUNJTkdfTUFSSyAgICAgICAgPSAxNywKKyAgICAvKiogQk4gQHN0YWJsZSBJ
Q1UgMi4wICovCisgICAgVV9CT1VOREFSWV9ORVVUUkFMICAgICAgICAgICAgPSAxOCwKKyAgICAv
KiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVV9DSEFSX0RJUkVDVElPTl9DT1VOVAorfSBVQ2hh
ckRpcmVjdGlvbjsKKworLyoqCisgKiBDb25zdGFudHMgZm9yIFVuaWNvZGUgYmxvY2tzLCBzZWUg
dGhlIFVuaWNvZGUgRGF0YSBmaWxlIEJsb2Nrcy50eHQKKyAqIEBzdGFibGUgSUNVIDIuMAorICov
CitlbnVtIFVCbG9ja0NvZGUgeworCisgICAgLyoqIE5ldyBOb19CbG9jayB2YWx1ZSBpbiBVbmlj
b2RlIDQuIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9DS19OT19CTE9DSyA9IDAsIC8qW25v
bmVdKi8gLyogU3BlY2lhbCByYW5nZSBpbmRpY2F0aW5nIE5vX0Jsb2NrICovCisKKyAgICAvKiog
QHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0JBU0lDX0xBVElOID0gMSwgLypbMDAwMF0q
LyAvKlNlZSBub3RlICEhKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxP
Q0tfTEFUSU5fMV9TVVBQTEVNRU5UPTIsIC8qWzAwODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElD
VSAyLjAgKi8KKyAgICBVQkxPQ0tfTEFUSU5fRVhURU5ERURfQSA9MywgLypbMDEwMF0qLworCisg
ICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19MQVRJTl9FWFRFTkRFRF9CID00
LCAvKlswMTgwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0lQ
QV9FWFRFTlNJT05TID01LCAvKlswMjUwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICov
CisgICAgVUJMT0NLX1NQQUNJTkdfTU9ESUZJRVJfTEVUVEVSUyA9NiwgLypbMDJCMF0qLworCisg
ICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19DT01CSU5JTkdfRElBQ1JJVElD
QUxfTUFSS1MgPTcsIC8qWzAzMDBdKi8KKworICAgIC8qKgorICAgICAqIFVuaWNvZGUgMy4yIHJl
bmFtZXMgdGhpcyBibG9jayB0byAiR3JlZWsgYW5kIENvcHRpYyIuCisgICAgICogQHN0YWJsZSBJ
Q1UgMi4wCisgICAgICovCisgICAgVUJMT0NLX0dSRUVLID04LCAvKlswMzcwXSovCisKKyAgICAv
KiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0NZUklMTElDID05LCAvKlswNDAwXSov
CisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0FSTUVOSUFOID0xMCwg
LypbMDUzMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19IRUJS
RVcgPTExLCAvKlswNTkwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJM
T0NLX0FSQUJJQyA9MTIsIC8qWzA2MDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8K
KyAgICBVQkxPQ0tfU1lSSUFDID0xMywgLypbMDcwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNV
IDIuMCAqLworICAgIFVCTE9DS19USEFBTkEgPTE0LCAvKlswNzgwXSovCisKKyAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0RFVkFOQUdBUkkgPTE1LCAvKlswOTAwXSovCisK
KyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0JFTkdBTEkgPTE2LCAvKlsw
OTgwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0dVUk1VS0hJ
ID0xNywgLypbMEEwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9D
S19HVUpBUkFUSSA9MTgsIC8qWzBBODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8K
KyAgICBVQkxPQ0tfT1JJWUEgPTE5LCAvKlswQjAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi4wICovCisgICAgVUJMT0NLX1RBTUlMID0yMCwgLypbMEI4MF0qLworCisgICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19URUxVR1UgPTIxLCAvKlswQzAwXSovCisKKyAgICAv
KiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0tBTk5BREEgPTIyLCAvKlswQzgwXSov
CisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX01BTEFZQUxBTSA9MjMs
IC8qWzBEMDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfU0lO
SEFMQSA9MjQsIC8qWzBEODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBV
QkxPQ0tfVEhBSSA9MjUsIC8qWzBFMDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8K
KyAgICBVQkxPQ0tfTEFPID0yNiwgLypbMEU4MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIu
MCAqLworICAgIFVCTE9DS19USUJFVEFOID0yNywgLypbMEYwMF0qLworCisgICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19NWUFOTUFSID0yOCwgLypbMTAwMF0qLworCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19HRU9SR0lBTiA9MjksIC8qWzEwQTBd
Ki8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfSEFOR1VMX0pBTU8g
PTMwLCAvKlsxMTAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NL
X0VUSElPUElDID0zMSwgLypbMTIwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwor
ICAgIFVCTE9DS19DSEVST0tFRSA9MzIsIC8qWzEzQTBdKi8KKworICAgIC8qKiBAc3RhYmxlIElD
VSAyLjAgKi8KKyAgICBVQkxPQ0tfVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklD
UyA9MzMsIC8qWzE0MDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxP
Q0tfT0dIQU0gPTM0LCAvKlsxNjgwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisg
ICAgVUJMT0NLX1JVTklDID0zNSwgLypbMTZBMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIu
MCAqLworICAgIFVCTE9DS19LSE1FUiA9MzYsIC8qWzE3ODBdKi8KKworICAgIC8qKiBAc3RhYmxl
IElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfTU9OR09MSUFOID0zNywgLypbMTgwMF0qLworCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19MQVRJTl9FWFRFTkRFRF9BRERJVElP
TkFMID0zOCwgLypbMUUwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVC
TE9DS19HUkVFS19FWFRFTkRFRCA9MzksIC8qWzFGMDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElD
VSAyLjAgKi8KKyAgICBVQkxPQ0tfR0VORVJBTF9QVU5DVFVBVElPTiA9NDAsIC8qWzIwMDBdKi8K
KworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfU1VQRVJTQ1JJUFRTX0FO
RF9TVUJTQ1JJUFRTID00MSwgLypbMjA3MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAq
LworICAgIFVCTE9DS19DVVJSRU5DWV9TWU1CT0xTID00MiwgLypbMjBBMF0qLworCisgICAgLyoq
CisgICAgICogVW5pY29kZSAzLjIgcmVuYW1lcyB0aGlzIGJsb2NrIHRvICJDb21iaW5pbmcgRGlh
Y3JpdGljYWwgTWFya3MgZm9yIFN5bWJvbHMiLgorICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAg
ICAqLworICAgIFVCTE9DS19DT01CSU5JTkdfTUFSS1NfRk9SX1NZTUJPTFMgPTQzLCAvKlsyMEQw
XSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0xFVFRFUkxJS0Vf
U1lNQk9MUyA9NDQsIC8qWzIxMDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAg
ICBVQkxPQ0tfTlVNQkVSX0ZPUk1TID00NSwgLypbMjE1MF0qLworCisgICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVCTE9DS19BUlJPV1MgPTQ2LCAvKlsyMTkwXSovCisKKyAgICAvKiog
QHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX01BVEhFTUFUSUNBTF9PUEVSQVRPUlMgPTQ3
LCAvKlsyMjAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX01J
U0NFTExBTkVPVVNfVEVDSE5JQ0FMID00OCwgLypbMjMwMF0qLworCisgICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVCTE9DS19DT05UUk9MX1BJQ1RVUkVTID00OSwgLypbMjQwMF0qLwor
CisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19PUFRJQ0FMX0NIQVJBQ1RF
Ul9SRUNPR05JVElPTiA9NTAsIC8qWzI0NDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAg
Ki8KKyAgICBVQkxPQ0tfRU5DTE9TRURfQUxQSEFOVU1FUklDUyA9NTEsIC8qWzI0NjBdKi8KKwor
ICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQk9YX0RSQVdJTkcgPTUyLCAv
KlsyNTAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0JMT0NL
X0VMRU1FTlRTID01MywgLypbMjU4MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwor
ICAgIFVCTE9DS19HRU9NRVRSSUNfU0hBUEVTID01NCwgLypbMjVBMF0qLworCisgICAgLyoqIEBz
dGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19NSVNDRUxMQU5FT1VTX1NZTUJPTFMgPTU1LCAv
KlsyNjAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0RJTkdC
QVRTID01NiwgLypbMjcwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVC
TE9DS19CUkFJTExFX1BBVFRFUk5TID01NywgLypbMjgwMF0qLworCisgICAgLyoqIEBzdGFibGUg
SUNVIDIuMCAqLworICAgIFVCTE9DS19DSktfUkFESUNBTFNfU1VQUExFTUVOVCA9NTgsIC8qWzJF
ODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfS0FOR1hJX1JB
RElDQUxTID01OSwgLypbMkYwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAg
IFVCTE9DS19JREVPR1JBUEhJQ19ERVNDUklQVElPTl9DSEFSQUNURVJTID02MCwgLypbMkZGMF0q
LworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19DSktfU1lNQk9MU19B
TkRfUFVOQ1RVQVRJT04gPTYxLCAvKlszMDAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4w
ICovCisgICAgVUJMT0NLX0hJUkFHQU5BID02MiwgLypbMzA0MF0qLworCisgICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19LQVRBS0FOQSA9NjMsIC8qWzMwQTBdKi8KKworICAg
IC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQk9QT01PRk8gPTY0LCAvKlszMTAw
XSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0hBTkdVTF9DT01Q
QVRJQklMSVRZX0pBTU8gPTY1LCAvKlszMTMwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4w
ICovCisgICAgVUJMT0NLX0tBTkJVTiA9NjYsIC8qWzMxOTBdKi8KKworICAgIC8qKiBAc3RhYmxl
IElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQk9QT01PRk9fRVhURU5ERUQgPTY3LCAvKlszMUEwXSov
CisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0VOQ0xPU0VEX0NKS19M
RVRURVJTX0FORF9NT05USFMgPTY4LCAvKlszMjAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi4wICovCisgICAgVUJMT0NLX0NKS19DT01QQVRJQklMSVRZID02OSwgLypbMzMwMF0qLworCisg
ICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19DSktfVU5JRklFRF9JREVPR1JB
UEhTX0VYVEVOU0lPTl9BID03MCwgLypbMzQwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIu
MCAqLworICAgIFVCTE9DS19DSktfVU5JRklFRF9JREVPR1JBUEhTID03MSwgLypbNEUwMF0qLwor
CisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19ZSV9TWUxMQUJMRVMgPTcy
LCAvKltBMDAwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX1lJ
X1JBRElDQUxTID03MywgLypbQTQ5MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLwor
ICAgIFVCTE9DS19IQU5HVUxfU1lMTEFCTEVTID03NCwgLypbQUMwMF0qLworCisgICAgLyoqIEBz
dGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19ISUdIX1NVUlJPR0FURVMgPTc1LCAvKltEODAw
XSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0hJR0hfUFJJVkFU
RV9VU0VfU1VSUk9HQVRFUyA9NzYsIC8qW0RCODBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAy
LjAgKi8KKyAgICBVQkxPQ0tfTE9XX1NVUlJPR0FURVMgPTc3LCAvKltEQzAwXSovCisKKyAgICAv
KioKKyAgICAgKiBTYW1lIGFzIFVCTE9DS19QUklWQVRFX1VTRV9BUkVBLgorICAgICAqIFVudGls
IFVuaWNvZGUgMy4xLjEsIHRoZSBjb3JyZXNwb25kaW5nIGJsb2NrIG5hbWUgd2FzICJQcml2YXRl
IFVzZSIsCisgICAgICogYW5kIG11bHRpcGxlIGNvZGUgcG9pbnQgcmFuZ2VzIGhhZCB0aGlzIGJs
b2NrLgorICAgICAqIFVuaWNvZGUgMy4yIHJlbmFtZXMgdGhlIGJsb2NrIGZvciB0aGUgQk1QIFBV
QSB0byAiUHJpdmF0ZSBVc2UgQXJlYSIgYW5kCisgICAgICogYWRkcyBzZXBhcmF0ZSBibG9ja3Mg
Zm9yIHRoZSBzdXBwbGVtZW50YXJ5IFBVQXMuCisgICAgICoKKyAgICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICAgKi8KKyAgICBVQkxPQ0tfUFJJVkFURV9VU0UgPSA3OCwKKyAgICAvKioKKyAgICAg
KiBTYW1lIGFzIFVCTE9DS19QUklWQVRFX1VTRS4KKyAgICAgKiBVbnRpbCBVbmljb2RlIDMuMS4x
LCB0aGUgY29ycmVzcG9uZGluZyBibG9jayBuYW1lIHdhcyAiUHJpdmF0ZSBVc2UiLAorICAgICAq
IGFuZCBtdWx0aXBsZSBjb2RlIHBvaW50IHJhbmdlcyBoYWQgdGhpcyBibG9jay4KKyAgICAgKiBV
bmljb2RlIDMuMiByZW5hbWVzIHRoZSBibG9jayBmb3IgdGhlIEJNUCBQVUEgdG8gIlByaXZhdGUg
VXNlIEFyZWEiIGFuZAorICAgICAqIGFkZHMgc2VwYXJhdGUgYmxvY2tzIGZvciB0aGUgc3VwcGxl
bWVudGFyeSBQVUFzLgorICAgICAqCisgICAgICogQHN0YWJsZSBJQ1UgMi4wCisgICAgICovCisg
ICAgVUJMT0NLX1BSSVZBVEVfVVNFX0FSRUEgPVVCTE9DS19QUklWQVRFX1VTRSwgLypbRTAwMF0q
LworCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19DSktfQ09NUEFUSUJJ
TElUWV9JREVPR1JBUEhTID03OSwgLypbRjkwMF0qLworCisgICAgLyoqIEBzdGFibGUgSUNVIDIu
MCAqLworICAgIFVCTE9DS19BTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNUyA9ODAsIC8qW0ZC
MDBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQVJBQklDX1BS
RVNFTlRBVElPTl9GT1JNU19BID04MSwgLypbRkI1MF0qLworCisgICAgLyoqIEBzdGFibGUgSUNV
IDIuMCAqLworICAgIFVCTE9DS19DT01CSU5JTkdfSEFMRl9NQVJLUyA9ODIsIC8qW0ZFMjBdKi8K
KworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfQ0pLX0NPTVBBVElCSUxJ
VFlfRk9STVMgPTgzLCAvKltGRTMwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisg
ICAgVUJMT0NLX1NNQUxMX0ZPUk1fVkFSSUFOVFMgPTg0LCAvKltGRTUwXSovCisKKyAgICAvKiog
QHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0FSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNf
QiA9ODUsIC8qW0ZFNzBdKi8KKworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxP
Q0tfU1BFQ0lBTFMgPTg2LCAvKltGRkYwXSovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICov
CisgICAgVUJMT0NLX0hBTEZXSURUSF9BTkRfRlVMTFdJRFRIX0ZPUk1TID04NywgLypbRkYwMF0q
LworCisgICAgLyogTmV3IGJsb2NrcyBpbiBVbmljb2RlIDMuMSAqLworCisgICAgLyoqIEBzdGFi
bGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19PTERfSVRBTElDID0gODggICwgLypbMTAzMDBdKi8K
KyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0dPVEhJQyA9IDg5ICwgLypb
MTAzMzBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0RFU0VSRVQg
PSA5MCAsIC8qWzEwNDAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9D
S19CWVpBTlRJTkVfTVVTSUNBTF9TWU1CT0xTID0gOTEgLCAvKlsxRDAwMF0qLworICAgIC8qKiBA
c3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfTVVTSUNBTF9TWU1CT0xTID0gOTIgLCAvKlsx
RDEwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfTUFUSEVNQVRJ
Q0FMX0FMUEhBTlVNRVJJQ19TWU1CT0xTID0gOTMgICwgLypbMUQ0MDBdKi8KKyAgICAvKiogQHN0
YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0NKS19VTklGSUVEX0lERU9HUkFQSFNfRVhURU5T
SU9OX0IgID0gOTQgLCAvKlsyMDAwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAg
ICBVQkxPQ0tfQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIU19TVVBQTEVNRU5UID0gOTUgLCAv
KlsyRjgwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjAgKi8KKyAgICBVQkxPQ0tfVEFHUyA9
IDk2LCAvKltFMDAwMF0qLworCisgICAgLyogTmV3IGJsb2NrcyBpbiBVbmljb2RlIDMuMiAqLwor
CisgICAgLyoqCisgICAgICogVW5pY29kZSA0LjAuMSByZW5hbWVzIHRoZSAiQ3lyaWxsaWMgU3Vw
cGxlbWVudGFyeSIgYmxvY2sgdG8gIkN5cmlsbGljIFN1cHBsZW1lbnQiLgorICAgICAqIEBzdGFi
bGUgSUNVIDIuMgorICAgICAqLworICAgIFVCTE9DS19DWVJJTExJQ19TVVBQTEVNRU5UQVJZID0g
OTcsIAorICAgIC8qKiBAZHJhZnQgSUNVIDMuMCAgKi8KKyAgICBVQkxPQ0tfQ1lSSUxMSUNfU1VQ
UExFTUVOVCA9IFVCTE9DS19DWVJJTExJQ19TVVBQTEVNRU5UQVJZLCAvKlswNTAwXSovCisgICAg
LyoqIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19UQUdBTE9HID0gOTgsIC8qWzE3MDBd
Ki8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCisgICAgVUJMT0NLX0hBTlVOT08gPSA5OSwg
LypbMTcyMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjIgKi8KKyAgICBVQkxPQ0tfQlVISUQg
PSAxMDAsIC8qWzE3NDBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCisgICAgVUJMT0NL
X1RBR0JBTldBID0gMTAxLCAvKlsxNzYwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLwor
ICAgIFVCTE9DS19NSVNDRUxMQU5FT1VTX01BVEhFTUFUSUNBTF9TWU1CT0xTX0EgPSAxMDIsIC8q
WzI3QzBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi4yICovCisgICAgVUJMT0NLX1NVUFBMRU1F
TlRBTF9BUlJPV1NfQSA9IDEwMywgLypbMjdGMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjIg
Ki8KKyAgICBVQkxPQ0tfU1VQUExFTUVOVEFMX0FSUk9XU19CID0gMTA0LCAvKlsyOTAwXSovCisg
ICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19NSVNDRUxMQU5FT1VTX01BVEhF
TUFUSUNBTF9TWU1CT0xTX0IgPSAxMDUsIC8qWzI5ODBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi4yICovCisgICAgVUJMT0NLX1NVUFBMRU1FTlRBTF9NQVRIRU1BVElDQUxfT1BFUkFUT1JTID0g
MTA2LCAvKlsyQTAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19L
QVRBS0FOQV9QSE9ORVRJQ19FWFRFTlNJT05TID0gMTA3LCAvKlszMUYwXSovCisgICAgLyoqIEBz
dGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19WQVJJQVRJT05fU0VMRUNUT1JTID0gMTA4LCAv
KltGRTAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuMiAqLworICAgIFVCTE9DS19TVVBQTEVN
RU5UQVJZX1BSSVZBVEVfVVNFX0FSRUFfQSA9IDEwOSwgLypbRjAwMDBdKi8KKyAgICAvKiogQHN0
YWJsZSBJQ1UgMi4yICovCisgICAgVUJMT0NLX1NVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJF
QV9CID0gMTEwLCAvKlsxMDAwMDBdKi8KKworICAgIC8qIE5ldyBibG9ja3MgaW4gVW5pY29kZSA0
ICovCisKKyAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCisgICAgVUJMT0NLX0xJTUJVID0gMTEx
LCAvKlsxOTAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9DS19UQUlf
TEUgPSAxMTIsIC8qWzE5NTBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCisgICAgVUJM
T0NLX0tITUVSX1NZTUJPTFMgPSAxMTMsIC8qWzE5RTBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1Ug
Mi42ICovCisgICAgVUJMT0NLX1BIT05FVElDX0VYVEVOU0lPTlMgPSAxMTQsIC8qWzFEMDBdKi8K
KyAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCisgICAgVUJMT0NLX01JU0NFTExBTkVPVVNfU1lN
Qk9MU19BTkRfQVJST1dTID0gMTE1LCAvKlsyQjAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIu
NiAqLworICAgIFVCTE9DS19ZSUpJTkdfSEVYQUdSQU1fU1lNQk9MUyA9IDExNiwgLypbNERDMF0q
LworICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KKyAgICBVQkxPQ0tfTElORUFSX0JfU1lMTEFC
QVJZID0gMTE3LCAvKlsxMDAwMF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAyLjYgKi8KKyAgICBV
QkxPQ0tfTElORUFSX0JfSURFT0dSQU1TID0gMTE4LCAvKlsxMDA4MF0qLworICAgIC8qKiBAc3Rh
YmxlIElDVSAyLjYgKi8KKyAgICBVQkxPQ0tfQUVHRUFOX05VTUJFUlMgPSAxMTksIC8qWzEwMTAw
XSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9DS19VR0FSSVRJQyA9IDEy
MCwgLypbMTAzODBdKi8KKyAgICAvKiogQHN0YWJsZSBJQ1UgMi42ICovCisgICAgVUJMT0NLX1NI
QVZJQU4gPSAxMjEsIC8qWzEwNDUwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAg
IFVCTE9DS19PU01BTllBID0gMTIyLCAvKlsxMDQ4MF0qLworICAgIC8qKiBAc3RhYmxlIElDVSAy
LjYgKi8KKyAgICBVQkxPQ0tfQ1lQUklPVF9TWUxMQUJBUlkgPSAxMjMsIC8qWzEwODAwXSovCisg
ICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVCTE9DS19UQUlfWFVBTl9KSU5HX1NZTUJP
TFMgPSAxMjQsIC8qWzFEMzAwXSovCisgICAgLyoqIEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVC
TE9DS19WQVJJQVRJT05fU0VMRUNUT1JTX1NVUFBMRU1FTlQgPSAxMjUsIC8qW0UwMTAwXSovCisK
KyAgICAvKiogQHN0YWJsZSBJQ1UgMi4wICovCisgICAgVUJMT0NLX0NPVU5ULAorCisgICAgLyoq
IEBzdGFibGUgSUNVIDIuMCAqLworICAgIFVCTE9DS19JTlZBTElEX0NPREU9LTEKK307CisKKy8q
KiBAc3RhYmxlIElDVSAyLjAgKi8KK3R5cGVkZWYgZW51bSBVQmxvY2tDb2RlIFVCbG9ja0NvZGU7
CisKKy8qKgorICogRWFzdCBBc2lhbiBXaWR0aCBjb25zdGFudHMuCisgKgorICogQHNlZSBVQ0hB
Ul9FQVNUX0FTSUFOX1dJRFRICisgKiBAc2VlIHVfZ2V0SW50UHJvcGVydHlWYWx1ZQorICogQHN0
YWJsZSBJQ1UgMi4yCisgKi8KK3R5cGVkZWYgZW51bSBVRWFzdEFzaWFuV2lkdGggeworICAgIFVf
RUFfTkVVVFJBTCwgICAvKltOXSovIC8qU2VlIG5vdGUgISEqLworICAgIFVfRUFfQU1CSUdVT1VT
LCAvKltBXSovCisgICAgVV9FQV9IQUxGV0lEVEgsIC8qW0hdKi8KKyAgICBVX0VBX0ZVTExXSURU
SCwgLypbRl0qLworICAgIFVfRUFfTkFSUk9XLCAgICAvKltOYV0qLworICAgIFVfRUFfV0lERSwg
ICAgICAvKltXXSovCisgICAgVV9FQV9DT1VOVAorfSBVRWFzdEFzaWFuV2lkdGg7CisvKgorICog
SW1wbGVtZW50YXRpb24gbm90ZToKKyAqIEtlZXAgVUVhc3RBc2lhbldpZHRoIGNvbnN0YW50IHZh
bHVlcyBpbiBzeW5jIHdpdGggbmFtZXMgbGlzdCBpbiBnZW5wcm9wcy9wcm9wczIuYy4KKyAqLwor
CisvKioKKyAqIFNlbGVjdG9yIGNvbnN0YW50cyBmb3IgdV9jaGFyTmFtZSgpLgorICogdV9jaGFy
TmFtZSgpIHJldHVybnMgdGhlICJtb2Rlcm4iIG5hbWUgb2YgYQorICogVW5pY29kZSBjaGFyYWN0
ZXI7IG9yIHRoZSBuYW1lIHRoYXQgd2FzIGRlZmluZWQgaW4KKyAqIFVuaWNvZGUgdmVyc2lvbiAx
LjAsIGJlZm9yZSB0aGUgVW5pY29kZSBzdGFuZGFyZCBtZXJnZWQKKyAqIHdpdGggSVNPLTEwNjQ2
OyBvciBhbiAiZXh0ZW5kZWQiIG5hbWUgdGhhdCBnaXZlcyBlYWNoCisgKiBVbmljb2RlIGNvZGUg
cG9pbnQgYSB1bmlxdWUgbmFtZS4KKyAqCisgKiBAc2VlIHVfY2hhck5hbWUKKyAqIEBzdGFibGUg
SUNVIDIuMAorICovCit0eXBlZGVmIGVudW0gVUNoYXJOYW1lQ2hvaWNlIHsKKyAgICBVX1VOSUNP
REVfQ0hBUl9OQU1FLAorICAgIFVfVU5JQ09ERV8xMF9DSEFSX05BTUUsCisgICAgVV9FWFRFTkRF
RF9DSEFSX05BTUUsCisgICAgVV9DSEFSX05BTUVfQ0hPSUNFX0NPVU5UCit9IFVDaGFyTmFtZUNo
b2ljZTsKKworLyoqCisgKiBTZWxlY3RvciBjb25zdGFudHMgZm9yIHVfZ2V0UHJvcGVydHlOYW1l
KCkgYW5kCisgKiB1X2dldFByb3BlcnR5VmFsdWVOYW1lKCkuICBUaGVzZSBzZWxlY3RvcnMgYXJl
IHVzZWQgdG8gY2hvb3NlIHdoaWNoCisgKiBuYW1lIGlzIHJldHVybmVkIGZvciBhIGdpdmVuIHBy
b3BlcnR5IG9yIHZhbHVlLiAgQWxsIHByb3BlcnRpZXMgYW5kCisgKiB2YWx1ZXMgaGF2ZSBhIGxv
bmcgbmFtZS4gIE1vc3QgaGF2ZSBhIHNob3J0IG5hbWUsIGJ1dCBzb21lIGRvIG5vdC4KKyAqIFVu
aWNvZGUgYWxsb3dzIGZvciBhZGRpdGlvbmFsIG5hbWVzLCBiZXlvbmQgdGhlIGxvbmcgYW5kIHNo
b3J0CisgKiBuYW1lLCB3aGljaCB3b3VsZCBiZSBpbmRpY2F0ZWQgYnkgVV9MT05HX1BST1BFUlRZ
X05BTUUgKyBpLCB3aGVyZQorICogaT0xLCAyLC4uLgorICoKKyAqIEBzZWUgdV9nZXRQcm9wZXJ0
eU5hbWUoKQorICogQHNlZSB1X2dldFByb3BlcnR5VmFsdWVOYW1lKCkKKyAqIEBzdGFibGUgSUNV
IDIuNAorICovCit0eXBlZGVmIGVudW0gVVByb3BlcnR5TmFtZUNob2ljZSB7CisgICAgVV9TSE9S
VF9QUk9QRVJUWV9OQU1FLAorICAgIFVfTE9OR19QUk9QRVJUWV9OQU1FLAorICAgIFVfUFJPUEVS
VFlfTkFNRV9DSE9JQ0VfQ09VTlQKK30gVVByb3BlcnR5TmFtZUNob2ljZTsKKworLyoqCisgKiBE
ZWNvbXBvc2l0aW9uIFR5cGUgY29uc3RhbnRzLgorICoKKyAqIEBzZWUgVUNIQVJfREVDT01QT1NJ
VElPTl9UWVBFCisgKiBAc3RhYmxlIElDVSAyLjIKKyAqLwordHlwZWRlZiBlbnVtIFVEZWNvbXBv
c2l0aW9uVHlwZSB7CisgICAgVV9EVF9OT05FLCAgICAgICAgICAgICAgLypbbm9uZV0qLyAvKlNl
ZSBub3RlICEhKi8KKyAgICBVX0RUX0NBTk9OSUNBTCwgICAgICAgICAvKltjYW5dKi8KKyAgICBV
X0RUX0NPTVBBVCwgICAgICAgICAgICAvKltjb21dKi8KKyAgICBVX0RUX0NJUkNMRSwgICAgICAg
ICAgICAvKltlbmNdKi8KKyAgICBVX0RUX0ZJTkFMLCAgICAgICAgICAgICAvKltmaW5dKi8KKyAg
ICBVX0RUX0ZPTlQsICAgICAgICAgICAgICAvKltmb250XSovCisgICAgVV9EVF9GUkFDVElPTiwg
ICAgICAgICAgLypbZnJhXSovCisgICAgVV9EVF9JTklUSUFMLCAgICAgICAgICAgLypbaW5pdF0q
LworICAgIFVfRFRfSVNPTEFURUQsICAgICAgICAgIC8qW2lzb10qLworICAgIFVfRFRfTUVESUFM
LCAgICAgICAgICAgIC8qW21lZF0qLworICAgIFVfRFRfTkFSUk9XLCAgICAgICAgICAgIC8qW25h
cl0qLworICAgIFVfRFRfTk9CUkVBSywgICAgICAgICAgIC8qW25iXSovCisgICAgVV9EVF9TTUFM
TCwgICAgICAgICAgICAgLypbc21sXSovCisgICAgVV9EVF9TUVVBUkUsICAgICAgICAgICAgLypb
c3FyXSovCisgICAgVV9EVF9TVUIsICAgICAgICAgICAgICAgLypbc3ViXSovCisgICAgVV9EVF9T
VVBFUiwgICAgICAgICAgICAgLypbc3VwXSovCisgICAgVV9EVF9WRVJUSUNBTCwgICAgICAgICAg
LypbdmVydF0qLworICAgIFVfRFRfV0lERSwgICAgICAgICAgICAgIC8qW3dpZGVdKi8KKyAgICBV
X0RUX0NPVU5UIC8qIDE4ICovCit9IFVEZWNvbXBvc2l0aW9uVHlwZTsKKworLyoqCisgKiBKb2lu
aW5nIFR5cGUgY29uc3RhbnRzLgorICoKKyAqIEBzZWUgVUNIQVJfSk9JTklOR19UWVBFCisgKiBA
c3RhYmxlIElDVSAyLjIKKyAqLwordHlwZWRlZiBlbnVtIFVKb2luaW5nVHlwZSB7CisgICAgVV9K
VF9OT05fSk9JTklORywgICAgICAgLypbVV0qLyAvKlNlZSBub3RlICEhKi8KKyAgICBVX0pUX0pP
SU5fQ0FVU0lORywgICAgICAvKltDXSovCisgICAgVV9KVF9EVUFMX0pPSU5JTkcsICAgICAgLypb
RF0qLworICAgIFVfSlRfTEVGVF9KT0lOSU5HLCAgICAgIC8qW0xdKi8KKyAgICBVX0pUX1JJR0hU
X0pPSU5JTkcsICAgICAvKltSXSovCisgICAgVV9KVF9UUkFOU1BBUkVOVCwgICAgICAgLypbVF0q
LworICAgIFVfSlRfQ09VTlQgLyogNiAqLworfSBVSm9pbmluZ1R5cGU7CisKKy8qKgorICogSm9p
bmluZyBHcm91cCBjb25zdGFudHMuCisgKgorICogQHNlZSBVQ0hBUl9KT0lOSU5HX0dST1VQCisg
KiBAc3RhYmxlIElDVSAyLjIKKyAqLwordHlwZWRlZiBlbnVtIFVKb2luaW5nR3JvdXAgeworICAg
IFVfSkdfTk9fSk9JTklOR19HUk9VUCwKKyAgICBVX0pHX0FJTiwKKyAgICBVX0pHX0FMQVBILAor
ICAgIFVfSkdfQUxFRiwKKyAgICBVX0pHX0JFSCwKKyAgICBVX0pHX0JFVEgsCisgICAgVV9KR19E
QUwsCisgICAgVV9KR19EQUxBVEhfUklTSCwKKyAgICBVX0pHX0UsCisgICAgVV9KR19GRUgsCisg
ICAgVV9KR19GSU5BTF9TRU1LQVRILAorICAgIFVfSkdfR0FGLAorICAgIFVfSkdfR0FNQUwsCisg
ICAgVV9KR19IQUgsCisgICAgVV9KR19IQU1aQV9PTl9IRUhfR09BTCwKKyAgICBVX0pHX0hFLAor
ICAgIFVfSkdfSEVILAorICAgIFVfSkdfSEVIX0dPQUwsCisgICAgVV9KR19IRVRILAorICAgIFVf
SkdfS0FGLAorICAgIFVfSkdfS0FQSCwKKyAgICBVX0pHX0tOT1RURURfSEVILAorICAgIFVfSkdf
TEFNLAorICAgIFVfSkdfTEFNQURILAorICAgIFVfSkdfTUVFTSwKKyAgICBVX0pHX01JTSwKKyAg
ICBVX0pHX05PT04sCisgICAgVV9KR19OVU4sCisgICAgVV9KR19QRSwKKyAgICBVX0pHX1FBRiwK
KyAgICBVX0pHX1FBUEgsCisgICAgVV9KR19SRUgsCisgICAgVV9KR19SRVZFUlNFRF9QRSwKKyAg
ICBVX0pHX1NBRCwKKyAgICBVX0pHX1NBREhFLAorICAgIFVfSkdfU0VFTiwKKyAgICBVX0pHX1NF
TUtBVEgsCisgICAgVV9KR19TSElOLAorICAgIFVfSkdfU1dBU0hfS0FGLAorICAgIFVfSkdfU1lS
SUFDX1dBVywKKyAgICBVX0pHX1RBSCwKKyAgICBVX0pHX1RBVywKKyAgICBVX0pHX1RFSF9NQVJC
VVRBLAorICAgIFVfSkdfVEVUSCwKKyAgICBVX0pHX1dBVywKKyAgICBVX0pHX1lFSCwKKyAgICBV
X0pHX1lFSF9CQVJSRUUsCisgICAgVV9KR19ZRUhfV0lUSF9UQUlMLAorICAgIFVfSkdfWVVESCwK
KyAgICBVX0pHX1lVREhfSEUsCisgICAgVV9KR19aQUlOLAorICAgIFVfSkdfRkUsICAgICAgICAv
Kio8IEBzdGFibGUgSUNVIDIuNiAqLworICAgIFVfSkdfS0hBUEgsICAgICAvKio8IEBzdGFibGUg
SUNVIDIuNiAqLworICAgIFVfSkdfWkhBSU4sICAgICAvKio8IEBzdGFibGUgSUNVIDIuNiAqLwor
ICAgIFVfSkdfQ09VTlQKK30gVUpvaW5pbmdHcm91cDsKKworLyoqCisgKiBMaW5lIEJyZWFrIGNv
bnN0YW50cy4KKyAqCisgKiBAc2VlIFVDSEFSX0xJTkVfQlJFQUsKKyAqIEBzdGFibGUgSUNVIDIu
MgorICovCit0eXBlZGVmIGVudW0gVUxpbmVCcmVhayB7CisgICAgVV9MQl9VTktOT1dOLCAgICAg
ICAgICAgLypbWFhdKi8gLypTZWUgbm90ZSAhISovCisgICAgVV9MQl9BTUJJR1VPVVMsICAgICAg
ICAgLypbQUldKi8KKyAgICBVX0xCX0FMUEhBQkVUSUMsICAgICAgICAvKltBTF0qLworICAgIFVf
TEJfQlJFQUtfQk9USCwgICAgICAgIC8qW0IyXSovCisgICAgVV9MQl9CUkVBS19BRlRFUiwgICAg
ICAgLypbQkFdKi8KKyAgICBVX0xCX0JSRUFLX0JFRk9SRSwgICAgICAvKltCQl0qLworICAgIFVf
TEJfTUFOREFUT1JZX0JSRUFLLCAgIC8qW0JLXSovCisgICAgVV9MQl9DT05USU5HRU5UX0JSRUFL
LCAgLypbQ0JdKi8KKyAgICBVX0xCX0NMT1NFX1BVTkNUVUFUSU9OLCAvKltDTF0qLworICAgIFVf
TEJfQ09NQklOSU5HX01BUkssICAgIC8qW0NNXSovCisgICAgVV9MQl9DQVJSSUFHRV9SRVRVUk4s
ICAgLypbQ1JdKi8KKyAgICBVX0xCX0VYQ0xBTUFUSU9OLCAgICAgICAvKltFWF0qLworICAgIFVf
TEJfR0xVRSwgICAgICAgICAgICAgIC8qW0dMXSovCisgICAgVV9MQl9IWVBIRU4sICAgICAgICAg
ICAgLypbSFldKi8KKyAgICBVX0xCX0lERU9HUkFQSElDLCAgICAgICAvKltJRF0qLworICAgIFVf
TEJfSU5TRVBFUkFCTEUsCisgICAgLyoqIFJlbmFtZWQgZnJvbSB0aGUgbWlzc3BlbGxlZCAiaW5z
ZXBlcmFibGUiIGluIFVuaWNvZGUgNC4wLjEvSUNVIDMuMCBAZHJhZnQgSUNVIDMuMCAqLworICAg
IFVfTEJfSU5TRVBBUkFCTEU9VV9MQl9JTlNFUEVSQUJMRSwvKltJTl0qLworICAgIFVfTEJfSU5G
SVhfTlVNRVJJQywgICAgIC8qW0lTXSovCisgICAgVV9MQl9MSU5FX0ZFRUQsICAgICAgICAgLypb
TEZdKi8KKyAgICBVX0xCX05PTlNUQVJURVIsICAgICAgICAvKltOU10qLworICAgIFVfTEJfTlVN
RVJJQywgICAgICAgICAgIC8qW05VXSovCisgICAgVV9MQl9PUEVOX1BVTkNUVUFUSU9OLCAgLypb
T1BdKi8KKyAgICBVX0xCX1BPU1RGSVhfTlVNRVJJQywgICAvKltQT10qLworICAgIFVfTEJfUFJF
RklYX05VTUVSSUMsICAgIC8qW1BSXSovCisgICAgVV9MQl9RVU9UQVRJT04sICAgICAgICAgLypb
UVVdKi8KKyAgICBVX0xCX0NPTVBMRVhfQ09OVEVYVCwgICAvKltTQV0qLworICAgIFVfTEJfU1VS
Uk9HQVRFLCAgICAgICAgIC8qW1NHXSovCisgICAgVV9MQl9TUEFDRSwgICAgICAgICAgICAgLypb
U1BdKi8KKyAgICBVX0xCX0JSRUFLX1NZTUJPTFMsICAgICAvKltTWV0qLworICAgIFVfTEJfWldT
UEFDRSwgICAgICAgICAgIC8qW1pXXSovCisgICAgVV9MQl9ORVhUX0xJTkUsICAgICAgICAgLypb
TkxdKi8gLyogZnJvbSBoZXJlIG9uOiBuZXcgaW4gVW5pY29kZSA0L0lDVSAyLjYgKi8KKyAgICBV
X0xCX1dPUkRfSk9JTkVSLCAgICAgICAvKltXSl0qLworICAgIFVfTEJfQ09VTlQKK30gVUxpbmVC
cmVhazsKKworLyoqCisgKiBOdW1lcmljIFR5cGUgY29uc3RhbnRzLgorICoKKyAqIEBzZWUgVUNI
QVJfTlVNRVJJQ19UWVBFCisgKiBAc3RhYmxlIElDVSAyLjIKKyAqLwordHlwZWRlZiBlbnVtIFVO
dW1lcmljVHlwZSB7CisgICAgVV9OVF9OT05FLCAgICAgICAgICAgICAgLypbTm9uZV0qLyAvKlNl
ZSBub3RlICEhKi8KKyAgICBVX05UX0RFQ0lNQUwsICAgICAgICAgICAvKltkZV0qLworICAgIFVf
TlRfRElHSVQsICAgICAgICAgICAgIC8qW2RpXSovCisgICAgVV9OVF9OVU1FUklDLCAgICAgICAg
ICAgLypbbnVdKi8KKyAgICBVX05UX0NPVU5UCit9IFVOdW1lcmljVHlwZTsKKworLyoqCisgKiBI
YW5ndWwgU3lsbGFibGUgVHlwZSBjb25zdGFudHMuCisgKgorICogQHNlZSBVQ0hBUl9IQU5HVUxf
U1lMTEFCTEVfVFlQRQorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK3R5cGVkZWYgZW51bSBVSGFu
Z3VsU3lsbGFibGVUeXBlIHsKKyAgICBVX0hTVF9OT1RfQVBQTElDQUJMRSwgICAvKltOQV0qLyAv
KlNlZSBub3RlICEhKi8KKyAgICBVX0hTVF9MRUFESU5HX0pBTU8sICAgICAvKltMXSovCisgICAg
VV9IU1RfVk9XRUxfSkFNTywgICAgICAgLypbVl0qLworICAgIFVfSFNUX1RSQUlMSU5HX0pBTU8s
ICAgIC8qW1RdKi8KKyAgICBVX0hTVF9MVl9TWUxMQUJMRSwgICAgICAvKltMVl0qLworICAgIFVf
SFNUX0xWVF9TWUxMQUJMRSwgICAgIC8qW0xWVF0qLworICAgIFVfSFNUX0NPVU5UCit9IFVIYW5n
dWxTeWxsYWJsZVR5cGU7CisKKy8qKgorICogQ2hlY2sgYSBiaW5hcnkgVW5pY29kZSBwcm9wZXJ0
eSBmb3IgYSBjb2RlIHBvaW50LgorICoKKyAqIFVuaWNvZGUsIGVzcGVjaWFsbHkgaW4gdmVyc2lv
biAzLjIsIGRlZmluZXMgbWFueSBtb3JlIHByb3BlcnRpZXMgdGhhbiB0aGUKKyAqIG9yaWdpbmFs
IHNldCBpbiBVbmljb2RlRGF0YS50eHQuCisgKgorICogVGhlIHByb3BlcnRpZXMgQVBJcyBhcmUg
aW50ZW5kZWQgdG8gcmVmbGVjdCBVbmljb2RlIHByb3BlcnRpZXMgYXMgZGVmaW5lZAorICogaW4g
dGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIGFuZCBVbmljb2RlIFRlY2huaWNh
bCBSZXBvcnRzIChVVFIpLgorICogRm9yIGRldGFpbHMgYWJvdXQgdGhlIHByb3BlcnRpZXMgc2Vl
IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdWNkLyAuCisgKiBGb3IgbmFtZXMgb2YgVW5pY29kZSBw
cm9wZXJ0aWVzIHNlZSB0aGUgVUNEIGZpbGUgUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAqCisgKiBJ
bXBvcnRhbnQ6IElmIElDVSBpcyBidWlsdCB3aXRoIFVDRCBmaWxlcyBmcm9tIFVuaWNvZGUgdmVy
c2lvbnMgYmVsb3cgMy4yLAorICogdGhlbiBwcm9wZXJ0aWVzIG1hcmtlZCB3aXRoICJuZXcgaW4g
VW5pY29kZSAzLjIiIGFyZSBub3Qgb3Igbm90IGZ1bGx5IGF2YWlsYWJsZS4KKyAqCisgKiBAcGFy
YW0gYyBDb2RlIHBvaW50IHRvIHRlc3QuCisgKiBAcGFyYW0gd2hpY2ggVVByb3BlcnR5IHNlbGVj
dG9yIGNvbnN0YW50LCBpZGVudGlmaWVzIHdoaWNoIGJpbmFyeSBwcm9wZXJ0eSB0byBjaGVjay4K
KyAqICAgICAgICBNdXN0IGJlIFVDSEFSX0JJTkFSWV9TVEFSVDw9d2hpY2g8VUNIQVJfQklOQVJZ
X0xJTUlULgorICogQHJldHVybiBUUlVFIG9yIEZBTFNFIGFjY29yZGluZyB0byB0aGUgYmluYXJ5
IFVuaWNvZGUgcHJvcGVydHkgdmFsdWUgZm9yIGMuCisgKiAgICAgICAgIEFsc28gRkFMU0UgaWYg
J3doaWNoJyBpcyBvdXQgb2YgYm91bmRzIG9yIGlmIHRoZSBVbmljb2RlIHZlcnNpb24KKyAqICAg
ICAgICAgZG9lcyBub3QgaGF2ZSBkYXRhIGZvciB0aGUgcHJvcGVydHkgYXQgYWxsLCBvciBub3Qg
Zm9yIHRoaXMgY29kZSBwb2ludC4KKyAqCisgKiBAc2VlIFVQcm9wZXJ0eQorICogQHNlZSB1X2dl
dEludFByb3BlcnR5VmFsdWUKKyAqIEBzZWUgdV9nZXRVbmljb2RlVmVyc2lvbgorICogQHN0YWJs
ZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9oYXNCaW5hcnlQcm9w
ZXJ0eShVQ2hhcjMyIGMsIFVQcm9wZXJ0eSB3aGljaCk7CisKKy8qKgorICogQ2hlY2sgaWYgYSBj
b2RlIHBvaW50IGhhcyB0aGUgQWxwaGFiZXRpYyBVbmljb2RlIHByb3BlcnR5LgorICogU2FtZSBh
cyB1X2hhc0JpbmFyeVByb3BlcnR5KGMsIFVDSEFSX0FMUEhBQkVUSUMpLgorICogVGhpcyBpcyBk
aWZmZXJlbnQgZnJvbSB1X2lzYWxwaGEhCisgKiBAcGFyYW0gYyBDb2RlIHBvaW50IHRvIHRlc3QK
KyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBoYXMgdGhlIEFscGhhYmV0aWMgVW5p
Y29kZSBwcm9wZXJ0eSwgZmFsc2Ugb3RoZXJ3aXNlCisgKgorICogQHNlZSBVQ0hBUl9BTFBIQUJF
VElDCisgKiBAc2VlIHVfaXNhbHBoYQorICogQHNlZSB1X2hhc0JpbmFyeVByb3BlcnR5CisgKiBA
c3RhYmxlIElDVSAyLjEKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzVUFscGhh
YmV0aWMoVUNoYXIzMiBjKTsKKworLyoqCisgKiBDaGVjayBpZiBhIGNvZGUgcG9pbnQgaGFzIHRo
ZSBMb3dlcmNhc2UgVW5pY29kZSBwcm9wZXJ0eS4KKyAqIFNhbWUgYXMgdV9oYXNCaW5hcnlQcm9w
ZXJ0eShjLCBVQ0hBUl9MT1dFUkNBU0UpLgorICogVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB1X2lz
bG93ZXIhCisgKiBAcGFyYW0gYyBDb2RlIHBvaW50IHRvIHRlc3QKKyAqIEByZXR1cm4gdHJ1ZSBp
ZiB0aGUgY29kZSBwb2ludCBoYXMgdGhlIExvd2VyY2FzZSBVbmljb2RlIHByb3BlcnR5LCBmYWxz
ZSBvdGhlcndpc2UKKyAqCisgKiBAc2VlIFVDSEFSX0xPV0VSQ0FTRQorICogQHNlZSB1X2lzbG93
ZXIKKyAqIEBzZWUgdV9oYXNCaW5hcnlQcm9wZXJ0eQorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8K
K1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc1VMb3dlcmNhc2UoVUNoYXIzMiBjKTsKKwor
LyoqCisgKiBDaGVjayBpZiBhIGNvZGUgcG9pbnQgaGFzIHRoZSBVcHBlcmNhc2UgVW5pY29kZSBw
cm9wZXJ0eS4KKyAqIFNhbWUgYXMgdV9oYXNCaW5hcnlQcm9wZXJ0eShjLCBVQ0hBUl9VUFBFUkNB
U0UpLgorICogVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB1X2lzdXBwZXIhCisgKiBAcGFyYW0gYyBD
b2RlIHBvaW50IHRvIHRlc3QKKyAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBoYXMg
dGhlIFVwcGVyY2FzZSBVbmljb2RlIHByb3BlcnR5LCBmYWxzZSBvdGhlcndpc2UKKyAqCisgKiBA
c2VlIFVDSEFSX1VQUEVSQ0FTRQorICogQHNlZSB1X2lzdXBwZXIKKyAqIEBzZWUgdV9oYXNCaW5h
cnlQcm9wZXJ0eQorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQ
T1JUMgordV9pc1VVcHBlcmNhc2UoVUNoYXIzMiBjKTsKKworLyoqCisgKiBDaGVjayBpZiBhIGNv
ZGUgcG9pbnQgaGFzIHRoZSBXaGl0ZV9TcGFjZSBVbmljb2RlIHByb3BlcnR5LgorICogU2FtZSBh
cyB1X2hhc0JpbmFyeVByb3BlcnR5KGMsIFVDSEFSX1dISVRFX1NQQUNFKS4KKyAqIFRoaXMgaXMg
ZGlmZmVyZW50IGZyb20gYm90aCB1X2lzc3BhY2UgYW5kIHVfaXNXaGl0ZXNwYWNlIQorICoKKyAq
IE5vdGU6IFRoZXJlIGFyZSBzZXZlcmFsIElDVSB3aGl0ZXNwYWNlIGZ1bmN0aW9uczsgcGxlYXNl
IHNlZSB0aGUgdWNoYXIuaAorICogZmlsZSBkb2N1bWVudGF0aW9uIGZvciBhIGRldGFpbGVkIGNv
bXBhcmlzb24uCisgKgorICogQHBhcmFtIGMgQ29kZSBwb2ludCB0byB0ZXN0CisgKiBAcmV0dXJu
IHRydWUgaWYgdGhlIGNvZGUgcG9pbnQgaGFzIHRoZSBXaGl0ZV9TcGFjZSBVbmljb2RlIHByb3Bl
cnR5LCBmYWxzZSBvdGhlcndpc2UuCisgKgorICogQHNlZSBVQ0hBUl9XSElURV9TUEFDRQorICog
QHNlZSB1X2lzV2hpdGVzcGFjZQorICogQHNlZSB1X2lzc3BhY2UKKyAqIEBzZWUgdV9pc0phdmFT
cGFjZUNoYXIKKyAqIEBzZWUgdV9oYXNCaW5hcnlQcm9wZXJ0eQorICogQHN0YWJsZSBJQ1UgMi4x
CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc1VXaGl0ZVNwYWNlKFVDaGFyMzIg
Yyk7CisKKy8qKgorICogR2V0IHRoZSBwcm9wZXJ0eSB2YWx1ZSBmb3IgYW4gZW51bWVyYXRlZCBv
ciBpbnRlZ2VyIFVuaWNvZGUgcHJvcGVydHkgZm9yIGEgY29kZSBwb2ludC4KKyAqIEFsc28gcmV0
dXJucyBiaW5hcnkgYW5kIG1hc2sgcHJvcGVydHkgdmFsdWVzLgorICoKKyAqIFVuaWNvZGUsIGVz
cGVjaWFsbHkgaW4gdmVyc2lvbiAzLjIsIGRlZmluZXMgbWFueSBtb3JlIHByb3BlcnRpZXMgdGhh
biB0aGUKKyAqIG9yaWdpbmFsIHNldCBpbiBVbmljb2RlRGF0YS50eHQuCisgKgorICogVGhlIHBy
b3BlcnRpZXMgQVBJcyBhcmUgaW50ZW5kZWQgdG8gcmVmbGVjdCBVbmljb2RlIHByb3BlcnRpZXMg
YXMgZGVmaW5lZAorICogaW4gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIGFu
ZCBVbmljb2RlIFRlY2huaWNhbCBSZXBvcnRzIChVVFIpLgorICogRm9yIGRldGFpbHMgYWJvdXQg
dGhlIHByb3BlcnRpZXMgc2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvIC4KKyAqIEZvciBuYW1l
cyBvZiBVbmljb2RlIHByb3BlcnRpZXMgc2VlIHRoZSBVQ0QgZmlsZSBQcm9wZXJ0eUFsaWFzZXMu
dHh0LgorICoKKyAqIFNhbXBsZSB1c2FnZToKKyAqIFVFYXN0QXNpYW5XaWR0aCBlYT0oVUVhc3RB
c2lhbldpZHRoKXVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBVQ0hBUl9FQVNUX0FTSUFOX1dJRFRI
KTsKKyAqIFVCb29sIGI9KFVCb29sKXVfZ2V0SW50UHJvcGVydHlWYWx1ZShjLCBVQ0hBUl9JREVP
R1JBUEhJQyk7CisgKgorICogQHBhcmFtIGMgQ29kZSBwb2ludCB0byB0ZXN0LgorICogQHBhcmFt
IHdoaWNoIFVQcm9wZXJ0eSBzZWxlY3RvciBjb25zdGFudCwgaWRlbnRpZmllcyB3aGljaCBwcm9w
ZXJ0eSB0byBjaGVjay4KKyAqICAgICAgICBNdXN0IGJlIFVDSEFSX0JJTkFSWV9TVEFSVDw9d2hp
Y2g8VUNIQVJfQklOQVJZX0xJTUlUCisgKiAgICAgICAgb3IgVUNIQVJfSU5UX1NUQVJUPD13aGlj
aDxVQ0hBUl9JTlRfTElNSVQKKyAqICAgICAgICBvciBVQ0hBUl9NQVNLX1NUQVJUPD13aGljaDxV
Q0hBUl9NQVNLX0xJTUlULgorICogQHJldHVybiBOdW1lcmljIHZhbHVlIHRoYXQgaXMgZGlyZWN0
bHkgdGhlIHByb3BlcnR5IHZhbHVlIG9yLAorICogICAgICAgICBmb3IgZW51bWVyYXRlZCBwcm9w
ZXJ0aWVzLCBjb3JyZXNwb25kcyB0byB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgZW51bWVyYXRl
ZAorICogICAgICAgICBjb25zdGFudCBvZiB0aGUgcmVzcGVjdGl2ZSBwcm9wZXJ0eSB2YWx1ZSBl
bnVtZXJhdGlvbiB0eXBlCisgKiAgICAgICAgIChjYXN0IHRvIGVudW0gdHlwZSBpZiBuZWNlc3Nh
cnkpLgorICogICAgICAgICBSZXR1cm5zIDAgb3IgMSAoZm9yIEZBTFNFL1RSVUUpIGZvciBiaW5h
cnkgVW5pY29kZSBwcm9wZXJ0aWVzLgorICogICAgICAgICBSZXR1cm5zIGEgYml0LW1hc2sgZm9y
IG1hc2sgcHJvcGVydGllcy4KKyAqICAgICAgICAgUmV0dXJucyAwIGlmICd3aGljaCcgaXMgb3V0
IG9mIGJvdW5kcyBvciBpZiB0aGUgVW5pY29kZSB2ZXJzaW9uCisgKiAgICAgICAgIGRvZXMgbm90
IGhhdmUgZGF0YSBmb3IgdGhlIHByb3BlcnR5IGF0IGFsbCwgb3Igbm90IGZvciB0aGlzIGNvZGUg
cG9pbnQuCisgKgorICogQHNlZSBVUHJvcGVydHkKKyAqIEBzZWUgdV9oYXNCaW5hcnlQcm9wZXJ0
eQorICogQHNlZSB1X2dldEludFByb3BlcnR5TWluVmFsdWUKKyAqIEBzZWUgdV9nZXRJbnRQcm9w
ZXJ0eU1heFZhbHVlCisgKiBAc2VlIHVfZ2V0VW5pY29kZVZlcnNpb24KKyAqIEBzdGFibGUgSUNV
IDIuMgorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9nZXRJbnRQcm9wZXJ0eVZh
bHVlKFVDaGFyMzIgYywgVVByb3BlcnR5IHdoaWNoKTsKKworLyoqCisgKiBHZXQgdGhlIG1pbmlt
dW0gdmFsdWUgZm9yIGFuIGVudW1lcmF0ZWQvaW50ZWdlci9iaW5hcnkgVW5pY29kZSBwcm9wZXJ0
eS4KKyAqIENhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdV9nZXRJbnRQcm9wZXJ0eU1heFZhbHVl
CisgKiB0byBhbGxvY2F0ZSBhcnJheXMgb2YgVW5pY29kZVNldCBvciBzaW1pbGFyLgorICoKKyAq
IEBwYXJhbSB3aGljaCBVUHJvcGVydHkgc2VsZWN0b3IgY29uc3RhbnQsIGlkZW50aWZpZXMgd2hp
Y2ggYmluYXJ5IHByb3BlcnR5IHRvIGNoZWNrLgorICogICAgICAgIE11c3QgYmUgVUNIQVJfQklO
QVJZX1NUQVJUPD13aGljaDxVQ0hBUl9CSU5BUllfTElNSVQKKyAqICAgICAgICBvciBVQ0hBUl9J
TlRfU1RBUlQ8PXdoaWNoPFVDSEFSX0lOVF9MSU1JVC4KKyAqIEByZXR1cm4gTWluaW11bSB2YWx1
ZSByZXR1cm5lZCBieSB1X2dldEludFByb3BlcnR5VmFsdWUgZm9yIGEgVW5pY29kZSBwcm9wZXJ0
eS4KKyAqICAgICAgICAgMCBpZiB0aGUgcHJvcGVydHkgc2VsZWN0b3IgaXMgb3V0IG9mIHJhbmdl
LgorICoKKyAqIEBzZWUgVVByb3BlcnR5CisgKiBAc2VlIHVfaGFzQmluYXJ5UHJvcGVydHkKKyAq
IEBzZWUgdV9nZXRVbmljb2RlVmVyc2lvbgorICogQHNlZSB1X2dldEludFByb3BlcnR5TWF4VmFs
dWUKKyAqIEBzZWUgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlCisgKiBAc3RhYmxlIElDVSAyLjIKKyAq
LworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZShV
UHJvcGVydHkgd2hpY2gpOworCisvKioKKyAqIEdldCB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgYW4g
ZW51bWVyYXRlZC9pbnRlZ2VyL2JpbmFyeSBVbmljb2RlIHByb3BlcnR5LgorICogQ2FuIGJlIHVz
ZWQgdG9nZXRoZXIgd2l0aCB1X2dldEludFByb3BlcnR5TWluVmFsdWUKKyAqIHRvIGFsbG9jYXRl
IGFycmF5cyBvZiBVbmljb2RlU2V0IG9yIHNpbWlsYXIuCisgKgorICogRXhhbXBsZXMgZm9yIG1p
bi9tYXggdmFsdWVzIChmb3IgVW5pY29kZSAzLjIpOgorICoKKyAqIC0gVUNIQVJfQklESV9DTEFT
UzogICAgMC8xOCAoVV9MRUZUX1RPX1JJR0hUL1VfQk9VTkRBUllfTkVVVFJBTCkKKyAqIC0gVUNI
QVJfU0NSSVBUOiAgICAgICAgMC80NSAoVVNDUklQVF9DT01NT04vVVNDUklQVF9UQUdCQU5XQSkK
KyAqIC0gVUNIQVJfSURFT0dSQVBISUM6ICAgMC8xICAoRkFMU0UvVFJVRSkKKyAqCisgKiBGb3Ig
dW5kZWZpbmVkIFVQcm9wZXJ0eSBjb25zdGFudCB2YWx1ZXMsIG1pbi9tYXggdmFsdWVzIHdpbGwg
YmUgMC8tMS4KKyAqCisgKiBAcGFyYW0gd2hpY2ggVVByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50
LCBpZGVudGlmaWVzIHdoaWNoIGJpbmFyeSBwcm9wZXJ0eSB0byBjaGVjay4KKyAqICAgICAgICBN
dXN0IGJlIFVDSEFSX0JJTkFSWV9TVEFSVDw9d2hpY2g8VUNIQVJfQklOQVJZX0xJTUlUCisgKiAg
ICAgICAgb3IgVUNIQVJfSU5UX1NUQVJUPD13aGljaDxVQ0hBUl9JTlRfTElNSVQuCisgKiBAcmV0
dXJuIE1heGltdW0gdmFsdWUgcmV0dXJuZWQgYnkgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlIGZvciBh
IFVuaWNvZGUgcHJvcGVydHkuCisgKiAgICAgICAgIDw9MCBpZiB0aGUgcHJvcGVydHkgc2VsZWN0
b3IgaXMgb3V0IG9mIHJhbmdlLgorICoKKyAqIEBzZWUgVVByb3BlcnR5CisgKiBAc2VlIHVfaGFz
QmluYXJ5UHJvcGVydHkKKyAqIEBzZWUgdV9nZXRVbmljb2RlVmVyc2lvbgorICogQHNlZSB1X2dl
dEludFByb3BlcnR5TWF4VmFsdWUKKyAqIEBzZWUgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlCisgKiBA
c3RhYmxlIElDVSAyLjIKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3VfZ2V0SW50
UHJvcGVydHlNYXhWYWx1ZShVUHJvcGVydHkgd2hpY2gpOworCisvKioKKyAqIEdldCB0aGUgbnVt
ZXJpYyB2YWx1ZSBmb3IgYSBVbmljb2RlIGNvZGUgcG9pbnQgYXMgZGVmaW5lZCBpbiB0aGUKKyAq
IFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlLgorICoKKyAqIEEgImRvdWJsZSIgcmV0dXJuIHR5
cGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2UKKyAqIHNvbWUgbnVtZXJpYyB2YWx1ZXMgYXJlIGZyYWN0
aW9ucywgbmVnYXRpdmUsIG9yIHRvbyBsYXJnZSBmb3IgaW50MzJfdC4KKyAqCisgKiBGb3IgY2hh
cmFjdGVycyB3aXRob3V0IGFueSBudW1lcmljIHZhbHVlcyBpbiB0aGUgVW5pY29kZSBDaGFyYWN0
ZXIgRGF0YWJhc2UsCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIFVfTk9fTlVNRVJJQ19W
QUxVRS4KKyAqCisgKiBTaW1pbGFyIHRvIGphdmEubGFuZy5DaGFyYWN0ZXIuZ2V0TnVtZXJpY1Zh
bHVlKCksIGJ1dCB1X2dldE51bWVyaWNWYWx1ZSgpCisgKiBhbHNvIHN1cHBvcnRzIG5lZ2F0aXZl
IHZhbHVlcywgbGFyZ2UgdmFsdWVzLCBhbmQgZnJhY3Rpb25zLAorICogd2hpbGUgSmF2YSdzIGdl
dE51bWVyaWNWYWx1ZSgpIHJldHVybnMgdmFsdWVzIDEwLi4zNSBmb3IgQVNDSUkgbGV0dGVycy4K
KyAqCisgKiBAcGFyYW0gYyBDb2RlIHBvaW50IHRvIGdldCB0aGUgbnVtZXJpYyB2YWx1ZSBmb3Iu
CisgKiBAcmV0dXJuIE51bWVyaWMgdmFsdWUgb2YgYywgb3IgVV9OT19OVU1FUklDX1ZBTFVFIGlm
IG5vbmUgaXMgZGVmaW5lZC4KKyAqCisgKiBAc2VlIFVfTk9fTlVNRVJJQ19WQUxVRQorICogQHN0
YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RBQkxFIGRvdWJsZSBVX0VYUE9SVDIKK3VfZ2V0TnVtZXJp
Y1ZhbHVlKFVDaGFyMzIgYyk7CisKKy8qKgorICogU3BlY2lhbCB2YWx1ZSB0aGF0IGlzIHJldHVy
bmVkIGJ5IHVfZ2V0TnVtZXJpY1ZhbHVlIHdoZW4KKyAqIG5vIG51bWVyaWMgdmFsdWUgaXMgZGVm
aW5lZCBmb3IgYSBjb2RlIHBvaW50LgorICoKKyAqIEBzZWUgdV9nZXROdW1lcmljVmFsdWUKKyAq
IEBzdGFibGUgSUNVIDIuMgorICovCisjZGVmaW5lIFVfTk9fTlVNRVJJQ19WQUxVRSAoKGRvdWJs
ZSktMTIzNDU2Nzg5LikKKworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmll
ZCBjb2RlIHBvaW50IGhhcyB0aGUgZ2VuZXJhbCBjYXRlZ29yeSAiTGwiCisgKiAobG93ZXJjYXNl
IGxldHRlcikuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzTG93ZXJDYXNl
KCkuCisgKgorICogVGhpcyBtaXNzZXMgc29tZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsc28gbG93
ZXJjYXNlIGJ1dAorICogaGF2ZSBhIGRpZmZlcmVudCBnZW5lcmFsIGNhdGVnb3J5IHZhbHVlLgor
ICogSW4gb3JkZXIgdG8gaW5jbHVkZSB0aG9zZSwgdXNlIFVDSEFSX0xPV0VSQ0FTRS4KKyAqCisg
KiBJbiBhZGRpdGlvbiB0byBiZWluZyBlcXVpdmFsZW50IHRvIGEgSmF2YSBmdW5jdGlvbiwgdGhp
cyBhbHNvIHNlcnZlcworICogYXMgYSBDL1BPU0lYIG1pZ3JhdGlvbiBmdW5jdGlvbi4KKyAqIFNl
ZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIgY2xhc3NpZmljYXRpb24gZnVu
Y3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgaGVhZGVy
IGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBA
cmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYW4gTGwgbG93ZXJjYXNlIGxldHRlcgor
ICoKKyAqIEBzZWUgVUNIQVJfTE9XRVJDQVNFCisgKiBAc2VlIHVfaXN1cHBlcgorICogQHNlZSB1
X2lzdGl0bGUKKyAqIEBzZWUgdV9pc2xvd2VyCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9T
VEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzbG93ZXIoVUNoYXIzMiBjKTsKKworLyoqCisgKiBE
ZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGhhcyB0aGUgZ2VuZXJh
bCBjYXRlZ29yeSAiTHUiCisgKiAodXBwZXJjYXNlIGxldHRlcikuCisgKgorICogU2FtZSBhcyBq
YXZhLmxhbmcuQ2hhcmFjdGVyLmlzVXBwZXJDYXNlKCkuCisgKgorICogVGhpcyBtaXNzZXMgc29t
ZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsc28gdXBwZXJjYXNlIGJ1dAorICogaGF2ZSBhIGRpZmZl
cmVudCBnZW5lcmFsIGNhdGVnb3J5IHZhbHVlLgorICogSW4gb3JkZXIgdG8gaW5jbHVkZSB0aG9z
ZSwgdXNlIFVDSEFSX1VQUEVSQ0FTRS4KKyAqCisgKiBJbiBhZGRpdGlvbiB0byBiZWluZyBlcXVp
dmFsZW50IHRvIGEgSmF2YSBmdW5jdGlvbiwgdGhpcyBhbHNvIHNlcnZlcworICogYXMgYSBDL1BP
U0lYIG1pZ3JhdGlvbiBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJ
WCBjaGFyYWN0ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRh
dGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhl
IGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9p
bnQgaXMgYW4gTHUgdXBwZXJjYXNlIGxldHRlcgorICoKKyAqIEBzZWUgVUNIQVJfVVBQRVJDQVNF
CisgKiBAc2VlIHVfaXNsb3dlcgorICogQHNlZSB1X2lzdGl0bGUKKyAqIEBzZWUgdV90b2xvd2Vy
CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lz
dXBwZXIoVUNoYXIzMiBjKTsKKworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNp
ZmllZCBjb2RlIHBvaW50IGlzIGEgdGl0bGVjYXNlIGxldHRlci4KKyAqIFRydWUgZm9yIGdlbmVy
YWwgY2F0ZWdvcnkgIkx0IiAodGl0bGVjYXNlIGxldHRlcikuCisgKgorICogU2FtZSBhcyBqYXZh
LmxhbmcuQ2hhcmFjdGVyLmlzVGl0bGVDYXNlKCkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUg
cG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMg
YW4gTHQgdGl0bGVjYXNlIGxldHRlcgorICoKKyAqIEBzZWUgdV9pc3VwcGVyCisgKiBAc2VlIHVf
aXNsb3dlcgorICogQHNlZSB1X3RvdGl0bGUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NU
QUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXN0aXRsZShVQ2hhcjMyIGMpOworCisvKioKKyAqIERl
dGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBkaWdpdCBjaGFy
YWN0ZXIgYWNjb3JkaW5nIHRvIEphdmEuCisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGggZ2Vu
ZXJhbCBjYXRlZ29yeSAiTmQiIChkZWNpbWFsIGRpZ2l0IG51bWJlcnMpLgorICogQmVnaW5uaW5n
IHdpdGggVW5pY29kZSA0LCB0aGlzIGlzIHRoZSBzYW1lIGFzCisgKiB0ZXN0aW5nIGZvciB0aGUg
TnVtZXJpY19UeXBlIG9mIERlY2ltYWwuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFj
dGVyLmlzRGlnaXQoKS4KKyAqCisgKiBJbiBhZGRpdGlvbiB0byBiZWluZyBlcXVpdmFsZW50IHRv
IGEgSmF2YSBmdW5jdGlvbiwgdGhpcyBhbHNvIHNlcnZlcworICogYXMgYSBDL1BPU0lYIG1pZ3Jh
dGlvbiBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0
ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0
aGUgdG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9p
bnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSBk
aWdpdCBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRvIENoYXJhY3Rlci5pc0RpZ2l0KCkKKyAqCisgKiBA
c3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzZGlnaXQo
VUNoYXIzMiBjKTsKKworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBj
b2RlIHBvaW50IGlzIGEgbGV0dGVyIGNoYXJhY3Rlci4KKyAqIFRydWUgZm9yIGdlbmVyYWwgY2F0
ZWdvcmllcyAiTCIgKGxldHRlcnMpLgorICoKKyAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rl
ci5pc0xldHRlcigpLgorICoKKyAqIEluIGFkZGl0aW9uIHRvIGJlaW5nIGVxdWl2YWxlbnQgdG8g
YSBKYXZhIGZ1bmN0aW9uLCB0aGlzIGFsc28gc2VydmVzCisgKiBhcyBhIEMvUE9TSVggbWlncmF0
aW9uIGZ1bmN0aW9uLgorICogU2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3Rl
ciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlvbnMgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGF0IHRo
ZSB0b3Agb2YgdGhpcyBoZWFkZXIgZmlsZS4KKyAqCisgKiBAcGFyYW0gYyB0aGUgY29kZSBwb2lu
dCB0byBiZSB0ZXN0ZWQKKyAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhIGxl
dHRlciBjaGFyYWN0ZXIKKyAqCisgKiBAc2VlIHVfaXNkaWdpdAorICogQHNlZSB1X2lzYWxudW0K
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNh
bHBoYShVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lm
aWVkIGNvZGUgcG9pbnQgaXMgYW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcgorICogKGxldHRlciBv
ciBkaWdpdCkgYWNjb3JkaW5nIHRvIEphdmEuCisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGgg
Z2VuZXJhbCBjYXRlZ29yaWVzCisgKiAiTCIgKGxldHRlcnMpIGFuZCAiTmQiIChkZWNpbWFsIGRp
Z2l0IG51bWJlcnMpLgorICoKKyAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5pc0xldHRl
ck9yRGlnaXQoKS4KKyAqCisgKiBJbiBhZGRpdGlvbiB0byBiZWluZyBlcXVpdmFsZW50IHRvIGEg
SmF2YSBmdW5jdGlvbiwgdGhpcyBhbHNvIHNlcnZlcworICogYXMgYSBDL1BPU0lYIG1pZ3JhdGlv
biBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIg
Y2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0aGUg
dG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQg
dG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYW4gYWxw
aGFudW1lcmljIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gQ2hhcmFjdGVyLmlzTGV0dGVyT3JEaWdp
dCgpCisgKgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JU
MgordV9pc2FsbnVtKFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRo
ZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIGhleGFkZWNpbWFsIGRpZ2l0LgorICogVGhpcyBp
cyBlcXVpdmFsZW50IHRvIHVfZGlnaXQoYywgMTYpPj0wLgorICogVHJ1ZSBmb3IgY2hhcmFjdGVy
cyB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIiAoZGVjaW1hbCBkaWdpdCBudW1iZXJzKQorICog
YXMgd2VsbCBhcyBMYXRpbiBsZXR0ZXJzIGEtZiBhbmQgQS1GIGluIGJvdGggQVNDSUkgYW5kIEZ1
bGx3aWR0aCBBU0NJSS4KKyAqIChUaGF0IGlzLCBmb3IgbGV0dGVycyB3aXRoIGNvZGUgcG9pbnRz
CisgKiAwMDQxLi4wMDQ2LCAwMDYxLi4wMDY2LCBGRjIxLi5GRjI2LCBGRjQxLi5GRjQ2LikKKyAq
CisgKiBJbiBvcmRlciB0byBuYXJyb3cgdGhlIGRlZmluaXRpb24gb2YgaGV4YWRlY2ltYWwgZGln
aXRzIHRvIG9ubHkgQVNDSUkKKyAqIGNoYXJhY3RlcnMsIHVzZSAoYzw9MHg3ZiAmJiB1X2lzeGRp
Z2l0KGMpKS4KKyAqCisgKiBUaGlzIGlzIGEgQy9QT1NJWCBtaWdyYXRpb24gZnVuY3Rpb24uCisg
KiBTZWUgdGhlIGNvbW1lbnRzIGFib3V0IEMvUE9TSVggY2hhcmFjdGVyIGNsYXNzaWZpY2F0aW9u
IGZ1bmN0aW9ucyBpbiB0aGUKKyAqIGRvY3VtZW50YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGhl
YWRlciBmaWxlLgorICoKKyAqIEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAor
ICogQHJldHVybiBUUlVFIGlmIHRoZSBjb2RlIHBvaW50IGlzIGEgaGV4YWRlY2ltYWwgZGlnaXQK
KyAqCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1
X2lzeGRpZ2l0KFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBz
cGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIHB1bmN0dWF0aW9uIGNoYXJhY3Rlci4KKyAqIFRydWUg
Zm9yIGNoYXJhY3RlcnMgd2l0aCBnZW5lcmFsIGNhdGVnb3JpZXMgIlAiIChwdW5jdHVhdGlvbiku
CisgKgorICogVGhpcyBpcyBhIEMvUE9TSVggbWlncmF0aW9uIGZ1bmN0aW9uLgorICogU2VlIHRo
ZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiBmdW5jdGlv
bnMgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBoZWFkZXIgZmls
ZS4KKyAqCisgKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKKyAqIEByZXR1
cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBpcyBhIHB1bmN0dWF0aW9uIGNoYXJhY3RlcgorICoK
KyAqIEBzdGFibGUgSUNVIDIuNgorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNw
dW5jdChVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lm
aWVkIGNvZGUgcG9pbnQgaXMgYSAiZ3JhcGhpYyIgY2hhcmFjdGVyCisgKiAocHJpbnRhYmxlLCBl
eGNsdWRpbmcgc3BhY2VzKS4KKyAqIFRSVUUgZm9yIGFsbCBjaGFyYWN0ZXJzIGV4Y2VwdCB0aG9z
ZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcmllcworICogIkNjIiAoY29udHJvbCBjb2RlcyksICJDZiIg
KGZvcm1hdCBjb250cm9scyksICJDcyIgKHN1cnJvZ2F0ZXMpLAorICogIkNuIiAodW5hc3NpZ25l
ZCksIGFuZCAiWiIgKHNlcGFyYXRvcnMpLgorICoKKyAqIFRoaXMgaXMgYSBDL1BPU0lYIG1pZ3Jh
dGlvbiBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0
ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0
aGUgdG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9p
bnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSAi
Z3JhcGhpYyIgY2hhcmFjdGVyCisgKgorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxF
IFVCb29sIFVfRVhQT1JUMgordV9pc2dyYXBoKFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJt
aW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhICJibGFuayIgb3IgImhv
cml6b250YWwgc3BhY2UiLAorICogYSBjaGFyYWN0ZXIgdGhhdCB2aXNpYmx5IHNlcGFyYXRlcyB3
b3JkcyBvbiBhIGxpbmUuCisgKiBUaGUgZm9sbG93aW5nIGFyZSBlcXVpdmFsZW50IGRlZmluaXRp
b25zOgorICoKKyAqIFRSVUUgZm9yIFVuaWNvZGUgV2hpdGVfU3BhY2UgY2hhcmFjdGVycyBleGNl
cHQgZm9yICJ2ZXJ0aWNhbCBzcGFjZSBjb250cm9scyIKKyAqIHdoZXJlICJ2ZXJ0aWNhbCBzcGFj
ZSBjb250cm9scyIgYXJlIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczoKKyAqIFUrMDAwQSAoTEYp
IFUrMDAwQiAoVlQpIFUrMDAwQyAoRkYpIFUrMDAwRCAoQ1IpIFUrMDA4NSAoTkVMKSBVKzIwMjgg
KExTKSBVKzIwMjkgKFBTKQorICoKKyAqIHNhbWUgYXMKKyAqCisgKiBUUlVFIGZvciBVKzAwMDkg
KFRBQikgYW5kIGNoYXJhY3RlcnMgd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICJacyIgKHNwYWNlIHNl
cGFyYXRvcnMpCisgKiBleGNlcHQgWmVybyBXaWR0aCBTcGFjZSAoWldTUCwgVSsyMDBCKS4KKyAq
CisgKiBOb3RlOiBUaGVyZSBhcmUgc2V2ZXJhbCBJQ1Ugd2hpdGVzcGFjZSBmdW5jdGlvbnM7IHBs
ZWFzZSBzZWUgdGhlIHVjaGFyLmgKKyAqIGZpbGUgZG9jdW1lbnRhdGlvbiBmb3IgYSBkZXRhaWxl
ZCBjb21wYXJpc29uLgorICoKKyAqIFRoaXMgaXMgYSBDL1BPU0lYIG1pZ3JhdGlvbiBmdW5jdGlv
bi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJvdXQgQy9QT1NJWCBjaGFyYWN0ZXIgY2xhc3NpZmlj
YXRpb24gZnVuY3Rpb25zIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhdCB0aGUgdG9wIG9mIHRo
aXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVz
dGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSAiYmxhbmsiCisgKgor
ICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc2Js
YW5rKFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZp
ZWQgY29kZSBwb2ludCBpcyAiZGVmaW5lZCIsCisgKiB3aGljaCB1c3VhbGx5IG1lYW5zIHRoYXQg
aXQgaXMgYXNzaWduZWQgYSBjaGFyYWN0ZXIuCisgKiBUcnVlIGZvciBnZW5lcmFsIGNhdGVnb3Jp
ZXMgb3RoZXIgdGhhbiAiQ24iIChvdGhlciwgbm90IGFzc2lnbmVkKSwKKyAqIGkuZS4sIHRydWUg
Zm9yIGFsbCBjb2RlIHBvaW50cyBtZW50aW9uZWQgaW4gVW5pY29kZURhdGEudHh0LgorICoKKyAq
IE5vdGUgdGhhdCBub24tY2hhcmFjdGVyIGNvZGUgcG9pbnRzIChlLmcuLCBVK0ZERDApIGFyZSBu
b3QgImRlZmluZWQiCisgKiAodGhleSBhcmUgQ24pLCBidXQgc3Vycm9nYXRlIGNvZGUgcG9pbnRz
IGFyZSAiZGVmaW5lZCIgKENzKS4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIu
aXNEZWZpbmVkKCkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVk
CisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYXNzaWduZWQgYSBjaGFyYWN0
ZXIKKyAqCisgKiBAc2VlIHVfaXNkaWdpdAorICogQHNlZSB1X2lzYWxwaGEKKyAqIEBzZWUgdV9p
c2FsbnVtCisgKiBAc2VlIHVfaXN1cHBlcgorICogQHNlZSB1X2lzbG93ZXIKKyAqIEBzZWUgdV9p
c3RpdGxlCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQy
Cit1X2lzZGVmaW5lZChVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgaWYgdGhlIHNw
ZWNpZmllZCBjaGFyYWN0ZXIgaXMgYSBzcGFjZSBjaGFyYWN0ZXIgb3Igbm90LgorICoKKyAqIE5v
dGU6IFRoZXJlIGFyZSBzZXZlcmFsIElDVSB3aGl0ZXNwYWNlIGZ1bmN0aW9uczsgcGxlYXNlIHNl
ZSB0aGUgdWNoYXIuaAorICogZmlsZSBkb2N1bWVudGF0aW9uIGZvciBhIGRldGFpbGVkIGNvbXBh
cmlzb24uCisgKgorICogVGhpcyBpcyBhIEMvUE9TSVggbWlncmF0aW9uIGZ1bmN0aW9uLgorICog
U2VlIHRoZSBjb21tZW50cyBhYm91dCBDL1BPU0lYIGNoYXJhY3RlciBjbGFzc2lmaWNhdGlvbiBm
dW5jdGlvbnMgaW4gdGhlCisgKiBkb2N1bWVudGF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBoZWFk
ZXIgZmlsZS4KKyAqCisgKiBAcGFyYW0gYyAgICB0aGUgY2hhcmFjdGVyIHRvIGJlIHRlc3RlZAor
ICogQHJldHVybiAgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIGEgc3BhY2UgY2hhcmFjdGVyOyBm
YWxzZSBvdGhlcndpc2UuCisgKgorICogQHNlZSB1X2lzSmF2YVNwYWNlQ2hhcgorICogQHNlZSB1
X2lzV2hpdGVzcGFjZQorICogQHNlZSB1X2lzVVdoaXRlU3BhY2UKKyAqIEBzdGFibGUgSUNVIDIu
MAorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNzcGFjZShVQ2hhcjMyIGMpOwor
CisvKioKKyAqIERldGVybWluZSBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBzcGFj
ZSBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRvIEphdmEuCisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdp
dGggZ2VuZXJhbCBjYXRlZ29yaWVzICJaIiAoc2VwYXJhdG9ycyksCisgKiB3aGljaCBkb2VzIG5v
dCBpbmNsdWRlIGNvbnRyb2wgY29kZXMgKGUuZy4sIFRBQiBvciBMaW5lIEZlZWQpLgorICoKKyAq
IFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5pc1NwYWNlQ2hhcigpLgorICoKKyAqIE5vdGU6
IFRoZXJlIGFyZSBzZXZlcmFsIElDVSB3aGl0ZXNwYWNlIGZ1bmN0aW9uczsgcGxlYXNlIHNlZSB0
aGUgdWNoYXIuaAorICogZmlsZSBkb2N1bWVudGF0aW9uIGZvciBhIGRldGFpbGVkIGNvbXBhcmlz
b24uCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0
dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgYSBzcGFjZSBjaGFyYWN0ZXIgYWNjb3JkaW5n
IHRvIENoYXJhY3Rlci5pc1NwYWNlQ2hhcigpCisgKgorICogQHNlZSB1X2lzc3BhY2UKKyAqIEBz
ZWUgdV9pc1doaXRlc3BhY2UKKyAqIEBzZWUgdV9pc1VXaGl0ZVNwYWNlCisgKiBAc3RhYmxlIElD
VSAyLjYKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzSmF2YVNwYWNlQ2hhcihV
Q2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjb2RlIHBv
aW50IGlzIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRvIEphdmEvSUNVLgorICog
QSBjaGFyYWN0ZXIgaXMgY29uc2lkZXJlZCB0byBiZSBhIEphdmEgd2hpdGVzcGFjZSBjaGFyYWN0
ZXIgaWYgYW5kIG9ubHkKKyAqIGlmIGl0IHNhdGlzZmllcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBj
cml0ZXJpYToKKyAqCisgKiAtIEl0IGlzIGEgVW5pY29kZSBzZXBhcmF0b3IgKGNhdGVnb3JpZXMg
IloiKSwgYnV0IGlzIG5vdAorICogICAgICBhIG5vLWJyZWFrIHNwYWNlIChVKzAwQTAgTkJTUCBv
ciBVKzIwMDcgRmlndXJlIFNwYWNlIG9yIFUrMjAyRiBOYXJyb3cgTkJTUCkuCisgKiAtIEl0IGlz
IFUrMDAwOSBIT1JJWk9OVEFMIFRBQlVMQVRJT04uCisgKiAtIEl0IGlzIFUrMDAwQSBMSU5FIEZF
RUQuCisgKiAtIEl0IGlzIFUrMDAwQiBWRVJUSUNBTCBUQUJVTEFUSU9OLgorICogLSBJdCBpcyBV
KzAwMEMgRk9STSBGRUVELgorICogLSBJdCBpcyBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOLgorICog
LSBJdCBpcyBVKzAwMUMgRklMRSBTRVBBUkFUT1IuCisgKiAtIEl0IGlzIFUrMDAxRCBHUk9VUCBT
RVBBUkFUT1IuCisgKiAtIEl0IGlzIFUrMDAxRSBSRUNPUkQgU0VQQVJBVE9SLgorICogLSBJdCBp
cyBVKzAwMUYgVU5JVCBTRVBBUkFUT1IuCisgKiAtIEl0IGlzIFUrMDA4NSBORVhUIExJTkUuCisg
KgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZSgpIGV4Y2VwdCB0
aGF0IEphdmEgb21pdHMgVSswMDg1LgorICoKKyAqIE5vdGU6IFRoZXJlIGFyZSBzZXZlcmFsIElD
VSB3aGl0ZXNwYWNlIGZ1bmN0aW9uczsgcGxlYXNlIHNlZSB0aGUgdWNoYXIuaAorICogZmlsZSBk
b2N1bWVudGF0aW9uIGZvciBhIGRldGFpbGVkIGNvbXBhcmlzb24uCisgKgorICogQHBhcmFtIGMg
dGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUg
cG9pbnQgaXMgYSB3aGl0ZXNwYWNlIGNoYXJhY3RlciBhY2NvcmRpbmcgdG8gSmF2YS9JQ1UKKyAq
CisgKiBAc2VlIHVfaXNzcGFjZQorICogQHNlZSB1X2lzSmF2YVNwYWNlQ2hhcgorICogQHNlZSB1
X2lzVVdoaXRlU3BhY2UKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQm9vbCBV
X0VYUE9SVDIKK3VfaXNXaGl0ZXNwYWNlKFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5l
cyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIGNvbnRyb2wgY2hhcmFjdGVy
CisgKiAoYXMgZGVmaW5lZCBieSB0aGlzIGZ1bmN0aW9uKS4KKyAqIEEgY29udHJvbCBjaGFyYWN0
ZXIgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgKiAtIElTTyA4LWJpdCBjb250cm9sIGNoYXJh
Y3RlciAoVSswMDAwLi5VKzAwMWYgYW5kIFUrMDA3Zi4uVSswMDlmKQorICogLSBVX0NPTlRST0xf
Q0hBUiAoQ2MpCisgKiAtIFVfRk9STUFUX0NIQVIgKENmKQorICogLSBVX0xJTkVfU0VQQVJBVE9S
IChabCkKKyAqIC0gVV9QQVJBR1JBUEhfU0VQQVJBVE9SIChacCkKKyAqCisgKiBUaGlzIGlzIGEg
Qy9QT1NJWCBtaWdyYXRpb24gZnVuY3Rpb24uCisgKiBTZWUgdGhlIGNvbW1lbnRzIGFib3V0IEMv
UE9TSVggY2hhcmFjdGVyIGNsYXNzaWZpY2F0aW9uIGZ1bmN0aW9ucyBpbiB0aGUKKyAqIGRvY3Vt
ZW50YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGhlYWRlciBmaWxlLgorICoKKyAqIEBwYXJhbSBj
IHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICogQHJldHVybiBUUlVFIGlmIHRoZSBjb2Rl
IHBvaW50IGlzIGEgY29udHJvbCBjaGFyYWN0ZXIKKyAqCisgKiBAc2VlIFVDSEFSX0RFRkFVTFRf
SUdOT1JBQkxFX0NPREVfUE9JTlQKKyAqIEBzZWUgdV9pc3ByaW50CisgKiBAc3RhYmxlIElDVSAy
LjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzY250cmwoVUNoYXIzMiBjKTsK
KworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlz
IGFuIElTTyBjb250cm9sIGNvZGUuCisgKiBUcnVlIGZvciBVKzAwMDAuLlUrMDAxZiBhbmQgVSsw
MDdmLi5VKzAwOWYgKGdlbmVyYWwgY2F0ZWdvcnkgIkNjIikuCisgKgorICogU2FtZSBhcyBqYXZh
LmxhbmcuQ2hhcmFjdGVyLmlzSVNPQ29udHJvbCgpLgorICoKKyAqIEBwYXJhbSBjIHRoZSBjb2Rl
IHBvaW50IHRvIGJlIHRlc3RlZAorICogQHJldHVybiBUUlVFIGlmIHRoZSBjb2RlIHBvaW50IGlz
IGFuIElTTyBjb250cm9sIGNvZGUKKyAqCisgKiBAc2VlIHVfaXNjbnRybAorICogQHN0YWJsZSBJ
Q1UgMi42CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc0lTT0NvbnRyb2woVUNo
YXIzMiBjKTsKKworLyoqCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2Rl
IHBvaW50IGlzIGEgcHJpbnRhYmxlIGNoYXJhY3Rlci4KKyAqIFRydWUgZm9yIGdlbmVyYWwgY2F0
ZWdvcmllcyA8ZW0+b3RoZXI8L2VtPiB0aGFuICJDIiAoY29udHJvbHMpLgorICoKKyAqIFRoaXMg
aXMgYSBDL1BPU0lYIG1pZ3JhdGlvbiBmdW5jdGlvbi4KKyAqIFNlZSB0aGUgY29tbWVudHMgYWJv
dXQgQy9QT1NJWCBjaGFyYWN0ZXIgY2xhc3NpZmljYXRpb24gZnVuY3Rpb25zIGluIHRoZQorICog
ZG9jdW1lbnRhdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgaGVhZGVyIGZpbGUuCisgKgorICogQHBh
cmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhl
IGNvZGUgcG9pbnQgaXMgYSBwcmludGFibGUgY2hhcmFjdGVyCisgKgorICogQHNlZSBVQ0hBUl9E
RUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UCisgKiBAc2VlIHVfaXNjbnRybAorICogQHN0YWJs
ZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc3ByaW50KFVDaGFy
MzIgYyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgY29kZSBw
b2ludCBpcyBhIGJhc2UgY2hhcmFjdGVyLgorICogVHJ1ZSBmb3IgZ2VuZXJhbCBjYXRlZ29yaWVz
ICJMIiAobGV0dGVycyksICJOIiAobnVtYmVycyksCisgKiAiTWMiIChzcGFjaW5nIGNvbWJpbmlu
ZyBtYXJrcyksIGFuZCAiTWUiIChlbmNsb3NpbmcgbWFya3MpLgorICoKKyAqIE5vdGUgdGhhdCB0
aGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBVbmljb2RlIGRlZmluaXRpb24gaW4KKyAqIGNoYXB0
ZXIgMy41LCBjb25mb3JtYW5jZSBjbGF1c2UgRDEzLAorICogd2hpY2ggZGVmaW5lcyBiYXNlIGNo
YXJhY3RlcnMgdG8gYmUgYWxsIGNoYXJhY3RlcnMgKG5vdCBDbikKKyAqIHRoYXQgZG8gbm90IGdy
YXBoaWNhbGx5IGNvbWJpbmUgd2l0aCBwcmVjZWRpbmcgY2hhcmFjdGVycyAoTSkKKyAqIGFuZCB0
aGF0IGFyZSBuZWl0aGVyIGNvbnRyb2wgKENjKSBvciBmb3JtYXQgKENmKSBjaGFyYWN0ZXJzLgor
ICoKKyAqIEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICogQHJldHVybiBU
UlVFIGlmIHRoZSBjb2RlIHBvaW50IGlzIGEgYmFzZSBjaGFyYWN0ZXIgYWNjb3JkaW5nIHRvIHRo
aXMgZnVuY3Rpb24KKyAqCisgKiBAc2VlIHVfaXNhbHBoYQorICogQHNlZSB1X2lzZGlnaXQKKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNiYXNl
KFVDaGFyMzIgYyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgYmlkaXJlY3Rpb25hbCBjYXRlZ29y
eSB2YWx1ZSBmb3IgdGhlIGNvZGUgcG9pbnQsCisgKiB3aGljaCBpcyB1c2VkIGluIHRoZSBVbmlj
b2RlIGJpZGlyZWN0aW9uYWwgYWxnb3JpdGhtCisgKiAoVUFYICM5IGh0dHA6Ly93d3cudW5pY29k
ZS5vcmcvcmVwb3J0cy90cjkvKS4KKyAqIE5vdGUgdGhhdCBzb21lIDxlbT51bmFzc2lnbmVkPC9l
bT4gY29kZSBwb2ludHMgaGF2ZSBiaWRpIHZhbHVlcworICogb2YgUiBvciBBTCBiZWNhdXNlIHRo
ZXkgYXJlIGluIGJsb2NrcyB0aGF0IGFyZSByZXNlcnZlZAorICogZm9yIFJpZ2h0LVRvLUxlZnQg
c2NyaXB0cy4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuZ2V0RGlyZWN0aW9u
YWxpdHkoKQorICoKKyAqIEBwYXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICog
QHJldHVybiB0aGUgYmlkaXJlY3Rpb25hbCBjYXRlZ29yeSAoVUNoYXJEaXJlY3Rpb24pIHZhbHVl
CisgKgorICogQHNlZSBVQ2hhckRpcmVjdGlvbgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1Vf
U1RBQkxFIFVDaGFyRGlyZWN0aW9uIFVfRVhQT1JUMgordV9jaGFyRGlyZWN0aW9uKFVDaGFyMzIg
Yyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb2RlIHBvaW50IGhhcyB0aGUg
QmlkaV9NaXJyb3JlZCBwcm9wZXJ0eS4KKyAqIFRoaXMgcHJvcGVydHkgaXMgc2V0IGZvciBjaGFy
YWN0ZXJzIHRoYXQgYXJlIGNvbW1vbmx5IHVzZWQgaW4KKyAqIFJpZ2h0LVRvLUxlZnQgY29udGV4
dHMgYW5kIG5lZWQgdG8gYmUgZGlzcGxheWVkIHdpdGggYSAibWlycm9yZWQiCisgKiBnbHlwaC4K
KyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNNaXJyb3JlZCgpLgorICogU2Ft
ZSBhcyBVQ0hBUl9CSURJX01JUlJPUkVECisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQg
dG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNoYXJhY3RlciBoYXMgdGhlIEJp
ZGlfTWlycm9yZWQgcHJvcGVydHkKKyAqCisgKiBAc2VlIFVDSEFSX0JJRElfTUlSUk9SRUQKKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNNaXJy
b3JlZChVQ2hhcjMyIGMpOworCisvKioKKyAqIE1hcHMgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIg
dG8gYSAibWlycm9yLWltYWdlIiBjaGFyYWN0ZXIuCisgKiBGb3IgY2hhcmFjdGVycyB3aXRoIHRo
ZSBCaWRpX01pcnJvcmVkIHByb3BlcnR5LCBpbXBsZW1lbnRhdGlvbnMKKyAqIHNvbWV0aW1lcyBu
ZWVkIGEgInBvb3IgbWFuJ3MiIG1hcHBpbmcgdG8gYW5vdGhlciBVbmljb2RlCisgKiBjaGFyYWN0
ZXIgKGNvZGUgcG9pbnQpIHN1Y2ggdGhhdCB0aGUgZGVmYXVsdCBnbHlwaCBtYXkgc2VydmUKKyAq
IGFzIHRoZSBtaXJyb3ItaW1hZ2Ugb2YgdGhlIGRlZmF1bHQgZ2x5cGggb2YgdGhlIHNwZWNpZmll
ZAorICogY2hhcmFjdGVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGV4dCBjb252ZXJzaW9uIHRvIGFu
ZCBmcm9tCisgKiBjb2RlcGFnZXMgd2l0aCB2aXN1YWwgb3JkZXIsIGFuZCBmb3IgZGlzcGxheXMg
d2l0aG91dCBnbHlwaAorICogc2VsZWNldGlvbiBjYXBhYmlsaXRpZXMuCisgKgorICogQHBhcmFt
IGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgbWFwcGVkCisgKiBAcmV0dXJuIGFub3RoZXIgVW5pY29k
ZSBjb2RlIHBvaW50IHRoYXQgbWF5IHNlcnZlIGFzIGEgbWlycm9yLWltYWdlCisgKiAgICAgICAg
IHN1YnN0aXR1dGUsIG9yIGMgaXRzZWxmIGlmIHRoZXJlIGlzIG5vIHN1Y2ggbWFwcGluZyBvciBj
CisgKiAgICAgICAgIGRvZXMgbm90IGhhdmUgdGhlIEJpZGlfTWlycm9yZWQgcHJvcGVydHkKKyAq
CisgKiBAc2VlIFVDSEFSX0JJRElfTUlSUk9SRUQKKyAqIEBzZWUgdV9pc01pcnJvcmVkCisgKiBA
c3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3VfY2hhck1p
cnJvcihVQ2hhcjMyIGMpOworCisvKioKKyAqIFJldHVybnMgdGhlIGdlbmVyYWwgY2F0ZWdvcnkg
dmFsdWUgZm9yIHRoZSBjb2RlIHBvaW50LgorICoKKyAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJh
Y3Rlci5nZXRUeXBlKCkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVz
dGVkCisgKiBAcmV0dXJuIHRoZSBnZW5lcmFsIGNhdGVnb3J5IChVQ2hhckNhdGVnb3J5KSB2YWx1
ZQorICoKKyAqIEBzZWUgVUNoYXJDYXRlZ29yeQorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1Vf
U1RBQkxFIGludDhfdCBVX0VYUE9SVDIKK3VfY2hhclR5cGUoVUNoYXIzMiBjKTsKKworLyoqCisg
KiBHZXQgYSBzaW5nbGUtYml0IGJpdCBzZXQgZm9yIHRoZSBnZW5lcmFsIGNhdGVnb3J5IG9mIGEg
Y2hhcmFjdGVyLgorICogVGhpcyBiaXQgc2V0IGNhbiBiZSBjb21wYXJlZCBiaXR3aXNlIHdpdGgg
VV9HQ19TTV9NQVNLLCBVX0dDX0xfTUFTSywgZXRjLgorICogU2FtZSBhcyBVX01BU0sodV9jaGFy
VHlwZShjKSkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisg
KiBAcmV0dXJuIGEgc2luZ2xlLWJpdCBtYXNrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdlbmVyYWwg
Y2F0ZWdvcnkgKFVDaGFyQ2F0ZWdvcnkpIHZhbHVlCisgKgorICogQHNlZSB1X2NoYXJUeXBlCisg
KiBAc2VlIFVDaGFyQ2F0ZWdvcnkKKyAqIEBzZWUgVV9HQ19DTl9NQVNLCisgKiBAc3RhYmxlIElD
VSAyLjEKKyAqLworI2RlZmluZSBVX0dFVF9HQ19NQVNLKGMpIFVfTUFTSyh1X2NoYXJUeXBlKGMp
KQorCisvKioKKyAqIENhbGxiYWNrIGZyb20gdV9lbnVtQ2hhclR5cGVzKCksIGlzIGNhbGxlZCBm
b3IgZWFjaCBjb250aWd1b3VzIHJhbmdlCisgKiBvZiBjb2RlIHBvaW50cyBjICh3aGVyZSBzdGFy
dDw9YzxsaW1pdCkKKyAqIHdpdGggdGhlIHNhbWUgVW5pY29kZSBnZW5lcmFsIGNhdGVnb3J5ICgi
Y2hhcmFjdGVyIHR5cGUiKS4KKyAqCisgKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIHN0b3Ag
dGhlIGVudW1lcmF0aW9uIGJ5IHJldHVybmluZyBGQUxTRS4KKyAqCisgKiBAcGFyYW0gY29udGV4
dCBhbiBvcGFxdWUgcG9pbnRlciwgYXMgcGFzc2VkIGludG8gdXRyaWVfZW51bSgpCisgKiBAcGFy
YW0gc3RhcnQgdGhlIGZpcnN0IGNvZGUgcG9pbnQgaW4gYSBjb250aWd1b3VzIHJhbmdlIHdpdGgg
dmFsdWUKKyAqIEBwYXJhbSBsaW1pdCBvbmUgcGFzdCB0aGUgbGFzdCBjb2RlIHBvaW50IGluIGEg
Y29udGlndW91cyByYW5nZSB3aXRoIHZhbHVlCisgKiBAcGFyYW0gdHlwZSB0aGUgZ2VuZXJhbCBj
YXRlZ29yeSBmb3IgYWxsIGNvZGUgcG9pbnRzIGluIFtzdGFydC4ubGltaXRbCisgKiBAcmV0dXJu
IEZBTFNFIHRvIHN0b3AgdGhlIGVudW1lcmF0aW9uCisgKgorICogQHN0YWJsZSBJQ1UgMi4xCisg
KiBAc2VlIFVDaGFyQ2F0ZWdvcnkKKyAqIEBzZWUgdV9lbnVtQ2hhclR5cGVzCisgKi8KK3R5cGVk
ZWYgVUJvb2wgVV9DQUxMQ09OVgorVUNoYXJFbnVtVHlwZVJhbmdlKGNvbnN0IHZvaWQgKmNvbnRl
eHQsIFVDaGFyMzIgc3RhcnQsIFVDaGFyMzIgbGltaXQsIFVDaGFyQ2F0ZWdvcnkgdHlwZSk7CisK
Ky8qKgorICogRW51bWVyYXRlIGVmZmljaWVudGx5IGFsbCBjb2RlIHBvaW50cyB3aXRoIHRoZWly
IFVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yaWVzLgorICoKKyAqIFRoaXMgaXMgdXNlZnVsIGZvciBi
dWlsZGluZyBkYXRhIHN0cnVjdHVyZXMgKGUuZy4sIFVuaWNvZGVTZXQncyksCisgKiBmb3IgZW51
bWVyYXRpbmcgYWxsIGFzc2lnbmVkIGNvZGUgcG9pbnRzICh0eXBlIT1VX1VOQVNTSUdORUQpLCBl
dGMuCisgKgorICogRm9yIGVhY2ggY29udGlndW91cyByYW5nZSBvZiBjb2RlIHBvaW50cyB3aXRo
IGEgZ2l2ZW4gZ2VuZXJhbCBjYXRlZ29yeSAoImNoYXJhY3RlciB0eXBlIiksCisgKiB0aGUgVUNo
YXJFbnVtVHlwZVJhbmdlIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAqIEFkamFjZW50IHJhbmdlcyBo
YXZlIGRpZmZlcmVudCB0eXBlcy4KKyAqIFRoZSBVbmljb2RlIFN0YW5kYXJkIGd1YXJhbnRlZXMg
dGhhdCB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgdHlwZSBpcyAwLi4zMS4KKyAqCisgKiBAcGFy
YW0gZW51bVJhbmdlIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGZvciBl
YWNoIGNvbnRpZ3VvdXMgcmFuZ2UKKyAqICAgICAgICAgICAgICAgICAgb2YgY29kZSBwb2ludHMg
d2l0aCB0aGUgc2FtZSBnZW5lcmFsIGNhdGVnb3J5CisgKiBAcGFyYW0gY29udGV4dCBhbiBvcGFx
dWUgcG9pbnRlciB0aGF0IGlzIHBhc3NlZCBvbiB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24KKyAq
CisgKiBAc3RhYmxlIElDVSAyLjEKKyAqIEBzZWUgVUNoYXJDYXRlZ29yeQorICogQHNlZSBVQ2hh
ckVudW1UeXBlUmFuZ2UKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VfZW51bUNoYXJU
eXBlcyhVQ2hhckVudW1UeXBlUmFuZ2UgKmVudW1SYW5nZSwgY29uc3Qgdm9pZCAqY29udGV4dCk7
CisKKyNpZiAhVUNPTkZJR19OT19OT1JNQUxJWkFUSU9OCisKKy8qKgorICogUmV0dXJucyB0aGUg
Y29tYmluaW5nIGNsYXNzIG9mIHRoZSBjb2RlIHBvaW50IGFzIHNwZWNpZmllZCBpbiBVbmljb2Rl
RGF0YS50eHQuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgb2YgdGhlIGNoYXJhY3Rl
cgorICogQHJldHVybiB0aGUgY29tYmluaW5nIGNsYXNzIG9mIHRoZSBjaGFyYWN0ZXIKKyAqIEBz
dGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSB1aW50OF90IFVfRVhQT1JUMgordV9nZXRDb21i
aW5pbmdDbGFzcyhVQ2hhcjMyIGMpOworCisjZW5kaWYKKworLyoqCisgKiBSZXR1cm5zIHRoZSBk
ZWNpbWFsIGRpZ2l0IHZhbHVlIG9mIGEgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuCisgKiBTdWNo
IGNoYXJhY3RlcnMgaGF2ZSB0aGUgZ2VuZXJhbCBjYXRlZ29yeSAiTmQiIChkZWNpbWFsIGRpZ2l0
IG51bWJlcnMpCisgKiBhbmQgYSBOdW1lcmljX1R5cGUgb2YgRGVjaW1hbC4KKyAqCisgKiBVbmxp
a2UgSUNVIHJlbGVhc2VzIGJlZm9yZSAyLjYsIG5vIGRpZ2l0IHZhbHVlcyBhcmUgcmV0dXJuZWQg
Zm9yIGFueQorICogSGFuIGNoYXJhY3RlcnMgYmVjYXVzZSBIYW4gbnVtYmVyIGNoYXJhY3RlcnMg
YXJlIG9mdGVuIHVzZWQgd2l0aCBhIHNwZWNpYWwKKyAqIENoaW5lc2Utc3R5bGUgbnVtYmVyIGZv
cm1hdCAod2l0aCBjaGFyYWN0ZXJzIGZvciBwb3dlcnMgb2YgMTAgaW4gYmV0d2VlbikKKyAqIGlu
c3RlYWQgb2YgaW4gZGVjaW1hbC1wb3NpdGlvbmFsIG5vdGF0aW9uLgorICogVW5pY29kZSA0IGV4
cGxpY2l0bHkgYXNzaWducyBIYW4gbnVtYmVyIGNoYXJhY3RlcnMgdGhlIE51bWVyaWNfVHlwZQor
ICogTnVtZXJpYyBpbnN0ZWFkIG9mIERlY2ltYWwuCisgKiBTZWUgSml0dGVyYnVnIDE0ODMgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBVc2UgdV9nZXRJbnRQcm9wZXJ0eVZhbHVlKGMsIFVDSEFS
X05VTUVSSUNfVFlQRSkgYW5kIHVfZ2V0TnVtZXJpY1ZhbHVlKCkKKyAqIGZvciBjb21wbGV0ZSBu
dW1lcmljIFVuaWNvZGUgcHJvcGVydGllcy4KKyAqCisgKiBAcGFyYW0gYyB0aGUgY29kZSBwb2lu
dCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBkZWNpbWFsIGRpZ2l0IHZhbHVlCisgKiBAcmV0dXJuIHRo
ZSBkZWNpbWFsIGRpZ2l0IHZhbHVlIG9mIGMsCisgKiAgICAgICAgIG9yIC0xIGlmIGMgaXMgbm90
IGEgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIKKyAqCisgKiBAc2VlIHVfZ2V0TnVtZXJpY1ZhbHVl
CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vf
Y2hhckRpZ2l0VmFsdWUoVUNoYXIzMiBjKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBVbmljb2Rl
IGFsbG9jYXRpb24gYmxvY2sgdGhhdCBjb250YWlucyB0aGUgY2hhcmFjdGVyLgorICoKKyAqIEBw
YXJhbSBjIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZAorICogQHJldHVybiB0aGUgYmxvY2sg
dmFsdWUgKFVCbG9ja0NvZGUpIGZvciBjCisgKgorICogQHNlZSBVQmxvY2tDb2RlCisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJsb2NrQ29kZSBVX0VYUE9SVDIKK3VibG9ja19n
ZXRDb2RlKFVDaGFyMzIgYyk7CisKKy8qKgorICogUmV0cmlldmUgdGhlIG5hbWUgb2YgYSBVbmlj
b2RlIGNoYXJhY3Rlci4KKyAqIERlcGVuZGluZyBvbiA8Y29kZT5uYW1lQ2hvaWNlPC9jb2RlPiwg
dGhlIGNoYXJhY3RlciBuYW1lIHdyaXR0ZW4KKyAqIGludG8gdGhlIGJ1ZmZlciBpcyB0aGUgIm1v
ZGVybiIgbmFtZSBvciB0aGUgbmFtZSB0aGF0IHdhcyBkZWZpbmVkCisgKiBpbiBVbmljb2RlIHZl
cnNpb24gMS4wLgorICogVGhlIG5hbWUgY29udGFpbnMgb25seSAiaW52YXJpYW50IiBjaGFyYWN0
ZXJzCisgKiBsaWtlIEEtWiwgMC05LCBzcGFjZSwgYW5kICctJy4KKyAqIFVuaWNvZGUgMS4wIG5h
bWVzIGFyZSBvbmx5IHJldHJpZXZlZCBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUgbW9k
ZXJuCisgKiBuYW1lcyBhbmQgaWYgdGhlIGRhdGEgZmlsZSBjb250YWlucyB0aGUgZGF0YSBmb3Ig
dGhlbS4gZ2VubmFtZXMgbWF5IG9yIG1heQorICogbm90IGJlIGNhbGxlZCB3aXRoIGEgY29tbWFu
ZCBsaW5lIG9wdGlvbiB0byBpbmNsdWRlIDEuMCBuYW1lcyBpbiB1bmFtZXMuZGF0LgorICoKKyAq
IEBwYXJhbSBjb2RlIFRoZSBjaGFyYWN0ZXIgKGNvZGUgcG9pbnQpIGZvciB3aGljaCB0byBnZXQg
dGhlIG5hbWUuCisgKiAgICAgICAgICAgICBJdCBtdXN0IGJlIDxjb2RlPjA8PWNvZGU8PTB4MTBm
ZmZmPC9jb2RlPi4KKyAqIEBwYXJhbSBuYW1lQ2hvaWNlIFNlbGVjdG9yIGZvciB3aGljaCBuYW1l
IHRvIGdldC4KKyAqIEBwYXJhbSBidWZmZXIgRGVzdGluYXRpb24gYWRkcmVzcyBmb3IgY29weWlu
ZyB0aGUgbmFtZS4KKyAqICAgICAgICAgICAgICAgVGhlIG5hbWUgd2lsbCBhbHdheXMgYmUgemVy
by10ZXJtaW5hdGVkLgorICogICAgICAgICAgICAgICBJZiB0aGVyZSBpcyBubyBuYW1lLCB0aGVu
IHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy4KKyAqIEBwYXJhbSBi
dWZmZXJMZW5ndGggPGNvZGU+PT1zaXplb2YoYnVmZmVyKTwvY29kZT4KKyAqIEBwYXJhbSBwRXJy
b3JDb2RlIFBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHZhcmlhYmxlOworICogICAgICAgIGNoZWNr
IGZvciA8Y29kZT5VX1NVQ0NFU1MoKTwvY29kZT4gYWZ0ZXIgPGNvZGU+dV9jaGFyTmFtZSgpPC9j
b2RlPgorICogICAgICAgIHJldHVybnMuCisgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIG5h
bWUsIG9yIDAgaWYgdGhlcmUgaXMgbm8gbmFtZSBmb3IgdGhpcyBjaGFyYWN0ZXIuCisgKiAgICAg
ICAgIElmIHRoZSBidWZmZXJMZW5ndGggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsZW5n
dGgsIHRoZW4gdGhlIGJ1ZmZlcgorICogICAgICAgICBjb250YWlucyB0aGUgdHJ1bmNhdGVkIG5h
bWUgYW5kIHRoZSByZXR1cm5lZCBsZW5ndGggaW5kaWNhdGVzIHRoZSBmdWxsCisgKiAgICAgICAg
IGxlbmd0aCBvZiB0aGUgbmFtZS4KKyAqICAgICAgICAgVGhlIGxlbmd0aCBkb2VzIG5vdCBpbmNs
dWRlIHRoZSB6ZXJvLXRlcm1pbmF0aW9uLgorICoKKyAqIEBzZWUgVUNoYXJOYW1lQ2hvaWNlCisg
KiBAc2VlIHVfY2hhckZyb21OYW1lCisgKiBAc2VlIHVfZW51bUNoYXJOYW1lcworICogQHN0YWJs
ZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X2NoYXJOYW1lKFVD
aGFyMzIgY29kZSwgVUNoYXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2UsCisgICAgICAgICAgIGNoYXIg
KmJ1ZmZlciwgaW50MzJfdCBidWZmZXJMZW5ndGgsCisgICAgICAgICAgIFVFcnJvckNvZGUgKnBF
cnJvckNvZGUpOworCisvKioKKyAqIEdldCB0aGUgSVNPIDEwNjQ2IGNvbW1lbnQgZm9yIGEgY2hh
cmFjdGVyLgorICogVGhlIElTTyAxMDY0NiBjb21tZW50IGlzIGFuIGluZm9ybWF0aXZlIGZpZWxk
IGluIHRoZSBVbmljb2RlIENoYXJhY3RlcgorICogRGF0YWJhc2UgKFVuaWNvZGVEYXRhLnR4dCBm
aWVsZCAxMSkgYW5kIGlzIGZyb20gdGhlIElTTyAxMDY0NiBuYW1lcyBsaXN0LgorICoKKyAqIEBw
YXJhbSBjIFRoZSBjaGFyYWN0ZXIgKGNvZGUgcG9pbnQpIGZvciB3aGljaCB0byBnZXQgdGhlIElT
TyBjb21tZW50LgorICogICAgICAgICAgICAgSXQgbXVzdCBiZSA8Y29kZT4wPD1jPD0weDEwZmZm
ZjwvY29kZT4uCisgKiBAcGFyYW0gZGVzdCBEZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBjb3B5aW5n
IHRoZSBjb21tZW50LgorICogICAgICAgICAgICAgVGhlIGNvbW1lbnQgd2lsbCBiZSB6ZXJvLXRl
cm1pbmF0ZWQgaWYgcG9zc2libGUuCisgKiAgICAgICAgICAgICBJZiB0aGVyZSBpcyBubyBjb21t
ZW50LCB0aGVuIHRoZSBidWZmZXIgd2lsbCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZy4KKyAq
IEBwYXJhbSBkZXN0Q2FwYWNpdHkgPGNvZGU+PT1zaXplb2YoZGVzdCk8L2NvZGU+CisgKiBAcGFy
YW0gcEVycm9yQ29kZSBQb2ludGVyIHRvIGEgVUVycm9yQ29kZSB2YXJpYWJsZTsKKyAqICAgICAg
ICBjaGVjayBmb3IgPGNvZGU+VV9TVUNDRVNTKCk8L2NvZGU+IGFmdGVyIDxjb2RlPnVfZ2V0SVNP
Q29tbWVudCgpPC9jb2RlPgorICogICAgICAgIHJldHVybnMuCisgKiBAcmV0dXJuIFRoZSBsZW5n
dGggb2YgdGhlIGNvbW1lbnQsIG9yIDAgaWYgdGhlcmUgaXMgbm8gY29tbWVudCBmb3IgdGhpcyBj
aGFyYWN0ZXIuCisgKiAgICAgICAgIElmIHRoZSBkZXN0Q2FwYWNpdHkgaXMgbGVzcyB0aGFuIG9y
IGVxdWFsIHRvIHRoZSBsZW5ndGgsIHRoZW4gdGhlIGJ1ZmZlcgorICogICAgICAgICBjb250YWlu
cyB0aGUgdHJ1bmNhdGVkIG5hbWUgYW5kIHRoZSByZXR1cm5lZCBsZW5ndGggaW5kaWNhdGVzIHRo
ZSBmdWxsCisgKiAgICAgICAgIGxlbmd0aCBvZiB0aGUgbmFtZS4KKyAqICAgICAgICAgVGhlIGxl
bmd0aCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB6ZXJvLXRlcm1pbmF0aW9uLgorICoKKyAqIEBzdGFi
bGUgSUNVIDIuMgorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9nZXRJU09Db21t
ZW50KFVDaGFyMzIgYywKKyAgICAgICAgICAgICAgICBjaGFyICpkZXN0LCBpbnQzMl90IGRlc3RD
YXBhY2l0eSwKKyAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoq
CisgKiBGaW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIgYnkgaXRzIG5hbWUgYW5kIHJldHVybiBpdHMg
Y29kZSBwb2ludCB2YWx1ZS4KKyAqIFRoZSBuYW1lIGlzIG1hdGNoZWQgZXhhY3RseSBhbmQgY29t
cGxldGVseS4KKyAqIElmIHRoZSBuYW1lIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBjb2RlIHBv
aW50LCA8aT5wRXJyb3JDb2RlPC9pPgorICogaXMgc2V0IHRvIDxjb2RlPlVfSU5WQUxJRF9DSEFS
X0ZPVU5EPC9jb2RlPi4KKyAqIEEgVW5pY29kZSAxLjAgbmFtZSBpcyBtYXRjaGVkIG9ubHkgaWYg
aXQgZGlmZmVycyBmcm9tIHRoZSBtb2Rlcm4gbmFtZS4KKyAqIFVuaWNvZGUgbmFtZXMgYXJlIGFs
bCB1cHBlcmNhc2UuIEV4dGVuZGVkIG5hbWVzIGFyZSBsb3dlcmNhc2UgZm9sbG93ZWQKKyAqIGJ5
IGFuIHVwcGVyY2FzZSBoZXhhZGVjaW1hbCBudW1iZXIsIGFuZCB3aXRoaW4gYW5nbGUgYnJhY2tl
dHMuCisgKgorICogQHBhcmFtIG5hbWVDaG9pY2UgU2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUgdG8g
bWF0Y2guCisgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSB0byBtYXRjaC4KKyAqIEBwYXJhbSBwRXJy
b3JDb2RlIFBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHZhcmlhYmxlCisgKiBAcmV0dXJuIFRoZSBV
bmljb2RlIHZhbHVlIG9mIHRoZSBjb2RlIHBvaW50IHdpdGggdGhlIGdpdmVuIG5hbWUsCisgKiAg
ICAgICAgIG9yIGFuIHVuZGVmaW5lZCB2YWx1ZSBpZiB0aGVyZSBpcyBubyBzdWNoIGNvZGUgcG9p
bnQuCisgKgorICogQHNlZSBVQ2hhck5hbWVDaG9pY2UKKyAqIEBzZWUgdV9jaGFyTmFtZQorICog
QHNlZSB1X2VudW1DaGFyTmFtZXMKKyAqIEBzdGFibGUgSUNVIDEuNworICovCitVX1NUQUJMRSBV
Q2hhcjMyIFVfRVhQT1JUMgordV9jaGFyRnJvbU5hbWUoVUNoYXJOYW1lQ2hvaWNlIG5hbWVDaG9p
Y2UsCisgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgVUVy
cm9yQ29kZSAqcEVycm9yQ29kZSk7CisKKy8qKgorICogVHlwZSBvZiBhIGNhbGxiYWNrIGZ1bmN0
aW9uIGZvciB1X2VudW1DaGFyTmFtZXMoKSB0aGF0IGdldHMgY2FsbGVkCisgKiBmb3IgZWFjaCBV
bmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSBjb2RlIHBvaW50IHZhbHVlIGFuZAorICogdGhlIGNo
YXJhY3RlciBuYW1lLgorICogSWYgc3VjaCBhIGZ1bmN0aW9uIHJldHVybnMgRkFMU0UsIHRoZW4g
dGhlIGVudW1lcmF0aW9uIGlzIHN0b3BwZWQuCisgKgorICogQHBhcmFtIGNvbnRleHQgVGhlIGNv
bnRleHQgcG9pbnRlciB0aGF0IHdhcyBwYXNzZWQgdG8gdV9lbnVtQ2hhck5hbWVzKCkuCisgKiBA
cGFyYW0gY29kZSBUaGUgVW5pY29kZSBjb2RlIHBvaW50IGZvciB0aGUgY2hhcmFjdGVyIHdpdGgg
dGhpcyBuYW1lLgorICogQHBhcmFtIG5hbWVDaG9pY2UgU2VsZWN0b3IgZm9yIHdoaWNoIGtpbmQg
b2YgbmFtZXMgaXMgZW51bWVyYXRlZC4KKyAqIEBwYXJhbSBuYW1lIFRoZSBjaGFyYWN0ZXIncyBu
YW1lLCB6ZXJvLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhl
IG5hbWUuCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGVudW1lcmF0aW9uIHNob3VsZCBjb250aW51
ZSwgRkFMU0UgdG8gc3RvcCBpdC4KKyAqCisgKiBAc2VlIFVDaGFyTmFtZUNob2ljZQorICogQHNl
ZSB1X2VudW1DaGFyTmFtZXMKKyAqIEBzdGFibGUgSUNVIDEuNworICovCit0eXBlZGVmIFVCb29s
IFVFbnVtQ2hhck5hbWVzRm4odm9pZCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVQ2hhcjMyIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNo
YXJOYW1lQ2hvaWNlIG5hbWVDaG9pY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90
IGxlbmd0aCk7CisKKy8qKgorICogRW51bWVyYXRlIGFsbCBhc3NpZ25lZCBVbmljb2RlIGNoYXJh
Y3RlcnMgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGxpbWl0CisgKiBjb2RlIHBvaW50cyAoc3RhcnQg
aW5jbHVzaXZlLCBsaW1pdCBleGNsdXNpdmUpIGFuZCBjYWxsIGEgZnVuY3Rpb24KKyAqIGZvciBl
YWNoLCBwYXNzaW5nIHRoZSBjb2RlIHBvaW50IHZhbHVlIGFuZCB0aGUgY2hhcmFjdGVyIG5hbWUu
CisgKiBGb3IgVW5pY29kZSAxLjAgbmFtZXMsIG9ubHkgdGhvc2UgYXJlIGVudW1lcmF0ZWQgdGhh
dCBkaWZmZXIgZnJvbSB0aGUKKyAqIG1vZGVybiBuYW1lcy4KKyAqCisgKiBAcGFyYW0gc3RhcnQg
VGhlIGZpcnN0IGNvZGUgcG9pbnQgaW4gdGhlIGVudW1lcmF0aW9uIHJhbmdlLgorICogQHBhcmFt
IGxpbWl0IE9uZSBtb3JlIHRoYW4gdGhlIGxhc3QgY29kZSBwb2ludCBpbiB0aGUgZW51bWVyYXRp
b24gcmFuZ2UKKyAqICAgICAgICAgICAgICAodGhlIGZpcnN0IG9uZSBhZnRlciB0aGUgcmFuZ2Up
LgorICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0aGF0IGlzIHRvIGJlIGNhbGxlZCBmb3IgZWFj
aCBjaGFyYWN0ZXIgbmFtZS4KKyAqIEBwYXJhbSBjb250ZXh0IEFuIGFyYml0cmFyeSBwb2ludGVy
IHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KKyAqIEBwYXJhbSBuYW1lQ2hvaWNlIFNl
bGVjdG9yIGZvciB3aGljaCBraW5kIG9mIG5hbWVzIHRvIGVudW1lcmF0ZS4KKyAqIEBwYXJhbSBw
RXJyb3JDb2RlIFBvaW50ZXIgdG8gYSBVRXJyb3JDb2RlIHZhcmlhYmxlCisgKgorICogQHNlZSBV
Q2hhck5hbWVDaG9pY2UKKyAqIEBzZWUgVUVudW1DaGFyTmFtZXNGbgorICogQHNlZSB1X2NoYXJO
YW1lCisgKiBAc2VlIHVfY2hhckZyb21OYW1lCisgKiBAc3RhYmxlIElDVSAxLjcKKyAqLworVV9T
VEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VfZW51bUNoYXJOYW1lcyhVQ2hhcjMyIHN0YXJ0LCBVQ2hh
cjMyIGxpbWl0LAorICAgICAgICAgICAgICAgIFVFbnVtQ2hhck5hbWVzRm4gKmZuLAorICAgICAg
ICAgICAgICAgIHZvaWQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgVUNoYXJOYW1lQ2hvaWNl
IG5hbWVDaG9pY2UsCisgICAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisK
Ky8qKgorICogUmV0dXJuIHRoZSBVbmljb2RlIG5hbWUgZm9yIGEgZ2l2ZW4gcHJvcGVydHksIGFz
IGdpdmVuIGluIHRoZQorICogVW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5QWxpYXNlcy50
eHQuCisgKgorICogSW4gYWRkaXRpb24sIHRoaXMgZnVuY3Rpb24gbWFwcyB0aGUgcHJvcGVydHkK
KyAqIFVDSEFSX0dFTkVSQUxfQ0FURUdPUllfTUFTSyB0byB0aGUgc3ludGhldGljIG5hbWVzICJn
Y20iIC8KKyAqICJHZW5lcmFsX0NhdGVnb3J5X01hc2siLiAgVGhlc2UgbmFtZXMgYXJlIG5vdCBp
bgorICogUHJvcGVydHlBbGlhc2VzLnR4dC4KKyAqCisgKiBAcGFyYW0gcHJvcGVydHkgVVByb3Bl
cnR5IHNlbGVjdG9yIG90aGVyIHRoYW4gVUNIQVJfSU5WQUxJRF9DT0RFLgorICogICAgICAgICBJ
ZiBvdXQgb2YgcmFuZ2UsIE5VTEwgaXMgcmV0dXJuZWQuCisgKgorICogQHBhcmFtIG5hbWVDaG9p
Y2Ugc2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUgdG8gZ2V0LiAgSWYgb3V0IG9mIHJhbmdlLAorICog
ICAgICAgICBOVUxMIGlzIHJldHVybmVkLiAgQWxsIHByb3BlcnRpZXMgaGF2ZSBhIGxvbmcgbmFt
ZS4gIE1vc3QKKyAqICAgICAgICAgaGF2ZSBhIHNob3J0IG5hbWUsIGJ1dCBzb21lIGRvIG5vdC4g
IFVuaWNvZGUgYWxsb3dzIGZvcgorICogICAgICAgICBhZGRpdGlvbmFsIG5hbWVzOyBpZiBwcmVz
ZW50IHRoZXNlIHdpbGwgYmUgcmV0dXJuZWQgYnkKKyAqICAgICAgICAgVV9MT05HX1BST1BFUlRZ
X05BTUUgKyBpLCB3aGVyZSBpPTEsIDIsLi4uCisgKgorICogQHJldHVybiBhIHBvaW50ZXIgdG8g
dGhlIG5hbWUsIG9yIE5VTEwgaWYgZWl0aGVyIHRoZQorICogICAgICAgICBwcm9wZXJ0eSBvciB0
aGUgbmFtZUNob2ljZSBpcyBvdXQgb2YgcmFuZ2UuICBJZiBhIGdpdmVuCisgKiAgICAgICAgIG5h
bWVDaG9pY2UgcmV0dXJucyBOVUxMLCB0aGVuIGFsbCBsYXJnZXIgdmFsdWVzIG9mCisgKiAgICAg
ICAgIG5hbWVDaG9pY2Ugd2lsbCByZXR1cm4gTlVMTCwgd2l0aCBvbmUgZXhjZXB0aW9uOiBpZiBO
VUxMIGlzCisgKiAgICAgICAgIHJldHVybmVkIGZvciBVX1NIT1JUX1BST1BFUlRZX05BTUUsIHRo
ZW4KKyAqICAgICAgICAgVV9MT05HX1BST1BFUlRZX05BTUUgKGFuZCBoaWdoZXIpIG1heSBzdGls
bCByZXR1cm4gYQorICogICAgICAgICBub24tTlVMTCB2YWx1ZS4gIFRoZSByZXR1cm5lZCBwb2lu
dGVyIGlzIHZhbGlkIHVudGlsCisgKiAgICAgICAgIHVfY2xlYW51cCgpIGlzIGNhbGxlZC4KKyAq
CisgKiBAc2VlIFVQcm9wZXJ0eQorICogQHNlZSBVUHJvcGVydHlOYW1lQ2hvaWNlCisgKiBAc3Rh
YmxlIElDVSAyLjQKKyAqLworVV9TVEFCTEUgY29uc3QgY2hhciogVV9FWFBPUlQyCit1X2dldFBy
b3BlcnR5TmFtZShVUHJvcGVydHkgcHJvcGVydHksCisgICAgICAgICAgICAgICAgICBVUHJvcGVy
dHlOYW1lQ2hvaWNlIG5hbWVDaG9pY2UpOworCisvKioKKyAqIFJldHVybiB0aGUgVVByb3BlcnR5
IGVudW0gZm9yIGEgZ2l2ZW4gcHJvcGVydHkgbmFtZSwgYXMgc3BlY2lmaWVkCisgKiBpbiB0aGUg
VW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5QWxpYXNlcy50eHQuICBTaG9ydCwgbG9uZywg
YW5kCisgKiBhbnkgb3RoZXIgdmFyaWFudHMgYXJlIHJlY29nbml6ZWQuCisgKgorICogSW4gYWRk
aXRpb24sIHRoaXMgZnVuY3Rpb24gbWFwcyB0aGUgc3ludGhldGljIG5hbWVzICJnY20iIC8KKyAq
ICJHZW5lcmFsX0NhdGVnb3J5X01hc2siIHRvIHRoZSBwcm9wZXJ0eQorICogVUNIQVJfR0VORVJB
TF9DQVRFR09SWV9NQVNLLiAgVGhlc2UgbmFtZXMgYXJlIG5vdCBpbgorICogUHJvcGVydHlBbGlh
c2VzLnR4dC4KKyAqCisgKiBAcGFyYW0gYWxpYXMgdGhlIHByb3BlcnR5IG5hbWUgdG8gYmUgbWF0
Y2hlZC4gIFRoZSBuYW1lIGlzIGNvbXBhcmVkCisgKiAgICAgICAgIHVzaW5nICJsb29zZSBtYXRj
aGluZyIgYXMgZGVzY3JpYmVkIGluIFByb3BlcnR5QWxpYXNlcy50eHQuCisgKgorICogQHJldHVy
biBhIFVQcm9wZXJ0eSBlbnVtLCBvciBVQ0hBUl9JTlZBTElEX0NPREUgaWYgdGhlIGdpdmVuIG5h
bWUKKyAqICAgICAgICAgZG9lcyBub3QgbWF0Y2ggYW55IHByb3BlcnR5LgorICoKKyAqIEBzZWUg
VVByb3BlcnR5CisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworVV9TVEFCTEUgVVByb3BlcnR5IFVf
RVhQT1JUMgordV9nZXRQcm9wZXJ0eUVudW0oY29uc3QgY2hhciogYWxpYXMpOworCisvKioKKyAq
IFJldHVybiB0aGUgVW5pY29kZSBuYW1lIGZvciBhIGdpdmVuIHByb3BlcnR5IHZhbHVlLCBhcyBn
aXZlbiBpbiB0aGUKKyAqIFVuaWNvZGUgZGF0YWJhc2UgZmlsZSBQcm9wZXJ0eVZhbHVlQWxpYXNl
cy50eHQuCisgKgorICogTm90ZTogU29tZSBvZiB0aGUgbmFtZXMgaW4gUHJvcGVydHlWYWx1ZUFs
aWFzZXMudHh0IGNhbiBvbmx5IGJlCisgKiByZXRyaWV2ZWQgdXNpbmcgVUNIQVJfR0VORVJBTF9D
QVRFR09SWV9NQVNLLCBub3QKKyAqIFVDSEFSX0dFTkVSQUxfQ0FURUdPUlkuICBUaGVzZSBpbmNs
dWRlOiAiQyIgLyAiT3RoZXIiLCAiTCIgLworICogIkxldHRlciIsICJMQyIgLyAiQ2FzZWRfTGV0
dGVyIiwgIk0iIC8gIk1hcmsiLCAiTiIgLyAiTnVtYmVyIiwgIlAiCisgKiAvICJQdW5jdHVhdGlv
biIsICJTIiAvICJTeW1ib2wiLCBhbmQgIloiIC8gIlNlcGFyYXRvciIuCisgKgorICogQHBhcmFt
IHByb3BlcnR5IFVQcm9wZXJ0eSBzZWxlY3RvciBjb25zdGFudC4KKyAqICAgICAgICBNdXN0IGJl
IFVDSEFSX0JJTkFSWV9TVEFSVDw9d2hpY2g8VUNIQVJfQklOQVJZX0xJTUlUCisgKiAgICAgICAg
b3IgVUNIQVJfSU5UX1NUQVJUPD13aGljaDxVQ0hBUl9JTlRfTElNSVQKKyAqICAgICAgICBvciBV
Q0hBUl9NQVNLX1NUQVJUPD13aGljaDxVQ0hBUl9NQVNLX0xJTUlULgorICogICAgICAgIElmIG91
dCBvZiByYW5nZSwgTlVMTCBpcyByZXR1cm5lZC4KKyAqCisgKiBAcGFyYW0gdmFsdWUgc2VsZWN0
b3IgZm9yIGEgdmFsdWUgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eS4gIElmIG91dAorICogICAgICAg
ICBvZiByYW5nZSwgTlVMTCBpcyByZXR1cm5lZC4gIEluIGdlbmVyYWwsIHZhbGlkIHZhbHVlcyBy
YW5nZQorICogICAgICAgICBmcm9tIDAgdXAgdG8gc29tZSBtYXhpbXVtLiAgVGhlcmUgYXJlIGEg
ZmV3IGV4Y2VwdGlvbnM6CisgKiAgICAgICAgICgxLikgVUNIQVJfQkxPQ0sgdmFsdWVzIGJlZ2lu
IGF0IHRoZSBub24temVybyB2YWx1ZQorICogICAgICAgICBVQkxPQ0tfQkFTSUNfTEFUSU4uICAo
Mi4pICBVQ0hBUl9DQU5PTklDQUxfQ09NQklOSU5HX0NMQVNTCisgKiAgICAgICAgIHZhbHVlcyBh
cmUgbm90IGNvbnRpZ3VvdXMgYW5kIHJhbmdlIGZyb20gMC4uMjQwLiAgKDMuKQorICogICAgICAg
ICBVQ0hBUl9HRU5FUkFMX0NBVEVHT1JZX01BU0sgdmFsdWVzIGFyZSBub3QgdmFsdWVzIG9mCisg
KiAgICAgICAgIFVDaGFyQ2F0ZWdvcnksIGJ1dCByYXRoZXIgbWFzayB2YWx1ZXMgcHJvZHVjZWQg
YnkKKyAqICAgICAgICAgVV9HRVRfR0NfTUFTSygpLiAgVGhpcyBhbGxvd3MgZ3JvdXBlZCBjYXRl
Z29yaWVzIHN1Y2ggYXMKKyAqICAgICAgICAgWzpMOl0gdG8gYmUgcmVwcmVzZW50ZWQuICBNYXNr
IHZhbHVlcyByYW5nZQorICogICAgICAgICBub24tY29udGlndW91c2x5IGZyb20gMS4uVV9HQ19Q
X01BU0suCisgKgorICogQHBhcmFtIG5hbWVDaG9pY2Ugc2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUg
dG8gZ2V0LiAgSWYgb3V0IG9mIHJhbmdlLAorICogICAgICAgICBOVUxMIGlzIHJldHVybmVkLiAg
QWxsIHZhbHVlcyBoYXZlIGEgbG9uZyBuYW1lLiAgTW9zdCBoYXZlCisgKiAgICAgICAgIGEgc2hv
cnQgbmFtZSwgYnV0IHNvbWUgZG8gbm90LiAgVW5pY29kZSBhbGxvd3MgZm9yCisgKiAgICAgICAg
IGFkZGl0aW9uYWwgbmFtZXM7IGlmIHByZXNlbnQgdGhlc2Ugd2lsbCBiZSByZXR1cm5lZCBieQor
ICogICAgICAgICBVX0xPTkdfUFJPUEVSVFlfTkFNRSArIGksIHdoZXJlIGk9MSwgMiwuLi4KKwor
ICogQHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5hbWUsIG9yIE5VTEwgaWYgZWl0aGVyIHRoZQor
ICogICAgICAgICBwcm9wZXJ0eSBvciB0aGUgbmFtZUNob2ljZSBpcyBvdXQgb2YgcmFuZ2UuICBJ
ZiBhIGdpdmVuCisgKiAgICAgICAgIG5hbWVDaG9pY2UgcmV0dXJucyBOVUxMLCB0aGVuIGFsbCBs
YXJnZXIgdmFsdWVzIG9mCisgKiAgICAgICAgIG5hbWVDaG9pY2Ugd2lsbCByZXR1cm4gTlVMTCwg
d2l0aCBvbmUgZXhjZXB0aW9uOiBpZiBOVUxMIGlzCisgKiAgICAgICAgIHJldHVybmVkIGZvciBV
X1NIT1JUX1BST1BFUlRZX05BTUUsIHRoZW4KKyAqICAgICAgICAgVV9MT05HX1BST1BFUlRZX05B
TUUgKGFuZCBoaWdoZXIpIG1heSBzdGlsbCByZXR1cm4gYQorICogICAgICAgICBub24tTlVMTCB2
YWx1ZS4gIFRoZSByZXR1cm5lZCBwb2ludGVyIGlzIHZhbGlkIHVudGlsCisgKiAgICAgICAgIHVf
Y2xlYW51cCgpIGlzIGNhbGxlZC4KKyAqCisgKiBAc2VlIFVQcm9wZXJ0eQorICogQHNlZSBVUHJv
cGVydHlOYW1lQ2hvaWNlCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworVV9TVEFCTEUgY29uc3Qg
Y2hhciogVV9FWFBPUlQyCit1X2dldFByb3BlcnR5VmFsdWVOYW1lKFVQcm9wZXJ0eSBwcm9wZXJ0
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgVVByb3BlcnR5TmFtZUNob2ljZSBuYW1lQ2hvaWNlKTsKKworLyoqCisgKiBSZXR1
cm4gdGhlIHByb3BlcnR5IHZhbHVlIGludGVnZXIgZm9yIGEgZ2l2ZW4gdmFsdWUgbmFtZSwgYXMK
KyAqIHNwZWNpZmllZCBpbiB0aGUgVW5pY29kZSBkYXRhYmFzZSBmaWxlIFByb3BlcnR5VmFsdWVB
bGlhc2VzLnR4dC4KKyAqIFNob3J0LCBsb25nLCBhbmQgYW55IG90aGVyIHZhcmlhbnRzIGFyZSBy
ZWNvZ25pemVkLgorICoKKyAqIE5vdGU6IFNvbWUgb2YgdGhlIG5hbWVzIGluIFByb3BlcnR5VmFs
dWVBbGlhc2VzLnR4dCB3aWxsIG9ubHkgYmUKKyAqIHJlY29nbml6ZWQgd2l0aCBVQ0hBUl9HRU5F
UkFMX0NBVEVHT1JZX01BU0ssIG5vdAorICogVUNIQVJfR0VORVJBTF9DQVRFR09SWS4gIFRoZXNl
IGluY2x1ZGU6ICJDIiAvICJPdGhlciIsICJMIiAvCisgKiAiTGV0dGVyIiwgIkxDIiAvICJDYXNl
ZF9MZXR0ZXIiLCAiTSIgLyAiTWFyayIsICJOIiAvICJOdW1iZXIiLCAiUCIKKyAqIC8gIlB1bmN0
dWF0aW9uIiwgIlMiIC8gIlN5bWJvbCIsIGFuZCAiWiIgLyAiU2VwYXJhdG9yIi4KKyAqCisgKiBA
cGFyYW0gcHJvcGVydHkgVVByb3BlcnR5IHNlbGVjdG9yIGNvbnN0YW50LgorICogICAgICAgIE11
c3QgYmUgVUNIQVJfQklOQVJZX1NUQVJUPD13aGljaDxVQ0hBUl9CSU5BUllfTElNSVQKKyAqICAg
ICAgICBvciBVQ0hBUl9JTlRfU1RBUlQ8PXdoaWNoPFVDSEFSX0lOVF9MSU1JVAorICogICAgICAg
IG9yIFVDSEFSX01BU0tfU1RBUlQ8PXdoaWNoPFVDSEFSX01BU0tfTElNSVQuCisgKiAgICAgICAg
SWYgb3V0IG9mIHJhbmdlLCBVQ0hBUl9JTlZBTElEX0NPREUgaXMgcmV0dXJuZWQuCisgKgorICog
QHBhcmFtIGFsaWFzIHRoZSB2YWx1ZSBuYW1lIHRvIGJlIG1hdGNoZWQuICBUaGUgbmFtZSBpcyBj
b21wYXJlZAorICogICAgICAgICB1c2luZyAibG9vc2UgbWF0Y2hpbmciIGFzIGRlc2NyaWJlZCBp
bgorICogICAgICAgICBQcm9wZXJ0eVZhbHVlQWxpYXNlcy50eHQuCisgKgorICogQHJldHVybiBh
IHZhbHVlIGludGVnZXIgb3IgVUNIQVJfSU5WQUxJRF9DT0RFIGlmIHRoZSBnaXZlbiBuYW1lCisg
KiAgICAgICAgIGRvZXMgbm90IG1hdGNoIGFueSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gcHJvcGVydHks
IG9yIGlmIHRoZQorICogICAgICAgICBwcm9wZXJ0eSBpcyBpbnZhbGlkLiAgTm90ZTogVSBDSEFS
X0dFTkVSQUxfQ0FURUdPUlkgdmFsdWVzCisgKiAgICAgICAgIGFyZSBub3QgdmFsdWVzIG9mIFVD
aGFyQ2F0ZWdvcnksIGJ1dCByYXRoZXIgbWFzayB2YWx1ZXMKKyAqICAgICAgICAgcHJvZHVjZWQg
YnkgVV9HRVRfR0NfTUFTSygpLiAgVGhpcyBhbGxvd3MgZ3JvdXBlZAorICogICAgICAgICBjYXRl
Z29yaWVzIHN1Y2ggYXMgWzpMOl0gdG8gYmUgcmVwcmVzZW50ZWQuCisgKgorICogQHNlZSBVUHJv
cGVydHkKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JU
MgordV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVUHJvcGVydHkgcHJvcGVydHksCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGFsaWFzKTsKKworLyoqCisgKiBEZXRlcm1pbmVzIGlm
IHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGlzIHBlcm1pc3NpYmxlIGFzIHRoZQorICogZmlyc3Qg
Y2hhcmFjdGVyIGluIGFuIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIFVuaWNvZGUKKyAqIChUaGUg
VW5pY29kZSBTdGFuZGFyZCwgVmVyc2lvbiAzLjAsIGNoYXB0ZXIgNS4xNiBJZGVudGlmaWVycyku
CisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGggZ2VuZXJhbCBjYXRlZ29yaWVzICJMIiAobGV0
dGVycykgYW5kICJObCIgKGxldHRlciBudW1iZXJzKS4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFu
Zy5DaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KCkuCisgKiBTYW1lIGFzIFVDSEFS
X0lEX1NUQVJUCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisg
KiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgbWF5IHN0YXJ0IGFuIGlkZW50aWZpZXIK
KyAqCisgKiBAc2VlIFVDSEFSX0lEX1NUQVJUCisgKiBAc2VlIHVfaXNhbHBoYQorICogQHNlZSB1
X2lzSURQYXJ0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBP
UlQyCit1X2lzSURTdGFydChVQ2hhcjMyIGMpOworCisvKioKKyAqIERldGVybWluZXMgaWYgdGhl
IHNwZWNpZmllZCBjaGFyYWN0ZXIgaXMgcGVybWlzc2libGUKKyAqIGluIGFuIGlkZW50aWZpZXIg
YWNjb3JkaW5nIHRvIEphdmEuCisgKiBUcnVlIGZvciBjaGFyYWN0ZXJzIHdpdGggZ2VuZXJhbCBj
YXRlZ29yaWVzICJMIiAobGV0dGVycyksCisgKiAiTmwiIChsZXR0ZXIgbnVtYmVycyksICJOZCIg
KGRlY2ltYWwgZGlnaXRzKSwKKyAqICJNYyIgYW5kICJNbiIgKGNvbWJpbmluZyBtYXJrcyksICJQ
YyIgKGNvbm5lY3RpbmcgcHVuY3R1YXRpb24pLCBhbmQKKyAqIHVfaXNJRElnbm9yYWJsZShjKS4K
KyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBh
cnQoKS4KKyAqIEFsbW9zdCB0aGUgc2FtZSBhcyBVbmljb2RlJ3MgSURfQ29udGludWUgKFVDSEFS
X0lEX0NPTlRJTlVFKQorICogZXhjZXB0IHRoYXQgVW5pY29kZSByZWNvbW1lbmRzIHRvIGlnbm9y
ZSBDZiB3aGljaCBpcyBsZXNzIHRoYW4KKyAqIHVfaXNJRElnbm9yYWJsZShjKS4KKyAqCisgKiBA
cGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSB0ZXN0ZWQKKyAqIEByZXR1cm4gVFJVRSBpZiB0
aGUgY29kZSBwb2ludCBtYXkgb2NjdXIgaW4gYW4gaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gSmF2
YQorICoKKyAqIEBzZWUgVUNIQVJfSURfQ09OVElOVUUKKyAqIEBzZWUgdV9pc0lEU3RhcnQKKyAq
IEBzZWUgdV9pc0lESWdub3JhYmxlCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUg
VUJvb2wgVV9FWFBPUlQyCit1X2lzSURQYXJ0KFVDaGFyMzIgYyk7CisKKy8qKgorICogRGV0ZXJt
aW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBzaG91bGQgYmUgcmVnYXJkZWQKKyAqIGFz
IGFuIGlnbm9yYWJsZSBjaGFyYWN0ZXIgaW4gYW4gaWRlbnRpZmllciwKKyAqIGFjY29yZGluZyB0
byBKYXZhLgorICogVHJ1ZSBmb3IgY2hhcmFjdGVycyB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgIkNm
IiAoZm9ybWF0IGNvbnRyb2xzKSBhcyB3ZWxsIGFzCisgKiBub24td2hpdGVzcGFjZSBJU08gY29u
dHJvbHMKKyAqIChVKzAwMDAuLlUrMDAwOCwgVSswMDBFLi5VKzAwMUIsIFUrMDA3Ri4uVSswMDg0
LCBVKzAwODYuLlUrMDA5RikuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlz
SWRlbnRpZmllcklnbm9yYWJsZSgpCisgKiBleGNlcHQgdGhhdCBKYXZhIGFsc28gcmV0dXJucyBU
UlVFIGZvciBVKzAwODUgTmV4dCBMaW5lCisgKiAoaXQgb21pdHMgVSswMDg1IGZyb20gd2hpdGVz
cGFjZSBJU08gY29udHJvbHMpLgorICoKKyAqIE5vdGUgdGhhdCBVbmljb2RlIGp1c3QgcmVjb21t
ZW5kcyB0byBpZ25vcmUgQ2YgKGZvcm1hdCBjb250cm9scykuCisgKgorICogQHBhcmFtIGMgdGhl
IGNvZGUgcG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9p
bnQgaXMgaWdub3JhYmxlIGluIGlkZW50aWZpZXJzIGFjY29yZGluZyB0byBKYXZhCisgKgorICog
QHNlZSBVQ0hBUl9ERUZBVUxUX0lHTk9SQUJMRV9DT0RFX1BPSU5UCisgKiBAc2VlIHVfaXNJRFN0
YXJ0CisgKiBAc2VlIHVfaXNJRFBhcnQKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJM
RSBVQm9vbCBVX0VYUE9SVDIKK3VfaXNJRElnbm9yYWJsZShVQ2hhcjMyIGMpOworCisvKioKKyAq
IERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgaXMgcGVybWlzc2libGUgYXMg
dGhlCisgKiBmaXJzdCBjaGFyYWN0ZXIgaW4gYSBKYXZhIGlkZW50aWZpZXIuCisgKiBJbiBhZGRp
dGlvbiB0byB1X2lzSURTdGFydChjKSwgdHJ1ZSBmb3IgY2hhcmFjdGVycyB3aXRoCisgKiBnZW5l
cmFsIGNhdGVnb3JpZXMgIlNjIiAoY3VycmVuY3kgc3ltYm9scykgYW5kICJQYyIgKGNvbm5lY3Rp
bmcgcHVuY3R1YXRpb24pLgorICoKKyAqIFNhbWUgYXMgamF2YS5sYW5nLkNoYXJhY3Rlci5pc0ph
dmFJZGVudGlmaWVyU3RhcnQoKS4KKyAqCisgKiBAcGFyYW0gYyB0aGUgY29kZSBwb2ludCB0byBi
ZSB0ZXN0ZWQKKyAqIEByZXR1cm4gVFJVRSBpZiB0aGUgY29kZSBwb2ludCBtYXkgc3RhcnQgYSBK
YXZhIGlkZW50aWZpZXIKKyAqCisgKiBAc2VlICAgICB1X2lzSmF2YUlEUGFydAorICogQHNlZSAg
ICAgdV9pc2FscGhhCisgKiBAc2VlICAgICB1X2lzSURTdGFydAorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9pc0phdmFJRFN0YXJ0KFVDaGFyMzIg
Yyk7CisKKy8qKgorICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciBpcyBw
ZXJtaXNzaWJsZQorICogaW4gYSBKYXZhIGlkZW50aWZpZXIuCisgKiBJbiBhZGRpdGlvbiB0byB1
X2lzSURQYXJ0KGMpLCB0cnVlIGZvciBjaGFyYWN0ZXJzIHdpdGgKKyAqIGdlbmVyYWwgY2F0ZWdv
cnkgIlNjIiAoY3VycmVuY3kgc3ltYm9scykuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hh
cmFjdGVyLmlzSmF2YUlkZW50aWZpZXJQYXJ0KCkuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUg
cG9pbnQgdG8gYmUgdGVzdGVkCisgKiBAcmV0dXJuIFRSVUUgaWYgdGhlIGNvZGUgcG9pbnQgbWF5
IG9jY3VyIGluIGEgSmF2YSBpZGVudGlmaWVyCisgKgorICogQHNlZSAgICAgdV9pc0lESWdub3Jh
YmxlCisgKiBAc2VlICAgICB1X2lzSmF2YUlEU3RhcnQKKyAqIEBzZWUgICAgIHVfaXNhbHBoYQor
ICogQHNlZSAgICAgdV9pc2RpZ2l0CisgKiBAc2VlICAgICB1X2lzSURQYXJ0CisgKiBAc3RhYmxl
IElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUJvb2wgVV9FWFBPUlQyCit1X2lzSmF2YUlEUGFydChV
Q2hhcjMyIGMpOworCisvKioKKyAqIFRoZSBnaXZlbiBjaGFyYWN0ZXIgaXMgbWFwcGVkIHRvIGl0
cyBsb3dlcmNhc2UgZXF1aXZhbGVudCBhY2NvcmRpbmcgdG8KKyAqIFVuaWNvZGVEYXRhLnR4dDsg
aWYgdGhlIGNoYXJhY3RlciBoYXMgbm8gbG93ZXJjYXNlIGVxdWl2YWxlbnQsIHRoZSBjaGFyYWN0
ZXIKKyAqIGl0c2VsZiBpcyByZXR1cm5lZC4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFy
YWN0ZXIudG9Mb3dlckNhc2UoKS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyB0
aGUgc2ltcGxlLCBzaW5nbGUtY29kZSBwb2ludCBjYXNlIG1hcHBpbmcuCisgKiBGdWxsIGNhc2Ug
bWFwcGluZ3MgbWF5IHJlc3VsdCBpbiB6ZXJvLCBvbmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhbmQg
ZGVwZW5kCisgKiBvbiBjb250ZXh0IG9yIGxhbmd1YWdlIGV0Yy4KKyAqIEZ1bGwgY2FzZSBtYXBw
aW5ncyBhcmUgYXBwbGllZCBieSB0aGUgc3RyaW5nIGNhc2UgbWFwcGluZyBmdW5jdGlvbnMsCisg
KiBzZWUgdXN0cmluZy5oIGFuZCB0aGUgVW5pY29kZVN0cmluZyBjbGFzcy4KKyAqCisgKiBAcGFy
YW0gYyB0aGUgY29kZSBwb2ludCB0byBiZSBtYXBwZWQKKyAqIEByZXR1cm4gdGhlIFNpbXBsZV9M
b3dlcmNhc2VfTWFwcGluZyBvZiB0aGUgY29kZSBwb2ludCwgaWYgYW55OworICogICAgICAgICBv
dGhlcndpc2UgdGhlIGNvZGUgcG9pbnQgaXRzZWxmLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8K
K1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1X3RvbG93ZXIoVUNoYXIzMiBjKTsKKworLyoq
CisgKiBUaGUgZ2l2ZW4gY2hhcmFjdGVyIGlzIG1hcHBlZCB0byBpdHMgdXBwZXJjYXNlIGVxdWl2
YWxlbnQgYWNjb3JkaW5nIHRvIFVuaWNvZGVEYXRhLnR4dDsKKyAqIGlmIHRoZSBjaGFyYWN0ZXIg
aGFzIG5vIHVwcGVyY2FzZSBlcXVpdmFsZW50LCB0aGUgY2hhcmFjdGVyIGl0c2VsZiBpcworICog
cmV0dXJuZWQuCisgKgorICogU2FtZSBhcyBqYXZhLmxhbmcuQ2hhcmFjdGVyLnRvVXBwZXJDYXNl
KCkuCisgKgorICogVGhpcyBmdW5jdGlvbiBvbmx5IHJldHVybnMgdGhlIHNpbXBsZSwgc2luZ2xl
LWNvZGUgcG9pbnQgY2FzZSBtYXBwaW5nLgorICogRnVsbCBjYXNlIG1hcHBpbmdzIG1heSByZXN1
bHQgaW4gemVybywgb25lIG9yIG1vcmUgY29kZSBwb2ludHMgYW5kIGRlcGVuZAorICogb24gY29u
dGV4dCBvciBsYW5ndWFnZSBldGMuCisgKiBGdWxsIGNhc2UgbWFwcGluZ3MgYXJlIGFwcGxpZWQg
YnkgdGhlIHN0cmluZyBjYXNlIG1hcHBpbmcgZnVuY3Rpb25zLAorICogc2VlIHVzdHJpbmcuaCBh
bmQgdGhlIFVuaWNvZGVTdHJpbmcgY2xhc3MuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9p
bnQgdG8gYmUgbWFwcGVkCisgKiBAcmV0dXJuIHRoZSBTaW1wbGVfVXBwZXJjYXNlX01hcHBpbmcg
b2YgdGhlIGNvZGUgcG9pbnQsIGlmIGFueTsKKyAqICAgICAgICAgb3RoZXJ3aXNlIHRoZSBjb2Rl
IHBvaW50IGl0c2VsZi4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQ2hhcjMy
IFVfRVhQT1JUMgordV90b3VwcGVyKFVDaGFyMzIgYyk7CisKKy8qKgorICogVGhlIGdpdmVuIGNo
YXJhY3RlciBpcyBtYXBwZWQgdG8gaXRzIHRpdGxlY2FzZSBlcXVpdmFsZW50CisgKiBhY2NvcmRp
bmcgdG8gVW5pY29kZURhdGEudHh0OworICogaWYgbm9uZSBpcyBkZWZpbmVkLCB0aGUgY2hhcmFj
dGVyIGl0c2VsZiBpcyByZXR1cm5lZC4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0
ZXIudG9UaXRsZUNhc2UoKS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgcmV0dXJucyB0aGUg
c2ltcGxlLCBzaW5nbGUtY29kZSBwb2ludCBjYXNlIG1hcHBpbmcuCisgKiBGdWxsIGNhc2UgbWFw
cGluZ3MgbWF5IHJlc3VsdCBpbiB6ZXJvLCBvbmUgb3IgbW9yZSBjb2RlIHBvaW50cyBhbmQgZGVw
ZW5kCisgKiBvbiBjb250ZXh0IG9yIGxhbmd1YWdlIGV0Yy4KKyAqIEZ1bGwgY2FzZSBtYXBwaW5n
cyBhcmUgYXBwbGllZCBieSB0aGUgc3RyaW5nIGNhc2UgbWFwcGluZyBmdW5jdGlvbnMsCisgKiBz
ZWUgdXN0cmluZy5oIGFuZCB0aGUgVW5pY29kZVN0cmluZyBjbGFzcy4KKyAqCisgKiBAcGFyYW0g
YyB0aGUgY29kZSBwb2ludCB0byBiZSBtYXBwZWQKKyAqIEByZXR1cm4gdGhlIFNpbXBsZV9UaXRs
ZWNhc2VfTWFwcGluZyBvZiB0aGUgY29kZSBwb2ludCwgaWYgYW55OworICogICAgICAgICBvdGhl
cndpc2UgdGhlIGNvZGUgcG9pbnQgaXRzZWxmLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1Vf
U1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1X3RvdGl0bGUoVUNoYXIzMiBjKTsKKworLyoqIE9w
dGlvbiB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nOiB1c2UgZGVmYXVsdCBtYXBwaW5ncyBkZWZpbmVk
IGluIENhc2VGb2xkaW5nLnR4dC4gQHN0YWJsZSBJQ1UgMi4wICovCisjZGVmaW5lIFVfRk9MRF9D
QVNFX0RFRkFVTFQgMAorCisvKioKKyAqIE9wdGlvbiB2YWx1ZSBmb3IgY2FzZSBmb2xkaW5nOgor
ICoKKyAqIFVzZSB0aGUgbW9kaWZpZWQgc2V0IG9mIG1hcHBpbmdzIHByb3ZpZGVkIGluIENhc2VG
b2xkaW5nLnR4dCB0byBoYW5kbGUgZG90dGVkIEkKKyAqIGFuZCBkb3RsZXNzIGkgYXBwcm9wcmlh
dGVseSBmb3IgVHVya2ljIGxhbmd1YWdlcyAodHIsIGF6KS4KKyAqCisgKiBCZWZvcmUgVW5pY29k
ZSAzLjIsIENhc2VGb2xkaW5nLnR4dCBjb250YWlucyBtYXBwaW5ncyBtYXJrZWQgd2l0aCAnSScg
dGhhdAorICogYXJlIHRvIGJlIGluY2x1ZGVkIGZvciBkZWZhdWx0IG1hcHBpbmdzIGFuZAorICog
ZXhjbHVkZWQgZm9yIHRoZSBUdXJraWMtc3BlY2lmaWMgbWFwcGluZ3MuCisgKgorICogVW5pY29k
ZSAzLjIgQ2FzZUZvbGRpbmcudHh0IGluc3RlYWQgY29udGFpbnMgbWFwcGluZ3MgbWFya2VkIHdp
dGggJ1QnIHRoYXQKKyAqIGFyZSB0byBiZSBleGNsdWRlZCBmb3IgZGVmYXVsdCBtYXBwaW5ncyBh
bmQKKyAqIGluY2x1ZGVkIGZvciB0aGUgVHVya2ljLXNwZWNpZmljIG1hcHBpbmdzLgorICoKKyAq
IEBzdGFibGUgSUNVIDIuMAorICovCisjZGVmaW5lIFVfRk9MRF9DQVNFX0VYQ0xVREVfU1BFQ0lB
TF9JIDEKKworLyoqCisgKiBUaGUgZ2l2ZW4gY2hhcmFjdGVyIGlzIG1hcHBlZCB0byBpdHMgY2Fz
ZSBmb2xkaW5nIGVxdWl2YWxlbnQgYWNjb3JkaW5nIHRvCisgKiBVbmljb2RlRGF0YS50eHQgYW5k
IENhc2VGb2xkaW5nLnR4dDsKKyAqIGlmIHRoZSBjaGFyYWN0ZXIgaGFzIG5vIGNhc2UgZm9sZGlu
ZyBlcXVpdmFsZW50LCB0aGUgY2hhcmFjdGVyCisgKiBpdHNlbGYgaXMgcmV0dXJuZWQuCisgKgor
ICogVGhpcyBmdW5jdGlvbiBvbmx5IHJldHVybnMgdGhlIHNpbXBsZSwgc2luZ2xlLWNvZGUgcG9p
bnQgY2FzZSBtYXBwaW5nLgorICogRnVsbCBjYXNlIG1hcHBpbmdzIG1heSByZXN1bHQgaW4gemVy
bywgb25lIG9yIG1vcmUgY29kZSBwb2ludHMgYW5kIGRlcGVuZAorICogb24gY29udGV4dCBvciBs
YW5ndWFnZSBldGMuCisgKiBGdWxsIGNhc2UgbWFwcGluZ3MgYXJlIGFwcGxpZWQgYnkgdGhlIHN0
cmluZyBjYXNlIG1hcHBpbmcgZnVuY3Rpb25zLAorICogc2VlIHVzdHJpbmcuaCBhbmQgdGhlIFVu
aWNvZGVTdHJpbmcgY2xhc3MuCisgKgorICogQHBhcmFtIGMgdGhlIGNvZGUgcG9pbnQgdG8gYmUg
bWFwcGVkCisgKiBAcGFyYW0gb3B0aW9ucyBFaXRoZXIgVV9GT0xEX0NBU0VfREVGQVVMVCBvciBV
X0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICogQHJldHVybiB0aGUgU2ltcGxlX0Nhc2Vf
Rm9sZGluZyBvZiB0aGUgY29kZSBwb2ludCwgaWYgYW55OworICogICAgICAgICBvdGhlcndpc2Ug
dGhlIGNvZGUgcG9pbnQgaXRzZWxmLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxF
IFVDaGFyMzIgVV9FWFBPUlQyCit1X2ZvbGRDYXNlKFVDaGFyMzIgYywgdWludDMyX3Qgb3B0aW9u
cyk7CisKKy8qKgorICogUmV0dXJucyB0aGUgZGVjaW1hbCBkaWdpdCB2YWx1ZSBvZiB0aGUgY29k
ZSBwb2ludCBpbiB0aGUKKyAqIHNwZWNpZmllZCByYWRpeC4KKyAqCisgKiBJZiB0aGUgcmFkaXgg
aXMgbm90IGluIHRoZSByYW5nZSA8Y29kZT4yPD1yYWRpeDw9MzY8L2NvZGU+IG9yIGlmIHRoZQor
ICogdmFsdWUgb2YgPGNvZGU+YzwvY29kZT4gaXMgbm90IGEgdmFsaWQgZGlnaXQgaW4gdGhlIHNw
ZWNpZmllZAorICogcmFkaXgsIDxjb2RlPi0xPC9jb2RlPiBpcyByZXR1cm5lZC4gQSBjaGFyYWN0
ZXIgaXMgYSB2YWxpZCBkaWdpdAorICogaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcg
aXMgdHJ1ZToKKyAqIDx1bD4KKyAqIDxsaT5UaGUgY2hhcmFjdGVyIGhhcyBhIGRlY2ltYWwgZGln
aXQgdmFsdWUuCisgKiAgICAgU3VjaCBjaGFyYWN0ZXJzIGhhdmUgdGhlIGdlbmVyYWwgY2F0ZWdv
cnkgIk5kIiAoZGVjaW1hbCBkaWdpdCBudW1iZXJzKQorICogICAgIGFuZCBhIE51bWVyaWNfVHlw
ZSBvZiBEZWNpbWFsLgorICogICAgIEluIHRoaXMgY2FzZSB0aGUgdmFsdWUgaXMgdGhlIGNoYXJh
Y3RlcidzIGRlY2ltYWwgZGlnaXQgdmFsdWUuPC9saT4KKyAqIDxsaT5UaGUgY2hhcmFjdGVyIGlz
IG9uZSBvZiB0aGUgdXBwZXJjYXNlIExhdGluIGxldHRlcnMKKyAqICAgICA8Y29kZT4nQSc8L2Nv
ZGU+IHRocm91Z2ggPGNvZGU+J1onPC9jb2RlPi4KKyAqICAgICBJbiB0aGlzIGNhc2UgdGhlIHZh
bHVlIGlzIDxjb2RlPmMtJ0EnKzEwPC9jb2RlPi48L2xpPgorICogPGxpPlRoZSBjaGFyYWN0ZXIg
aXMgb25lIG9mIHRoZSBsb3dlcmNhc2UgTGF0aW4gbGV0dGVycworICogICAgIDxjb2RlPidhJzwv
Y29kZT4gdGhyb3VnaCA8Y29kZT4neic8L2NvZGU+LgorICogICAgIEluIHRoaXMgY2FzZSB0aGUg
dmFsdWUgaXMgPGNvZGU+Y2gtJ2EnKzEwPC9jb2RlPi48L2xpPgorICogPGxpPkxhdGluIGxldHRl
cnMgZnJvbSBib3RoIHRoZSBBU0NJSSByYW5nZSAoMDA2MS4uMDA3QSwgMDA0MS4uMDA1QSkKKyAq
ICAgICBhcyB3ZWxsIGFzIGZyb20gdGhlIEZ1bGx3aWR0aCBBU0NJSSByYW5nZSAoRkY0MS4uRkY1
QSwgRkYyMS4uRkYzQSkKKyAqICAgICBhcmUgcmVjb2duaXplZC48L2xpPgorICogPC91bD4KKyAq
CisgKiBTYW1lIGFzIGphdmEubGFuZy5DaGFyYWN0ZXIuZGlnaXQoKS4KKyAqCisgKiBAcGFyYW0g
ICBjaCAgICAgIHRoZSBjb2RlIHBvaW50IHRvIGJlIHRlc3RlZC4KKyAqIEBwYXJhbSAgIHJhZGl4
ICAgdGhlIHJhZGl4LgorICogQHJldHVybiAgdGhlIG51bWVyaWMgdmFsdWUgcmVwcmVzZW50ZWQg
YnkgdGhlIGNoYXJhY3RlciBpbiB0aGUKKyAqICAgICAgICAgIHNwZWNpZmllZCByYWRpeCwKKyAq
ICAgICAgICAgIG9yIC0xIGlmIHRoZXJlIGlzIG5vIHZhbHVlIG9yIGlmIHRoZSB2YWx1ZSBleGNl
ZWRzIHRoZSByYWRpeC4KKyAqCisgKiBAc2VlICAgICBVQ0hBUl9OVU1FUklDX1RZUEUKKyAqIEBz
ZWUgICAgIHVfZm9yRGlnaXQKKyAqIEBzZWUgICAgIHVfY2hhckRpZ2l0VmFsdWUKKyAqIEBzZWUg
ICAgIHVfaXNkaWdpdAorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3Qg
VV9FWFBPUlQyCit1X2RpZ2l0KFVDaGFyMzIgY2gsIGludDhfdCByYWRpeCk7CisKKy8qKgorICog
RGV0ZXJtaW5lcyB0aGUgY2hhcmFjdGVyIHJlcHJlc2VudGF0aW9uIGZvciBhIHNwZWNpZmljIGRp
Z2l0IGluCisgKiB0aGUgc3BlY2lmaWVkIHJhZGl4LiBJZiB0aGUgdmFsdWUgb2YgPGNvZGU+cmFk
aXg8L2NvZGU+IGlzIG5vdCBhCisgKiB2YWxpZCByYWRpeCwgb3IgdGhlIHZhbHVlIG9mIDxjb2Rl
PmRpZ2l0PC9jb2RlPiBpcyBub3QgYSB2YWxpZAorICogZGlnaXQgaW4gdGhlIHNwZWNpZmllZCBy
YWRpeCwgdGhlIG51bGwgY2hhcmFjdGVyCisgKiAoPGNvZGU+VSswMDAwPC9jb2RlPikgaXMgcmV0
dXJuZWQuCisgKiA8cD4KKyAqIFRoZSA8Y29kZT5yYWRpeDwvY29kZT4gYXJndW1lbnQgaXMgdmFs
aWQgaWYgaXQgaXMgZ3JlYXRlciB0aGFuIG9yCisgKiBlcXVhbCB0byAyIGFuZCBsZXNzIHRoYW4g
b3IgZXF1YWwgdG8gMzYuCisgKiBUaGUgPGNvZGU+ZGlnaXQ8L2NvZGU+IGFyZ3VtZW50IGlzIHZh
bGlkIGlmCisgKiA8Y29kZT4wIDw9IGRpZ2l0IDwgcmFkaXg8L2NvZGU+LgorICogPHA+CisgKiBJ
ZiB0aGUgZGlnaXQgaXMgbGVzcyB0aGFuIDEwLCB0aGVuCisgKiA8Y29kZT4nMCcgKyBkaWdpdDwv
Y29kZT4gaXMgcmV0dXJuZWQuIE90aGVyd2lzZSwgdGhlIHZhbHVlCisgKiA8Y29kZT4nYScgKyBk
aWdpdCAtIDEwPC9jb2RlPiBpcyByZXR1cm5lZC4KKyAqCisgKiBTYW1lIGFzIGphdmEubGFuZy5D
aGFyYWN0ZXIuZm9yRGlnaXQoKS4KKyAqCisgKiBAcGFyYW0gICBkaWdpdCAgIHRoZSBudW1iZXIg
dG8gY29udmVydCB0byBhIGNoYXJhY3Rlci4KKyAqIEBwYXJhbSAgIHJhZGl4ICAgdGhlIHJhZGl4
LgorICogQHJldHVybiAgdGhlIDxjb2RlPmNoYXI8L2NvZGU+IHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBzcGVjaWZpZWQgZGlnaXQKKyAqICAgICAgICAgIGluIHRoZSBzcGVjaWZpZWQgcmFkaXguCisg
KgorICogQHNlZSAgICAgdV9kaWdpdAorICogQHNlZSAgICAgdV9jaGFyRGlnaXRWYWx1ZQorICog
QHNlZSAgICAgdV9pc2RpZ2l0CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUNo
YXIzMiBVX0VYUE9SVDIKK3VfZm9yRGlnaXQoaW50MzJfdCBkaWdpdCwgaW50OF90IHJhZGl4KTsK
KworLyoqCisgKiBHZXQgdGhlICJhZ2UiIG9mIHRoZSBjb2RlIHBvaW50LgorICogVGhlICJhZ2Ui
IGlzIHRoZSBVbmljb2RlIHZlcnNpb24gd2hlbiB0aGUgY29kZSBwb2ludCB3YXMgZmlyc3QKKyAq
IGRlc2lnbmF0ZWQgKGFzIGEgbm9uLWNoYXJhY3RlciBvciBmb3IgUHJpdmF0ZSBVc2UpCisgKiBv
ciBhc3NpZ25lZCBhIGNoYXJhY3Rlci4KKyAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBhdm9pZCBl
bWl0dGluZyBjb2RlIHBvaW50cyB0byByZWNlaXZpbmcKKyAqIHByb2Nlc3NlcyB0aGF0IGRvIG5v
dCBhY2NlcHQgbmV3ZXIgY2hhcmFjdGVycy4KKyAqIFRoZSBkYXRhIGlzIGZyb20gdGhlIFVDRCBm
aWxlIERlcml2ZWRBZ2UudHh0LgorICoKKyAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50LgorICog
QHBhcmFtIHZlcnNpb25BcnJheSBUaGUgVW5pY29kZSB2ZXJzaW9uIG51bWJlciBhcnJheSwgdG8g
YmUgZmlsbGVkIGluLgorICoKKyAqIEBzdGFibGUgSUNVIDIuMQorICovCitVX1NUQUJMRSB2b2lk
IFVfRVhQT1JUMgordV9jaGFyQWdlKFVDaGFyMzIgYywgVVZlcnNpb25JbmZvIHZlcnNpb25BcnJh
eSk7CisKKy8qKgorICogR2V0cyB0aGUgVW5pY29kZSB2ZXJzaW9uIGluZm9ybWF0aW9uLgorICog
VGhlIHZlcnNpb24gYXJyYXkgaXMgZmlsbGVkIGluIHdpdGggdGhlIHZlcnNpb24gaW5mb3JtYXRp
b24KKyAqIGZvciB0aGUgVW5pY29kZSBzdGFuZGFyZCB0aGF0IGlzIGN1cnJlbnRseSB1c2VkIGJ5
IElDVS4KKyAqIEZvciBleGFtcGxlLCBVbmljb2RlIHZlcnNpb24gMy4xLjEgaXMgcmVwcmVzZW50
ZWQgYXMgYW4gYXJyYXkgd2l0aAorICogdGhlIHZhbHVlcyB7IDMsIDEsIDEsIDAgfS4KKyAqCisg
KiBAcGFyYW0gdmVyc2lvbkFycmF5IGFuIG91dHB1dCBhcnJheSB0aGF0IHdpbGwgYmUgZmlsbGVk
IGluIHdpdGgKKyAqICAgICAgICAgICAgICAgICAgICAgdGhlIFVuaWNvZGUgdmVyc2lvbiBudW1i
ZXIKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSB2b2lkIFVfRVhQT1JUMgordV9n
ZXRVbmljb2RlVmVyc2lvbihVVmVyc2lvbkluZm8gdmVyc2lvbkFycmF5KTsKKworLyoqCisgKiBH
ZXQgdGhlIEZDX05GS0NfQ2xvc3VyZSBwcm9wZXJ0eSBzdHJpbmcgZm9yIGEgY2hhcmFjdGVyLgor
ICogU2VlIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXggIzE1IGZvciBkZXRhaWxzLCBzZWFyY2ggZm9y
ICJGQ19ORktDX0Nsb3N1cmUiCisgKiBvciBmb3IgIkZOQyI6IGh0dHA6Ly93d3cudW5pY29kZS5v
cmcvcmVwb3J0cy90cjE1LworICoKKyAqIEBwYXJhbSBjIFRoZSBjaGFyYWN0ZXIgKGNvZGUgcG9p
bnQpIGZvciB3aGljaCB0byBnZXQgdGhlIEZDX05GS0NfQ2xvc3VyZSBzdHJpbmcuCisgKiAgICAg
ICAgICAgICBJdCBtdXN0IGJlIDxjb2RlPjA8PWM8PTB4MTBmZmZmPC9jb2RlPi4KKyAqIEBwYXJh
bSBkZXN0IERlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIGNvcHlpbmcgdGhlIHN0cmluZy4KKyAqICAg
ICAgICAgICAgIFRoZSBzdHJpbmcgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0ZWQgaWYgcG9zc2libGUu
CisgKiAgICAgICAgICAgICBJZiB0aGVyZSBpcyBubyBGQ19ORktDX0Nsb3N1cmUgc3RyaW5nLAor
ICogICAgICAgICAgICAgdGhlbiB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IHRvIHRoZSBlbXB0eSBz
dHJpbmcuCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5IDxjb2RlPj09c2l6ZW9mKGRlc3QpPC9jb2Rl
PgorICogQHBhcmFtIHBFcnJvckNvZGUgUG9pbnRlciB0byBhIFVFcnJvckNvZGUgdmFyaWFibGUu
CisgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZywgb3IgMCBpZiB0aGVyZSBpcyBu
byBGQ19ORktDX0Nsb3N1cmUgc3RyaW5nIGZvciB0aGlzIGNoYXJhY3Rlci4KKyAqICAgICAgICAg
SWYgdGhlIGRlc3RDYXBhY2l0eSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGxlbmd0aCwg
dGhlbiB0aGUgYnVmZmVyCisgKiAgICAgICAgIGNvbnRhaW5zIHRoZSB0cnVuY2F0ZWQgbmFtZSBh
bmQgdGhlIHJldHVybmVkIGxlbmd0aCBpbmRpY2F0ZXMgdGhlIGZ1bGwKKyAqICAgICAgICAgbGVu
Z3RoIG9mIHRoZSBuYW1lLgorICogICAgICAgICBUaGUgbGVuZ3RoIGRvZXMgbm90IGluY2x1ZGUg
dGhlIHplcm8tdGVybWluYXRpb24uCisgKgorICogQHN0YWJsZSBJQ1UgMi4yCisgKi8KK1VfU1RB
QkxFIGludDMyX3QgVV9FWFBPUlQyCit1X2dldEZDX05GS0NfQ2xvc3VyZShVQ2hhcjMyIGMsIFVD
aGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7
CisKK1VfQ0RFQ0xfRU5ECisKKyNlbmRpZiAvKl9VQ0hBUiovCisvKmVvZiovCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91Y29uZmlnLmggYi9KYXZhU2NyaXB0R2x1ZS9p
Y3UvdW5pY29kZS91Y29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
OTk3Y2Y2OAotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3Vj
b25maWcuaApAQCAtMCwwICsxLDE4NiBAQAorLyogIAorKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIENvcHly
aWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAg
Q29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqCisqICAgZmlsZSBuYW1lOiAgdWNvbmZpZy5oCisqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkK
KyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0CisqCisqICAg
Y3JlYXRlZCBvbjogMjAwMnNlcDE5CisqICAgY3JlYXRlZCBieTogTWFya3VzIFcuIFNjaGVyZXIK
KyovCisKKyNpZm5kZWYgX19VQ09ORklHX0hfXworI2RlZmluZSBfX1VDT05GSUdfSF9fCisKKy8q
IQorICogXGZpbGUKKyAqIFxicmllZiBTd2l0Y2hlcyBmb3IgZXhjbHVkaW5nIHBhcnRzIG9mIElD
VSBsaWJyYXJ5IGNvZGUgbW9kdWxlcy4KKyAqCisgKiBBbGxvd3MgdG8gYnVpbGQgcGFydGlhbCwg
c21hbGxlciBsaWJyYXJpZXMgZm9yIHNwZWNpYWwgcHVycG9zZXMuCisgKiBCeSBkZWZhdWx0LCBh
bGwgbW9kdWxlcyBhcmUgYnVpbHQuCisgKiBUaGUgc3dpdGNoZXMgYXJlIGZhaXJseSBjb2Fyc2Us
IGNvbnRyb2xsaW5nIGxhcmdlIG1vZHVsZXMuCisgKiBCYXNpYyBzZXJ2aWNlcyBjYW5ub3QgYmUg
dHVybmVkIG9mZi4KKyAqCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworCisvKioKKyAqIFxkZWYg
VUNPTkZJR19PTkxZX0NPTExBVElPTgorICogVGhpcyBzd2l0Y2ggdHVybnMgb2ZmIG1vZHVsZXMg
dGhhdCBhcmUgbm90IG5lZWRlZCBmb3IgY29sbGF0aW9uLgorICoKKyAqIEl0IGRvZXMgbm90IHR1
cm4gb2ZmIGxlZ2FjeSBjb252ZXJzaW9uIGJlY2F1c2UgdGhhdCBpcyBuZWNlc3NhcnkKKyAqIGZv
ciBJQ1UgdG8gd29yayBvbiBFQkNESUMgcGxhdGZvcm1zIChmb3IgdGhlIGRlZmF1bHQgY29udmVy
dGVyKS4KKyAqIElmIHlvdSB3YW50ICJvbmx5IGNvbGxhdGlvbiIgYW5kIGRvIG5vdCBidWlsZCBm
b3IgRUJDRElDLAorICogdGhlbiB5b3UgY2FuICNkZWZpbmUgVUNPTkZJR19OT19MRUdBQ1lfQ09O
VkVSU0lPTiAxIGFzIHdlbGwuCisgKgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNpZm5kZWYg
VUNPTkZJR19PTkxZX0NPTExBVElPTgorIyAgIGRlZmluZSBVQ09ORklHX09OTFlfQ09MTEFUSU9O
IDAKKyNlbmRpZgorCisjaWYgVUNPTkZJR19PTkxZX0NPTExBVElPTgorICAgIC8qIGNvbW1vbiBs
aWJyYXJ5ICovCisjICAgZGVmaW5lIFVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OIDEKKyMgICBk
ZWZpbmUgVUNPTkZJR19OT19JRE5BIDEKKworICAgIC8qIGkxOG4gbGlicmFyeSAqLworIyAgIGlm
IFVDT05GSUdfTk9fQ09MTEFUSU9OCisjICAgICAgIGVycm9yIENvbnRyYWRpY3RvcnkgY29sbGF0
aW9uIHN3aXRjaGVzIGluIHVjb25maWcuaC4KKyMgICBlbmRpZgorIyAgIGRlZmluZSBVQ09ORklH
X05PX0ZPUk1BVFRJTkcgMQorIyAgIGRlZmluZSBVQ09ORklHX05PX1RSQU5TTElURVJBVElPTiAx
CisjICAgZGVmaW5lIFVDT05GSUdfTk9fUkVHVUxBUl9FWFBSRVNTSU9OUyAxCisjZW5kaWYKKwor
LyogY29tbW9uIGxpYnJhcnkgc3dpdGNoZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBcZGVmIFVDT05GSUdfTk9fQ09OVkVS
U0lPTgorICogSUNVIHdpbGwgbm90IGNvbXBsZXRlbHkgYnVpbGQgd2l0aCB0aGlzIHN3aXRjaCB0
dXJuZWQgb24uCisgKiBUaGlzIHN3aXRjaCB0dXJucyBvZmYgYWxsIGNvbnZlcnRlcnMuCisgKgor
ICogQGRyYWZ0IElDVSAzLjIKKyAqLworI2lmbmRlZiBVQ09ORklHX05PX0NPTlZFUlNJT04KKyMg
ICBkZWZpbmUgVUNPTkZJR19OT19DT05WRVJTSU9OIDAKKyNlbmRpZgorCisjaWYgVUNPTkZJR19O
T19DT05WRVJTSU9OCisjICAgZGVmaW5lIFVDT05GSUdfTk9fTEVHQUNZX0NPTlZFUlNJT04gMQor
I2VuZGlmCisKKy8qKgorICogXGRlZiBVQ09ORklHX05PX0xFR0FDWV9DT05WRVJTSU9OCisgKiBU
aGlzIHN3aXRjaCB0dXJucyBvZmYgYWxsIGNvbnZlcnRlcnMgZXhjZXB0IGZvcgorICogLSBVbmlj
b2RlIGNoYXJzZXRzIChVVEYtNy84LzE2LzMyLCBDRVNVLTgsIFNDU1UsIEJPQ1UtMSkKKyAqIC0g
VVMtQVNDSUkKKyAqIC0gSVNPLTg4NTktMQorICoKKyAqIFR1cm5pbmcgb2ZmIGxlZ2FjeSBjb252
ZXJzaW9uIGlzIG5vdCBwb3NzaWJsZSBvbiBFQkNESUMgcGxhdGZvcm1zCisgKiBiZWNhdXNlIHRo
ZXkgbmVlZCBpYm0tMzcgb3IgaWJtLTEwNDcgZGVmYXVsdCBjb252ZXJ0ZXJzLgorICoKKyAqIEBz
dGFibGUgSUNVIDIuNAorICovCisjaWZuZGVmIFVDT05GSUdfTk9fTEVHQUNZX0NPTlZFUlNJT04K
KyMgICBkZWZpbmUgVUNPTkZJR19OT19MRUdBQ1lfQ09OVkVSU0lPTiAwCisjZW5kaWYKKworLyoq
CisgKiBcZGVmIFVDT05GSUdfTk9fTk9STUFMSVpBVElPTgorICogVGhpcyBzd2l0Y2ggdHVybnMg
b2ZmIG5vcm1hbGl6YXRpb24uCisgKiBJdCBpbXBsaWVzIHR1cm5pbmcgb2ZmIHNldmVyYWwgb3Ro
ZXIgc2VydmljZXMgYXMgd2VsbCwgZm9yIGV4YW1wbGUKKyAqIGNvbGxhdGlvbiBhbmQgSUROQS4K
KyAqCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworI2lmbmRlZiBVQ09ORklHX05PX05PUk1BTEla
QVRJT04KKyMgICBkZWZpbmUgVUNPTkZJR19OT19OT1JNQUxJWkFUSU9OIDAKKyNlbGlmIFVDT05G
SUdfTk9fTk9STUFMSVpBVElPTgorICAgIC8qIGNvbW1vbiBsaWJyYXJ5ICovCisjICAgZGVmaW5l
IFVDT05GSUdfTk9fSUROQSAxCisKKyAgICAvKiBpMThuIGxpYnJhcnkgKi8KKyMgICBpZiBVQ09O
RklHX09OTFlfQ09MTEFUSU9OCisjICAgICAgIGVycm9yIENvbnRyYWRpY3RvcnkgY29sbGF0aW9u
IHN3aXRjaGVzIGluIHVjb25maWcuaC4KKyMgICBlbmRpZgorIyAgIGRlZmluZSBVQ09ORklHX05P
X0NPTExBVElPTiAxCisjICAgZGVmaW5lIFVDT05GSUdfTk9fVFJBTlNMSVRFUkFUSU9OIDEKKyNl
bmRpZgorCisvKioKKyAqIFxkZWYgVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04KKyAqIFRoaXMg
c3dpdGNoIHR1cm5zIG9mZiBicmVhayBpdGVyYXRpb24uCisgKgorICogQHN0YWJsZSBJQ1UgMi40
CisgKi8KKyNpZm5kZWYgVUNPTkZJR19OT19CUkVBS19JVEVSQVRJT04KKyMgICBkZWZpbmUgVUNP
TkZJR19OT19CUkVBS19JVEVSQVRJT04gMAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVQ09ORklH
X05PX0lETkEKKyAqIFRoaXMgc3dpdGNoIHR1cm5zIG9mZiBJRE5BLgorICoKKyAqIEBzdGFibGUg
SUNVIDIuNgorICovCisjaWZuZGVmIFVDT05GSUdfTk9fSUROQQorIyAgIGRlZmluZSBVQ09ORklH
X05PX0lETkEgMAorI2VuZGlmCisKKy8qIGkxOG4gbGlicmFyeSBzd2l0Y2hlcyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorICog
XGRlZiBVQ09ORklHX05PX0NPTExBVElPTgorICogVGhpcyBzd2l0Y2ggdHVybnMgb2ZmIGNvbGxh
dGlvbiBhbmQgY29sbGF0aW9uLWJhc2VkIHN0cmluZyBzZWFyY2guCisgKgorICogQHN0YWJsZSBJ
Q1UgMi40CisgKi8KKyNpZm5kZWYgVUNPTkZJR19OT19DT0xMQVRJT04KKyMgICBkZWZpbmUgVUNP
TkZJR19OT19DT0xMQVRJT04gMAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVQ09ORklHX05PX0ZP
Uk1BVFRJTkcKKyAqIFRoaXMgc3dpdGNoIHR1cm5zIG9mZiBmb3JtYXR0aW5nIGFuZCBjYWxlbmRh
ci90aW1lem9uZSBzZXJ2aWNlcy4KKyAqCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2lmbmRl
ZiBVQ09ORklHX05PX0ZPUk1BVFRJTkcKKyMgICBkZWZpbmUgVUNPTkZJR19OT19GT1JNQVRUSU5H
IDAKKyNlbmRpZgorCisvKioKKyAqIFxkZWYgVUNPTkZJR19OT19UUkFOU0xJVEVSQVRJT04KKyAq
IFRoaXMgc3dpdGNoIHR1cm5zIG9mZiB0cmFuc2xpdGVyYXRpb24uCisgKgorICogQHN0YWJsZSBJ
Q1UgMi40CisgKi8KKyNpZm5kZWYgVUNPTkZJR19OT19UUkFOU0xJVEVSQVRJT04KKyMgICBkZWZp
bmUgVUNPTkZJR19OT19UUkFOU0xJVEVSQVRJT04gMAorI2VuZGlmCisKKy8qKgorICogXGRlZiBV
Q09ORklHX05PX1JFR1VMQVJfRVhQUkVTU0lPTlMKKyAqIFRoaXMgc3dpdGNoIHR1cm5zIG9mZiBy
ZWd1bGFyIGV4cHJlc3Npb25zLgorICoKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjaWZuZGVm
IFVDT05GSUdfTk9fUkVHVUxBUl9FWFBSRVNTSU9OUworIyAgIGRlZmluZSBVQ09ORklHX05PX1JF
R1VMQVJfRVhQUkVTU0lPTlMgMAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVQ09ORklHX05PX1NF
UlZJQ0UKKyAqIFRoaXMgc3dpdGNoIHR1cm5zIG9mZiBzZXJ2aWNlIHJlZ2lzdHJhdGlvbi4KKyAq
CisgKiBAZHJhZnQgSUNVIDMuMgorICovCisjaWZuZGVmIFVDT05GSUdfTk9fU0VSVklDRQorIyAg
IGRlZmluZSBVQ09ORklHX05PX1NFUlZJQ0UgMAorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdWl0ZXIuaCBiL0phdmFTY3JpcHRHbHVlL2lj
dS91bmljb2RlL3VpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYz
ZGY1YwotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VpdGVy
LmgKQEAgLTAsMCArMSw3MDcgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAg
Q29weXJpZ2h0IChDKSAyMDAyLTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMK
KyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioKKyogICBmaWxlIG5hbWU6ICB1aXRlci5oCisqICAgZW5jb2Rp
bmc6ICAgVVMtQVNDSUkKKyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRh
dGlvbjo0CisqCisqICAgY3JlYXRlZCBvbjogMjAwMmphbjE4CisqICAgY3JlYXRlZCBieTogTWFy
a3VzIFcuIFNjaGVyZXIKKyovCisKKyNpZm5kZWYgX19VSVRFUl9IX18KKyNkZWZpbmUgX19VSVRF
Ul9IX18KKworLyoqCisgKiBcZmlsZQorICogXGJyaWVmIEMgQVBJOiBVbmljb2RlIENoYXJhY3Rl
ciBJdGVyYXRpb24KKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqLworCisjaW5jbHVkZSAi
dW5pY29kZS91dHlwZXMuaCIKKworI2lmZGVmIFhQX0NQTFVTUExVUworICAgIFVfTkFNRVNQQUNF
X0JFR0lOCisKKyAgICBjbGFzcyBDaGFyYWN0ZXJJdGVyYXRvcjsKKyAgICBjbGFzcyBSZXBsYWNl
YWJsZTsKKworICAgIFVfTkFNRVNQQUNFX0VORAorI2VuZGlmCisKK1VfQ0RFQ0xfQkVHSU4KKwor
c3RydWN0IFVDaGFySXRlcmF0b3I7Cit0eXBlZGVmIHN0cnVjdCBVQ2hhckl0ZXJhdG9yIFVDaGFy
SXRlcmF0b3I7IC8qKjwgQyB0eXBlZGVmIGZvciBzdHJ1Y3QgVUNoYXJJdGVyYXRvci4gQHN0YWJs
ZSBJQ1UgMi4xICovCisKKy8qKgorICogT3JpZ2luIGNvbnN0YW50cyBmb3IgVUNoYXJJdGVyYXRv
ci5nZXRJbmRleCgpIGFuZCBVQ2hhckl0ZXJhdG9yLm1vdmUoKS4KKyAqIEBzZWUgVUNoYXJJdGVy
YXRvck1vdmUKKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8K
K3R5cGVkZWYgZW51bSBVQ2hhckl0ZXJhdG9yT3JpZ2luIHsKKyAgICBVSVRFUl9TVEFSVCwgVUlU
RVJfQ1VSUkVOVCwgVUlURVJfTElNSVQsIFVJVEVSX1pFUk8sIFVJVEVSX0xFTkdUSAorfSBVQ2hh
ckl0ZXJhdG9yT3JpZ2luOworCisvKiogQ29uc3RhbnRzIGZvciBVQ2hhckl0ZXJhdG9yLiBAc3Rh
YmxlIElDVSAyLjYgKi8KK2VudW0geworICAgIC8qKgorICAgICAqIENvbnN0YW50IHZhbHVlIHRo
YXQgbWF5IGJlIHJldHVybmVkIGJ5IFVDaGFySXRlcmF0b3JNb3ZlCisgICAgICogaW5kaWNhdGlu
ZyB0aGF0IHRoZSBmaW5hbCBVVEYtMTYgaW5kZXggaXMgbm90IGtub3duLCBidXQgdGhhdCB0aGUg
bW92ZSBzdWNjZWVkZWQuCisgICAgICogVGhpcyBjYW4gb2NjdXIgd2hlbiBtb3ZpbmcgcmVsYXRp
dmUgdG8gbGltaXQgb3IgbGVuZ3RoLCBvcgorICAgICAqIHdoZW4gbW92aW5nIHJlbGF0aXZlIHRv
IHRoZSBjdXJyZW50IGluZGV4IGFmdGVyIGEgc2V0U3RhdGUoKQorICAgICAqIHdoZW4gdGhlIGN1
cnJlbnQgVVRGLTE2IGluZGV4IGlzIG5vdCBrbm93bi4KKyAgICAgKgorICAgICAqIEl0IHdvdWxk
IGJlIHZlcnkgaW5lZmZpY2llbnQgdG8gaGF2ZSB0byBjb3VudCBmcm9tIHRoZSBiZWdpbm5pbmcg
b2YgdGhlIHRleHQKKyAgICAgKiBqdXN0IHRvIGdldCB0aGUgY3VycmVudC9saW1pdC9sZW5ndGgg
aW5kZXggYWZ0ZXIgbW92aW5nIHJlbGF0aXZlIHRvIGl0LgorICAgICAqIFRoZSBhY3R1YWwgaW5k
ZXggY2FuIGJlIGRldGVybWluZWQgd2l0aCBnZXRJbmRleChVSVRFUl9DVVJSRU5UKQorICAgICAq
IHdoaWNoIHdpbGwgY291bnQgdGhlIFVDaGFycyBpZiBuZWNlc3NhcnkuCisgICAgICoKKyAgICAg
KiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAgICBVSVRFUl9VTktOT1dOX0lOREVYPS0yCit9
OworCisKKy8qKgorICogQ29uc3RhbnQgZm9yIFVDaGFySXRlcmF0b3IgZ2V0U3RhdGUoKSBpbmRp
Y2F0aW5nIGFuIGVycm9yIG9yCisgKiBhbiB1bmtub3duIHN0YXRlLgorICogUmV0dXJuZWQgYnkg
dWl0ZXJfZ2V0U3RhdGUoKS9VQ2hhckl0ZXJhdG9yR2V0U3RhdGUKKyAqIHdoZW4gYW4gZXJyb3Ig
b2NjdXJzLgorICogQWxzbywgc29tZSBVQ2hhckl0ZXJhdG9yIGltcGxlbWVudGF0aW9ucyBtYXkg
bm90IGJlIGFibGUgdG8gcmV0dXJuCisgKiBhIHZhbGlkIHN0YXRlIGZvciBlYWNoIHBvc2l0aW9u
LiBUaGlzIHdpbGwgYmUgY2xlYXJseSBkb2N1bWVudGVkCisgKiBmb3IgZWFjaCBzdWNoIGl0ZXJh
dG9yIChub25lIG9mIHRoZSBwdWJsaWMgb25lcyBoZXJlKS4KKyAqCisgKiBAc3RhYmxlIElDVSAy
LjYKKyAqLworI2RlZmluZSBVSVRFUl9OT19TVEFURSAoKHVpbnQzMl90KTB4ZmZmZmZmZmYpCisK
Ky8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVUNoYXJJdGVyYXRvci5nZXRJ
bmRleCgpLgorICoKKyAqIEdldHMgdGhlIGN1cnJlbnQgcG9zaXRpb24sIG9yIHRoZSBzdGFydCBv
ciBsaW1pdCBvZiB0aGUKKyAqIGl0ZXJhdGlvbiByYW5nZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9u
IG1heSBwZXJmb3JtIHNsb3dseSBmb3IgVUlURVJfQ1VSUkVOVCBhZnRlciBzZXRTdGF0ZSgpIHdh
cyBjYWxsZWQsCisgKiBvciBmb3IgVUlURVJfTEVOR1RILCBiZWNhdXNlIGFuIGl0ZXJhdG9yIGlt
cGxlbWVudGF0aW9uIG1heSBoYXZlIHRvIGNvdW50CisgKiBVQ2hhcnMgaWYgdGhlIHVuZGVybHlp
bmcgc3RvcmFnZSBpcyBub3QgVVRGLTE2LgorICoKKyAqIEBwYXJhbSBpdGVyIHRoZSBVQ2hhckl0
ZXJhdG9yIHN0cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCisgKiBAcGFyYW0gb3JpZ2luIGdldCB0
aGUgMCwgc3RhcnQsIGxpbWl0LCBsZW5ndGgsIG9yIGN1cnJlbnQgaW5kZXgKKyAqIEByZXR1cm4g
dGhlIHJlcXVlc3RlZCBpbmRleCwgb3IgVV9TRU5USU5FTCBpbiBhbiBlcnJvciBjb25kaXRpb24K
KyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3JPcmlnaW4KKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgor
ICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK3R5cGVkZWYgaW50MzJfdCBVX0NBTExDT05WCitVQ2hh
ckl0ZXJhdG9yR2V0SW5kZXgoVUNoYXJJdGVyYXRvciAqaXRlciwgVUNoYXJJdGVyYXRvck9yaWdp
biBvcmlnaW4pOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVDaGFy
SXRlcmF0b3IubW92ZSgpLgorICoKKyAqIFVzZSBpdGVyLT5tb3ZlKGl0ZXIsIGluZGV4LCBVSVRF
Ul9aRVJPKSBsaWtlIENoYXJhY3Rlckl0ZXJhdG9yOjpzZXRJbmRleChpbmRleCkuCisgKgorICog
TW92ZXMgdGhlIGN1cnJlbnQgcG9zaXRpb24gcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9yIGxpbWl0
IG9mIHRoZQorICogaXRlcmF0aW9uIHJhbmdlLCBvciByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBw
b3NpdGlvbiBpdHNlbGYuCisgKiBUaGUgbW92ZW1lbnQgaXMgZXhwcmVzc2VkIGluIG51bWJlcnMg
b2YgY29kZSB1bml0cyBmb3J3YXJkCisgKiBvciBiYWNrd2FyZCBieSBzcGVjaWZ5aW5nIGEgcG9z
aXRpdmUgb3IgbmVnYXRpdmUgZGVsdGEuCisgKiBPdXQgb2YgYm91bmRzIG1vdmVtZW50IHdpbGwg
YmUgcGlubmVkIHRvIHRoZSBzdGFydCBvciBsaW1pdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIG1h
eSBwZXJmb3JtIHNsb3dseSBmb3IgbW92aW5nIHJlbGF0aXZlIHRvIFVJVEVSX0xFTkdUSAorICog
YmVjYXVzZSBhbiBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbiBtYXkgaGF2ZSB0byBjb3VudCB0aGUg
cmVzdCBvZiB0aGUKKyAqIFVDaGFycyBpZiB0aGUgbmF0aXZlIHN0b3JhZ2UgaXMgbm90IFVURi0x
Ni4KKyAqCisgKiBXaGVuIG1vdmluZyByZWxhdGl2ZSB0byB0aGUgbGltaXQgb3IgbGVuZ3RoLCBv
cgorICogcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24gYWZ0ZXIgc2V0U3RhdGUoKSB3
YXMgY2FsbGVkLAorICogbW92ZSgpIG1heSByZXR1cm4gVUlURVJfVU5LTk9XTl9JTkRFWCAoLTIp
IHRvIGF2b2lkIGFuIGluZWZmaWNpZW50CisgKiBkZXRlcm1pbmF0aW9uIG9mIHRoZSBhY3R1YWwg
VVRGLTE2IGluZGV4LgorICogVGhlIGFjdHVhbCBpbmRleCBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRo
IGdldEluZGV4KFVJVEVSX0NVUlJFTlQpCisgKiB3aGljaCB3aWxsIGNvdW50IHRoZSBVQ2hhcnMg
aWYgbmVjZXNzYXJ5LgorICogU2VlIFVJVEVSX1VOS05PV05fSU5ERVggZm9yIGRldGFpbHMuCisg
KgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2lu
dGVyIikKKyAqIEBwYXJhbSBkZWx0YSBjYW4gYmUgcG9zaXRpdmUsIHplcm8sIG9yIG5lZ2F0aXZl
CisgKiBAcGFyYW0gb3JpZ2luIG1vdmUgcmVsYXRpdmUgdG8gdGhlIDAsIHN0YXJ0LCBsaW1pdCwg
bGVuZ3RoLCBvciBjdXJyZW50IGluZGV4CisgKiBAcmV0dXJuIHRoZSBuZXcgaW5kZXgsIG9yIFVf
U0VOVElORUwgb24gYW4gZXJyb3IgY29uZGl0aW9uLAorICogICAgICAgICBvciBVSVRFUl9VTktO
T1dOX0lOREVYIHdoZW4gdGhlIGluZGV4IGlzIG5vdCBrbm93bi4KKyAqCisgKiBAc2VlIFVDaGFy
SXRlcmF0b3JPcmlnaW4KKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICogQHNlZSBVSVRFUl9VTktO
T1dOX0lOREVYCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLwordHlwZWRlZiBpbnQzMl90IFVfQ0FM
TENPTlYKK1VDaGFySXRlcmF0b3JNb3ZlKFVDaGFySXRlcmF0b3IgKml0ZXIsIGludDMyX3QgZGVs
dGEsIFVDaGFySXRlcmF0b3JPcmlnaW4gb3JpZ2luKTsKKworLyoqCisgKiBGdW5jdGlvbiB0eXBl
IGRlY2xhcmF0aW9uIGZvciBVQ2hhckl0ZXJhdG9yLmhhc05leHQoKS4KKyAqCisgKiBDaGVjayBp
ZiBjdXJyZW50KCkgYW5kIG5leHQoKSBjYW4gc3RpbGwKKyAqIHJldHVybiBhbm90aGVyIGNvZGUg
dW5pdC4KKyAqCisgKiBAcGFyYW0gaXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0
aGlzIHBvaW50ZXIiKQorICogQHJldHVybiBib29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIGN1cnJl
bnQoKSBhbmQgbmV4dCgpIGNhbiBzdGlsbCByZXR1cm4gYW5vdGhlciBjb2RlIHVuaXQKKyAqCisg
KiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzdGFibGUgSUNVIDIuMQorICovCit0eXBlZGVmIFVC
b29sIFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JIYXNOZXh0KFVDaGFySXRlcmF0b3IgKml0ZXIp
OworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVDaGFySXRlcmF0b3Iu
aGFzUHJldmlvdXMoKS4KKyAqCisgKiBDaGVjayBpZiBwcmV2aW91cygpIGNhbiBzdGlsbCByZXR1
cm4gYW5vdGhlciBjb2RlIHVuaXQuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRlcmF0
b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gYm9vbGVhbiB2YWx1ZSBm
b3Igd2hldGhlciBwcmV2aW91cygpIGNhbiBzdGlsbCByZXR1cm4gYW5vdGhlciBjb2RlIHVuaXQK
KyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzdGFibGUgSUNVIDIuMQorICovCit0eXBl
ZGVmIFVCb29sIFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JIYXNQcmV2aW91cyhVQ2hhckl0ZXJh
dG9yICppdGVyKTsKKyAKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVUNo
YXJJdGVyYXRvci5jdXJyZW50KCkuCisgKgorICogUmV0dXJuIHRoZSBjb2RlIHVuaXQgYXQgdGhl
IGN1cnJlbnQgcG9zaXRpb24sCisgKiBvciBVX1NFTlRJTkVMIGlmIHRoZXJlIGlzIG5vbmUgKGlu
ZGV4IGlzIGF0IHRoZSBsaW1pdCkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRlcmF0
b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIGN1cnJlbnQgY29k
ZSB1bml0CisgKgorICogQHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjEKKyAq
LwordHlwZWRlZiBVQ2hhcjMyIFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JDdXJyZW50KFVDaGFy
SXRlcmF0b3IgKml0ZXIpOworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9y
IFVDaGFySXRlcmF0b3IubmV4dCgpLgorICoKKyAqIFJldHVybiB0aGUgY29kZSB1bml0IGF0IHRo
ZSBjdXJyZW50IGluZGV4IGFuZCBpbmNyZW1lbnQKKyAqIHRoZSBpbmRleCAocG9zdC1pbmNyZW1l
bnQsIGxpa2Ugc1tpKytdKSwKKyAqIG9yIHJldHVybiBVX1NFTlRJTkVMIGlmIHRoZXJlIGlzIG5v
bmUgKGluZGV4IGlzIGF0IHRoZSBsaW1pdCkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFy
SXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIGN1cnJl
bnQgY29kZSB1bml0IChhbmQgcG9zdC1pbmNyZW1lbnQgdGhlIGN1cnJlbnQgaW5kZXgpCisgKgor
ICogQHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLwordHlwZWRlZiBV
Q2hhcjMyIFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JOZXh0KFVDaGFySXRlcmF0b3IgKml0ZXIp
OworCisvKioKKyAqIEZ1bmN0aW9uIHR5cGUgZGVjbGFyYXRpb24gZm9yIFVDaGFySXRlcmF0b3Iu
cHJldmlvdXMoKS4KKyAqCisgKiBEZWNyZW1lbnQgdGhlIGluZGV4IGFuZCByZXR1cm4gdGhlIGNv
ZGUgdW5pdCBmcm9tIHRoZXJlCisgKiAocHJlLWRlY3JlbWVudCwgbGlrZSBzWy0taV0pLAorICog
b3IgcmV0dXJuIFVfU0VOVElORUwgaWYgdGhlcmUgaXMgbm9uZSAoaW5kZXggaXMgYXQgdGhlIHN0
YXJ0KS4KKyAqCisgKiBAcGFyYW0gaXRlciB0aGUgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0
aGlzIHBvaW50ZXIiKQorICogQHJldHVybiB0aGUgcHJldmlvdXMgY29kZSB1bml0IChhZnRlciBw
cmUtZGVjcmVtZW50aW5nIHRoZSBjdXJyZW50IGluZGV4KQorICoKKyAqIEBzZWUgVUNoYXJJdGVy
YXRvcgorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK3R5cGVkZWYgVUNoYXIzMiBVX0NBTExDT05W
CitVQ2hhckl0ZXJhdG9yUHJldmlvdXMoVUNoYXJJdGVyYXRvciAqaXRlcik7CisKKy8qKgorICog
RnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlvbiBmb3IgVUNoYXJJdGVyYXRvci5yZXNlcnZlZEZuKCku
CisgKiBSZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4KKyAqCisgKiBAcGFyYW0gaXRlciB0aGUgVUNo
YXJJdGVyYXRvciBzdHJ1Y3R1cmUgKCJ0aGlzIHBvaW50ZXIiKQorICogQHBhcmFtIHNvbWV0aGlu
ZyBzb21lIGludGVnZXIgYXJndW1lbnQKKyAqIEByZXR1cm4gc29tZSBpbnRlZ2VyCisgKgorICog
QHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLwordHlwZWRlZiBpbnQz
Ml90IFVfQ0FMTENPTlYKK1VDaGFySXRlcmF0b3JSZXNlcnZlZChVQ2hhckl0ZXJhdG9yICppdGVy
LCBpbnQzMl90IHNvbWV0aGluZyk7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJhdGlv
biBmb3IgVUNoYXJJdGVyYXRvci5nZXRTdGF0ZSgpLgorICoKKyAqIEdldCB0aGUgInN0YXRlIiBv
ZiB0aGUgaXRlcmF0b3IgaW4gdGhlIGZvcm0gb2YgYSBzaW5nbGUgMzItYml0IHdvcmQuCisgKiBJ
dCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZSBzdGF0ZSB2YWx1ZSBiZSBjYWxjdWxhdGVkIHRvIGJl
IGFzIHNtYWxsIGFzCisgKiBpcyBmZWFzaWJsZS4gRm9yIHN0cmluZ3Mgd2l0aCBsaW1pdGVkIGxl
bmd0aHMsIGZld2VyIHRoYW4gMzIgYml0cyBtYXkKKyAqIGJlIHN1ZmZpY2llbnQuCisgKgorICog
VGhpcyBpcyB1c2VkIHRvZ2V0aGVyIHdpdGggc2V0U3RhdGUoKS9VQ2hhckl0ZXJhdG9yU2V0U3Rh
dGUKKyAqIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGl0ZXJhdG9yIHBvc2l0aW9uIG1vcmUgZWZm
aWNpZW50bHkgdGhhbiB3aXRoCisgKiBnZXRJbmRleCgpL21vdmUoKS4KKyAqCisgKiBUaGUgaXRl
cmF0b3Igc3RhdGUgaXMgZGVmaW5lZCBhcyBhIHVpbnQzMl90IHZhbHVlIGJlY2F1c2UgaXQgaXMg
ZGVzaWduZWQKKyAqIGZvciB1c2UgaW4gdWNvbF9uZXh0U29ydEtleVBhcnQoKSB3aGljaCBwcm92
aWRlcyAzMiBiaXRzIHRvIHN0b3JlIHRoZSBzdGF0ZQorICogb2YgdGhlIGNoYXJhY3RlciBpdGVy
YXRvci4KKyAqCisgKiBXaXRoIHNvbWUgVUNoYXJJdGVyYXRvciBpbXBsZW1lbnRhdGlvbnMgKGUu
Zy4sIFVURi04KSwKKyAqIGdldHRpbmcgYW5kIHNldHRpbmcgdGhlIFVURi0xNiBpbmRleCB3aXRo
IGV4aXN0aW5nIGZ1bmN0aW9ucworICogKGdldEluZGV4KFVJVEVSX0NVUlJFTlQpIGZvbGxvd2Vk
IGJ5IG1vdmUocG9zLCBVSVRFUl9aRVJPKSkgaXMgcG9zc2libGUgYnV0CisgKiByZWxhdGl2ZWx5
IHNsb3cgYmVjYXVzZSB0aGUgaXRlcmF0b3IgaGFzIHRvICJ3YWxrIiBmcm9tIGEga25vd24gaW5k
ZXgKKyAqIHRvIHRoZSByZXF1ZXN0ZWQgb25lLgorICogVGhpcyB0YWtlcyBtb3JlIHRpbWUgdGhl
IGZhcnRoZXIgaXQgbmVlZHMgdG8gZ28uCisgKgorICogQW4gb3BhcXVlIHN0YXRlIHZhbHVlIGFs
bG93cyBhbiBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbiB0byBwcm92aWRlCisgKiBhbiBpbnRlcm5h
bCBpbmRleCAoVVRGLTg6IHRoZSBzb3VyY2UgYnl0ZSBhcnJheSBpbmRleCkgZm9yCisgKiBmYXN0
LCBjb25zdGFudC10aW1lIHJlc3RvcmF0aW9uLgorICoKKyAqIEFmdGVyIGNhbGxpbmcgc2V0U3Rh
dGUoKSwgYSBnZXRJbmRleChVSVRFUl9DVVJSRU5UKSBtYXkgYmUgc2xvdyBiZWNhdXNlCisgKiB0
aGUgVVRGLTE2IGluZGV4IG1heSBub3QgYmUgcmVzdG9yZWQgYXMgd2VsbCwgYnV0IHRoZSBpdGVy
YXRvciBjYW4gZGVsaXZlcgorICogdGhlIGNvcnJlY3QgdGV4dCBjb250ZW50cyBhbmQgbW92ZSBy
ZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb3NpdGlvbgorICogd2l0aG91dCBwZXJmb3JtYW5jZSBk
ZWdyYWRhdGlvbi4KKyAqCisgKiBTb21lIFVDaGFySXRlcmF0b3IgaW1wbGVtZW50YXRpb25zIG1h
eSBub3QgYmUgYWJsZSB0byByZXR1cm4KKyAqIGEgdmFsaWQgc3RhdGUgZm9yIGVhY2ggcG9zaXRp
b24sIGluIHdoaWNoIGNhc2UgdGhleSByZXR1cm4gVUlURVJfTk9fU1RBVEUgaW5zdGVhZC4KKyAq
IFRoaXMgd2lsbCBiZSBjbGVhcmx5IGRvY3VtZW50ZWQgZm9yIGVhY2ggc3VjaCBpdGVyYXRvciAo
bm9uZSBvZiB0aGUgcHVibGljIG9uZXMgaGVyZSkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVD
aGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIHN0
YXRlIHdvcmQKKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzZWUgVUNoYXJJdGVyYXRv
clNldFN0YXRlCisgKiBAc2VlIFVJVEVSX05PX1NUQVRFCisgKiBAc3RhYmxlIElDVSAyLjYKKyAq
LwordHlwZWRlZiB1aW50MzJfdCBVX0NBTExDT05WCitVQ2hhckl0ZXJhdG9yR2V0U3RhdGUoY29u
c3QgVUNoYXJJdGVyYXRvciAqaXRlcik7CisKKy8qKgorICogRnVuY3Rpb24gdHlwZSBkZWNsYXJh
dGlvbiBmb3IgVUNoYXJJdGVyYXRvci5zZXRTdGF0ZSgpLgorICoKKyAqIFJlc3RvcmUgdGhlICJz
dGF0ZSIgb2YgdGhlIGl0ZXJhdG9yIHVzaW5nIGEgc3RhdGUgd29yZCBmcm9tIGEgZ2V0U3RhdGUo
KSBjYWxsLgorICogVGhlIGl0ZXJhdG9yIG9iamVjdCBuZWVkIG5vdCBiZSB0aGUgc2FtZSBvbmUg
YXMgZm9yIHdoaWNoIGdldFN0YXRlKCkgd2FzIGNhbGxlZCwKKyAqIGJ1dCBpdCBtdXN0IGJlIG9m
IHRoZSBzYW1lIHR5cGUgKHNldCB1cCB1c2luZyB0aGUgc2FtZSB1aXRlcl9zZXRYWVogZnVuY3Rp
b24pCisgKiBhbmQgaXQgbXVzdCBpdGVyYXRlIG92ZXIgdGhlIHNhbWUgc3RyaW5nCisgKiAoYmlu
YXJ5IGlkZW50aWNhbCByZWdhcmRsZXNzIG9mIG1lbW9yeSBhZGRyZXNzKS4KKyAqIEZvciBtb3Jl
IGFib3V0IHRoZSBzdGF0ZSB3b3JkIHNlZSBVQ2hhckl0ZXJhdG9yR2V0U3RhdGUuCisgKgorICog
QWZ0ZXIgY2FsbGluZyBzZXRTdGF0ZSgpLCBhIGdldEluZGV4KFVJVEVSX0NVUlJFTlQpIG1heSBi
ZSBzbG93IGJlY2F1c2UKKyAqIHRoZSBVVEYtMTYgaW5kZXggbWF5IG5vdCBiZSByZXN0b3JlZCBh
cyB3ZWxsLCBidXQgdGhlIGl0ZXJhdG9yIGNhbiBkZWxpdmVyCisgKiB0aGUgY29ycmVjdCB0ZXh0
IGNvbnRlbnRzIGFuZCBtb3ZlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uCisgKiB3
aXRob3V0IHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uLgorICoKKyAqIEBwYXJhbSBpdGVyIHRoZSBV
Q2hhckl0ZXJhdG9yIHN0cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCisgKiBAcGFyYW0gc3RhdGUg
dGhlIHN0YXRlIHdvcmQgZnJvbSBhIGdldFN0YXRlKCkgY2FsbAorICogICAgICAgICAgICAgIG9u
IGEgc2FtZS10eXBlLCBzYW1lLXN0cmluZyBpdGVyYXRvcgorICogQHBhcmFtIHBFcnJvckNvZGUg
TXVzdCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKKyAqICAgICAg
ICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhl
IGZ1bmN0aW9uIGNhbGwuCisgKgorICogQHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc2VlIFVDaGFy
SXRlcmF0b3JHZXRTdGF0ZQorICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK3R5cGVkZWYgdm9pZCBV
X0NBTExDT05WCitVQ2hhckl0ZXJhdG9yU2V0U3RhdGUoVUNoYXJJdGVyYXRvciAqaXRlciwgdWlu
dDMyX3Qgc3RhdGUsIFVFcnJvckNvZGUgKnBFcnJvckNvZGUpOworCisKKy8qKgorICogQyBBUEkg
Zm9yIGNvZGUgdW5pdCBpdGVyYXRpb24uCisgKiBUaGlzIGNhbiBiZSB1c2VkIGFzIGEgQyB3cmFw
cGVyIGFyb3VuZAorICogQ2hhcmFjdGVySXRlcmF0b3IsIFJlcGxhY2VhYmxlLCBvciBpbXBsZW1l
bnRlZCB1c2luZyBzaW1wbGUgc3RyaW5ncywgZXRjLgorICoKKyAqIFRoZXJlIGFyZSB0d28gcm9s
ZXMgZm9yIHVzaW5nIFVDaGFySXRlcmF0b3I6CisgKgorICogQSAicHJvdmlkZXIiIHNldHMgdGhl
IG5lY2Vzc2FyeSBmdW5jdGlvbiBwb2ludGVycyBhbmQgY29udHJvbHMgdGhlICJwcm90ZWN0ZWQi
CisgKiBmaWVsZHMgb2YgdGhlIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlLiBBICJwcm92aWRlciIg
cGFzc2VzIGEgVUNoYXJJdGVyYXRvcgorICogaW50byBDIEFQSXMgdGhhdCBuZWVkIGEgVUNoYXJJ
dGVyYXRvciBhcyBhbiBhYnN0cmFjdCwgZmxleGlibGUgc3RyaW5nIGludGVyZmFjZS4KKyAqCisg
KiBJbXBsZW1lbnRhdGlvbnMgb2Ygc3VjaCBDIEFQSXMgYXJlICJjYWxsZXJzIiBvZiBVQ2hhckl0
ZXJhdG9yIGZ1bmN0aW9uczsKKyAqIHRoZXkgb25seSB1c2UgdGhlICJwdWJsaWMiIGZ1bmN0aW9u
IHBvaW50ZXJzIGFuZCBuZXZlciBhY2Nlc3MgdGhlICJwcm90ZWN0ZWQiCisgKiBmaWVsZHMgZGly
ZWN0bHkuCisgKgorICogVGhlIGN1cnJlbnQoKSBhbmQgbmV4dCgpIGZ1bmN0aW9ucyBvbmx5IGNo
ZWNrIHRoZSBjdXJyZW50IGluZGV4IGFnYWluc3QgdGhlCisgKiBsaW1pdCwgYW5kIHByZXZpb3Vz
KCkgb25seSBjaGVja3MgdGhlIGN1cnJlbnQgaW5kZXggYWdhaW5zdCB0aGUgc3RhcnQsCisgKiB0
byBzZWUgaWYgdGhlIGl0ZXJhdG9yIGFscmVhZHkgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpdGVy
YXRpb24gcmFuZ2UuCisgKgorICogVGhlIGFzc3VtcHRpb24gLSBpbiBhbGwgaXRlcmF0b3JzIC0g
aXMgdGhhdCB0aGUgaW5kZXggaXMgbW92ZWQgdmlhIHRoZSBBUEksCisgKiB3aGljaCBtZWFucyBp
dCB3b24ndCBnbyBvdXQgb2YgYm91bmRzLCBvciB0aGUgaW5kZXggaXMgbW9kaWZpZWQgYnkKKyAq
IHVzZXIgY29kZSB0aGF0IGtub3dzIGVub3VnaCBhYm91dCB0aGUgaXRlcmF0b3IgaW1wbGVtZW50
YXRpb24gdG8gc2V0IHZhbGlkCisgKiBpbmRleCB2YWx1ZXMuCisgKgorICogVUNoYXJJdGVyYXRv
ciBmdW5jdGlvbnMgcmV0dXJuIGNvZGUgdW5pdCB2YWx1ZXMgMC4uMHhmZmZmLAorICogb3IgVV9T
RU5USU5FTCBpZiB0aGUgaXRlcmF0aW9uIGJvdW5kcyBhcmUgcmVhY2hlZC4KKyAqCisgKiBAc3Rh
YmxlIElDVSAyLjEKKyAqLworc3RydWN0IFVDaGFySXRlcmF0b3IgeworICAgIC8qKgorICAgICAq
IChwcm90ZWN0ZWQpIFBvaW50ZXIgdG8gc3RyaW5nIG9yIHdyYXBwZWQgb2JqZWN0IG9yIHNpbWls
YXIuCisgICAgICogTm90IHVzZWQgYnkgY2FsbGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQor
ICAgICAqLworICAgIGNvbnN0IHZvaWQgKmNvbnRleHQ7CisKKyAgICAvKioKKyAgICAgKiAocHJv
dGVjdGVkKSBMZW5ndGggb2Ygc3RyaW5nIG9yIHNpbWlsYXIuCisgICAgICogTm90IHVzZWQgYnkg
Y2FsbGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIGludDMyX3QgbGVu
Z3RoOworCisgICAgLyoqCisgICAgICogKHByb3RlY3RlZCkgU3RhcnQgaW5kZXggb3Igc2ltaWxh
ci4KKyAgICAgKiBOb3QgdXNlZCBieSBjYWxsZXIuCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisg
ICAgICovCisgICAgaW50MzJfdCBzdGFydDsKKworICAgIC8qKgorICAgICAqIChwcm90ZWN0ZWQp
IEN1cnJlbnQgaW5kZXggb3Igc2ltaWxhci4KKyAgICAgKiBOb3QgdXNlZCBieSBjYWxsZXIuCisg
ICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgaW50MzJfdCBpbmRleDsKKworICAg
IC8qKgorICAgICAqIChwcm90ZWN0ZWQpIExpbWl0IGluZGV4IG9yIHNpbWlsYXIuCisgICAgICog
Tm90IHVzZWQgYnkgY2FsbGVyLgorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAg
IGludDMyX3QgbGltaXQ7CisKKyAgICAvKioKKyAgICAgKiAocHJvdGVjdGVkKSBVc2VkIGJ5IFVU
Ri04IGl0ZXJhdG9ycyBhbmQgcG9zc2libHkgb3RoZXJzLgorICAgICAqIEBzdGFibGUgSUNVIDIu
MQorICAgICAqLworICAgIGludDMyX3QgcmVzZXJ2ZWRGaWVsZDsKKworICAgIC8qKgorICAgICAq
IChwdWJsaWMpIFJldHVybnMgdGhlIGN1cnJlbnQgcG9zaXRpb24gb3IgdGhlCisgICAgICogc3Rh
cnQgb3IgbGltaXQgaW5kZXggb2YgdGhlIGl0ZXJhdGlvbiByYW5nZS4KKyAgICAgKgorICAgICAq
IEBzZWUgVUNoYXJJdGVyYXRvckdldEluZGV4CisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAg
ICovCisgICAgVUNoYXJJdGVyYXRvckdldEluZGV4ICpnZXRJbmRleDsKKworICAgIC8qKgorICAg
ICAqIChwdWJsaWMpIE1vdmVzIHRoZSBjdXJyZW50IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBz
dGFydCBvciBsaW1pdCBvZiB0aGUKKyAgICAgKiBpdGVyYXRpb24gcmFuZ2UsIG9yIHJlbGF0aXZl
IHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uIGl0c2VsZi4KKyAgICAgKiBUaGUgbW92ZW1lbnQgaXMg
ZXhwcmVzc2VkIGluIG51bWJlcnMgb2YgY29kZSB1bml0cyBmb3J3YXJkCisgICAgICogb3IgYmFj
a3dhcmQgYnkgc3BlY2lmeWluZyBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGRlbHRhLgorICAgICAq
CisgICAgICogQHNlZSBVQ2hhckl0ZXJhdG9yTW92ZQorICAgICAqIEBzdGFibGUgSUNVIDIuMQor
ICAgICAqLworICAgIFVDaGFySXRlcmF0b3JNb3ZlICptb3ZlOworCisgICAgLyoqCisgICAgICog
KHB1YmxpYykgQ2hlY2sgaWYgY3VycmVudCgpIGFuZCBuZXh0KCkgY2FuIHN0aWxsCisgICAgICog
cmV0dXJuIGFub3RoZXIgY29kZSB1bml0LgorICAgICAqCisgICAgICogQHNlZSBVQ2hhckl0ZXJh
dG9ySGFzTmV4dAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIFVDaGFySXRl
cmF0b3JIYXNOZXh0ICpoYXNOZXh0OworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgQ2hlY2sg
aWYgcHJldmlvdXMoKSBjYW4gc3RpbGwgcmV0dXJuIGFub3RoZXIgY29kZSB1bml0LgorICAgICAq
CisgICAgICogQHNlZSBVQ2hhckl0ZXJhdG9ySGFzUHJldmlvdXMKKyAgICAgKiBAc3RhYmxlIElD
VSAyLjEKKyAgICAgKi8KKyAgICBVQ2hhckl0ZXJhdG9ySGFzUHJldmlvdXMgKmhhc1ByZXZpb3Vz
OworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgUmV0dXJuIHRoZSBjb2RlIHVuaXQgYXQgdGhl
IGN1cnJlbnQgcG9zaXRpb24sCisgICAgICogb3IgVV9TRU5USU5FTCBpZiB0aGVyZSBpcyBub25l
IChpbmRleCBpcyBhdCB0aGUgbGltaXQpLgorICAgICAqCisgICAgICogQHNlZSBVQ2hhckl0ZXJh
dG9yQ3VycmVudAorICAgICAqIEBzdGFibGUgSUNVIDIuMQorICAgICAqLworICAgIFVDaGFySXRl
cmF0b3JDdXJyZW50ICpjdXJyZW50OworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgUmV0dXJu
IHRoZSBjb2RlIHVuaXQgYXQgdGhlIGN1cnJlbnQgaW5kZXggYW5kIGluY3JlbWVudAorICAgICAq
IHRoZSBpbmRleCAocG9zdC1pbmNyZW1lbnQsIGxpa2Ugc1tpKytdKSwKKyAgICAgKiBvciByZXR1
cm4gVV9TRU5USU5FTCBpZiB0aGVyZSBpcyBub25lIChpbmRleCBpcyBhdCB0aGUgbGltaXQpLgor
ICAgICAqCisgICAgICogQHNlZSBVQ2hhckl0ZXJhdG9yTmV4dAorICAgICAqIEBzdGFibGUgSUNV
IDIuMQorICAgICAqLworICAgIFVDaGFySXRlcmF0b3JOZXh0ICpuZXh0OworCisgICAgLyoqCisg
ICAgICogKHB1YmxpYykgRGVjcmVtZW50IHRoZSBpbmRleCBhbmQgcmV0dXJuIHRoZSBjb2RlIHVu
aXQgZnJvbSB0aGVyZQorICAgICAqIChwcmUtZGVjcmVtZW50LCBsaWtlIHNbLS1pXSksCisgICAg
ICogb3IgcmV0dXJuIFVfU0VOVElORUwgaWYgdGhlcmUgaXMgbm9uZSAoaW5kZXggaXMgYXQgdGhl
IHN0YXJ0KS4KKyAgICAgKgorICAgICAqIEBzZWUgVUNoYXJJdGVyYXRvclByZXZpb3VzCisgICAg
ICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgVUNoYXJJdGVyYXRvclByZXZpb3VzICpw
cmV2aW91czsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIFJlc2VydmVkIGZvciBmdXR1cmUg
dXNlLiBDdXJyZW50bHkgTlVMTC4KKyAgICAgKgorICAgICAqIEBzZWUgVUNoYXJJdGVyYXRvclJl
c2VydmVkCisgICAgICogQHN0YWJsZSBJQ1UgMi4xCisgICAgICovCisgICAgVUNoYXJJdGVyYXRv
clJlc2VydmVkICpyZXNlcnZlZEZuOworCisgICAgLyoqCisgICAgICogKHB1YmxpYykgUmV0dXJu
IHRoZSBzdGF0ZSBvZiB0aGUgaXRlcmF0b3IsIHRvIGJlIHJlc3RvcmVkIGxhdGVyIHdpdGggc2V0
U3RhdGUoKS4KKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHBvaW50ZXIgaXMgTlVMTCBpZiB0aGUgaXRl
cmF0b3IgZG9lcyBub3QgaW1wbGVtZW50IGl0LgorICAgICAqCisgICAgICogQHNlZSBVQ2hhckl0
ZXJhdG9yR2V0CisgICAgICogQHN0YWJsZSBJQ1UgMi42CisgICAgICovCisgICAgVUNoYXJJdGVy
YXRvckdldFN0YXRlICpnZXRTdGF0ZTsKKworICAgIC8qKgorICAgICAqIChwdWJsaWMpIFJlc3Rv
cmUgdGhlIGl0ZXJhdG9yIHN0YXRlIGZyb20gdGhlIHN0YXRlIHdvcmQgZnJvbSBhIGNhbGwKKyAg
ICAgKiB0byBnZXRTdGF0ZSgpLgorICAgICAqIFRoaXMgZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxM
IGlmIHRoZSBpdGVyYXRvciBkb2VzIG5vdCBpbXBsZW1lbnQgaXQuCisgICAgICoKKyAgICAgKiBA
c2VlIFVDaGFySXRlcmF0b3JTZXQKKyAgICAgKiBAc3RhYmxlIElDVSAyLjYKKyAgICAgKi8KKyAg
ICBVQ2hhckl0ZXJhdG9yU2V0U3RhdGUgKnNldFN0YXRlOworfTsKKworLyoqCisgKiBIZWxwZXIg
ZnVuY3Rpb24gZm9yIFVDaGFySXRlcmF0b3IgdG8gZ2V0IHRoZSBjb2RlIHBvaW50CisgKiBhdCB0
aGUgY3VycmVudCBpbmRleC4KKyAqCisgKiBSZXR1cm4gdGhlIGNvZGUgcG9pbnQgdGhhdCBpbmNs
dWRlcyB0aGUgY29kZSB1bml0IGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLAorICogb3IgVV9TRU5U
SU5FTCBpZiB0aGVyZSBpcyBub25lIChpbmRleCBpcyBhdCB0aGUgbGltaXQpLgorICogSWYgdGhl
IGN1cnJlbnQgY29kZSB1bml0IGlzIGEgbGVhZCBvciB0cmFpbCBzdXJyb2dhdGUsCisgKiB0aGVu
IHRoZSBmb2xsb3dpbmcgb3IgcHJlY2VkaW5nIHN1cnJvZ2F0ZSBpcyB1c2VkIHRvIGZvcm0KKyAq
IHRoZSBjb2RlIHBvaW50IHZhbHVlLgorICoKKyAqIEBwYXJhbSBpdGVyIHRoZSBVQ2hhckl0ZXJh
dG9yIHN0cnVjdHVyZSAoInRoaXMgcG9pbnRlciIpCisgKiBAcmV0dXJuIHRoZSBjdXJyZW50IGNv
ZGUgcG9pbnQKKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzZWUgVTE2X0dFVAorICog
QHNlZSBVbmljb2RlU3RyaW5nOjpjaGFyMzJBdCgpCisgKiBAc3RhYmxlIElDVSAyLjEKKyAqLwor
VV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3VpdGVyX2N1cnJlbnQzMihVQ2hhckl0ZXJhdG9y
ICppdGVyKTsKKworLyoqCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFVDaGFySXRlcmF0b3IgdG8g
Z2V0IHRoZSBuZXh0IGNvZGUgcG9pbnQuCisgKgorICogUmV0dXJuIHRoZSBjb2RlIHBvaW50IGF0
IHRoZSBjdXJyZW50IGluZGV4IGFuZCBpbmNyZW1lbnQKKyAqIHRoZSBpbmRleCAocG9zdC1pbmNy
ZW1lbnQsIGxpa2Ugc1tpKytdKSwKKyAqIG9yIHJldHVybiBVX1NFTlRJTkVMIGlmIHRoZXJlIGlz
IG5vbmUgKGluZGV4IGlzIGF0IHRoZSBsaW1pdCkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVD
aGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIGN1
cnJlbnQgY29kZSBwb2ludCAoYW5kIHBvc3QtaW5jcmVtZW50IHRoZSBjdXJyZW50IGluZGV4KQor
ICoKKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICogQHNlZSBVMTZfTkVYVAorICogQHN0YWJsZSBJ
Q1UgMi4xCisgKi8KK1VfU1RBQkxFIFVDaGFyMzIgVV9FWFBPUlQyCit1aXRlcl9uZXh0MzIoVUNo
YXJJdGVyYXRvciAqaXRlcik7CisKKy8qKgorICogSGVscGVyIGZ1bmN0aW9uIGZvciBVQ2hhckl0
ZXJhdG9yIHRvIGdldCB0aGUgcHJldmlvdXMgY29kZSBwb2ludC4KKyAqCisgKiBEZWNyZW1lbnQg
dGhlIGluZGV4IGFuZCByZXR1cm4gdGhlIGNvZGUgcG9pbnQgZnJvbSB0aGVyZQorICogKHByZS1k
ZWNyZW1lbnQsIGxpa2Ugc1stLWldKSwKKyAqIG9yIHJldHVybiBVX1NFTlRJTkVMIGlmIHRoZXJl
IGlzIG5vbmUgKGluZGV4IGlzIGF0IHRoZSBzdGFydCkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhl
IFVDaGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhl
IHByZXZpb3VzIGNvZGUgcG9pbnQgKGFmdGVyIHByZS1kZWNyZW1lbnRpbmcgdGhlIGN1cnJlbnQg
aW5kZXgpCisgKgorICogQHNlZSBVQ2hhckl0ZXJhdG9yCisgKiBAc2VlIFUxNl9QUkVWCisgKiBA
c3RhYmxlIElDVSAyLjEKKyAqLworVV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3VpdGVyX3By
ZXZpb3VzMzIoVUNoYXJJdGVyYXRvciAqaXRlcik7CisKKy8qKgorICogR2V0IHRoZSAic3RhdGUi
IG9mIHRoZSBpdGVyYXRvciBpbiB0aGUgZm9ybSBvZiBhIHNpbmdsZSAzMi1iaXQgd29yZC4KKyAq
IFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIGl0ZXItPmdldFN0YXRl
KGl0ZXIpCisgKiBpZiBpdGVyLT5nZXRTdGF0ZSBpcyBub3QgTlVMTDsKKyAqIGlmIGl0IGlzIE5V
TEwgb3IgYW55IG90aGVyIGVycm9yIG9jY3VycywgdGhlbiBVSVRFUl9OT19TVEFURSBpcyByZXR1
cm5lZC4KKyAqCisgKiBTb21lIFVDaGFySXRlcmF0b3IgaW1wbGVtZW50YXRpb25zIG1heSBub3Qg
YmUgYWJsZSB0byByZXR1cm4KKyAqIGEgdmFsaWQgc3RhdGUgZm9yIGVhY2ggcG9zaXRpb24sIGlu
IHdoaWNoIGNhc2UgdGhleSByZXR1cm4gVUlURVJfTk9fU1RBVEUgaW5zdGVhZC4KKyAqIFRoaXMg
d2lsbCBiZSBjbGVhcmx5IGRvY3VtZW50ZWQgZm9yIGVhY2ggc3VjaCBpdGVyYXRvciAobm9uZSBv
ZiB0aGUgcHVibGljIG9uZXMgaGVyZSkuCisgKgorICogQHBhcmFtIGl0ZXIgdGhlIFVDaGFySXRl
cmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEByZXR1cm4gdGhlIHN0YXRlIHdv
cmQKKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAqIEBzZWUgVUNoYXJJdGVyYXRvckdldFN0
YXRlCisgKiBAc2VlIFVJVEVSX05PX1NUQVRFCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworVV9T
VEFCTEUgdWludDMyX3QgVV9FWFBPUlQyCit1aXRlcl9nZXRTdGF0ZShjb25zdCBVQ2hhckl0ZXJh
dG9yICppdGVyKTsKKworLyoqCisgKiBSZXN0b3JlIHRoZSAic3RhdGUiIG9mIHRoZSBpdGVyYXRv
ciB1c2luZyBhIHN0YXRlIHdvcmQgZnJvbSBhIGdldFN0YXRlKCkgY2FsbC4KKyAqIFRoaXMgaXMg
YSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIGl0ZXItPnNldFN0YXRlKGl0ZXIsIHN0
YXRlLCBwRXJyb3JDb2RlKQorICogaWYgaXRlci0+c2V0U3RhdGUgaXMgbm90IE5VTEw7IGlmIGl0
IGlzIE5VTEwsIHRoZW4gVV9VTlNVUFBPUlRFRF9FUlJPUiBpcyBzZXQuCisgKgorICogQHBhcmFt
IGl0ZXIgdGhlIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlICgidGhpcyBwb2ludGVyIikKKyAqIEBw
YXJhbSBzdGF0ZSB0aGUgc3RhdGUgd29yZCBmcm9tIGEgZ2V0U3RhdGUoKSBjYWxsCisgKiAgICAg
ICAgICAgICAgb24gYSBzYW1lLXR5cGUsIHNhbWUtc3RyaW5nIGl0ZXJhdG9yCisgKiBAcGFyYW0g
cEVycm9yQ29kZSBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVl
LAorICogICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJl
IGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAqCisgKiBAc2VlIFVDaGFySXRlcmF0b3IKKyAq
IEBzZWUgVUNoYXJJdGVyYXRvclNldFN0YXRlCisgKiBAc3RhYmxlIElDVSAyLjYKKyAqLworVV9T
VEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VpdGVyX3NldFN0YXRlKFVDaGFySXRlcmF0b3IgKml0ZXIs
IHVpbnQzMl90IHN0YXRlLCBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisgKiBTZXQg
dXAgYSBVQ2hhckl0ZXJhdG9yIHRvIGl0ZXJhdGUgb3ZlciBhIHN0cmluZy4KKyAqCisgKiBTZXRz
IHRoZSBVQ2hhckl0ZXJhdG9yIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBpdGVyYXRpb24gb3ZlciB0
aGUgc3RyaW5nIHMKKyAqIHdpdGggaXRlcmF0aW9uIGJvdW5kYXJpZXMgc3RhcnQ9aW5kZXg9MCBh
bmQgbGVuZ3RoPWxpbWl0PXN0cmluZyBsZW5ndGguCisgKiBUaGUgInByb3ZpZGVyIiBtYXkgc2V0
IHRoZSBzdGFydCwgaW5kZXgsIGFuZCBsaW1pdCB2YWx1ZXMgYXQgYW55IHRpbWUKKyAqIHdpdGhp
biB0aGUgcmFuZ2UgMC4ubGVuZ3RoLgorICogVGhlIGxlbmd0aCBmaWVsZCB3aWxsIGJlIGlnbm9y
ZWQuCisgKgorICogVGhlIHN0cmluZyBwb2ludGVyIHMgaXMgc2V0IGludG8gVUNoYXJJdGVyYXRv
ci5jb250ZXh0IHdpdGhvdXQgY29weWluZworICogb3IgcmVhbGxvY2F0aW5nIHRoZSBzdHJpbmcg
Y29udGVudHMuCisgKgorICogZ2V0U3RhdGUoKSBzaW1wbHkgcmV0dXJucyB0aGUgY3VycmVudCBp
bmRleC4KKyAqIG1vdmUoKSB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIGZpbmFsIGluZGV4LgorICoK
KyAqIEBwYXJhbSBpdGVyIFVDaGFySXRlcmF0b3Igc3RydWN0dXJlIHRvIGJlIHNldCBmb3IgaXRl
cmF0aW9uCisgKiBAcGFyYW0gcyBTdHJpbmcgdG8gaXRlcmF0ZSBvdmVyCisgKiBAcGFyYW0gbGVu
Z3RoIExlbmd0aCBvZiBzLCBvciAtMSBpZiBOVUwtdGVybWluYXRlZAorICoKKyAqIEBzZWUgVUNo
YXJJdGVyYXRvcgorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBP
UlQyCit1aXRlcl9zZXRTdHJpbmcoVUNoYXJJdGVyYXRvciAqaXRlciwgY29uc3QgVUNoYXIgKnMs
IGludDMyX3QgbGVuZ3RoKTsKKworLyoqCisgKiBTZXQgdXAgYSBVQ2hhckl0ZXJhdG9yIHRvIGl0
ZXJhdGUgb3ZlciBhIFVURi0xNkJFIHN0cmluZworICogKGJ5dGUgdmVjdG9yIHdpdGggYSBiaWct
ZW5kaWFuIHBhaXIgb2YgYnl0ZXMgcGVyIFVDaGFyKS4KKyAqCisgKiBFdmVyeXRoaW5nIHdvcmtz
IGp1c3QgbGlrZSB3aXRoIGEgbm9ybWFsIFVDaGFyIGl0ZXJhdG9yICh1aXRlcl9zZXRTdHJpbmcp
LAorICogZXhjZXB0IHRoYXQgVUNoYXJzIGFyZSBhc3NlbWJsZWQgZnJvbSBieXRlIHBhaXJzLAor
ICogYW5kIHRoYXQgdGhlIGxlbmd0aCBhcmd1bWVudCBoZXJlIGluZGljYXRlcyBhbiBldmVuIG51
bWJlciBvZiBieXRlcy4KKyAqCisgKiBnZXRTdGF0ZSgpIHNpbXBseSByZXR1cm5zIHRoZSBjdXJy
ZW50IGluZGV4LgorICogbW92ZSgpIHdpbGwgYWx3YXlzIHJldHVybiB0aGUgZmluYWwgaW5kZXgu
CisgKgorICogQHBhcmFtIGl0ZXIgVUNoYXJJdGVyYXRvciBzdHJ1Y3R1cmUgdG8gYmUgc2V0IGZv
ciBpdGVyYXRpb24KKyAqIEBwYXJhbSBzIFVURi0xNkJFIHN0cmluZyB0byBpdGVyYXRlIG92ZXIK
KyAqIEBwYXJhbSBsZW5ndGggTGVuZ3RoIG9mIHMgYXMgYW4gZXZlbiBudW1iZXIgb2YgYnl0ZXMs
IG9yIC0xIGlmIE5VTC10ZXJtaW5hdGVkCisgKiAgICAgICAgICAgICAgIChOVUwgbWVhbnMgcGFp
ciBvZiAwIGJ5dGVzIGF0IGV2ZW4gaW5kZXggZnJvbSBzKQorICoKKyAqIEBzZWUgVUNoYXJJdGVy
YXRvcgorICogQHNlZSB1aXRlcl9zZXRTdHJpbmcKKyAqIEBzdGFibGUgSUNVIDIuNgorICovCitV
X1NUQUJMRSB2b2lkIFVfRVhQT1JUMgordWl0ZXJfc2V0VVRGMTZCRShVQ2hhckl0ZXJhdG9yICpp
dGVyLCBjb25zdCBjaGFyICpzLCBpbnQzMl90IGxlbmd0aCk7CisKKy8qKgorICogU2V0IHVwIGEg
VUNoYXJJdGVyYXRvciB0byBpdGVyYXRlIG92ZXIgYSBVVEYtOCBzdHJpbmcuCisgKgorICogU2V0
cyB0aGUgVUNoYXJJdGVyYXRvciBmdW5jdGlvbiBwb2ludGVycyBmb3IgaXRlcmF0aW9uIG92ZXIg
dGhlIFVURi04IHN0cmluZyBzCisgKiB3aXRoIFVURi04IGl0ZXJhdGlvbiBib3VuZGFyaWVzIDAg
YW5kIGxlbmd0aC4KKyAqIFRoZSBpbXBsZW1lbnRhdGlvbiBjb3VudHMgdGhlIFVURi0xNiBpbmRl
eCBvbiB0aGUgZmx5IGFuZAorICogbGF6aWx5IGV2YWx1YXRlcyB0aGUgVVRGLTE2IGxlbmd0aCBv
ZiB0aGUgdGV4dC4KKyAqCisgKiBUaGUgc3RhcnQgZmllbGQgaXMgdXNlZCBhcyB0aGUgVVRGLTgg
b2Zmc2V0LCB0aGUgbGltaXQgZmllbGQgYXMgdGhlIFVURi04IGxlbmd0aC4KKyAqIFdoZW4gdGhl
IHJlc2VydmVkRmllbGQgaXMgbm90IDAsIHRoZW4gaXQgY29udGFpbnMgYSBzdXBwbGVtZW50YXJ5
IGNvZGUgcG9pbnQKKyAqIGFuZCB0aGUgVVRGLTE2IGluZGV4IGlzIGJldHdlZW4gdGhlIHR3byBj
b3JyZXNwb25kaW5nIHN1cnJvZ2F0ZXMuCisgKiBBdCB0aGF0IHBvaW50LCB0aGUgVVRGLTggaW5k
ZXggaXMgYmVoaW5kIHRoYXQgY29kZSBwb2ludC4KKyAqCisgKiBUaGUgVVRGLTggc3RyaW5nIHBv
aW50ZXIgcyBpcyBzZXQgaW50byBVQ2hhckl0ZXJhdG9yLmNvbnRleHQgd2l0aG91dCBjb3B5aW5n
CisgKiBvciByZWFsbG9jYXRpbmcgdGhlIHN0cmluZyBjb250ZW50cy4KKyAqCisgKiBnZXRTdGF0
ZSgpIHJldHVybnMgYSBzdGF0ZSB2YWx1ZSBjb25zaXN0aW5nIG9mCisgKiAtIHRoZSBjdXJyZW50
IFVURi04IHNvdXJjZSBieXRlIGluZGV4IChiaXRzIDMxLi4xKQorICogLSBhIGZsYWcgKGJpdCAw
KSB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBVQ2hhciBwb3NpdGlvbiBpcyBpbiB0aGUgbWlk
ZGxlCisgKiAgIG9mIGEgc3Vycm9nYXRlIHBhaXIKKyAqICAgKGZyb20gYSA0LWJ5dGUgVVRGLTgg
c2VxdWVuY2UgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCkK
KyAqCisgKiBnZXRTdGF0ZSgpIGNhbm5vdCBhbHNvIGVuY29kZSB0aGUgVVRGLTE2IGluZGV4IGlu
IHRoZSBzdGF0ZSB2YWx1ZS4KKyAqIG1vdmUocmVsYXRpdmUgdG8gbGltaXQgb3IgbGVuZ3RoKSwg
b3IKKyAqIG1vdmUocmVsYXRpdmUgdG8gY3VycmVudCkgYWZ0ZXIgc2V0U3RhdGUoKSwgbWF5IHJl
dHVybiBVSVRFUl9VTktOT1dOX0lOREVYLgorICoKKyAqIEBwYXJhbSBpdGVyIFVDaGFySXRlcmF0
b3Igc3RydWN0dXJlIHRvIGJlIHNldCBmb3IgaXRlcmF0aW9uCisgKiBAcGFyYW0gcyBVVEYtOCBz
dHJpbmcgdG8gaXRlcmF0ZSBvdmVyCisgKiBAcGFyYW0gbGVuZ3RoIExlbmd0aCBvZiBzIGluIGJ5
dGVzLCBvciAtMSBpZiBOVUwtdGVybWluYXRlZAorICoKKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgor
ICogQHN0YWJsZSBJQ1UgMi42CisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1aXRlcl9z
ZXRVVEY4KFVDaGFySXRlcmF0b3IgKml0ZXIsIGNvbnN0IGNoYXIgKnMsIGludDMyX3QgbGVuZ3Ro
KTsKKworI2lmZGVmIFhQX0NQTFVTUExVUworCisvKioKKyAqIFNldCB1cCBhIFVDaGFySXRlcmF0
b3IgdG8gd3JhcCBhcm91bmQgYSBDKysgQ2hhcmFjdGVySXRlcmF0b3IuCisgKgorICogU2V0cyB0
aGUgVUNoYXJJdGVyYXRvciBmdW5jdGlvbiBwb2ludGVycyBmb3IgaXRlcmF0aW9uIHVzaW5nIHRo
ZQorICogQ2hhcmFjdGVySXRlcmF0b3IgY2hhckl0ZXIuCisgKgorICogVGhlIENoYXJhY3Rlckl0
ZXJhdG9yIHBvaW50ZXIgY2hhckl0ZXIgaXMgc2V0IGludG8gVUNoYXJJdGVyYXRvci5jb250ZXh0
CisgKiB3aXRob3V0IGNvcHlpbmcgb3IgY2xvbmluZyB0aGUgQ2hhcmFjdGVySXRlcmF0b3Igb2Jq
ZWN0LgorICogVGhlIG90aGVyICJwcm90ZWN0ZWQiIFVDaGFySXRlcmF0b3IgZmllbGRzIGFyZSBz
ZXQgdG8gMCBhbmQgd2lsbCBiZSBpZ25vcmVkLgorICogVGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQg
Ym91bmRhcmllcyBhcmUgY29udHJvbGxlZCBieSB0aGUgQ2hhcmFjdGVySXRlcmF0b3IuCisgKgor
ICogZ2V0U3RhdGUoKSBzaW1wbHkgcmV0dXJucyB0aGUgY3VycmVudCBpbmRleC4KKyAqIG1vdmUo
KSB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIGZpbmFsIGluZGV4LgorICoKKyAqIEBwYXJhbSBpdGVy
IFVDaGFySXRlcmF0b3Igc3RydWN0dXJlIHRvIGJlIHNldCBmb3IgaXRlcmF0aW9uCisgKiBAcGFy
YW0gY2hhckl0ZXIgQ2hhcmFjdGVySXRlcmF0b3IgdG8gd3JhcAorICoKKyAqIEBzZWUgVUNoYXJJ
dGVyYXRvcgorICogQHN0YWJsZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQy
Cit1aXRlcl9zZXRDaGFyYWN0ZXJJdGVyYXRvcihVQ2hhckl0ZXJhdG9yICppdGVyLCBDaGFyYWN0
ZXJJdGVyYXRvciAqY2hhckl0ZXIpOworCisvKioKKyAqIFNldCB1cCBhIFVDaGFySXRlcmF0b3Ig
dG8gaXRlcmF0ZSBvdmVyIGEgQysrIFJlcGxhY2VhYmxlLgorICoKKyAqIFNldHMgdGhlIFVDaGFy
SXRlcmF0b3IgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIGl0ZXJhdGlvbiBvdmVyIHRoZQorICogUmVw
bGFjZWFibGUgcmVwIHdpdGggaXRlcmF0aW9uIGJvdW5kYXJpZXMgc3RhcnQ9aW5kZXg9MCBhbmQK
KyAqIGxlbmd0aD1saW1pdD1yZXAtPmxlbmd0aCgpLgorICogVGhlICJwcm92aWRlciIgbWF5IHNl
dCB0aGUgc3RhcnQsIGluZGV4LCBhbmQgbGltaXQgdmFsdWVzIGF0IGFueSB0aW1lCisgKiB3aXRo
aW4gdGhlIHJhbmdlIDAuLmxlbmd0aD1yZXAtPmxlbmd0aCgpLgorICogVGhlIGxlbmd0aCBmaWVs
ZCB3aWxsIGJlIGlnbm9yZWQuCisgKgorICogVGhlIFJlcGxhY2VhYmxlIHBvaW50ZXIgcmVwIGlz
IHNldCBpbnRvIFVDaGFySXRlcmF0b3IuY29udGV4dCB3aXRob3V0IGNvcHlpbmcKKyAqIG9yIGNs
b25pbmcvcmVhbGxvY2F0aW5nIHRoZSBSZXBsYWNlYWJsZSBvYmplY3QuCisgKgorICogZ2V0U3Rh
dGUoKSBzaW1wbHkgcmV0dXJucyB0aGUgY3VycmVudCBpbmRleC4KKyAqIG1vdmUoKSB3aWxsIGFs
d2F5cyByZXR1cm4gdGhlIGZpbmFsIGluZGV4LgorICoKKyAqIEBwYXJhbSBpdGVyIFVDaGFySXRl
cmF0b3Igc3RydWN0dXJlIHRvIGJlIHNldCBmb3IgaXRlcmF0aW9uCisgKiBAcGFyYW0gcmVwIFJl
cGxhY2VhYmxlIHRvIGl0ZXJhdGUgb3ZlcgorICoKKyAqIEBzZWUgVUNoYXJJdGVyYXRvcgorICog
QHN0YWJsZSBJQ1UgMi4xCisgKi8KK1VfU1RBQkxFIHZvaWQgVV9FWFBPUlQyCit1aXRlcl9zZXRS
ZXBsYWNlYWJsZShVQ2hhckl0ZXJhdG9yICppdGVyLCBjb25zdCBSZXBsYWNlYWJsZSAqcmVwKTsK
KworI2VuZGlmCisKK1VfQ0RFQ0xfRU5ECisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dEdsdWUvaWN1L3VuaWNvZGUvdW1hY2hpbmUuaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2Rl
L3VtYWNoaW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg0MWY1Mwot
LS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3VtYWNoaW5lLmgK
QEAgLTAsMCArMSwzNzEgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAg
IENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgorKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqCisqICAgZmlsZSBuYW1lOiAgdW1hY2hpbmUuaAorKiAgIGVuY29kaW5n
OiAgIFVTLUFTQ0lJCisqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50YXRp
b246NAorKgorKiAgIGNyZWF0ZWQgb246IDE5OTlzZXAxMworKiAgIGNyZWF0ZWQgYnk6IE1hcmt1
cyBXLiBTY2hlcmVyCisqCisqICAgVGhpcyBmaWxlIGRlZmluZXMgYmFzaWMgdHlwZXMgYW5kIGNv
bnN0YW50cyBmb3IgdXRmLmggdG8gYmUKKyogICBwbGF0Zm9ybS1pbmRlcGVuZGVudC4gdW1hY2hp
bmUuaCBhbmQgdXRmLmggYXJlIGluY2x1ZGVkIGludG8KKyogICB1dHlwZXMuaCB0byBwcm92aWRl
IGFsbCB0aGUgZ2VuZXJhbCBkZWZpbml0aW9ucyBmb3IgSUNVLgorKiAgIEFsbCBvZiB0aGVzZSBk
ZWZpbml0aW9ucyB1c2VkIHRvIGJlIGluIHV0eXBlcy5oIGJlZm9yZQorKiAgIHRoZSBVVEYtaGFu
ZGxpbmcgbWFjcm9zIG1hZGUgdGhpcyB1bm1haW50YWluYWJsZS4KKyovCisKKyNpZm5kZWYgX19V
TUFDSElORV9IX18KKyNkZWZpbmUgX19VTUFDSElORV9IX18KKworCisvKioKKyAqIFxmaWxlCisg
KiBcYnJpZWYgQmFzaWMgdHlwZXMgYW5kIGNvbnN0YW50cyBmb3IgVVRGIAorICogCisgKiA8aDI+
IEJhc2ljIHR5cGVzIGFuZCBjb25zdGFudHMgZm9yIFVURiA8L2gyPgorICogICBUaGlzIGZpbGUg
ZGVmaW5lcyBiYXNpYyB0eXBlcyBhbmQgY29uc3RhbnRzIGZvciB1dGYuaCB0byBiZQorICogICBw
bGF0Zm9ybS1pbmRlcGVuZGVudC4gdW1hY2hpbmUuaCBhbmQgdXRmLmggYXJlIGluY2x1ZGVkIGlu
dG8KKyAqICAgdXR5cGVzLmggdG8gcHJvdmlkZSBhbGwgdGhlIGdlbmVyYWwgZGVmaW5pdGlvbnMg
Zm9yIElDVS4KKyAqICAgQWxsIG9mIHRoZXNlIGRlZmluaXRpb25zIHVzZWQgdG8gYmUgaW4gdXR5
cGVzLmggYmVmb3JlCisgKiAgIHRoZSBVVEYtaGFuZGxpbmcgbWFjcm9zIG1hZGUgdGhpcyB1bm1h
aW50YWluYWJsZS4KKyAqIAorICovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEluY2x1ZGUg
cGxhdGZvcm0tZGVwZW5kZW50IGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworLyogd2hpY2ggYXJlIGNvbnRhaW5lZCBpbiB0aGUgcGxhdGZvcm0tc3BlY2lm
aWMgZmlsZSBwbGF0Zm9ybS5oICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K
KworI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKFdJTjY0
KSB8fCBkZWZpbmVkKF9XSU42NCkKKyMgICBpbmNsdWRlICJ1bmljb2RlL3B3aW4zMi5oIgorI2Vs
c2UKKyMgICBpbmNsdWRlICJ1bmljb2RlL3BsYXRmb3JtLmgiCisjZW5kaWYKKworLyoKKyAqIEFO
U0kgQyBoZWFkZXJzOgorICogc3RkZGVmLmggZGVmaW5lcyB3Y2hhcl90CisgKi8KKyNpbmNsdWRl
IDxzdGRkZWYuaD4KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBYUF9DUExVU1BMVVMgaXMg
YSBjcm9zcy1wbGF0Zm9ybSBzeW1ib2wgd2hpY2ggc2hvdWxkIGJlIGRlZmluZWQgd2hlbiAgICAg
Ki8KKy8qIHVzaW5nIEMrKy4gIEl0IHNob3VsZCBub3QgYmUgZGVmaW5lZCB3aGVuIGNvbXBpbGlu
ZyB1bmRlciBDLiAgICAgICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworIyAgIGlmbmRlZiBYUF9DUExVU1BMVVMKKyMgICAgICAgZGVmaW5lIFhQ
X0NQTFVTUExVUworIyAgIGVuZGlmCisjZWxzZQorIyAgIHVuZGVmIFhQX0NQTFVTUExVUworI2Vu
ZGlmCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogRm9yIEMgd3JhcHBlcnMsIHdlIHVzZSB0
aGUgc3ltYm9sIFVfU1RBQkxFLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8q
IFRoaXMgd29ya3MgcHJvcGVybHkgaWYgdGhlIGluY2x1ZGVyIGlzIEMgb3IgQysrLiAgICAgICAg
ICAgICAgICAgICAgICAgICAqLworLyogRnVuY3Rpb25zIGFyZSBkZWNsYXJlZCAgIFVfU1RBQkxF
IHJldHVybi10eXBlIFVfRVhQT1JUMiBmdW5jdGlvbi1uYW1lKCkuLi4gKi8KKy8qPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0qLworCisvKioKKyAqIFxkZWYgVV9DRlVOQworICogVGhpcyBpcyB1c2VkIGluIGEg
ZGVjbGFyYXRpb24gb2YgYSBsaWJyYXJ5IHByaXZhdGUgSUNVIEMgZnVuY3Rpb24uCisgKiBAc3Rh
YmxlIElDVSAyLjQKKyAqLworCisvKioKKyAqIFxkZWYgVV9DREVDTF9CRUdJTgorICogVGhpcyBp
cyB1c2VkIHRvIGJlZ2luIGEgZGVjbGFyYXRpb24gb2YgYSBsaWJyYXJ5IHByaXZhdGUgSUNVIEMg
QVBJLgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKworLyoqCisgKiBcZGVmIFVfQ0RFQ0xfRU5E
CisgKiBUaGlzIGlzIHVzZWQgdG8gZW5kIGEgZGVjbGFyYXRpb24gb2YgYSBsaWJyYXJ5IHByaXZh
dGUgSUNVIEMgQVBJIAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKworI2lmZGVmIFhQX0NQTFVT
UExVUworIyAgIGRlZmluZSBVX0NGVU5DIGV4dGVybiAiQyIKKyMgICBkZWZpbmUgVV9DREVDTF9C
RUdJTiBleHRlcm4gIkMiIHsKKyMgICBkZWZpbmUgVV9DREVDTF9FTkQgICB9CisjZWxzZQorIyAg
IGRlZmluZSBVX0NGVU5DIGV4dGVybgorIyAgIGRlZmluZSBVX0NERUNMX0JFR0lOCisjICAgZGVm
aW5lIFVfQ0RFQ0xfRU5ECisjZW5kaWYKKworLyoqCisgKiBcZGVmIFVfTkFNRVNQQUNFX0JFR0lO
CisgKiBUaGlzIGlzIHVzZWQgdG8gYmVnaW4gYSBkZWNsYXJhdGlvbiBvZiBhIHB1YmxpYyBJQ1Ug
QysrIEFQSS4KKyAqIElmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgbmFtZXNwYWNlcywg
dGhpcyBkb2VzIG5vdGhpbmcuCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworCisvKioKKyAqIFxk
ZWYgVV9OQU1FU1BBQ0VfRU5ECisgKiBUaGlzIGlzIHVzZWQgdG8gZW5kIGEgZGVjbGFyYXRpb24g
b2YgYSBwdWJsaWMgSUNVIEMrKyBBUEkgCisgKiBJZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBw
b3J0IG5hbWVzcGFjZXMsIHRoaXMgZG9lcyBub3RoaW5nLgorICogQHN0YWJsZSBJQ1UgMi40Cisg
Ki8KKworLyoqCisgKiBcZGVmIFVfTkFNRVNQQUNFX1VTRQorICogVGhpcyBpcyB1c2VkIHRvIHNw
ZWNpZnkgdGhhdCB0aGUgcmVzdCBvZiB0aGUgY29kZSB1c2VzIHRoZQorICogcHVibGljIElDVSBD
KysgQVBJIG5hbWVzcGFjZS4KKyAqIElmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgbmFt
ZXNwYWNlcywgdGhpcyBkb2VzIG5vdGhpbmcuCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworCisv
KioKKyAqIFxkZWYgVV9OQU1FU1BBQ0VfUVVBTElGSUVSCisgKiBUaGlzIGlzIHVzZWQgdG8gcXVh
bGlmeSB0aGF0IGEgZnVuY3Rpb24gb3IgY2xhc3MgaXMgcGFydCBvZgorICogdGhlIHB1YmxpYyBJ
Q1UgQysrIEFQSSBuYW1lc3BhY2UuCisgKiBJZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0
IG5hbWVzcGFjZXMsIHRoaXMgZG9lcyBub3RoaW5nLgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8K
KworLyogRGVmaW5lIG5hbWVzcGFjZSBzeW1ib2xzIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBp
dC4gKi8KKyNpZiBVX0hBVkVfTkFNRVNQQUNFCisjICAgZGVmaW5lIFVfTkFNRVNQQUNFX0JFR0lO
IG5hbWVzcGFjZSBVX0lDVV9OQU1FU1BBQ0UgeworIyAgIGRlZmluZSBVX05BTUVTUEFDRV9FTkQg
IH0KKyMgICBkZWZpbmUgVV9OQU1FU1BBQ0VfVVNFIHVzaW5nIG5hbWVzcGFjZSBVX0lDVV9OQU1F
U1BBQ0U7CisjICAgZGVmaW5lIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVX0lDVV9OQU1FU1BBQ0U6
OgorI2Vsc2UKKyMgICBkZWZpbmUgVV9OQU1FU1BBQ0VfQkVHSU4KKyMgICBkZWZpbmUgVV9OQU1F
U1BBQ0VfRU5ECisjICAgZGVmaW5lIFVfTkFNRVNQQUNFX1VTRQorIyAgIGRlZmluZSBVX05BTUVT
UEFDRV9RVUFMSUZJRVIKKyNlbmRpZgorCisvKiogVGhpcyBpcyB1c2VkIHRvIGRlY2xhcmUgYSBm
dW5jdGlvbiBhcyBhIHB1YmxpYyBJQ1UgQyBBUEkgQHN0YWJsZSBJQ1UgMi4wKi8KKyNkZWZpbmUg
VV9DQVBJIFVfQ0ZVTkMgVV9FWFBPUlQKKyNkZWZpbmUgVV9TVEFCTEUgVV9DQVBJCisjZGVmaW5l
IFVfRFJBRlQgIFVfQ0FQSQorI2RlZmluZSBVX0RFUFJFQ0FURUQgVV9DQVBJCisjZGVmaW5lIFVf
T0JTT0xFVEUgVV9DQVBJCisjZGVmaW5lIFVfSU5URVJOQUwgVV9DQVBJCisKKy8qPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0qLworLyogbGltaXRzIGZvciBpbnQzMl90IGV0Yy4sIGxpa2UgaW4gUE9TSVggaW50
dHlwZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K
KworI2lmbmRlZiBJTlQ4X01JTgorLyoqIFRoZSBzbWFsbGVzdCB2YWx1ZSBhbiA4IGJpdCBzaWdu
ZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjAgKi8KKyMgICBkZWZpbmUgSU5UOF9N
SU4gICAgICAgICgoaW50OF90KSgtMTI4KSkKKyNlbmRpZgorI2lmbmRlZiBJTlQxNl9NSU4KKy8q
KiBUaGUgc21hbGxlc3QgdmFsdWUgYSAxNiBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0
YWJsZSBJQ1UgMi4wICovCisjICAgZGVmaW5lIElOVDE2X01JTiAgICAgICAoKGludDE2X3QpKC0z
Mjc2Ny0xKSkKKyNlbmRpZgorI2lmbmRlZiBJTlQzMl9NSU4KKy8qKiBUaGUgc21hbGxlc3QgdmFs
dWUgYSAzMiBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJsZSBJQ1UgMi4wICovCisj
ICAgZGVmaW5lIElOVDMyX01JTiAgICAgICAoKGludDMyX3QpKC0yMTQ3NDgzNjQ3LTEpKQorI2Vu
ZGlmCisKKyNpZm5kZWYgSU5UOF9NQVgKKy8qKiBUaGUgbGFyZ2VzdCB2YWx1ZSBhbiA4IGJpdCBz
aWduZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjAgKi8KKyMgICBkZWZpbmUgSU5U
OF9NQVggICAgICAgICgoaW50OF90KSgxMjcpKQorI2VuZGlmCisjaWZuZGVmIElOVDE2X01BWAor
LyoqIFRoZSBsYXJnZXN0IHZhbHVlIGEgMTYgYml0IHNpZ25lZCBpbnRlZ2VyIGNhbiBob2xkIEBz
dGFibGUgSUNVIDIuMCAqLworIyAgIGRlZmluZSBJTlQxNl9NQVggICAgICAgKChpbnQxNl90KSgz
Mjc2NykpCisjZW5kaWYKKyNpZm5kZWYgSU5UMzJfTUFYCisvKiogVGhlIGxhcmdlc3QgdmFsdWUg
YSAzMiBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJsZSBJQ1UgMi4wICovCisjICAg
ZGVmaW5lIElOVDMyX01BWCAgICAgICAoKGludDMyX3QpKDIxNDc0ODM2NDcpKQorI2VuZGlmCisK
KyNpZm5kZWYgVUlOVDhfTUFYCisvKiogVGhlIGxhcmdlc3QgdmFsdWUgYW4gOCBiaXQgdW5zaWdu
ZWQgaW50ZWdlciBjYW4gaG9sZCBAc3RhYmxlIElDVSAyLjAgKi8KKyMgICBkZWZpbmUgVUlOVDhf
TUFYICAgICAgICgodWludDhfdCkoMjU1VSkpCisjZW5kaWYKKyNpZm5kZWYgVUlOVDE2X01BWAor
LyoqIFRoZSBsYXJnZXN0IHZhbHVlIGEgMTYgYml0IHVuc2lnbmVkIGludGVnZXIgY2FuIGhvbGQg
QHN0YWJsZSBJQ1UgMi4wICovCisjICAgZGVmaW5lIFVJTlQxNl9NQVggICAgICAoKHVpbnQxNl90
KSg2NTUzNVUpKQorI2VuZGlmCisjaWZuZGVmIFVJTlQzMl9NQVgKKy8qKiBUaGUgbGFyZ2VzdCB2
YWx1ZSBhIDMyIGJpdCB1bnNpZ25lZCBpbnRlZ2VyIGNhbiBob2xkIEBzdGFibGUgSUNVIDIuMCAq
LworIyAgIGRlZmluZSBVSU5UMzJfTUFYICAgICAgKCh1aW50MzJfdCkoNDI5NDk2NzI5NVUpKQor
I2VuZGlmCisKKyNpZiBkZWZpbmVkKFVfSU5UNjRfVF9VTkFWQUlMQUJMRSkKKyMgZXJyb3IgaW50
NjRfdCBpcyByZXF1aXJlZCBmb3IgZGVjaW1hbCBmb3JtYXQgYW5kIHJ1bGUtYmFzZWQgbnVtYmVy
IGZvcm1hdC4KKyNlbHNlCisjIGlmbmRlZiBJTlQ2NF9DCisvKioKKyAqIFByb3ZpZGVzIGEgcGxh
dGZvcm0gaW5kZXBlbmRlbnQgd2F5IHRvIHNwZWNpZnkgYSBzaWduZWQgNjQtYml0IGludGVnZXIg
Y29uc3RhbnQuCisgKiBub3RlOiBtYXkgYmUgd3JvbmcgZm9yIHNvbWUgNjQgYml0IHBsYXRmb3Jt
cyAtIGVuc3VyZSB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIElOVDY0X0MKKyAqIEBkcmFmdCBJQ1Ug
Mi44CisgKi8KKyMgICBkZWZpbmUgSU5UNjRfQyhjKSBjICMjIExMCisjIGVuZGlmCisjIGlmbmRl
ZiBVSU5UNjRfQworLyoqCisgKiBQcm92aWRlcyBhIHBsYXRmb3JtIGluZGVwZW5kZW50IHdheSB0
byBzcGVjaWZ5IGFuIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIGNvbnN0YW50LgorICogbm90ZTog
bWF5IGJlIHdyb25nIGZvciBzb21lIDY0IGJpdCBwbGF0Zm9ybXMgLSBlbnN1cmUgeW91ciBjb21w
aWxlciBwcm92aWRlcyBVSU5UNjRfQworICogQGRyYWZ0IElDVSAyLjgKKyAqLworIyAgIGRlZmlu
ZSBVSU5UNjRfQyhjKSBjICMjIFVMTAorIyBlbmRpZgorIyBpZm5kZWYgVV9JTlQ2NF9NSU4KKy8q
KiBUaGUgc21hbGxlc3QgdmFsdWUgYSA2NCBiaXQgc2lnbmVkIGludGVnZXIgY2FuIGhvbGQgQHN0
YWJsZSBJQ1UgMi44ICovCisjICAgICBkZWZpbmUgVV9JTlQ2NF9NSU4gICAgICAgKChpbnQ2NF90
KShJTlQ2NF9DKC05MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKSkKKyMgZW5kaWYKKyMgaWZuZGVmIFVf
SU5UNjRfTUFYCisvKiogVGhlIGxhcmdlc3QgdmFsdWUgYSA2NCBiaXQgc2lnbmVkIGludGVnZXIg
Y2FuIGhvbGQgQHN0YWJsZSBJQ1UgMi44ICovCisjICAgICBkZWZpbmUgVV9JTlQ2NF9NQVggICAg
ICAgKChpbnQ2NF90KShJTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKSkKKyMgZW5kaWYKKyMg
aWZuZGVmIFVfVUlOVDY0X01BWAorLyoqIFRoZSBsYXJnZXN0IHZhbHVlIGEgNjQgYml0IHVuc2ln
bmVkIGludGVnZXIgY2FuIGhvbGQgQHN0YWJsZSBJQ1UgMi44ICovCisjICAgICBkZWZpbmUgVV9V
SU5UNjRfTUFYICAgICAgKCh1aW50NjRfdCkoVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUp
KSkKKyMgZW5kaWYKKyNlbmRpZgorCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEJvb2xlYW4g
ZGF0YSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisKKy8qKiBUaGUgSUNVIGJvb2xlYW4g
dHlwZSBAc3RhYmxlIElDVSAyLjAgKi8KK3R5cGVkZWYgaW50OF90IFVCb29sOworCisjaWZuZGVm
IFRSVUUKKy8qKiBUaGUgVFJVRSB2YWx1ZSBvZiBhIFVCb29sIEBzdGFibGUgSUNVIDIuMCAqLwor
IyAgIGRlZmluZSBUUlVFICAxCisjZW5kaWYKKyNpZm5kZWYgRkFMU0UKKy8qKiBUaGUgRkFMU0Ug
dmFsdWUgb2YgYSBVQm9vbCBAc3RhYmxlIElDVSAyLjAgKi8KKyMgICBkZWZpbmUgRkFMU0UgMAor
I2VuZGlmCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBVbmljb2RlIGRhdGEgdHlwZXMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K
Ky8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0qLworCisvKiB3Y2hhcl90LXJlbGF0ZWQgZGVmaW5pdGlvbnMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisg
KiBcZGVmIFVfSEFWRV9XQ0hBUl9ICisgKiBJbmRpY2F0ZXMgd2hldGhlciA8d2NoYXIuaD4gaXMg
YXZhaWxhYmxlICgxKSBvciBub3QgKDApLiBTZXQgdG8gMSBieSBkZWZhdWx0LgorICoKKyAqIEBz
dGFibGUgSUNVIDIuMAorICovCisjaWZuZGVmIFVfSEFWRV9XQ0hBUl9ICisjICAgZGVmaW5lIFVf
SEFWRV9XQ0hBUl9IIDEKKyNlbmRpZgorCisvKioKKyAqIFxkZWYgVV9TSVpFT0ZfV0NIQVJfVAor
ICogVV9TSVpFT0ZfV0NIQVJfVD09c2l6ZW9mKHdjaGFyX3QpICgwIG1lYW5zIGl0IGlzIG5vdCBk
ZWZpbmVkIG9yIGF1dG9jb25mIGNvdWxkIG5vdCBzZXQgaXQpCisgKgorICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KKyNpZiBVX1NJWkVPRl9XQ0hBUl9UPT0wCisjICAgdW5kZWYgVV9TSVpFT0ZfV0NI
QVJfVAorIyAgIGRlZmluZSBVX1NJWkVPRl9XQ0hBUl9UIDQKKyNlbmRpZgorCisvKgorICogXGRl
ZiBVX1dDSEFSX0lTX1VURjE2CisgKiBEZWZpbmVkIGlmIHdjaGFyX3QgdXNlcyBVVEYtMTYuCisg
KgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KKy8qCisgKiBcZGVmIFVfV0NIQVJfSVNfVVRGMzIK
KyAqIERlZmluZWQgaWYgd2NoYXJfdCB1c2VzIFVURi0zMi4KKyAqCisgKiBAc3RhYmxlIElDVSAy
LjAKKyAqLworI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmICFkZWZpbmVkKFVfV0NI
QVJfSVNfVVRGMzIpCisjICAgaWZkZWYgX19TVERDX0lTT18xMDY0Nl9fIAorIyAgICAgICBpZiAo
VV9TSVpFT0ZfV0NIQVJfVD09MikKKyMgICAgICAgICAgIGRlZmluZSBVX1dDSEFSX0lTX1VURjE2
CisjICAgICAgIGVsaWYgKFVfU0laRU9GX1dDSEFSX1Q9PTQpCisjICAgICAgICAgICBkZWZpbmUg
IFVfV0NIQVJfSVNfVVRGMzIKKyMgICAgICAgZW5kaWYKKyMgICBlbGlmIGRlZmluZWQgX19VQ1My
X18KKyMgICAgICAgaWYgKF9fT1MzOTBfXyB8fCBfX09TNDAwX18pICYmIChVX1NJWkVPRl9XQ0hB
Ul9UPT0yKQorIyAgICAgICAgICAgZGVmaW5lIFVfV0NIQVJfSVNfVVRGMTYKKyMgICAgICAgZW5k
aWYKKyMgICBlbGlmIGRlZmluZWQgX19VQ1M0X18KKyMgICAgICAgaWYgKFVfU0laRU9GX1dDSEFS
X1Q9PTQpCisjICAgICAgICAgICBkZWZpbmUgVV9XQ0hBUl9JU19VVEYzMgorIyAgICAgICBlbmRp
ZgorIyAgIGVsaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQo
V0lONjQpIHx8IGRlZmluZWQoX1dJTjY0KQorIyAgICAgICBkZWZpbmUgVV9XQ0hBUl9JU19VVEYx
NiAgICAKKyMgICBlbmRpZgorI2VuZGlmCisKKy8qIFVDaGFyIGFuZCBVQ2hhcjMyIGRlZmluaXRp
b25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8q
KiBOdW1iZXIgb2YgYnl0ZXMgaW4gYSBVQ2hhci4gQHN0YWJsZSBJQ1UgMi4wICovCisjZGVmaW5l
IFVfU0laRU9GX1VDSEFSIDIKKworLyoqCisgKiBcdmFyIFVDaGFyCisgKiBEZWZpbmUgVUNoYXIg
dG8gYmUgd2NoYXJfdCBpZiB0aGF0IGlzIDE2IGJpdHMgd2lkZTsgYWx3YXlzIGFzc3VtZWQgdG8g
YmUgdW5zaWduZWQuCisgKiBJZiB3Y2hhcl90IGlzIG5vdCAxNiBiaXRzIHdpZGUsIHRoZW4gZGVm
aW5lIFVDaGFyIHRvIGJlIHVpbnQxNl90LgorICogVGhpcyBtYWtlcyB0aGUgZGVmaW5pdGlvbiBv
ZiBVQ2hhciBwbGF0Zm9ybS1kZXBlbmRlbnQKKyAqIGJ1dCBhbGxvd3MgZGlyZWN0IHN0cmluZyB0
eXBlIGNvbXBhdGliaWxpdHkgd2l0aCBwbGF0Zm9ybXMgd2l0aAorICogMTYtYml0IHdjaGFyX3Qg
dHlwZXMuCisgKgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KKworLyogRGVmaW5lIFVDaGFyIHRv
IGJlIGNvbXBhdGlibGUgd2l0aCB3Y2hhcl90IGlmIHBvc3NpYmxlLiAqLworI2lmIFVfU0laRU9G
X1dDSEFSX1Q9PTIKKyAgICB0eXBlZGVmIHdjaGFyX3QgVUNoYXI7CisjZWxzZQorICAgIHR5cGVk
ZWYgdWludDE2X3QgVUNoYXI7CisjZW5kaWYKKworLyoqCisgKiBEZWZpbmUgVUNoYXIzMiBhcyBh
IHR5cGUgZm9yIHNpbmdsZSBVbmljb2RlIGNvZGUgcG9pbnRzLgorICogVUNoYXIzMiBpcyBhIHNp
Z25lZCAzMi1iaXQgaW50ZWdlciAoc2FtZSBhcyBpbnQzMl90KS4KKyAqCisgKiBUaGUgVW5pY29k
ZSBjb2RlIHBvaW50IHJhbmdlIGlzIDAuLjB4MTBmZmZmLgorICogQWxsIG90aGVyIHZhbHVlcyAo
bmVnYXRpdmUgb3IgPj0weDExMDAwMCkgYXJlIGlsbGVnYWwgYXMgVW5pY29kZSBjb2RlIHBvaW50
cy4KKyAqIFRoZXkgbWF5IGJlIHVzZWQgYXMgc2VudGluZWwgdmFsdWVzIHRvIGluZGljYXRlICJk
b25lIiwgImVycm9yIgorICogb3Igc2ltaWxhciBub24tY29kZSBwb2ludCBjb25kaXRpb25zLgor
ICoKKyAqIEJlZm9yZSBJQ1UgMi40IChKaXR0ZXJidWcgMjE0NiksIFVDaGFyMzIgd2FzIGRlZmlu
ZWQKKyAqIHRvIGJlIHdjaGFyX3QgaWYgdGhhdCBpcyAzMiBiaXRzIHdpZGUgKHdjaGFyX3QgbWF5
IGJlIHNpZ25lZCBvciB1bnNpZ25lZCkKKyAqIG9yIGVsc2UgdG8gYmUgdWludDMyX3QuCisgKiBU
aGF0IGlzLCB0aGUgZGVmaW5pdGlvbiBvZiBVQ2hhcjMyIHdhcyBwbGF0Zm9ybS1kZXBlbmRlbnQu
CisgKgorICogQHNlZSBVX1NFTlRJTkVMCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLwordHlwZWRl
ZiBpbnQzMl90IFVDaGFyMzI7CisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogVV9JTkxJTkUg
YW5kIFVfQUxJR05fQ09ERSAgIFNldCBkZWZhdWx0IHZhbHVlcyBpZiB0aGVzZSBhcmUgbm90IGFs
cmVhZHkgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZC4gIERlZmlu
aXRpb25zIG5vcm1hbGx5IGFyZSBpbiAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwbGF0Zm9ybS5oIG9yIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgZm9yICAgICAqLwor
LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBPUyBpbiB1c2UuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyoqCisgKiBc
ZGVmIFVfQUxJR05fQ09ERQorICogVGhpcyBpcyB1c2VkIHRvIGFsaWduIGNvZGUgZnJhZ21lbnRz
IHRvIGEgc3BlY2lmaWMgYnl0ZSBib3VuZGFyeS4KKyAqIFRoaXMgaXMgdXNlZnVsIGZvciBnZXR0
aW5nIGNvbnNpc3RlbnQgcGVyZm9ybWFuY2UgdGVzdCByZXN1bHRzLgorICogQGludGVybmFsCisg
Ki8KKyNpZm5kZWYgVV9BTElHTl9DT0RFCisjICAgZGVmaW5lIFVfQUxJR05fQ09ERShuKQorI2Vu
ZGlmCisKKyNpZm5kZWYgVV9JTkxJTkUKKyMgICBkZWZpbmUgVV9JTkxJTkUKKyNlbmRpZgorCisj
aW5jbHVkZSAidW5pY29kZS91cmVuYW1lLmgiCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdEdsdWUvaWN1L3VuaWNvZGUvdXJlbmFtZS5oIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNv
ZGUvdXJlbmFtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NjI1OTIK
LS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91cmVuYW1lLmgK
QEAgLTAsMCArMSwxNDY4IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIENvcHly
aWdodCAoQykgMjAwMi0yMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAg
Q29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisqCisqICAgZmlsZSBuYW1lOiAgdXJlbmFtZS5oCisqICAgZW5jb2Rpbmc6
ICAgVVMtQVNDSUkKKyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlv
bjo0CisqCisqICAgQ3JlYXRlZCBieTogUGVybCBzY3JpcHQgd3JpdHRlbiBieSBWbGFkaW1pciBX
ZWluc3RlaW4KKyoKKyogIENvbnRhaW5zIGRhdGEgZm9yIHJlbmFtaW5nIElDVSBleHBvcnRzLgor
KiAgR2V0cyBpbmNsdWRlZCBieSB1bWFjaGluZS5oCisqCisqICBUSElTIEZJTEUgSVMgTUFDSElO
RS1HRU5FUkFURUQsIERPTidUIFBMQVkgV0lUSCBJVCBJRiBZT1UgRE9OJ1QgS05PVyBXSEFUCisq
ICBZT1UgQVJFIERPSU5HLCBPVEhFUldJU0UgVkVSWSBCQUQgVEhJTkdTIFdJTEwgSEFQUEVOIQor
Ki8KKworI2lmbmRlZiBVUkVOQU1FX0gKKyNkZWZpbmUgVVJFTkFNRV9ICisKKy8qIFVuY29tbWVu
dCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gZGlzYWJsZSByZW5hbWluZyBvbiBwbGF0Zm9ybXMKKyAg
IHRoYXQgZG8gbm90IHVzZSBBdXRvY29uZi4gKi8KKy8qICNkZWZpbmUgVV9ESVNBQkxFX1JFTkFN
SU5HIDEgKi8KKworI2lmICFVX0RJU0FCTEVfUkVOQU1JTkcKKworLyogQyBleHBvcnRzIHJlbmFt
aW5nIGRhdGEgKi8KKworI2RlZmluZSBUX0NTdHJpbmdfaW50NjRUb1N0cmluZyBUX0NTdHJpbmdf
aW50NjRUb1N0cmluZ18zXzIKKyNkZWZpbmUgVF9DU3RyaW5nX2ludGVnZXJUb1N0cmluZyBUX0NT
dHJpbmdfaW50ZWdlclRvU3RyaW5nXzNfMgorI2RlZmluZSBUX0NTdHJpbmdfc3RyaWNtcCBUX0NT
dHJpbmdfc3RyaWNtcF8zXzIKKyNkZWZpbmUgVF9DU3RyaW5nX3N0cmluZ1RvSW50ZWdlciBUX0NT
dHJpbmdfc3RyaW5nVG9JbnRlZ2VyXzNfMgorI2RlZmluZSBUX0NTdHJpbmdfc3RybmljbXAgVF9D
U3RyaW5nX3N0cm5pY21wXzNfMgorI2RlZmluZSBUX0NTdHJpbmdfdG9Mb3dlckNhc2UgVF9DU3Ry
aW5nX3RvTG93ZXJDYXNlXzNfMgorI2RlZmluZSBUX0NTdHJpbmdfdG9VcHBlckNhc2UgVF9DU3Ry
aW5nX3RvVXBwZXJDYXNlXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fY2xvc2UgVF9GaWxlU3Ry
ZWFtX2Nsb3NlXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fZW9mIFRfRmlsZVN0cmVhbV9lb2Zf
M18yCisjZGVmaW5lIFRfRmlsZVN0cmVhbV9lcnJvciBUX0ZpbGVTdHJlYW1fZXJyb3JfM18yCisj
ZGVmaW5lIFRfRmlsZVN0cmVhbV9maWxlX2V4aXN0cyBUX0ZpbGVTdHJlYW1fZmlsZV9leGlzdHNf
M18yCisjZGVmaW5lIFRfRmlsZVN0cmVhbV9nZXRjIFRfRmlsZVN0cmVhbV9nZXRjXzNfMgorI2Rl
ZmluZSBUX0ZpbGVTdHJlYW1fb3BlbiBUX0ZpbGVTdHJlYW1fb3Blbl8zXzIKKyNkZWZpbmUgVF9G
aWxlU3RyZWFtX3BlZWsgVF9GaWxlU3RyZWFtX3BlZWtfM18yCisjZGVmaW5lIFRfRmlsZVN0cmVh
bV9wdXRjIFRfRmlsZVN0cmVhbV9wdXRjXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fcmVhZCBU
X0ZpbGVTdHJlYW1fcmVhZF8zXzIKKyNkZWZpbmUgVF9GaWxlU3RyZWFtX3JlYWRMaW5lIFRfRmls
ZVN0cmVhbV9yZWFkTGluZV8zXzIKKyNkZWZpbmUgVF9GaWxlU3RyZWFtX3JlbW92ZSBUX0ZpbGVT
dHJlYW1fcmVtb3ZlXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fcmV3aW5kIFRfRmlsZVN0cmVh
bV9yZXdpbmRfM18yCisjZGVmaW5lIFRfRmlsZVN0cmVhbV9zaXplIFRfRmlsZVN0cmVhbV9zaXpl
XzNfMgorI2RlZmluZSBUX0ZpbGVTdHJlYW1fc3RkZXJyIFRfRmlsZVN0cmVhbV9zdGRlcnJfM18y
CisjZGVmaW5lIFRfRmlsZVN0cmVhbV9zdGRpbiBUX0ZpbGVTdHJlYW1fc3RkaW5fM18yCisjZGVm
aW5lIFRfRmlsZVN0cmVhbV9zdGRvdXQgVF9GaWxlU3RyZWFtX3N0ZG91dF8zXzIKKyNkZWZpbmUg
VF9GaWxlU3RyZWFtX3VuZ2V0YyBUX0ZpbGVTdHJlYW1fdW5nZXRjXzNfMgorI2RlZmluZSBUX0Zp
bGVTdHJlYW1fd3JpdGUgVF9GaWxlU3RyZWFtX3dyaXRlXzNfMgorI2RlZmluZSBUX0ZpbGVTdHJl
YW1fd3JpdGVMaW5lIFRfRmlsZVN0cmVhbV93cml0ZUxpbmVfM18yCisjZGVmaW5lIFVDTlZfRlJP
TV9VX0NBTExCQUNLX0VTQ0FQRSBVQ05WX0ZST01fVV9DQUxMQkFDS19FU0NBUEVfM18yCisjZGVm
aW5lIFVDTlZfRlJPTV9VX0NBTExCQUNLX1NLSVAgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfU0tJUF8z
XzIKKyNkZWZpbmUgVUNOVl9GUk9NX1VfQ0FMTEJBQ0tfU1RPUCBVQ05WX0ZST01fVV9DQUxMQkFD
S19TVE9QXzNfMgorI2RlZmluZSBVQ05WX0ZST01fVV9DQUxMQkFDS19TVUJTVElUVVRFIFVDTlZf
RlJPTV9VX0NBTExCQUNLX1NVQlNUSVRVVEVfM18yCisjZGVmaW5lIFVDTlZfVE9fVV9DQUxMQkFD
S19FU0NBUEUgVUNOVl9UT19VX0NBTExCQUNLX0VTQ0FQRV8zXzIKKyNkZWZpbmUgVUNOVl9UT19V
X0NBTExCQUNLX1NLSVAgVUNOVl9UT19VX0NBTExCQUNLX1NLSVBfM18yCisjZGVmaW5lIFVDTlZf
VE9fVV9DQUxMQkFDS19TVE9QIFVDTlZfVE9fVV9DQUxMQkFDS19TVE9QXzNfMgorI2RlZmluZSBV
Q05WX1RPX1VfQ0FMTEJBQ0tfU1VCU1RJVFVURSBVQ05WX1RPX1VfQ0FMTEJBQ0tfU1VCU1RJVFVU
RV8zXzIKKyNkZWZpbmUgVURhdGFNZW1vcnlfY3JlYXRlTmV3SW5zdGFuY2UgVURhdGFNZW1vcnlf
Y3JlYXRlTmV3SW5zdGFuY2VfM18yCisjZGVmaW5lIFVEYXRhTWVtb3J5X2luaXQgVURhdGFNZW1v
cnlfaW5pdF8zXzIKKyNkZWZpbmUgVURhdGFNZW1vcnlfaXNMb2FkZWQgVURhdGFNZW1vcnlfaXNM
b2FkZWRfM18yCisjZGVmaW5lIFVEYXRhTWVtb3J5X25vcm1hbGl6ZURhdGFQb2ludGVyIFVEYXRh
TWVtb3J5X25vcm1hbGl6ZURhdGFQb2ludGVyXzNfMgorI2RlZmluZSBVRGF0YU1lbW9yeV9zZXRE
YXRhIFVEYXRhTWVtb3J5X3NldERhdGFfM18yCisjZGVmaW5lIFVEYXRhbWVtb3J5X2Fzc2lnbiBV
RGF0YW1lbW9yeV9hc3NpZ25fM18yCisjZGVmaW5lIF9BU0NJSURhdGEgX0FTQ0lJRGF0YV8zXzIK
KyNkZWZpbmUgX0JvY3UxRGF0YSBfQm9jdTFEYXRhXzNfMgorI2RlZmluZSBfQ0VTVThEYXRhIF9D
RVNVOERhdGFfM18yCisjZGVmaW5lIF9IWkRhdGEgX0haRGF0YV8zXzIKKyNkZWZpbmUgX0lNQVBE
YXRhIF9JTUFQRGF0YV8zXzIKKyNkZWZpbmUgX0lTQ0lJRGF0YSBfSVNDSUlEYXRhXzNfMgorI2Rl
ZmluZSBfSVNPMjAyMkRhdGEgX0lTTzIwMjJEYXRhXzNfMgorI2RlZmluZSBfTE1CQ1NEYXRhMSBf
TE1CQ1NEYXRhMV8zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTExIF9MTUJDU0RhdGExMV8zXzIKKyNk
ZWZpbmUgX0xNQkNTRGF0YTE2IF9MTUJDU0RhdGExNl8zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTE3
IF9MTUJDU0RhdGExN18zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTE4IF9MTUJDU0RhdGExOF8zXzIK
KyNkZWZpbmUgX0xNQkNTRGF0YTE5IF9MTUJDU0RhdGExOV8zXzIKKyNkZWZpbmUgX0xNQkNTRGF0
YTIgX0xNQkNTRGF0YTJfM18yCisjZGVmaW5lIF9MTUJDU0RhdGEzIF9MTUJDU0RhdGEzXzNfMgor
I2RlZmluZSBfTE1CQ1NEYXRhNCBfTE1CQ1NEYXRhNF8zXzIKKyNkZWZpbmUgX0xNQkNTRGF0YTUg
X0xNQkNTRGF0YTVfM18yCisjZGVmaW5lIF9MTUJDU0RhdGE2IF9MTUJDU0RhdGE2XzNfMgorI2Rl
ZmluZSBfTE1CQ1NEYXRhOCBfTE1CQ1NEYXRhOF8zXzIKKyNkZWZpbmUgX0xhdGluMURhdGEgX0xh
dGluMURhdGFfM18yCisjZGVmaW5lIF9NQkNTRGF0YSBfTUJDU0RhdGFfM18yCisjZGVmaW5lIF9T
Q1NVRGF0YSBfU0NTVURhdGFfM18yCisjZGVmaW5lIF9VVEYxNkJFRGF0YSBfVVRGMTZCRURhdGFf
M18yCisjZGVmaW5lIF9VVEYxNkRhdGEgX1VURjE2RGF0YV8zXzIKKyNkZWZpbmUgX1VURjE2TEVE
YXRhIF9VVEYxNkxFRGF0YV8zXzIKKyNkZWZpbmUgX1VURjMyQkVEYXRhIF9VVEYzMkJFRGF0YV8z
XzIKKyNkZWZpbmUgX1VURjMyRGF0YSBfVVRGMzJEYXRhXzNfMgorI2RlZmluZSBfVVRGMzJMRURh
dGEgX1VURjMyTEVEYXRhXzNfMgorI2RlZmluZSBfVVRGN0RhdGEgX1VURjdEYXRhXzNfMgorI2Rl
ZmluZSBfVVRGOERhdGEgX1VURjhEYXRhXzNfMgorI2RlZmluZSBjbWVtb3J5X2NsZWFudXAgY21l
bW9yeV9jbGVhbnVwXzNfMgorI2RlZmluZSBjbWVtb3J5X2luVXNlIGNtZW1vcnlfaW5Vc2VfM18y
CisjZGVmaW5lIGxvY2FsZV9nZXRLZXl3b3JkcyBsb2NhbGVfZ2V0S2V5d29yZHNfM18yCisjZGVm
aW5lIGxvY2FsZV9nZXRfZGVmYXVsdCBsb2NhbGVfZ2V0X2RlZmF1bHRfM18yCisjZGVmaW5lIGxv
Y2FsZV9zZXRfZGVmYXVsdCBsb2NhbGVfc2V0X2RlZmF1bHRfM18yCisjZGVmaW5lIHJlc19jb3Vu
dEFycmF5SXRlbXMgcmVzX2NvdW50QXJyYXlJdGVtc18zXzIKKyNkZWZpbmUgcmVzX2ZpbmRSZXNv
dXJjZSByZXNfZmluZFJlc291cmNlXzNfMgorI2RlZmluZSByZXNfZ2V0QWxpYXMgcmVzX2dldEFs
aWFzXzNfMgorI2RlZmluZSByZXNfZ2V0QXJyYXlJdGVtIHJlc19nZXRBcnJheUl0ZW1fM18yCisj
ZGVmaW5lIHJlc19nZXRCaW5hcnkgcmVzX2dldEJpbmFyeV8zXzIKKyNkZWZpbmUgcmVzX2dldElu
dFZlY3RvciByZXNfZ2V0SW50VmVjdG9yXzNfMgorI2RlZmluZSByZXNfZ2V0UmVzb3VyY2UgcmVz
X2dldFJlc291cmNlXzNfMgorI2RlZmluZSByZXNfZ2V0U3RyaW5nIHJlc19nZXRTdHJpbmdfM18y
CisjZGVmaW5lIHJlc19nZXRUYWJsZUl0ZW1CeUluZGV4IHJlc19nZXRUYWJsZUl0ZW1CeUluZGV4
XzNfMgorI2RlZmluZSByZXNfZ2V0VGFibGVJdGVtQnlLZXkgcmVzX2dldFRhYmxlSXRlbUJ5S2V5
XzNfMgorI2RlZmluZSByZXNfbG9hZCByZXNfbG9hZF8zXzIKKyNkZWZpbmUgcmVzX3VubG9hZCBy
ZXNfdW5sb2FkXzNfMgorI2RlZmluZSB0cmFuc2xpdGVyYXRvcl9jbGVhbnVwIHRyYW5zbGl0ZXJh
dG9yX2NsZWFudXBfM18yCisjZGVmaW5lIHVfVUNoYXJzVG9DaGFycyB1X1VDaGFyc1RvQ2hhcnNf
M18yCisjZGVmaW5lIHVfYXVzdHJjcHkgdV9hdXN0cmNweV8zXzIKKyNkZWZpbmUgdV9hdXN0cm5j
cHkgdV9hdXN0cm5jcHlfM18yCisjZGVmaW5lIHVfY2F0Y2xvc2UgdV9jYXRjbG9zZV8zXzIKKyNk
ZWZpbmUgdV9jYXRnZXRzIHVfY2F0Z2V0c18zXzIKKyNkZWZpbmUgdV9jYXRvcGVuIHVfY2F0b3Bl
bl8zXzIKKyNkZWZpbmUgdV9jaGFyQWdlIHVfY2hhckFnZV8zXzIKKyNkZWZpbmUgdV9jaGFyRGln
aXRWYWx1ZSB1X2NoYXJEaWdpdFZhbHVlXzNfMgorI2RlZmluZSB1X2NoYXJEaXJlY3Rpb24gdV9j
aGFyRGlyZWN0aW9uXzNfMgorI2RlZmluZSB1X2NoYXJGcm9tTmFtZSB1X2NoYXJGcm9tTmFtZV8z
XzIKKyNkZWZpbmUgdV9jaGFyTWlycm9yIHVfY2hhck1pcnJvcl8zXzIKKyNkZWZpbmUgdV9jaGFy
TmFtZSB1X2NoYXJOYW1lXzNfMgorI2RlZmluZSB1X2NoYXJUeXBlIHVfY2hhclR5cGVfM18yCisj
ZGVmaW5lIHVfY2hhcnNUb1VDaGFycyB1X2NoYXJzVG9VQ2hhcnNfM18yCisjZGVmaW5lIHVfY2xl
YW51cCB1X2NsZWFudXBfM18yCisjZGVmaW5lIHVfY291bnRDaGFyMzIgdV9jb3VudENoYXIzMl8z
XzIKKyNkZWZpbmUgdV9kaWdpdCB1X2RpZ2l0XzNfMgorI2RlZmluZSB1X2VudW1DaGFyTmFtZXMg
dV9lbnVtQ2hhck5hbWVzXzNfMgorI2RlZmluZSB1X2VudW1DaGFyVHlwZXMgdV9lbnVtQ2hhclR5
cGVzXzNfMgorI2RlZmluZSB1X2Vycm9yTmFtZSB1X2Vycm9yTmFtZV8zXzIKKyNkZWZpbmUgdV9m
Y2xvc2UgdV9mY2xvc2VfM18yCisjZGVmaW5lIHVfZmVvZiB1X2Zlb2ZfM18yCisjZGVmaW5lIHVf
ZmZsdXNoIHVfZmZsdXNoXzNfMgorI2RlZmluZSB1X2ZnZXRDb252ZXJ0ZXIgdV9mZ2V0Q29udmVy
dGVyXzNfMgorI2RlZmluZSB1X2ZnZXRjIHVfZmdldGNfM18yCisjZGVmaW5lIHVfZmdldGNvZGVw
YWdlIHVfZmdldGNvZGVwYWdlXzNfMgorI2RlZmluZSB1X2ZnZXRjeCB1X2ZnZXRjeF8zXzIKKyNk
ZWZpbmUgdV9mZ2V0ZmlsZSB1X2ZnZXRmaWxlXzNfMgorI2RlZmluZSB1X2ZnZXRsb2NhbGUgdV9m
Z2V0bG9jYWxlXzNfMgorI2RlZmluZSB1X2ZnZXRzIHVfZmdldHNfM18yCisjZGVmaW5lIHVfZmls
ZV9yZWFkIHVfZmlsZV9yZWFkXzNfMgorI2RlZmluZSB1X2ZpbGVfd3JpdGUgdV9maWxlX3dyaXRl
XzNfMgorI2RlZmluZSB1X2ZpbGVfd3JpdGVfZmx1c2ggdV9maWxlX3dyaXRlX2ZsdXNoXzNfMgor
I2RlZmluZSB1X2Zpbml0IHVfZmluaXRfM18yCisjZGVmaW5lIHVfZm9sZENhc2UgdV9mb2xkQ2Fz
ZV8zXzIKKyNkZWZpbmUgdV9mb3BlbiB1X2ZvcGVuXzNfMgorI2RlZmluZSB1X2ZvckRpZ2l0IHVf
Zm9yRGlnaXRfM18yCisjZGVmaW5lIHVfZm9ybWF0TWVzc2FnZSB1X2Zvcm1hdE1lc3NhZ2VfM18y
CisjZGVmaW5lIHVfZm9ybWF0TWVzc2FnZVdpdGhFcnJvciB1X2Zvcm1hdE1lc3NhZ2VXaXRoRXJy
b3JfM18yCisjZGVmaW5lIHVfZnByaW50ZiB1X2ZwcmludGZfM18yCisjZGVmaW5lIHVfZnByaW50
Zl91IHVfZnByaW50Zl91XzNfMgorI2RlZmluZSB1X2ZwdXRjIHVfZnB1dGNfM18yCisjZGVmaW5l
IHVfZnB1dHMgdV9mcHV0c18zXzIKKyNkZWZpbmUgdV9mcmV3aW5kIHVfZnJld2luZF8zXzIKKyNk
ZWZpbmUgdV9mc2NhbmYgdV9mc2NhbmZfM18yCisjZGVmaW5lIHVfZnNjYW5mX3UgdV9mc2NhbmZf
dV8zXzIKKyNkZWZpbmUgdV9mc2V0Y29kZXBhZ2UgdV9mc2V0Y29kZXBhZ2VfM18yCisjZGVmaW5l
IHVfZnNldGxvY2FsZSB1X2ZzZXRsb2NhbGVfM18yCisjZGVmaW5lIHVfZnNldHRyYW5zbGl0ZXJh
dG9yIHVfZnNldHRyYW5zbGl0ZXJhdG9yXzNfMgorI2RlZmluZSB1X2ZzdHJvcGVuIHVfZnN0cm9w
ZW5fM18yCisjZGVmaW5lIHVfZnVuZ2V0YyB1X2Z1bmdldGNfM18yCisjZGVmaW5lIHVfZ2V0Q29t
YmluaW5nQ2xhc3MgdV9nZXRDb21iaW5pbmdDbGFzc18zXzIKKyNkZWZpbmUgdV9nZXREYXRhRGly
ZWN0b3J5IHVfZ2V0RGF0YURpcmVjdG9yeV8zXzIKKyNkZWZpbmUgdV9nZXREZWZhdWx0Q29udmVy
dGVyIHVfZ2V0RGVmYXVsdENvbnZlcnRlcl8zXzIKKyNkZWZpbmUgdV9nZXRGQ19ORktDX0Nsb3N1
cmUgdV9nZXRGQ19ORktDX0Nsb3N1cmVfM18yCisjZGVmaW5lIHVfZ2V0SVNPQ29tbWVudCB1X2dl
dElTT0NvbW1lbnRfM18yCisjZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlNYXhWYWx1ZSB1X2dldElu
dFByb3BlcnR5TWF4VmFsdWVfM18yCisjZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlNaW5WYWx1ZSB1
X2dldEludFByb3BlcnR5TWluVmFsdWVfM18yCisjZGVmaW5lIHVfZ2V0SW50UHJvcGVydHlWYWx1
ZSB1X2dldEludFByb3BlcnR5VmFsdWVfM18yCisjZGVmaW5lIHVfZ2V0TnVtZXJpY1ZhbHVlIHVf
Z2V0TnVtZXJpY1ZhbHVlXzNfMgorI2RlZmluZSB1X2dldFByb3BlcnR5RW51bSB1X2dldFByb3Bl
cnR5RW51bV8zXzIKKyNkZWZpbmUgdV9nZXRQcm9wZXJ0eU5hbWUgdV9nZXRQcm9wZXJ0eU5hbWVf
M18yCisjZGVmaW5lIHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51
bV8zXzIKKyNkZWZpbmUgdV9nZXRQcm9wZXJ0eVZhbHVlTmFtZSB1X2dldFByb3BlcnR5VmFsdWVO
YW1lXzNfMgorI2RlZmluZSB1X2dldFVuaWNvZGVQcm9wZXJ0aWVzIHVfZ2V0VW5pY29kZVByb3Bl
cnRpZXNfM18yCisjZGVmaW5lIHVfZ2V0VW5pY29kZVZlcnNpb24gdV9nZXRVbmljb2RlVmVyc2lv
bl8zXzIKKyNkZWZpbmUgdV9nZXRWZXJzaW9uIHVfZ2V0VmVyc2lvbl8zXzIKKyNkZWZpbmUgdV9n
cm93QnVmZmVyRnJvbVN0YXRpYyB1X2dyb3dCdWZmZXJGcm9tU3RhdGljXzNfMgorI2RlZmluZSB1
X2hhc0JpbmFyeVByb3BlcnR5IHVfaGFzQmluYXJ5UHJvcGVydHlfM18yCisjZGVmaW5lIHVfaW5p
dCB1X2luaXRfM18yCisjZGVmaW5lIHVfaXNJRElnbm9yYWJsZSB1X2lzSURJZ25vcmFibGVfM18y
CisjZGVmaW5lIHVfaXNJRFBhcnQgdV9pc0lEUGFydF8zXzIKKyNkZWZpbmUgdV9pc0lEU3RhcnQg
dV9pc0lEU3RhcnRfM18yCisjZGVmaW5lIHVfaXNJU09Db250cm9sIHVfaXNJU09Db250cm9sXzNf
MgorI2RlZmluZSB1X2lzSmF2YUlEUGFydCB1X2lzSmF2YUlEUGFydF8zXzIKKyNkZWZpbmUgdV9p
c0phdmFJRFN0YXJ0IHVfaXNKYXZhSURTdGFydF8zXzIKKyNkZWZpbmUgdV9pc0phdmFTcGFjZUNo
YXIgdV9pc0phdmFTcGFjZUNoYXJfM18yCisjZGVmaW5lIHVfaXNNaXJyb3JlZCB1X2lzTWlycm9y
ZWRfM18yCisjZGVmaW5lIHVfaXNVQWxwaGFiZXRpYyB1X2lzVUFscGhhYmV0aWNfM18yCisjZGVm
aW5lIHVfaXNVTG93ZXJjYXNlIHVfaXNVTG93ZXJjYXNlXzNfMgorI2RlZmluZSB1X2lzVVVwcGVy
Y2FzZSB1X2lzVVVwcGVyY2FzZV8zXzIKKyNkZWZpbmUgdV9pc1VXaGl0ZVNwYWNlIHVfaXNVV2hp
dGVTcGFjZV8zXzIKKyNkZWZpbmUgdV9pc1doaXRlc3BhY2UgdV9pc1doaXRlc3BhY2VfM18yCisj
ZGVmaW5lIHVfaXNhbG51bSB1X2lzYWxudW1fM18yCisjZGVmaW5lIHVfaXNhbHBoYSB1X2lzYWxw
aGFfM18yCisjZGVmaW5lIHVfaXNiYXNlIHVfaXNiYXNlXzNfMgorI2RlZmluZSB1X2lzYmxhbmsg
dV9pc2JsYW5rXzNfMgorI2RlZmluZSB1X2lzY250cmwgdV9pc2NudHJsXzNfMgorI2RlZmluZSB1
X2lzZGVmaW5lZCB1X2lzZGVmaW5lZF8zXzIKKyNkZWZpbmUgdV9pc2RpZ2l0IHVfaXNkaWdpdF8z
XzIKKyNkZWZpbmUgdV9pc2dyYXBoIHVfaXNncmFwaF8zXzIKKyNkZWZpbmUgdV9pc2xvd2VyIHVf
aXNsb3dlcl8zXzIKKyNkZWZpbmUgdV9pc3ByaW50IHVfaXNwcmludF8zXzIKKyNkZWZpbmUgdV9p
c3B1bmN0IHVfaXNwdW5jdF8zXzIKKyNkZWZpbmUgdV9pc3NwYWNlIHVfaXNzcGFjZV8zXzIKKyNk
ZWZpbmUgdV9pc3RpdGxlIHVfaXN0aXRsZV8zXzIKKyNkZWZpbmUgdV9pc3VwcGVyIHVfaXN1cHBl
cl8zXzIKKyNkZWZpbmUgdV9pc3hkaWdpdCB1X2lzeGRpZ2l0XzNfMgorI2RlZmluZSB1X2xlbmd0
aE9mSWRlbnRpY2FsTGV2ZWxSdW4gdV9sZW5ndGhPZklkZW50aWNhbExldmVsUnVuXzNfMgorI2Rl
ZmluZSB1X2xvY2J1bmRfY2xvc2UgdV9sb2NidW5kX2Nsb3NlXzNfMgorI2RlZmluZSB1X2xvY2J1
bmRfZ2V0TnVtYmVyRm9ybWF0IHVfbG9jYnVuZF9nZXROdW1iZXJGb3JtYXRfM18yCisjZGVmaW5l
IHVfbG9jYnVuZF9pbml0IHVfbG9jYnVuZF9pbml0XzNfMgorI2RlZmluZSB1X21lbWNhc2VjbXAg
dV9tZW1jYXNlY21wXzNfMgorI2RlZmluZSB1X21lbWNociB1X21lbWNocl8zXzIKKyNkZWZpbmUg
dV9tZW1jaHIzMiB1X21lbWNocjMyXzNfMgorI2RlZmluZSB1X21lbWNtcCB1X21lbWNtcF8zXzIK
KyNkZWZpbmUgdV9tZW1jbXBDb2RlUG9pbnRPcmRlciB1X21lbWNtcENvZGVQb2ludE9yZGVyXzNf
MgorI2RlZmluZSB1X21lbWNweSB1X21lbWNweV8zXzIKKyNkZWZpbmUgdV9tZW1tb3ZlIHVfbWVt
bW92ZV8zXzIKKyNkZWZpbmUgdV9tZW1yY2hyIHVfbWVtcmNocl8zXzIKKyNkZWZpbmUgdV9tZW1y
Y2hyMzIgdV9tZW1yY2hyMzJfM18yCisjZGVmaW5lIHVfbWVtc2V0IHVfbWVtc2V0XzNfMgorI2Rl
ZmluZSB1X3BhcnNlTWVzc2FnZSB1X3BhcnNlTWVzc2FnZV8zXzIKKyNkZWZpbmUgdV9wYXJzZU1l
c3NhZ2VXaXRoRXJyb3IgdV9wYXJzZU1lc3NhZ2VXaXRoRXJyb3JfM18yCisjZGVmaW5lIHVfcHJp
bnRmX3BhcnNlIHVfcHJpbnRmX3BhcnNlXzNfMgorI2RlZmluZSB1X3JlbGVhc2VEZWZhdWx0Q29u
dmVydGVyIHVfcmVsZWFzZURlZmF1bHRDb252ZXJ0ZXJfM18yCisjZGVmaW5lIHVfc2NhbmZfcGFy
c2UgdV9zY2FuZl9wYXJzZV8zXzIKKyNkZWZpbmUgdV9zZXRBdG9taWNJbmNEZWNGdW5jdGlvbnMg
dV9zZXRBdG9taWNJbmNEZWNGdW5jdGlvbnNfM18yCisjZGVmaW5lIHVfc2V0RGF0YURpcmVjdG9y
eSB1X3NldERhdGFEaXJlY3RvcnlfM18yCisjZGVmaW5lIHVfc2V0TWVtb3J5RnVuY3Rpb25zIHVf
c2V0TWVtb3J5RnVuY3Rpb25zXzNfMgorI2RlZmluZSB1X3NldE11dGV4RnVuY3Rpb25zIHVfc2V0
TXV0ZXhGdW5jdGlvbnNfM18yCisjZGVmaW5lIHVfc2hhcGVBcmFiaWMgdV9zaGFwZUFyYWJpY18z
XzIKKyNkZWZpbmUgdV9zbnByaW50ZiB1X3NucHJpbnRmXzNfMgorI2RlZmluZSB1X3NucHJpbnRm
X3UgdV9zbnByaW50Zl91XzNfMgorI2RlZmluZSB1X3NwcmludGYgdV9zcHJpbnRmXzNfMgorI2Rl
ZmluZSB1X3NwcmludGZfdSB1X3NwcmludGZfdV8zXzIKKyNkZWZpbmUgdV9zc2NhbmYgdV9zc2Nh
bmZfM18yCisjZGVmaW5lIHVfc3NjYW5mX3UgdV9zc2NhbmZfdV8zXzIKKyNkZWZpbmUgdV9zdHJD
YXNlQ29tcGFyZSB1X3N0ckNhc2VDb21wYXJlXzNfMgorI2RlZmluZSB1X3N0ckNvbXBhcmUgdV9z
dHJDb21wYXJlXzNfMgorI2RlZmluZSB1X3N0ckNvbXBhcmVJdGVyIHVfc3RyQ29tcGFyZUl0ZXJf
M18yCisjZGVmaW5lIHVfc3RyRmluZEZpcnN0IHVfc3RyRmluZEZpcnN0XzNfMgorI2RlZmluZSB1
X3N0ckZpbmRMYXN0IHVfc3RyRmluZExhc3RfM18yCisjZGVmaW5lIHVfc3RyRm9sZENhc2UgdV9z
dHJGb2xkQ2FzZV8zXzIKKyNkZWZpbmUgdV9zdHJGcm9tUHVueWNvZGUgdV9zdHJGcm9tUHVueWNv
ZGVfM18yCisjZGVmaW5lIHVfc3RyRnJvbVVURjMyIHVfc3RyRnJvbVVURjMyXzNfMgorI2RlZmlu
ZSB1X3N0ckZyb21VVEY4IHVfc3RyRnJvbVVURjhfM18yCisjZGVmaW5lIHVfc3RyRnJvbVdDUyB1
X3N0ckZyb21XQ1NfM18yCisjZGVmaW5lIHVfc3RySGFzTW9yZUNoYXIzMlRoYW4gdV9zdHJIYXNN
b3JlQ2hhcjMyVGhhbl8zXzIKKyNkZWZpbmUgdV9zdHJUb0xvd2VyIHVfc3RyVG9Mb3dlcl8zXzIK
KyNkZWZpbmUgdV9zdHJUb1B1bnljb2RlIHVfc3RyVG9QdW55Y29kZV8zXzIKKyNkZWZpbmUgdV9z
dHJUb1RpdGxlIHVfc3RyVG9UaXRsZV8zXzIKKyNkZWZpbmUgdV9zdHJUb1VURjMyIHVfc3RyVG9V
VEYzMl8zXzIKKyNkZWZpbmUgdV9zdHJUb1VURjggdV9zdHJUb1VURjhfM18yCisjZGVmaW5lIHVf
c3RyVG9VcHBlciB1X3N0clRvVXBwZXJfM18yCisjZGVmaW5lIHVfc3RyVG9XQ1MgdV9zdHJUb1dD
U18zXzIKKyNkZWZpbmUgdV9zdHJjYXNlY21wIHVfc3RyY2FzZWNtcF8zXzIKKyNkZWZpbmUgdV9z
dHJjYXQgdV9zdHJjYXRfM18yCisjZGVmaW5lIHVfc3RyY2hyIHVfc3RyY2hyXzNfMgorI2RlZmlu
ZSB1X3N0cmNocjMyIHVfc3RyY2hyMzJfM18yCisjZGVmaW5lIHVfc3RyY21wIHVfc3RyY21wXzNf
MgorI2RlZmluZSB1X3N0cmNtcENvZGVQb2ludE9yZGVyIHVfc3RyY21wQ29kZVBvaW50T3JkZXJf
M18yCisjZGVmaW5lIHVfc3RyY21wRm9sZCB1X3N0cmNtcEZvbGRfM18yCisjZGVmaW5lIHVfc3Ry
Y3B5IHVfc3RyY3B5XzNfMgorI2RlZmluZSB1X3N0cmNzcG4gdV9zdHJjc3BuXzNfMgorI2RlZmlu
ZSB1X3N0cmxlbiB1X3N0cmxlbl8zXzIKKyNkZWZpbmUgdV9zdHJuY2FzZWNtcCB1X3N0cm5jYXNl
Y21wXzNfMgorI2RlZmluZSB1X3N0cm5jYXQgdV9zdHJuY2F0XzNfMgorI2RlZmluZSB1X3N0cm5j
bXAgdV9zdHJuY21wXzNfMgorI2RlZmluZSB1X3N0cm5jbXBDb2RlUG9pbnRPcmRlciB1X3N0cm5j
bXBDb2RlUG9pbnRPcmRlcl8zXzIKKyNkZWZpbmUgdV9zdHJuY3B5IHVfc3RybmNweV8zXzIKKyNk
ZWZpbmUgdV9zdHJwYnJrIHVfc3RycGJya18zXzIKKyNkZWZpbmUgdV9zdHJyY2hyIHVfc3RycmNo
cl8zXzIKKyNkZWZpbmUgdV9zdHJyY2hyMzIgdV9zdHJyY2hyMzJfM18yCisjZGVmaW5lIHVfc3Ry
cnN0ciB1X3N0cnJzdHJfM18yCisjZGVmaW5lIHVfc3Ryc3BuIHVfc3Ryc3BuXzNfMgorI2RlZmlu
ZSB1X3N0cnN0ciB1X3N0cnN0cl8zXzIKKyNkZWZpbmUgdV9zdHJ0b2tfciB1X3N0cnRva19yXzNf
MgorI2RlZmluZSB1X3Rlcm1pbmF0ZUNoYXJzIHVfdGVybWluYXRlQ2hhcnNfM18yCisjZGVmaW5l
IHVfdGVybWluYXRlVUNoYXIzMnMgdV90ZXJtaW5hdGVVQ2hhcjMyc18zXzIKKyNkZWZpbmUgdV90
ZXJtaW5hdGVVQ2hhcnMgdV90ZXJtaW5hdGVVQ2hhcnNfM18yCisjZGVmaW5lIHVfdGVybWluYXRl
V0NoYXJzIHVfdGVybWluYXRlV0NoYXJzXzNfMgorI2RlZmluZSB1X3RvbG93ZXIgdV90b2xvd2Vy
XzNfMgorI2RlZmluZSB1X3RvdGl0bGUgdV90b3RpdGxlXzNfMgorI2RlZmluZSB1X3RvdXBwZXIg
dV90b3VwcGVyXzNfMgorI2RlZmluZSB1X3Vhc3RyY3B5IHVfdWFzdHJjcHlfM18yCisjZGVmaW5l
IHVfdWFzdHJuY3B5IHVfdWFzdHJuY3B5XzNfMgorI2RlZmluZSB1X3VuZXNjYXBlIHVfdW5lc2Nh
cGVfM18yCisjZGVmaW5lIHVfdW5lc2NhcGVBdCB1X3VuZXNjYXBlQXRfM18yCisjZGVmaW5lIHVf
dmVyc2lvbkZyb21TdHJpbmcgdV92ZXJzaW9uRnJvbVN0cmluZ18zXzIKKyNkZWZpbmUgdV92ZXJz
aW9uVG9TdHJpbmcgdV92ZXJzaW9uVG9TdHJpbmdfM18yCisjZGVmaW5lIHVfdmZvcm1hdE1lc3Nh
Z2UgdV92Zm9ybWF0TWVzc2FnZV8zXzIKKyNkZWZpbmUgdV92Zm9ybWF0TWVzc2FnZVdpdGhFcnJv
ciB1X3Zmb3JtYXRNZXNzYWdlV2l0aEVycm9yXzNfMgorI2RlZmluZSB1X3ZmcHJpbnRmIHVfdmZw
cmludGZfM18yCisjZGVmaW5lIHVfdmZwcmludGZfdSB1X3ZmcHJpbnRmX3VfM18yCisjZGVmaW5l
IHVfdmZzY2FuZiB1X3Zmc2NhbmZfM18yCisjZGVmaW5lIHVfdmZzY2FuZl91IHVfdmZzY2FuZl91
XzNfMgorI2RlZmluZSB1X3ZwYXJzZU1lc3NhZ2UgdV92cGFyc2VNZXNzYWdlXzNfMgorI2RlZmlu
ZSB1X3ZwYXJzZU1lc3NhZ2VXaXRoRXJyb3IgdV92cGFyc2VNZXNzYWdlV2l0aEVycm9yXzNfMgor
I2RlZmluZSB1X3ZzbnByaW50ZiB1X3ZzbnByaW50Zl8zXzIKKyNkZWZpbmUgdV92c25wcmludGZf
dSB1X3ZzbnByaW50Zl91XzNfMgorI2RlZmluZSB1X3ZzcHJpbnRmIHVfdnNwcmludGZfM18yCisj
ZGVmaW5lIHVfdnNwcmludGZfdSB1X3ZzcHJpbnRmX3VfM18yCisjZGVmaW5lIHVfdnNzY2FuZiB1
X3Zzc2NhbmZfM18yCisjZGVmaW5lIHVfdnNzY2FuZl91IHVfdnNzY2FuZl91XzNfMgorI2RlZmlu
ZSB1X3dyaXRlRGlmZiB1X3dyaXRlRGlmZl8zXzIKKyNkZWZpbmUgdV93cml0ZUlkZW50aWNhbExl
dmVsUnVuIHVfd3JpdGVJZGVudGljYWxMZXZlbFJ1bl8zXzIKKyNkZWZpbmUgdV93cml0ZUlkZW50
aWNhbExldmVsUnVuVHdvQ2hhcnMgdV93cml0ZUlkZW50aWNhbExldmVsUnVuVHdvQ2hhcnNfM18y
CisjZGVmaW5lIHViaWRpX2Nsb3NlIHViaWRpX2Nsb3NlXzNfMgorI2RlZmluZSB1YmlkaV9jb3Vu
dFJ1bnMgdWJpZGlfY291bnRSdW5zXzNfMgorI2RlZmluZSB1YmlkaV9nZXREaXJlY3Rpb24gdWJp
ZGlfZ2V0RGlyZWN0aW9uXzNfMgorI2RlZmluZSB1YmlkaV9nZXRMZW5ndGggdWJpZGlfZ2V0TGVu
Z3RoXzNfMgorI2RlZmluZSB1YmlkaV9nZXRMZXZlbEF0IHViaWRpX2dldExldmVsQXRfM18yCisj
ZGVmaW5lIHViaWRpX2dldExldmVscyB1YmlkaV9nZXRMZXZlbHNfM18yCisjZGVmaW5lIHViaWRp
X2dldExvZ2ljYWxJbmRleCB1YmlkaV9nZXRMb2dpY2FsSW5kZXhfM18yCisjZGVmaW5lIHViaWRp
X2dldExvZ2ljYWxNYXAgdWJpZGlfZ2V0TG9naWNhbE1hcF8zXzIKKyNkZWZpbmUgdWJpZGlfZ2V0
TG9naWNhbFJ1biB1YmlkaV9nZXRMb2dpY2FsUnVuXzNfMgorI2RlZmluZSB1YmlkaV9nZXRNZW1v
cnkgdWJpZGlfZ2V0TWVtb3J5XzNfMgorI2RlZmluZSB1YmlkaV9nZXRQYXJhTGV2ZWwgdWJpZGlf
Z2V0UGFyYUxldmVsXzNfMgorI2RlZmluZSB1YmlkaV9nZXRSdW5zIHViaWRpX2dldFJ1bnNfM18y
CisjZGVmaW5lIHViaWRpX2dldFRleHQgdWJpZGlfZ2V0VGV4dF8zXzIKKyNkZWZpbmUgdWJpZGlf
Z2V0VmlzdWFsSW5kZXggdWJpZGlfZ2V0VmlzdWFsSW5kZXhfM18yCisjZGVmaW5lIHViaWRpX2dl
dFZpc3VhbE1hcCB1YmlkaV9nZXRWaXN1YWxNYXBfM18yCisjZGVmaW5lIHViaWRpX2dldFZpc3Vh
bFJ1biB1YmlkaV9nZXRWaXN1YWxSdW5fM18yCisjZGVmaW5lIHViaWRpX2ludmVydE1hcCB1Ymlk
aV9pbnZlcnRNYXBfM18yCisjZGVmaW5lIHViaWRpX2lzSW52ZXJzZSB1YmlkaV9pc0ludmVyc2Vf
M18yCisjZGVmaW5lIHViaWRpX29wZW4gdWJpZGlfb3Blbl8zXzIKKyNkZWZpbmUgdWJpZGlfb3Bl
blNpemVkIHViaWRpX29wZW5TaXplZF8zXzIKKyNkZWZpbmUgdWJpZGlfcmVvcmRlckxvZ2ljYWwg
dWJpZGlfcmVvcmRlckxvZ2ljYWxfM18yCisjZGVmaW5lIHViaWRpX3Jlb3JkZXJWaXN1YWwgdWJp
ZGlfcmVvcmRlclZpc3VhbF8zXzIKKyNkZWZpbmUgdWJpZGlfc2V0SW52ZXJzZSB1YmlkaV9zZXRJ
bnZlcnNlXzNfMgorI2RlZmluZSB1YmlkaV9zZXRMaW5lIHViaWRpX3NldExpbmVfM18yCisjZGVm
aW5lIHViaWRpX3NldFBhcmEgdWJpZGlfc2V0UGFyYV8zXzIKKyNkZWZpbmUgdWJpZGlfd3JpdGVS
ZW9yZGVyZWQgdWJpZGlfd3JpdGVSZW9yZGVyZWRfM18yCisjZGVmaW5lIHViaWRpX3dyaXRlUmV2
ZXJzZSB1YmlkaV93cml0ZVJldmVyc2VfM18yCisjZGVmaW5lIHVibG9ja19nZXRDb2RlIHVibG9j
a19nZXRDb2RlXzNfMgorI2RlZmluZSB1YnJrX2Nsb3NlIHVicmtfY2xvc2VfM18yCisjZGVmaW5l
IHVicmtfY291bnRBdmFpbGFibGUgdWJya19jb3VudEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWJy
a19jdXJyZW50IHVicmtfY3VycmVudF8zXzIKKyNkZWZpbmUgdWJya19maXJzdCB1YnJrX2ZpcnN0
XzNfMgorI2RlZmluZSB1YnJrX2ZvbGxvd2luZyB1YnJrX2ZvbGxvd2luZ18zXzIKKyNkZWZpbmUg
dWJya19nZXRBdmFpbGFibGUgdWJya19nZXRBdmFpbGFibGVfM18yCisjZGVmaW5lIHVicmtfZ2V0
TG9jYWxlQnlUeXBlIHVicmtfZ2V0TG9jYWxlQnlUeXBlXzNfMgorI2RlZmluZSB1YnJrX2dldFJ1
bGVTdGF0dXMgdWJya19nZXRSdWxlU3RhdHVzXzNfMgorI2RlZmluZSB1YnJrX2dldFJ1bGVTdGF0
dXNWZWMgdWJya19nZXRSdWxlU3RhdHVzVmVjXzNfMgorI2RlZmluZSB1YnJrX2lzQm91bmRhcnkg
dWJya19pc0JvdW5kYXJ5XzNfMgorI2RlZmluZSB1YnJrX2xhc3QgdWJya19sYXN0XzNfMgorI2Rl
ZmluZSB1YnJrX25leHQgdWJya19uZXh0XzNfMgorI2RlZmluZSB1YnJrX29wZW4gdWJya19vcGVu
XzNfMgorI2RlZmluZSB1YnJrX29wZW5SdWxlcyB1YnJrX29wZW5SdWxlc18zXzIKKyNkZWZpbmUg
dWJya19wcmVjZWRpbmcgdWJya19wcmVjZWRpbmdfM18yCisjZGVmaW5lIHVicmtfcHJldmlvdXMg
dWJya19wcmV2aW91c18zXzIKKyNkZWZpbmUgdWJya19zYWZlQ2xvbmUgdWJya19zYWZlQ2xvbmVf
M18yCisjZGVmaW5lIHVicmtfc2V0VGV4dCB1YnJrX3NldFRleHRfM18yCisjZGVmaW5lIHVicmtf
c3dhcCB1YnJrX3N3YXBfM18yCisjZGVmaW5lIHVjYWxfYWRkIHVjYWxfYWRkXzNfMgorI2RlZmlu
ZSB1Y2FsX2NsZWFyIHVjYWxfY2xlYXJfM18yCisjZGVmaW5lIHVjYWxfY2xlYXJGaWVsZCB1Y2Fs
X2NsZWFyRmllbGRfM18yCisjZGVmaW5lIHVjYWxfY2xvc2UgdWNhbF9jbG9zZV8zXzIKKyNkZWZp
bmUgdWNhbF9jb3VudEF2YWlsYWJsZSB1Y2FsX2NvdW50QXZhaWxhYmxlXzNfMgorI2RlZmluZSB1
Y2FsX2VxdWl2YWxlbnRUbyB1Y2FsX2VxdWl2YWxlbnRUb18zXzIKKyNkZWZpbmUgdWNhbF9nZXQg
dWNhbF9nZXRfM18yCisjZGVmaW5lIHVjYWxfZ2V0QXR0cmlidXRlIHVjYWxfZ2V0QXR0cmlidXRl
XzNfMgorI2RlZmluZSB1Y2FsX2dldEF2YWlsYWJsZSB1Y2FsX2dldEF2YWlsYWJsZV8zXzIKKyNk
ZWZpbmUgdWNhbF9nZXREU1RTYXZpbmdzIHVjYWxfZ2V0RFNUU2F2aW5nc18zXzIKKyNkZWZpbmUg
dWNhbF9nZXREZWZhdWx0VGltZVpvbmUgdWNhbF9nZXREZWZhdWx0VGltZVpvbmVfM18yCisjZGVm
aW5lIHVjYWxfZ2V0TGltaXQgdWNhbF9nZXRMaW1pdF8zXzIKKyNkZWZpbmUgdWNhbF9nZXRMb2Nh
bGVCeVR5cGUgdWNhbF9nZXRMb2NhbGVCeVR5cGVfM18yCisjZGVmaW5lIHVjYWxfZ2V0TWlsbGlz
IHVjYWxfZ2V0TWlsbGlzXzNfMgorI2RlZmluZSB1Y2FsX2dldE5vdyB1Y2FsX2dldE5vd18zXzIK
KyNkZWZpbmUgdWNhbF9nZXRUaW1lWm9uZURpc3BsYXlOYW1lIHVjYWxfZ2V0VGltZVpvbmVEaXNw
bGF5TmFtZV8zXzIKKyNkZWZpbmUgdWNhbF9pbkRheWxpZ2h0VGltZSB1Y2FsX2luRGF5bGlnaHRU
aW1lXzNfMgorI2RlZmluZSB1Y2FsX2lzU2V0IHVjYWxfaXNTZXRfM18yCisjZGVmaW5lIHVjYWxf
b3BlbiB1Y2FsX29wZW5fM18yCisjZGVmaW5lIHVjYWxfb3BlbkNvdW50cnlUaW1lWm9uZXMgdWNh
bF9vcGVuQ291bnRyeVRpbWVab25lc18zXzIKKyNkZWZpbmUgdWNhbF9vcGVuVGltZVpvbmVzIHVj
YWxfb3BlblRpbWVab25lc18zXzIKKyNkZWZpbmUgdWNhbF9yb2xsIHVjYWxfcm9sbF8zXzIKKyNk
ZWZpbmUgdWNhbF9zZXQgdWNhbF9zZXRfM18yCisjZGVmaW5lIHVjYWxfc2V0QXR0cmlidXRlIHVj
YWxfc2V0QXR0cmlidXRlXzNfMgorI2RlZmluZSB1Y2FsX3NldERhdGUgdWNhbF9zZXREYXRlXzNf
MgorI2RlZmluZSB1Y2FsX3NldERhdGVUaW1lIHVjYWxfc2V0RGF0ZVRpbWVfM18yCisjZGVmaW5l
IHVjYWxfc2V0RGVmYXVsdFRpbWVab25lIHVjYWxfc2V0RGVmYXVsdFRpbWVab25lXzNfMgorI2Rl
ZmluZSB1Y2FsX3NldE1pbGxpcyB1Y2FsX3NldE1pbGxpc18zXzIKKyNkZWZpbmUgdWNhbF9zZXRU
aW1lWm9uZSB1Y2FsX3NldFRpbWVab25lXzNfMgorI2RlZmluZSB1Y2FzZV9hZGRQcm9wZXJ0eVN0
YXJ0cyB1Y2FzZV9hZGRQcm9wZXJ0eVN0YXJ0c18zXzIKKyNkZWZpbmUgdWNhc2VfY2xvc2UgdWNh
c2VfY2xvc2VfM18yCisjZGVmaW5lIHVjYXNlX2ZvbGQgdWNhc2VfZm9sZF8zXzIKKyNkZWZpbmUg
dWNhc2VfZ2V0U2luZ2xldG9uIHVjYXNlX2dldFNpbmdsZXRvbl8zXzIKKyNkZWZpbmUgdWNhc2Vf
Z2V0VHlwZSB1Y2FzZV9nZXRUeXBlXzNfMgorI2RlZmluZSB1Y2FzZV9nZXRUeXBlT3JJZ25vcmFi
bGUgdWNhc2VfZ2V0VHlwZU9ySWdub3JhYmxlXzNfMgorI2RlZmluZSB1Y2FzZV9pc0Nhc2VTZW5z
aXRpdmUgdWNhc2VfaXNDYXNlU2Vuc2l0aXZlXzNfMgorI2RlZmluZSB1Y2FzZV9pc1NvZnREb3R0
ZWQgdWNhc2VfaXNTb2Z0RG90dGVkXzNfMgorI2RlZmluZSB1Y2FzZV9vcGVuIHVjYXNlX29wZW5f
M18yCisjZGVmaW5lIHVjYXNlX29wZW5CaW5hcnkgdWNhc2Vfb3BlbkJpbmFyeV8zXzIKKyNkZWZp
bmUgdWNhc2Vfc3dhcCB1Y2FzZV9zd2FwXzNfMgorI2RlZmluZSB1Y2FzZV90b0Z1bGxGb2xkaW5n
IHVjYXNlX3RvRnVsbEZvbGRpbmdfM18yCisjZGVmaW5lIHVjYXNlX3RvRnVsbExvd2VyIHVjYXNl
X3RvRnVsbExvd2VyXzNfMgorI2RlZmluZSB1Y2FzZV90b0Z1bGxUaXRsZSB1Y2FzZV90b0Z1bGxU
aXRsZV8zXzIKKyNkZWZpbmUgdWNhc2VfdG9GdWxsVXBwZXIgdWNhc2VfdG9GdWxsVXBwZXJfM18y
CisjZGVmaW5lIHVjYXNlX3RvbG93ZXIgdWNhc2VfdG9sb3dlcl8zXzIKKyNkZWZpbmUgdWNhc2Vf
dG90aXRsZSB1Y2FzZV90b3RpdGxlXzNfMgorI2RlZmluZSB1Y2FzZV90b3VwcGVyIHVjYXNlX3Rv
dXBwZXJfM18yCisjZGVmaW5lIHVjaGFyX2FkZFByb3BlcnR5U3RhcnRzIHVjaGFyX2FkZFByb3Bl
cnR5U3RhcnRzXzNfMgorI2RlZmluZSB1Y2hhcl9nZXRIU1QgdWNoYXJfZ2V0SFNUXzNfMgorI2Rl
ZmluZSB1Y2hhcl9zd2FwTmFtZXMgdWNoYXJfc3dhcE5hbWVzXzNfMgorI2RlZmluZSB1Y2xuX2Nv
bW1vbl9saWJfY2xlYW51cCB1Y2xuX2NvbW1vbl9saWJfY2xlYW51cF8zXzIKKyNkZWZpbmUgdWNs
bl9jb21tb25fcmVnaXN0ZXJDbGVhbnVwIHVjbG5fY29tbW9uX3JlZ2lzdGVyQ2xlYW51cF8zXzIK
KyNkZWZpbmUgdWNsbl9pMThuX3JlZ2lzdGVyQ2xlYW51cCB1Y2xuX2kxOG5fcmVnaXN0ZXJDbGVh
bnVwXzNfMgorI2RlZmluZSB1Y2xuX3JlZ2lzdGVyQ2xlYW51cCB1Y2xuX3JlZ2lzdGVyQ2xlYW51
cF8zXzIKKyNkZWZpbmUgdWNtcDhfY2xvc2UgdWNtcDhfY2xvc2VfM18yCisjZGVmaW5lIHVjbXA4
X2NvbXBhY3QgdWNtcDhfY29tcGFjdF8zXzIKKyNkZWZpbmUgdWNtcDhfZXhwYW5kIHVjbXA4X2V4
cGFuZF8zXzIKKyNkZWZpbmUgdWNtcDhfZmxhdHRlbk1lbSB1Y21wOF9mbGF0dGVuTWVtXzNfMgor
I2RlZmluZSB1Y21wOF9nZXRBcnJheSB1Y21wOF9nZXRBcnJheV8zXzIKKyNkZWZpbmUgdWNtcDhf
Z2V0Q291bnQgdWNtcDhfZ2V0Q291bnRfM18yCisjZGVmaW5lIHVjbXA4X2dldEluZGV4IHVjbXA4
X2dldEluZGV4XzNfMgorI2RlZmluZSB1Y21wOF9nZXRrQmxvY2tDb3VudCB1Y21wOF9nZXRrQmxv
Y2tDb3VudF8zXzIKKyNkZWZpbmUgdWNtcDhfZ2V0a1VuaWNvZGVDb3VudCB1Y21wOF9nZXRrVW5p
Y29kZUNvdW50XzNfMgorI2RlZmluZSB1Y21wOF9pbml0IHVjbXA4X2luaXRfM18yCisjZGVmaW5l
IHVjbXA4X2luaXRBZG9wdCB1Y21wOF9pbml0QWRvcHRfM18yCisjZGVmaW5lIHVjbXA4X2luaXRB
bGlhcyB1Y21wOF9pbml0QWxpYXNfM18yCisjZGVmaW5lIHVjbXA4X2luaXRCb2d1cyB1Y21wOF9p
bml0Qm9ndXNfM18yCisjZGVmaW5lIHVjbXA4X2luaXRGcm9tRGF0YSB1Y21wOF9pbml0RnJvbURh
dGFfM18yCisjZGVmaW5lIHVjbXA4X2lzQm9ndXMgdWNtcDhfaXNCb2d1c18zXzIKKyNkZWZpbmUg
dWNtcDhfb3BlbiB1Y21wOF9vcGVuXzNfMgorI2RlZmluZSB1Y21wOF9vcGVuQWRvcHQgdWNtcDhf
b3BlbkFkb3B0XzNfMgorI2RlZmluZSB1Y21wOF9vcGVuQWxpYXMgdWNtcDhfb3BlbkFsaWFzXzNf
MgorI2RlZmluZSB1Y21wOF9zZXQgdWNtcDhfc2V0XzNfMgorI2RlZmluZSB1Y21wOF9zZXRSYW5n
ZSB1Y21wOF9zZXRSYW5nZV8zXzIKKyNkZWZpbmUgdWNudl9NQkNTRnJvbVVDaGFyMzIgdWNudl9N
QkNTRnJvbVVDaGFyMzJfM18yCisjZGVmaW5lIHVjbnZfTUJDU0Zyb21Vbmljb2RlV2l0aE9mZnNl
dHMgdWNudl9NQkNTRnJvbVVuaWNvZGVXaXRoT2Zmc2V0c18zXzIKKyNkZWZpbmUgdWNudl9NQkNT
R2V0VHlwZSB1Y252X01CQ1NHZXRUeXBlXzNfMgorI2RlZmluZSB1Y252X01CQ1NHZXRVbmljb2Rl
U2V0Rm9yQnl0ZXMgdWNudl9NQkNTR2V0VW5pY29kZVNldEZvckJ5dGVzXzNfMgorI2RlZmluZSB1
Y252X01CQ1NHZXRVbmljb2RlU2V0Rm9yVW5pY29kZSB1Y252X01CQ1NHZXRVbmljb2RlU2V0Rm9y
VW5pY29kZV8zXzIKKyNkZWZpbmUgdWNudl9NQkNTSXNMZWFkQnl0ZSB1Y252X01CQ1NJc0xlYWRC
eXRlXzNfMgorI2RlZmluZSB1Y252X01CQ1NTaW1wbGVHZXROZXh0VUNoYXIgdWNudl9NQkNTU2lt
cGxlR2V0TmV4dFVDaGFyXzNfMgorI2RlZmluZSB1Y252X01CQ1NUb1VuaWNvZGVXaXRoT2Zmc2V0
cyB1Y252X01CQ1NUb1VuaWNvZGVXaXRoT2Zmc2V0c18zXzIKKyNkZWZpbmUgdWNudl9jYkZyb21V
V3JpdGVCeXRlcyB1Y252X2NiRnJvbVVXcml0ZUJ5dGVzXzNfMgorI2RlZmluZSB1Y252X2NiRnJv
bVVXcml0ZVN1YiB1Y252X2NiRnJvbVVXcml0ZVN1Yl8zXzIKKyNkZWZpbmUgdWNudl9jYkZyb21V
V3JpdGVVQ2hhcnMgdWNudl9jYkZyb21VV3JpdGVVQ2hhcnNfM18yCisjZGVmaW5lIHVjbnZfY2JU
b1VXcml0ZVN1YiB1Y252X2NiVG9VV3JpdGVTdWJfM18yCisjZGVmaW5lIHVjbnZfY2JUb1VXcml0
ZVVDaGFycyB1Y252X2NiVG9VV3JpdGVVQ2hhcnNfM18yCisjZGVmaW5lIHVjbnZfY2xvc2UgdWNu
dl9jbG9zZV8zXzIKKyNkZWZpbmUgdWNudl9jb21wYXJlTmFtZXMgdWNudl9jb21wYXJlTmFtZXNf
M18yCisjZGVmaW5lIHVjbnZfY29udmVydCB1Y252X2NvbnZlcnRfM18yCisjZGVmaW5lIHVjbnZf
Y29udmVydEV4IHVjbnZfY29udmVydEV4XzNfMgorI2RlZmluZSB1Y252X2NvcHlQbGF0Zm9ybVN0
cmluZyB1Y252X2NvcHlQbGF0Zm9ybVN0cmluZ18zXzIKKyNkZWZpbmUgdWNudl9jb3VudEFsaWFz
ZXMgdWNudl9jb3VudEFsaWFzZXNfM18yCisjZGVmaW5lIHVjbnZfY291bnRBdmFpbGFibGUgdWNu
dl9jb3VudEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWNudl9jb3VudFN0YW5kYXJkcyB1Y252X2Nv
dW50U3RhbmRhcmRzXzNfMgorI2RlZmluZSB1Y252X2NyZWF0ZUFsZ29yaXRobWljQ29udmVydGVy
IHVjbnZfY3JlYXRlQWxnb3JpdGhtaWNDb252ZXJ0ZXJfM18yCisjZGVmaW5lIHVjbnZfY3JlYXRl
Q29udmVydGVyIHVjbnZfY3JlYXRlQ29udmVydGVyXzNfMgorI2RlZmluZSB1Y252X2NyZWF0ZUNv
bnZlcnRlckZyb21QYWNrYWdlIHVjbnZfY3JlYXRlQ29udmVydGVyRnJvbVBhY2thZ2VfM18yCisj
ZGVmaW5lIHVjbnZfY3JlYXRlQ29udmVydGVyRnJvbVNoYXJlZERhdGEgdWNudl9jcmVhdGVDb252
ZXJ0ZXJGcm9tU2hhcmVkRGF0YV8zXzIKKyNkZWZpbmUgdWNudl9kZXRlY3RVbmljb2RlU2lnbmF0
dXJlIHVjbnZfZGV0ZWN0VW5pY29kZVNpZ25hdHVyZV8zXzIKKyNkZWZpbmUgdWNudl9leHRDb250
aW51ZU1hdGNoRnJvbVUgdWNudl9leHRDb250aW51ZU1hdGNoRnJvbVVfM18yCisjZGVmaW5lIHVj
bnZfZXh0Q29udGludWVNYXRjaFRvVSB1Y252X2V4dENvbnRpbnVlTWF0Y2hUb1VfM18yCisjZGVm
aW5lIHVjbnZfZXh0R2V0VW5pY29kZVNldCB1Y252X2V4dEdldFVuaWNvZGVTZXRfM18yCisjZGVm
aW5lIHVjbnZfZXh0SW5pdGlhbE1hdGNoRnJvbVUgdWNudl9leHRJbml0aWFsTWF0Y2hGcm9tVV8z
XzIKKyNkZWZpbmUgdWNudl9leHRJbml0aWFsTWF0Y2hUb1UgdWNudl9leHRJbml0aWFsTWF0Y2hU
b1VfM18yCisjZGVmaW5lIHVjbnZfZXh0U2ltcGxlTWF0Y2hGcm9tVSB1Y252X2V4dFNpbXBsZU1h
dGNoRnJvbVVfM18yCisjZGVmaW5lIHVjbnZfZXh0U2ltcGxlTWF0Y2hUb1UgdWNudl9leHRTaW1w
bGVNYXRjaFRvVV8zXzIKKyNkZWZpbmUgdWNudl9maXhGaWxlU2VwYXJhdG9yIHVjbnZfZml4Rmls
ZVNlcGFyYXRvcl8zXzIKKyNkZWZpbmUgdWNudl9mbHVzaENhY2hlIHVjbnZfZmx1c2hDYWNoZV8z
XzIKKyNkZWZpbmUgdWNudl9mcm9tQWxnb3JpdGhtaWMgdWNudl9mcm9tQWxnb3JpdGhtaWNfM18y
CisjZGVmaW5lIHVjbnZfZnJvbVVDaGFycyB1Y252X2Zyb21VQ2hhcnNfM18yCisjZGVmaW5lIHVj
bnZfZnJvbVVXcml0ZUJ5dGVzIHVjbnZfZnJvbVVXcml0ZUJ5dGVzXzNfMgorI2RlZmluZSB1Y252
X2Zyb21Vbmljb2RlIHVjbnZfZnJvbVVuaWNvZGVfM18yCisjZGVmaW5lIHVjbnZfZnJvbVVuaWNv
ZGVfVVRGOCB1Y252X2Zyb21Vbmljb2RlX1VURjhfM18yCisjZGVmaW5lIHVjbnZfZnJvbVVuaWNv
ZGVfVVRGOF9PRkZTRVRTX0xPR0lDIHVjbnZfZnJvbVVuaWNvZGVfVVRGOF9PRkZTRVRTX0xPR0lD
XzNfMgorI2RlZmluZSB1Y252X2dldEFsaWFzIHVjbnZfZ2V0QWxpYXNfM18yCisjZGVmaW5lIHVj
bnZfZ2V0QWxpYXNlcyB1Y252X2dldEFsaWFzZXNfM18yCisjZGVmaW5lIHVjbnZfZ2V0QXZhaWxh
YmxlTmFtZSB1Y252X2dldEF2YWlsYWJsZU5hbWVfM18yCisjZGVmaW5lIHVjbnZfZ2V0Q0NTSUQg
dWNudl9nZXRDQ1NJRF8zXzIKKyNkZWZpbmUgdWNudl9nZXRDYW5vbmljYWxOYW1lIHVjbnZfZ2V0
Q2Fub25pY2FsTmFtZV8zXzIKKyNkZWZpbmUgdWNudl9nZXRDb21wbGV0ZVVuaWNvZGVTZXQgdWNu
dl9nZXRDb21wbGV0ZVVuaWNvZGVTZXRfM18yCisjZGVmaW5lIHVjbnZfZ2V0RGVmYXVsdE5hbWUg
dWNudl9nZXREZWZhdWx0TmFtZV8zXzIKKyNkZWZpbmUgdWNudl9nZXREaXNwbGF5TmFtZSB1Y252
X2dldERpc3BsYXlOYW1lXzNfMgorI2RlZmluZSB1Y252X2dldEZyb21VQ2FsbEJhY2sgdWNudl9n
ZXRGcm9tVUNhbGxCYWNrXzNfMgorI2RlZmluZSB1Y252X2dldEludmFsaWRDaGFycyB1Y252X2dl
dEludmFsaWRDaGFyc18zXzIKKyNkZWZpbmUgdWNudl9nZXRJbnZhbGlkVUNoYXJzIHVjbnZfZ2V0
SW52YWxpZFVDaGFyc18zXzIKKyNkZWZpbmUgdWNudl9nZXRNYXhDaGFyU2l6ZSB1Y252X2dldE1h
eENoYXJTaXplXzNfMgorI2RlZmluZSB1Y252X2dldE1pbkNoYXJTaXplIHVjbnZfZ2V0TWluQ2hh
clNpemVfM18yCisjZGVmaW5lIHVjbnZfZ2V0TmFtZSB1Y252X2dldE5hbWVfM18yCisjZGVmaW5l
IHVjbnZfZ2V0TmV4dFVDaGFyIHVjbnZfZ2V0TmV4dFVDaGFyXzNfMgorI2RlZmluZSB1Y252X2dl
dE5vblN1cnJvZ2F0ZVVuaWNvZGVTZXQgdWNudl9nZXROb25TdXJyb2dhdGVVbmljb2RlU2V0XzNf
MgorI2RlZmluZSB1Y252X2dldFBsYXRmb3JtIHVjbnZfZ2V0UGxhdGZvcm1fM18yCisjZGVmaW5l
IHVjbnZfZ2V0U3RhbmRhcmQgdWNudl9nZXRTdGFuZGFyZF8zXzIKKyNkZWZpbmUgdWNudl9nZXRT
dGFuZGFyZE5hbWUgdWNudl9nZXRTdGFuZGFyZE5hbWVfM18yCisjZGVmaW5lIHVjbnZfZ2V0U3Rh
cnRlcnMgdWNudl9nZXRTdGFydGVyc18zXzIKKyNkZWZpbmUgdWNudl9nZXRTdWJzdENoYXJzIHVj
bnZfZ2V0U3Vic3RDaGFyc18zXzIKKyNkZWZpbmUgdWNudl9nZXRUb1VDYWxsQmFjayB1Y252X2dl
dFRvVUNhbGxCYWNrXzNfMgorI2RlZmluZSB1Y252X2dldFR5cGUgdWNudl9nZXRUeXBlXzNfMgor
I2RlZmluZSB1Y252X2dldFVuaWNvZGVTZXQgdWNudl9nZXRVbmljb2RlU2V0XzNfMgorI2RlZmlu
ZSB1Y252X2luY3JlbWVudFJlZkNvdW50IHVjbnZfaW5jcmVtZW50UmVmQ291bnRfM18yCisjZGVm
aW5lIHVjbnZfaW9fY291bnRBbGlhc2VzIHVjbnZfaW9fY291bnRBbGlhc2VzXzNfMgorI2RlZmlu
ZSB1Y252X2lvX2NvdW50QXZhaWxhYmxlQWxpYXNlcyB1Y252X2lvX2NvdW50QXZhaWxhYmxlQWxp
YXNlc18zXzIKKyNkZWZpbmUgdWNudl9pb19jb3VudEF2YWlsYWJsZUNvbnZlcnRlcnMgdWNudl9p
b19jb3VudEF2YWlsYWJsZUNvbnZlcnRlcnNfM18yCisjZGVmaW5lIHVjbnZfaW9fY291bnRTdGFu
ZGFyZHMgdWNudl9pb19jb3VudFN0YW5kYXJkc18zXzIKKyNkZWZpbmUgdWNudl9pb19mbHVzaEF2
YWlsYWJsZUNvbnZlcnRlckNhY2hlIHVjbnZfaW9fZmx1c2hBdmFpbGFibGVDb252ZXJ0ZXJDYWNo
ZV8zXzIKKyNkZWZpbmUgdWNudl9pb19nZXRBbGlhcyB1Y252X2lvX2dldEFsaWFzXzNfMgorI2Rl
ZmluZSB1Y252X2lvX2dldEFsaWFzZXMgdWNudl9pb19nZXRBbGlhc2VzXzNfMgorI2RlZmluZSB1
Y252X2lvX2dldEF2YWlsYWJsZUNvbnZlcnRlciB1Y252X2lvX2dldEF2YWlsYWJsZUNvbnZlcnRl
cl8zXzIKKyNkZWZpbmUgdWNudl9pb19nZXRDb252ZXJ0ZXJOYW1lIHVjbnZfaW9fZ2V0Q29udmVy
dGVyTmFtZV8zXzIKKyNkZWZpbmUgdWNudl9pb19nZXREZWZhdWx0Q29udmVydGVyTmFtZSB1Y252
X2lvX2dldERlZmF1bHRDb252ZXJ0ZXJOYW1lXzNfMgorI2RlZmluZSB1Y252X2lvX3NldERlZmF1
bHRDb252ZXJ0ZXJOYW1lIHVjbnZfaW9fc2V0RGVmYXVsdENvbnZlcnRlck5hbWVfM18yCisjZGVm
aW5lIHVjbnZfaW9fc3RyaXBBU0NJSUZvckNvbXBhcmUgdWNudl9pb19zdHJpcEFTQ0lJRm9yQ29t
cGFyZV8zXzIKKyNkZWZpbmUgdWNudl9pb19zdHJpcEVCQ0RJQ0ZvckNvbXBhcmUgdWNudl9pb19z
dHJpcEVCQ0RJQ0ZvckNvbXBhcmVfM18yCisjZGVmaW5lIHVjbnZfaXNBbWJpZ3VvdXMgdWNudl9p
c0FtYmlndW91c18zXzIKKyNkZWZpbmUgdWNudl9sb2FkIHVjbnZfbG9hZF8zXzIKKyNkZWZpbmUg
dWNudl9sb2FkU2hhcmVkRGF0YSB1Y252X2xvYWRTaGFyZWREYXRhXzNfMgorI2RlZmluZSB1Y252
X29wZW4gdWNudl9vcGVuXzNfMgorI2RlZmluZSB1Y252X29wZW5BbGxOYW1lcyB1Y252X29wZW5B
bGxOYW1lc18zXzIKKyNkZWZpbmUgdWNudl9vcGVuQ0NTSUQgdWNudl9vcGVuQ0NTSURfM18yCisj
ZGVmaW5lIHVjbnZfb3BlblBhY2thZ2UgdWNudl9vcGVuUGFja2FnZV8zXzIKKyNkZWZpbmUgdWNu
dl9vcGVuU3RhbmRhcmROYW1lcyB1Y252X29wZW5TdGFuZGFyZE5hbWVzXzNfMgorI2RlZmluZSB1
Y252X29wZW5VIHVjbnZfb3BlblVfM18yCisjZGVmaW5lIHVjbnZfcmVzZXQgdWNudl9yZXNldF8z
XzIKKyNkZWZpbmUgdWNudl9yZXNldEZyb21Vbmljb2RlIHVjbnZfcmVzZXRGcm9tVW5pY29kZV8z
XzIKKyNkZWZpbmUgdWNudl9yZXNldFRvVW5pY29kZSB1Y252X3Jlc2V0VG9Vbmljb2RlXzNfMgor
I2RlZmluZSB1Y252X3NhZmVDbG9uZSB1Y252X3NhZmVDbG9uZV8zXzIKKyNkZWZpbmUgdWNudl9z
ZXREZWZhdWx0TmFtZSB1Y252X3NldERlZmF1bHROYW1lXzNfMgorI2RlZmluZSB1Y252X3NldEZh
bGxiYWNrIHVjbnZfc2V0RmFsbGJhY2tfM18yCisjZGVmaW5lIHVjbnZfc2V0RnJvbVVDYWxsQmFj
ayB1Y252X3NldEZyb21VQ2FsbEJhY2tfM18yCisjZGVmaW5lIHVjbnZfc2V0U3Vic3RDaGFycyB1
Y252X3NldFN1YnN0Q2hhcnNfM18yCisjZGVmaW5lIHVjbnZfc2V0VG9VQ2FsbEJhY2sgdWNudl9z
ZXRUb1VDYWxsQmFja18zXzIKKyNkZWZpbmUgdWNudl9zd2FwIHVjbnZfc3dhcF8zXzIKKyNkZWZp
bmUgdWNudl9zd2FwQWxpYXNlcyB1Y252X3N3YXBBbGlhc2VzXzNfMgorI2RlZmluZSB1Y252X3Rv
QWxnb3JpdGhtaWMgdWNudl90b0FsZ29yaXRobWljXzNfMgorI2RlZmluZSB1Y252X3RvVUNoYXJz
IHVjbnZfdG9VQ2hhcnNfM18yCisjZGVmaW5lIHVjbnZfdG9VV3JpdGVDb2RlUG9pbnQgdWNudl90
b1VXcml0ZUNvZGVQb2ludF8zXzIKKyNkZWZpbmUgdWNudl90b1VXcml0ZVVDaGFycyB1Y252X3Rv
VVdyaXRlVUNoYXJzXzNfMgorI2RlZmluZSB1Y252X3RvVW5pY29kZSB1Y252X3RvVW5pY29kZV8z
XzIKKyNkZWZpbmUgdWNudl91bmxvYWQgdWNudl91bmxvYWRfM18yCisjZGVmaW5lIHVjbnZfdW5s
b2FkU2hhcmVkRGF0YUlmUmVhZHkgdWNudl91bmxvYWRTaGFyZWREYXRhSWZSZWFkeV8zXzIKKyNk
ZWZpbmUgdWNudl91c2VzRmFsbGJhY2sgdWNudl91c2VzRmFsbGJhY2tfM18yCisjZGVmaW5lIHVj
b2xfYWxsb2NXZWlnaHRzIHVjb2xfYWxsb2NXZWlnaHRzXzNfMgorI2RlZmluZSB1Y29sX2Fzc2Vt
YmxlVGFpbG9yaW5nVGFibGUgdWNvbF9hc3NlbWJsZVRhaWxvcmluZ1RhYmxlXzNfMgorI2RlZmlu
ZSB1Y29sX2NhbGNTb3J0S2V5IHVjb2xfY2FsY1NvcnRLZXlfM18yCisjZGVmaW5lIHVjb2xfY2Fs
Y1NvcnRLZXlTaW1wbGVUZXJ0aWFyeSB1Y29sX2NhbGNTb3J0S2V5U2ltcGxlVGVydGlhcnlfM18y
CisjZGVmaW5lIHVjb2xfY2xvbmVCaW5hcnkgdWNvbF9jbG9uZUJpbmFyeV8zXzIKKyNkZWZpbmUg
dWNvbF9jbG9uZVJ1bGVEYXRhIHVjb2xfY2xvbmVSdWxlRGF0YV8zXzIKKyNkZWZpbmUgdWNvbF9j
bG9zZSB1Y29sX2Nsb3NlXzNfMgorI2RlZmluZSB1Y29sX2Nsb3NlRWxlbWVudHMgdWNvbF9jbG9z
ZUVsZW1lbnRzXzNfMgorI2RlZmluZSB1Y29sX2NvbGxhdG9yVG9JZGVudGlmaWVyIHVjb2xfY29s
bGF0b3JUb0lkZW50aWZpZXJfM18yCisjZGVmaW5lIHVjb2xfY291bnRBdmFpbGFibGUgdWNvbF9j
b3VudEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWNvbF9jcmVhdGVFbGVtZW50cyB1Y29sX2NyZWF0
ZUVsZW1lbnRzXzNfMgorI2RlZmluZSB1Y29sX2RvQ0UgdWNvbF9kb0NFXzNfMgorI2RlZmluZSB1
Y29sX2VxdWFsIHVjb2xfZXF1YWxfM18yCisjZGVmaW5lIHVjb2xfZXF1YWxzIHVjb2xfZXF1YWxz
XzNfMgorI2RlZmluZSB1Y29sX2dldEF0dHJpYnV0ZSB1Y29sX2dldEF0dHJpYnV0ZV8zXzIKKyNk
ZWZpbmUgdWNvbF9nZXRBdHRyaWJ1dGVPckRlZmF1bHQgdWNvbF9nZXRBdHRyaWJ1dGVPckRlZmF1
bHRfM18yCisjZGVmaW5lIHVjb2xfZ2V0QXZhaWxhYmxlIHVjb2xfZ2V0QXZhaWxhYmxlXzNfMgor
I2RlZmluZSB1Y29sX2dldEJvdW5kIHVjb2xfZ2V0Qm91bmRfM18yCisjZGVmaW5lIHVjb2xfZ2V0
Q0VHZW5lcmF0b3IgdWNvbF9nZXRDRUdlbmVyYXRvcl8zXzIKKyNkZWZpbmUgdWNvbF9nZXRDRVN0
cmVuZ3RoRGlmZmVyZW5jZSB1Y29sX2dldENFU3RyZW5ndGhEaWZmZXJlbmNlXzNfMgorI2RlZmlu
ZSB1Y29sX2dldENvbnRyYWN0aW9ucyB1Y29sX2dldENvbnRyYWN0aW9uc18zXzIKKyNkZWZpbmUg
dWNvbF9nZXREaXNwbGF5TmFtZSB1Y29sX2dldERpc3BsYXlOYW1lXzNfMgorI2RlZmluZSB1Y29s
X2dldEZpcnN0Q0UgdWNvbF9nZXRGaXJzdENFXzNfMgorI2RlZmluZSB1Y29sX2dldEZ1bmN0aW9u
YWxFcXVpdmFsZW50IHVjb2xfZ2V0RnVuY3Rpb25hbEVxdWl2YWxlbnRfM18yCisjZGVmaW5lIHVj
b2xfZ2V0S2V5d29yZFZhbHVlcyB1Y29sX2dldEtleXdvcmRWYWx1ZXNfM18yCisjZGVmaW5lIHVj
b2xfZ2V0S2V5d29yZHMgdWNvbF9nZXRLZXl3b3Jkc18zXzIKKyNkZWZpbmUgdWNvbF9nZXRMb2Nh
bGUgdWNvbF9nZXRMb2NhbGVfM18yCisjZGVmaW5lIHVjb2xfZ2V0TG9jYWxlQnlUeXBlIHVjb2xf
Z2V0TG9jYWxlQnlUeXBlXzNfMgorI2RlZmluZSB1Y29sX2dldE1heEV4cGFuc2lvbiB1Y29sX2dl
dE1heEV4cGFuc2lvbl8zXzIKKyNkZWZpbmUgdWNvbF9nZXROZXh0Q0UgdWNvbF9nZXROZXh0Q0Vf
M18yCisjZGVmaW5lIHVjb2xfZ2V0TmV4dEdlbmVyYXRlZCB1Y29sX2dldE5leHRHZW5lcmF0ZWRf
M18yCisjZGVmaW5lIHVjb2xfZ2V0T2Zmc2V0IHVjb2xfZ2V0T2Zmc2V0XzNfMgorI2RlZmluZSB1
Y29sX2dldFByZXZDRSB1Y29sX2dldFByZXZDRV8zXzIKKyNkZWZpbmUgdWNvbF9nZXRSdWxlcyB1
Y29sX2dldFJ1bGVzXzNfMgorI2RlZmluZSB1Y29sX2dldFJ1bGVzRXggdWNvbF9nZXRSdWxlc0V4
XzNfMgorI2RlZmluZSB1Y29sX2dldFNob3J0RGVmaW5pdGlvblN0cmluZyB1Y29sX2dldFNob3J0
RGVmaW5pdGlvblN0cmluZ18zXzIKKyNkZWZpbmUgdWNvbF9nZXRTaW1wbGVDRUdlbmVyYXRvciB1
Y29sX2dldFNpbXBsZUNFR2VuZXJhdG9yXzNfMgorI2RlZmluZSB1Y29sX2dldFNvcnRLZXkgdWNv
bF9nZXRTb3J0S2V5XzNfMgorI2RlZmluZSB1Y29sX2dldFNvcnRLZXlTaXplIHVjb2xfZ2V0U29y
dEtleVNpemVfM18yCisjZGVmaW5lIHVjb2xfZ2V0U29ydEtleVdpdGhBbGxvY2F0aW9uIHVjb2xf
Z2V0U29ydEtleVdpdGhBbGxvY2F0aW9uXzNfMgorI2RlZmluZSB1Y29sX2dldFN0cmVuZ3RoIHVj
b2xfZ2V0U3RyZW5ndGhfM18yCisjZGVmaW5lIHVjb2xfZ2V0VGFpbG9yZWRTZXQgdWNvbF9nZXRU
YWlsb3JlZFNldF8zXzIKKyNkZWZpbmUgdWNvbF9nZXRVQ0FWZXJzaW9uIHVjb2xfZ2V0VUNBVmVy
c2lvbl8zXzIKKyNkZWZpbmUgdWNvbF9nZXRVbnNhZmVTZXQgdWNvbF9nZXRVbnNhZmVTZXRfM18y
CisjZGVmaW5lIHVjb2xfZ2V0VmFyaWFibGVUb3AgdWNvbF9nZXRWYXJpYWJsZVRvcF8zXzIKKyNk
ZWZpbmUgdWNvbF9nZXRWZXJzaW9uIHVjb2xfZ2V0VmVyc2lvbl8zXzIKKyNkZWZpbmUgdWNvbF9n
cmVhdGVyIHVjb2xfZ3JlYXRlcl8zXzIKKyNkZWZpbmUgdWNvbF9ncmVhdGVyT3JFcXVhbCB1Y29s
X2dyZWF0ZXJPckVxdWFsXzNfMgorI2RlZmluZSB1Y29sX2lkZW50aWZpZXJUb1Nob3J0U3RyaW5n
IHVjb2xfaWRlbnRpZmllclRvU2hvcnRTdHJpbmdfM18yCisjZGVmaW5lIHVjb2xfaW5pdEJ1ZmZl
cnMgdWNvbF9pbml0QnVmZmVyc18zXzIKKyNkZWZpbmUgdWNvbF9pbml0Q29sbGF0b3IgdWNvbF9p
bml0Q29sbGF0b3JfM18yCisjZGVmaW5lIHVjb2xfaW5pdEludmVyc2VVQ0EgdWNvbF9pbml0SW52
ZXJzZVVDQV8zXzIKKyNkZWZpbmUgdWNvbF9pbml0VUNBIHVjb2xfaW5pdFVDQV8zXzIKKyNkZWZp
bmUgdWNvbF9pbnZfZ2V0R2FwUG9zaXRpb25zIHVjb2xfaW52X2dldEdhcFBvc2l0aW9uc18zXzIK
KyNkZWZpbmUgdWNvbF9pbnZfZ2V0TmV4dENFIHVjb2xfaW52X2dldE5leHRDRV8zXzIKKyNkZWZp
bmUgdWNvbF9pbnZfZ2V0UHJldkNFIHVjb2xfaW52X2dldFByZXZDRV8zXzIKKyNkZWZpbmUgdWNv
bF9pc1RhaWxvcmVkIHVjb2xfaXNUYWlsb3JlZF8zXzIKKyNkZWZpbmUgdWNvbF9rZXlIYXNoQ29k
ZSB1Y29sX2tleUhhc2hDb2RlXzNfMgorI2RlZmluZSB1Y29sX21lcmdlU29ydGtleXMgdWNvbF9t
ZXJnZVNvcnRrZXlzXzNfMgorI2RlZmluZSB1Y29sX25leHQgdWNvbF9uZXh0XzNfMgorI2RlZmlu
ZSB1Y29sX25leHRTb3J0S2V5UGFydCB1Y29sX25leHRTb3J0S2V5UGFydF8zXzIKKyNkZWZpbmUg
dWNvbF9uZXh0V2VpZ2h0IHVjb2xfbmV4dFdlaWdodF8zXzIKKyNkZWZpbmUgdWNvbF9ub3JtYWxp
emVTaG9ydERlZmluaXRpb25TdHJpbmcgdWNvbF9ub3JtYWxpemVTaG9ydERlZmluaXRpb25TdHJp
bmdfM18yCisjZGVmaW5lIHVjb2xfb3BlbiB1Y29sX29wZW5fM18yCisjZGVmaW5lIHVjb2xfb3Bl
bkF2YWlsYWJsZUxvY2FsZXMgdWNvbF9vcGVuQXZhaWxhYmxlTG9jYWxlc18zXzIKKyNkZWZpbmUg
dWNvbF9vcGVuQmluYXJ5IHVjb2xfb3BlbkJpbmFyeV8zXzIKKyNkZWZpbmUgdWNvbF9vcGVuRWxl
bWVudHMgdWNvbF9vcGVuRWxlbWVudHNfM18yCisjZGVmaW5lIHVjb2xfb3BlbkZyb21JZGVudGlm
aWVyIHVjb2xfb3BlbkZyb21JZGVudGlmaWVyXzNfMgorI2RlZmluZSB1Y29sX29wZW5Gcm9tU2hv
cnRTdHJpbmcgdWNvbF9vcGVuRnJvbVNob3J0U3RyaW5nXzNfMgorI2RlZmluZSB1Y29sX29wZW5S
dWxlcyB1Y29sX29wZW5SdWxlc18zXzIKKyNkZWZpbmUgdWNvbF9vcGVuX2ludGVybmFsIHVjb2xf
b3Blbl9pbnRlcm5hbF8zXzIKKyNkZWZpbmUgdWNvbF9wcmV2aW91cyB1Y29sX3ByZXZpb3VzXzNf
MgorI2RlZmluZSB1Y29sX3ByaW1hcnlPcmRlciB1Y29sX3ByaW1hcnlPcmRlcl8zXzIKKyNkZWZp
bmUgdWNvbF9wcnZfZ2V0U3BlY2lhbENFIHVjb2xfcHJ2X2dldFNwZWNpYWxDRV8zXzIKKyNkZWZp
bmUgdWNvbF9wcnZfZ2V0U3BlY2lhbFByZXZDRSB1Y29sX3Bydl9nZXRTcGVjaWFsUHJldkNFXzNf
MgorI2RlZmluZSB1Y29sX3Jlc2V0IHVjb2xfcmVzZXRfM18yCisjZGVmaW5lIHVjb2xfcmVzdG9y
ZVZhcmlhYmxlVG9wIHVjb2xfcmVzdG9yZVZhcmlhYmxlVG9wXzNfMgorI2RlZmluZSB1Y29sX3Nh
ZmVDbG9uZSB1Y29sX3NhZmVDbG9uZV8zXzIKKyNkZWZpbmUgdWNvbF9zZWNvbmRhcnlPcmRlciB1
Y29sX3NlY29uZGFyeU9yZGVyXzNfMgorI2RlZmluZSB1Y29sX3NldEF0dHJpYnV0ZSB1Y29sX3Nl
dEF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdWNvbF9zZXRPZmZzZXQgdWNvbF9zZXRPZmZzZXRfM18y
CisjZGVmaW5lIHVjb2xfc2V0T3B0aW9uc0Zyb21IZWFkZXIgdWNvbF9zZXRPcHRpb25zRnJvbUhl
YWRlcl8zXzIKKyNkZWZpbmUgdWNvbF9zZXRSZXFWYWxpZExvY2FsZXMgdWNvbF9zZXRSZXFWYWxp
ZExvY2FsZXNfM18yCisjZGVmaW5lIHVjb2xfc2V0U3RyZW5ndGggdWNvbF9zZXRTdHJlbmd0aF8z
XzIKKyNkZWZpbmUgdWNvbF9zZXRUZXh0IHVjb2xfc2V0VGV4dF8zXzIKKyNkZWZpbmUgdWNvbF9z
ZXRWYXJpYWJsZVRvcCB1Y29sX3NldFZhcmlhYmxlVG9wXzNfMgorI2RlZmluZSB1Y29sX3Nob3J0
U3RyaW5nVG9JZGVudGlmaWVyIHVjb2xfc2hvcnRTdHJpbmdUb0lkZW50aWZpZXJfM18yCisjZGVm
aW5lIHVjb2xfc29ydEtleVRvU3RyaW5nIHVjb2xfc29ydEtleVRvU3RyaW5nXzNfMgorI2RlZmlu
ZSB1Y29sX3N0cmNvbGwgdWNvbF9zdHJjb2xsXzNfMgorI2RlZmluZSB1Y29sX3N0cmNvbGxJdGVy
IHVjb2xfc3RyY29sbEl0ZXJfM18yCisjZGVmaW5lIHVjb2xfc3dhcCB1Y29sX3N3YXBfM18yCisj
ZGVmaW5lIHVjb2xfc3dhcEJpbmFyeSB1Y29sX3N3YXBCaW5hcnlfM18yCisjZGVmaW5lIHVjb2xf
c3dhcEludmVyc2VVQ0EgdWNvbF9zd2FwSW52ZXJzZVVDQV8zXzIKKyNkZWZpbmUgdWNvbF90ZXJ0
aWFyeU9yZGVyIHVjb2xfdGVydGlhcnlPcmRlcl8zXzIKKyNkZWZpbmUgdWNvbF90b2tfYXNzZW1i
bGVUb2tlbkxpc3QgdWNvbF90b2tfYXNzZW1ibGVUb2tlbkxpc3RfM18yCisjZGVmaW5lIHVjb2xf
dG9rX2Nsb3NlVG9rZW5MaXN0IHVjb2xfdG9rX2Nsb3NlVG9rZW5MaXN0XzNfMgorI2RlZmluZSB1
Y29sX3Rva19nZXROZXh0QXJndW1lbnQgdWNvbF90b2tfZ2V0TmV4dEFyZ3VtZW50XzNfMgorI2Rl
ZmluZSB1Y29sX3Rva19pbml0VG9rZW5MaXN0IHVjb2xfdG9rX2luaXRUb2tlbkxpc3RfM18yCisj
ZGVmaW5lIHVjb2xfdG9rX3BhcnNlTmV4dFRva2VuIHVjb2xfdG9rX3BhcnNlTmV4dFRva2VuXzNf
MgorI2RlZmluZSB1Y29sX3VwZGF0ZUludGVybmFsU3RhdGUgdWNvbF91cGRhdGVJbnRlcm5hbFN0
YXRlXzNfMgorI2RlZmluZSB1Y3Vycl9mb3JMb2NhbGUgdWN1cnJfZm9yTG9jYWxlXzNfMgorI2Rl
ZmluZSB1Y3Vycl9nZXREZWZhdWx0RnJhY3Rpb25EaWdpdHMgdWN1cnJfZ2V0RGVmYXVsdEZyYWN0
aW9uRGlnaXRzXzNfMgorI2RlZmluZSB1Y3Vycl9nZXROYW1lIHVjdXJyX2dldE5hbWVfM18yCisj
ZGVmaW5lIHVjdXJyX2dldFJvdW5kaW5nSW5jcmVtZW50IHVjdXJyX2dldFJvdW5kaW5nSW5jcmVt
ZW50XzNfMgorI2RlZmluZSB1Y3Vycl9yZWdpc3RlciB1Y3Vycl9yZWdpc3Rlcl8zXzIKKyNkZWZp
bmUgdWN1cnJfdW5yZWdpc3RlciB1Y3Vycl91bnJlZ2lzdGVyXzNfMgorI2RlZmluZSB1ZGF0X2Fw
cGx5UGF0dGVybiB1ZGF0X2FwcGx5UGF0dGVybl8zXzIKKyNkZWZpbmUgdWRhdF9jbG9uZSB1ZGF0
X2Nsb25lXzNfMgorI2RlZmluZSB1ZGF0X2Nsb3NlIHVkYXRfY2xvc2VfM18yCisjZGVmaW5lIHVk
YXRfY291bnRBdmFpbGFibGUgdWRhdF9jb3VudEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWRhdF9j
b3VudFN5bWJvbHMgdWRhdF9jb3VudFN5bWJvbHNfM18yCisjZGVmaW5lIHVkYXRfZm9ybWF0IHVk
YXRfZm9ybWF0XzNfMgorI2RlZmluZSB1ZGF0X2dldDJEaWdpdFllYXJTdGFydCB1ZGF0X2dldDJE
aWdpdFllYXJTdGFydF8zXzIKKyNkZWZpbmUgdWRhdF9nZXRBdmFpbGFibGUgdWRhdF9nZXRBdmFp
bGFibGVfM18yCisjZGVmaW5lIHVkYXRfZ2V0Q2FsZW5kYXIgdWRhdF9nZXRDYWxlbmRhcl8zXzIK
KyNkZWZpbmUgdWRhdF9nZXRMb2NhbGVCeVR5cGUgdWRhdF9nZXRMb2NhbGVCeVR5cGVfM18yCisj
ZGVmaW5lIHVkYXRfZ2V0TnVtYmVyRm9ybWF0IHVkYXRfZ2V0TnVtYmVyRm9ybWF0XzNfMgorI2Rl
ZmluZSB1ZGF0X2dldFN5bWJvbHMgdWRhdF9nZXRTeW1ib2xzXzNfMgorI2RlZmluZSB1ZGF0X2lz
TGVuaWVudCB1ZGF0X2lzTGVuaWVudF8zXzIKKyNkZWZpbmUgdWRhdF9vcGVuIHVkYXRfb3Blbl8z
XzIKKyNkZWZpbmUgdWRhdF9wYXJzZSB1ZGF0X3BhcnNlXzNfMgorI2RlZmluZSB1ZGF0X3BhcnNl
Q2FsZW5kYXIgdWRhdF9wYXJzZUNhbGVuZGFyXzNfMgorI2RlZmluZSB1ZGF0X3NldDJEaWdpdFll
YXJTdGFydCB1ZGF0X3NldDJEaWdpdFllYXJTdGFydF8zXzIKKyNkZWZpbmUgdWRhdF9zZXRDYWxl
bmRhciB1ZGF0X3NldENhbGVuZGFyXzNfMgorI2RlZmluZSB1ZGF0X3NldExlbmllbnQgdWRhdF9z
ZXRMZW5pZW50XzNfMgorI2RlZmluZSB1ZGF0X3NldE51bWJlckZvcm1hdCB1ZGF0X3NldE51bWJl
ckZvcm1hdF8zXzIKKyNkZWZpbmUgdWRhdF9zZXRTeW1ib2xzIHVkYXRfc2V0U3ltYm9sc18zXzIK
KyNkZWZpbmUgdWRhdF90b1BhdHRlcm4gdWRhdF90b1BhdHRlcm5fM18yCisjZGVmaW5lIHVkYXRh
X2NoZWNrQ29tbW9uRGF0YSB1ZGF0YV9jaGVja0NvbW1vbkRhdGFfM18yCisjZGVmaW5lIHVkYXRh
X2Nsb3NlIHVkYXRhX2Nsb3NlXzNfMgorI2RlZmluZSB1ZGF0YV9jbG9zZVN3YXBwZXIgdWRhdGFf
Y2xvc2VTd2FwcGVyXzNfMgorI2RlZmluZSB1ZGF0YV9nZXRIZWFkZXJTaXplIHVkYXRhX2dldEhl
YWRlclNpemVfM18yCisjZGVmaW5lIHVkYXRhX2dldEluZm8gdWRhdGFfZ2V0SW5mb18zXzIKKyNk
ZWZpbmUgdWRhdGFfZ2V0SW5mb1NpemUgdWRhdGFfZ2V0SW5mb1NpemVfM18yCisjZGVmaW5lIHVk
YXRhX2dldExlbmd0aCB1ZGF0YV9nZXRMZW5ndGhfM18yCisjZGVmaW5lIHVkYXRhX2dldE1lbW9y
eSB1ZGF0YV9nZXRNZW1vcnlfM18yCisjZGVmaW5lIHVkYXRhX2dldFJhd01lbW9yeSB1ZGF0YV9n
ZXRSYXdNZW1vcnlfM18yCisjZGVmaW5lIHVkYXRhX29wZW4gdWRhdGFfb3Blbl8zXzIKKyNkZWZp
bmUgdWRhdGFfb3BlbkNob2ljZSB1ZGF0YV9vcGVuQ2hvaWNlXzNfMgorI2RlZmluZSB1ZGF0YV9v
cGVuU3dhcHBlciB1ZGF0YV9vcGVuU3dhcHBlcl8zXzIKKyNkZWZpbmUgdWRhdGFfb3BlblN3YXBw
ZXJGb3JJbnB1dERhdGEgdWRhdGFfb3BlblN3YXBwZXJGb3JJbnB1dERhdGFfM18yCisjZGVmaW5l
IHVkYXRhX3ByaW50RXJyb3IgdWRhdGFfcHJpbnRFcnJvcl8zXzIKKyNkZWZpbmUgdWRhdGFfcmVh
ZEludDE2IHVkYXRhX3JlYWRJbnQxNl8zXzIKKyNkZWZpbmUgdWRhdGFfcmVhZEludDMyIHVkYXRh
X3JlYWRJbnQzMl8zXzIKKyNkZWZpbmUgdWRhdGFfc2V0QXBwRGF0YSB1ZGF0YV9zZXRBcHBEYXRh
XzNfMgorI2RlZmluZSB1ZGF0YV9zZXRDb21tb25EYXRhIHVkYXRhX3NldENvbW1vbkRhdGFfM18y
CisjZGVmaW5lIHVkYXRhX3N3YXBEYXRhSGVhZGVyIHVkYXRhX3N3YXBEYXRhSGVhZGVyXzNfMgor
I2RlZmluZSB1ZGF0YV9zd2FwSW52U3RyaW5nQmxvY2sgdWRhdGFfc3dhcEludlN0cmluZ0Jsb2Nr
XzNfMgorI2RlZmluZSB1ZW51bV9jbG9zZSB1ZW51bV9jbG9zZV8zXzIKKyNkZWZpbmUgdWVudW1f
Y291bnQgdWVudW1fY291bnRfM18yCisjZGVmaW5lIHVlbnVtX25leHQgdWVudW1fbmV4dF8zXzIK
KyNkZWZpbmUgdWVudW1fbmV4dERlZmF1bHQgdWVudW1fbmV4dERlZmF1bHRfM18yCisjZGVmaW5l
IHVlbnVtX29wZW5DaGFyU3RyaW5nc0VudW1lcmF0aW9uIHVlbnVtX29wZW5DaGFyU3RyaW5nc0Vu
dW1lcmF0aW9uXzNfMgorI2RlZmluZSB1ZW51bV9vcGVuU3RyaW5nRW51bWVyYXRpb24gdWVudW1f
b3BlblN0cmluZ0VudW1lcmF0aW9uXzNfMgorI2RlZmluZSB1ZW51bV9yZXNldCB1ZW51bV9yZXNl
dF8zXzIKKyNkZWZpbmUgdWVudW1fdW5leHQgdWVudW1fdW5leHRfM18yCisjZGVmaW5lIHVlbnVt
X3VuZXh0RGVmYXVsdCB1ZW51bV91bmV4dERlZmF1bHRfM18yCisjZGVmaW5lIHVmaWxlX2Nsb3Nl
X3RyYW5zbGl0IHVmaWxlX2Nsb3NlX3RyYW5zbGl0XzNfMgorI2RlZmluZSB1ZmlsZV9maWxsX3Vj
aGFyX2J1ZmZlciB1ZmlsZV9maWxsX3VjaGFyX2J1ZmZlcl8zXzIKKyNkZWZpbmUgdWZpbGVfZmx1
c2hfdHJhbnNsaXQgdWZpbGVfZmx1c2hfdHJhbnNsaXRfM18yCisjZGVmaW5lIHVmaWxlX2dldGNo
IHVmaWxlX2dldGNoXzNfMgorI2RlZmluZSB1ZmlsZV9nZXRjaDMyIHVmaWxlX2dldGNoMzJfM18y
CisjZGVmaW5lIHVmbXRfNjR0b3UgdWZtdF82NHRvdV8zXzIKKyNkZWZpbmUgdWZtdF9kZWZhdWx0
Q1BUb1VuaWNvZGUgdWZtdF9kZWZhdWx0Q1BUb1VuaWNvZGVfM18yCisjZGVmaW5lIHVmbXRfZGln
aXR2YWx1ZSB1Zm10X2RpZ2l0dmFsdWVfM18yCisjZGVmaW5lIHVmbXRfaXNkaWdpdCB1Zm10X2lz
ZGlnaXRfM18yCisjZGVmaW5lIHVmbXRfcHRvdSB1Zm10X3B0b3VfM18yCisjZGVmaW5lIHVmbXRf
dXRvNjQgdWZtdF91dG82NF8zXzIKKyNkZWZpbmUgdWZtdF91dG9wIHVmbXRfdXRvcF8zXzIKKyNk
ZWZpbmUgdWhhc2hfY2xvc2UgdWhhc2hfY2xvc2VfM18yCisjZGVmaW5lIHVoYXNoX2NvbXBhcmVD
YXNlbGVzc1VuaWNvZGVTdHJpbmcgdWhhc2hfY29tcGFyZUNhc2VsZXNzVW5pY29kZVN0cmluZ18z
XzIKKyNkZWZpbmUgdWhhc2hfY29tcGFyZUNoYXJzIHVoYXNoX2NvbXBhcmVDaGFyc18zXzIKKyNk
ZWZpbmUgdWhhc2hfY29tcGFyZUlDaGFycyB1aGFzaF9jb21wYXJlSUNoYXJzXzNfMgorI2RlZmlu
ZSB1aGFzaF9jb21wYXJlTG9uZyB1aGFzaF9jb21wYXJlTG9uZ18zXzIKKyNkZWZpbmUgdWhhc2hf
Y29tcGFyZVVDaGFycyB1aGFzaF9jb21wYXJlVUNoYXJzXzNfMgorI2RlZmluZSB1aGFzaF9jb21w
YXJlVW5pY29kZVN0cmluZyB1aGFzaF9jb21wYXJlVW5pY29kZVN0cmluZ18zXzIKKyNkZWZpbmUg
dWhhc2hfY291bnQgdWhhc2hfY291bnRfM18yCisjZGVmaW5lIHVoYXNoX2RlbGV0ZUhhc2h0YWJs
ZSB1aGFzaF9kZWxldGVIYXNodGFibGVfM18yCisjZGVmaW5lIHVoYXNoX2RlbGV0ZVVWZWN0b3Ig
dWhhc2hfZGVsZXRlVVZlY3Rvcl8zXzIKKyNkZWZpbmUgdWhhc2hfZGVsZXRlVW5pY29kZVN0cmlu
ZyB1aGFzaF9kZWxldGVVbmljb2RlU3RyaW5nXzNfMgorI2RlZmluZSB1aGFzaF9maW5kIHVoYXNo
X2ZpbmRfM18yCisjZGVmaW5lIHVoYXNoX2ZyZWVCbG9jayB1aGFzaF9mcmVlQmxvY2tfM18yCisj
ZGVmaW5lIHVoYXNoX2dldCB1aGFzaF9nZXRfM18yCisjZGVmaW5lIHVoYXNoX2dldGkgdWhhc2hf
Z2V0aV8zXzIKKyNkZWZpbmUgdWhhc2hfaGFzaENhc2VsZXNzVW5pY29kZVN0cmluZyB1aGFzaF9o
YXNoQ2FzZWxlc3NVbmljb2RlU3RyaW5nXzNfMgorI2RlZmluZSB1aGFzaF9oYXNoQ2hhcnMgdWhh
c2hfaGFzaENoYXJzXzNfMgorI2RlZmluZSB1aGFzaF9oYXNoSUNoYXJzIHVoYXNoX2hhc2hJQ2hh
cnNfM18yCisjZGVmaW5lIHVoYXNoX2hhc2hMb25nIHVoYXNoX2hhc2hMb25nXzNfMgorI2RlZmlu
ZSB1aGFzaF9oYXNoVUNoYXJzIHVoYXNoX2hhc2hVQ2hhcnNfM18yCisjZGVmaW5lIHVoYXNoX2hh
c2hVQ2hhcnNOIHVoYXNoX2hhc2hVQ2hhcnNOXzNfMgorI2RlZmluZSB1aGFzaF9oYXNoVW5pY29k
ZVN0cmluZyB1aGFzaF9oYXNoVW5pY29kZVN0cmluZ18zXzIKKyNkZWZpbmUgdWhhc2hfaWdldCB1
aGFzaF9pZ2V0XzNfMgorI2RlZmluZSB1aGFzaF9pZ2V0aSB1aGFzaF9pZ2V0aV8zXzIKKyNkZWZp
bmUgdWhhc2hfaXB1dCB1aGFzaF9pcHV0XzNfMgorI2RlZmluZSB1aGFzaF9pcHV0aSB1aGFzaF9p
cHV0aV8zXzIKKyNkZWZpbmUgdWhhc2hfaXJlbW92ZSB1aGFzaF9pcmVtb3ZlXzNfMgorI2RlZmlu
ZSB1aGFzaF9pcmVtb3ZlaSB1aGFzaF9pcmVtb3ZlaV8zXzIKKyNkZWZpbmUgdWhhc2hfbmV4dEVs
ZW1lbnQgdWhhc2hfbmV4dEVsZW1lbnRfM18yCisjZGVmaW5lIHVoYXNoX29wZW4gdWhhc2hfb3Bl
bl8zXzIKKyNkZWZpbmUgdWhhc2hfb3BlblNpemUgdWhhc2hfb3BlblNpemVfM18yCisjZGVmaW5l
IHVoYXNoX3B1dCB1aGFzaF9wdXRfM18yCisjZGVmaW5lIHVoYXNoX3B1dGkgdWhhc2hfcHV0aV8z
XzIKKyNkZWZpbmUgdWhhc2hfcmVtb3ZlIHVoYXNoX3JlbW92ZV8zXzIKKyNkZWZpbmUgdWhhc2hf
cmVtb3ZlQWxsIHVoYXNoX3JlbW92ZUFsbF8zXzIKKyNkZWZpbmUgdWhhc2hfcmVtb3ZlRWxlbWVu
dCB1aGFzaF9yZW1vdmVFbGVtZW50XzNfMgorI2RlZmluZSB1aGFzaF9yZW1vdmVpIHVoYXNoX3Jl
bW92ZWlfM18yCisjZGVmaW5lIHVoYXNoX3NldEtleUNvbXBhcmF0b3IgdWhhc2hfc2V0S2V5Q29t
cGFyYXRvcl8zXzIKKyNkZWZpbmUgdWhhc2hfc2V0S2V5RGVsZXRlciB1aGFzaF9zZXRLZXlEZWxl
dGVyXzNfMgorI2RlZmluZSB1aGFzaF9zZXRLZXlIYXNoZXIgdWhhc2hfc2V0S2V5SGFzaGVyXzNf
MgorI2RlZmluZSB1aGFzaF9zZXRSZXNpemVQb2xpY3kgdWhhc2hfc2V0UmVzaXplUG9saWN5XzNf
MgorI2RlZmluZSB1aGFzaF9zZXRWYWx1ZURlbGV0ZXIgdWhhc2hfc2V0VmFsdWVEZWxldGVyXzNf
MgorI2RlZmluZSB1aGFzaF90b2tpIHVoYXNoX3Rva2lfM18yCisjZGVmaW5lIHVoYXNoX3Rva3Ag
dWhhc2hfdG9rcF8zXzIKKyNkZWZpbmUgdWhzdF9hZGRQcm9wZXJ0eVN0YXJ0cyB1aHN0X2FkZFBy
b3BlcnR5U3RhcnRzXzNfMgorI2RlZmluZSB1aWRuYV9JRE5Ub0FTQ0lJIHVpZG5hX0lETlRvQVND
SUlfM18yCisjZGVmaW5lIHVpZG5hX0lETlRvVW5pY29kZSB1aWRuYV9JRE5Ub1VuaWNvZGVfM18y
CisjZGVmaW5lIHVpZG5hX2NvbXBhcmUgdWlkbmFfY29tcGFyZV8zXzIKKyNkZWZpbmUgdWlkbmFf
dG9BU0NJSSB1aWRuYV90b0FTQ0lJXzNfMgorI2RlZmluZSB1aWRuYV90b1VuaWNvZGUgdWlkbmFf
dG9Vbmljb2RlXzNfMgorI2RlZmluZSB1aXRlcl9jdXJyZW50MzIgdWl0ZXJfY3VycmVudDMyXzNf
MgorI2RlZmluZSB1aXRlcl9nZXRTdGF0ZSB1aXRlcl9nZXRTdGF0ZV8zXzIKKyNkZWZpbmUgdWl0
ZXJfbmV4dDMyIHVpdGVyX25leHQzMl8zXzIKKyNkZWZpbmUgdWl0ZXJfcHJldmlvdXMzMiB1aXRl
cl9wcmV2aW91czMyXzNfMgorI2RlZmluZSB1aXRlcl9zZXRDaGFyYWN0ZXJJdGVyYXRvciB1aXRl
cl9zZXRDaGFyYWN0ZXJJdGVyYXRvcl8zXzIKKyNkZWZpbmUgdWl0ZXJfc2V0UmVwbGFjZWFibGUg
dWl0ZXJfc2V0UmVwbGFjZWFibGVfM18yCisjZGVmaW5lIHVpdGVyX3NldFN0YXRlIHVpdGVyX3Nl
dFN0YXRlXzNfMgorI2RlZmluZSB1aXRlcl9zZXRTdHJpbmcgdWl0ZXJfc2V0U3RyaW5nXzNfMgor
I2RlZmluZSB1aXRlcl9zZXRVVEYxNkJFIHVpdGVyX3NldFVURjE2QkVfM18yCisjZGVmaW5lIHVp
dGVyX3NldFVURjggdWl0ZXJfc2V0VVRGOF8zXzIKKyNkZWZpbmUgdWxvY19hY2NlcHRMYW5ndWFn
ZSB1bG9jX2FjY2VwdExhbmd1YWdlXzNfMgorI2RlZmluZSB1bG9jX2FjY2VwdExhbmd1YWdlRnJv
bUhUVFAgdWxvY19hY2NlcHRMYW5ndWFnZUZyb21IVFRQXzNfMgorI2RlZmluZSB1bG9jX2Nhbm9u
aWNhbGl6ZSB1bG9jX2Nhbm9uaWNhbGl6ZV8zXzIKKyNkZWZpbmUgdWxvY19jb3VudEF2YWlsYWJs
ZSB1bG9jX2NvdW50QXZhaWxhYmxlXzNfMgorI2RlZmluZSB1bG9jX2dldEF2YWlsYWJsZSB1bG9j
X2dldEF2YWlsYWJsZV8zXzIKKyNkZWZpbmUgdWxvY19nZXRCYXNlTmFtZSB1bG9jX2dldEJhc2VO
YW1lXzNfMgorI2RlZmluZSB1bG9jX2dldENvdW50cnkgdWxvY19nZXRDb3VudHJ5XzNfMgorI2Rl
ZmluZSB1bG9jX2dldERlZmF1bHQgdWxvY19nZXREZWZhdWx0XzNfMgorI2RlZmluZSB1bG9jX2dl
dERpc3BsYXlDb3VudHJ5IHVsb2NfZ2V0RGlzcGxheUNvdW50cnlfM18yCisjZGVmaW5lIHVsb2Nf
Z2V0RGlzcGxheUtleXdvcmQgdWxvY19nZXREaXNwbGF5S2V5d29yZF8zXzIKKyNkZWZpbmUgdWxv
Y19nZXREaXNwbGF5S2V5d29yZFZhbHVlIHVsb2NfZ2V0RGlzcGxheUtleXdvcmRWYWx1ZV8zXzIK
KyNkZWZpbmUgdWxvY19nZXREaXNwbGF5TGFuZ3VhZ2UgdWxvY19nZXREaXNwbGF5TGFuZ3VhZ2Vf
M18yCisjZGVmaW5lIHVsb2NfZ2V0RGlzcGxheU5hbWUgdWxvY19nZXREaXNwbGF5TmFtZV8zXzIK
KyNkZWZpbmUgdWxvY19nZXREaXNwbGF5U2NyaXB0IHVsb2NfZ2V0RGlzcGxheVNjcmlwdF8zXzIK
KyNkZWZpbmUgdWxvY19nZXREaXNwbGF5VmFyaWFudCB1bG9jX2dldERpc3BsYXlWYXJpYW50XzNf
MgorI2RlZmluZSB1bG9jX2dldElTTzNDb3VudHJ5IHVsb2NfZ2V0SVNPM0NvdW50cnlfM18yCisj
ZGVmaW5lIHVsb2NfZ2V0SVNPM0xhbmd1YWdlIHVsb2NfZ2V0SVNPM0xhbmd1YWdlXzNfMgorI2Rl
ZmluZSB1bG9jX2dldElTT0NvdW50cmllcyB1bG9jX2dldElTT0NvdW50cmllc18zXzIKKyNkZWZp
bmUgdWxvY19nZXRJU09MYW5ndWFnZXMgdWxvY19nZXRJU09MYW5ndWFnZXNfM18yCisjZGVmaW5l
IHVsb2NfZ2V0S2V5d29yZFZhbHVlIHVsb2NfZ2V0S2V5d29yZFZhbHVlXzNfMgorI2RlZmluZSB1
bG9jX2dldExDSUQgdWxvY19nZXRMQ0lEXzNfMgorI2RlZmluZSB1bG9jX2dldExhbmd1YWdlIHVs
b2NfZ2V0TGFuZ3VhZ2VfM18yCisjZGVmaW5lIHVsb2NfZ2V0TmFtZSB1bG9jX2dldE5hbWVfM18y
CisjZGVmaW5lIHVsb2NfZ2V0UGFyZW50IHVsb2NfZ2V0UGFyZW50XzNfMgorI2RlZmluZSB1bG9j
X2dldFNjcmlwdCB1bG9jX2dldFNjcmlwdF8zXzIKKyNkZWZpbmUgdWxvY19nZXRWYXJpYW50IHVs
b2NfZ2V0VmFyaWFudF8zXzIKKyNkZWZpbmUgdWxvY19vcGVuS2V5d29yZExpc3QgdWxvY19vcGVu
S2V5d29yZExpc3RfM18yCisjZGVmaW5lIHVsb2Nfb3BlbktleXdvcmRzIHVsb2Nfb3BlbktleXdv
cmRzXzNfMgorI2RlZmluZSB1bG9jX3NldERlZmF1bHQgdWxvY19zZXREZWZhdWx0XzNfMgorI2Rl
ZmluZSB1bG9jX3NldEtleXdvcmRWYWx1ZSB1bG9jX3NldEtleXdvcmRWYWx1ZV8zXzIKKyNkZWZp
bmUgdWxvY2RhdGFfZ2V0RXhlbXBsYXJTZXQgdWxvY2RhdGFfZ2V0RXhlbXBsYXJTZXRfM18yCisj
ZGVmaW5lIHVsb2NkYXRhX2dldE1lYXN1cmVtZW50U3lzdGVtIHVsb2NkYXRhX2dldE1lYXN1cmVt
ZW50U3lzdGVtXzNfMgorI2RlZmluZSB1bG9jZGF0YV9nZXRQYXBlclNpemUgdWxvY2RhdGFfZ2V0
UGFwZXJTaXplXzNfMgorI2RlZmluZSB1bXNnX2FwcGx5UGF0dGVybiB1bXNnX2FwcGx5UGF0dGVy
bl8zXzIKKyNkZWZpbmUgdW1zZ19jbG9uZSB1bXNnX2Nsb25lXzNfMgorI2RlZmluZSB1bXNnX2Ns
b3NlIHVtc2dfY2xvc2VfM18yCisjZGVmaW5lIHVtc2dfZm9ybWF0IHVtc2dfZm9ybWF0XzNfMgor
I2RlZmluZSB1bXNnX2dldExvY2FsZSB1bXNnX2dldExvY2FsZV8zXzIKKyNkZWZpbmUgdW1zZ19n
ZXRMb2NhbGVCeVR5cGUgdW1zZ19nZXRMb2NhbGVCeVR5cGVfM18yCisjZGVmaW5lIHVtc2dfb3Bl
biB1bXNnX29wZW5fM18yCisjZGVmaW5lIHVtc2dfcGFyc2UgdW1zZ19wYXJzZV8zXzIKKyNkZWZp
bmUgdW1zZ19zZXRMb2NhbGUgdW1zZ19zZXRMb2NhbGVfM18yCisjZGVmaW5lIHVtc2dfdG9QYXR0
ZXJuIHVtc2dfdG9QYXR0ZXJuXzNfMgorI2RlZmluZSB1bXNnX3Zmb3JtYXQgdW1zZ192Zm9ybWF0
XzNfMgorI2RlZmluZSB1bXNnX3ZwYXJzZSB1bXNnX3ZwYXJzZV8zXzIKKyNkZWZpbmUgdW10eF9h
dG9taWNfZGVjIHVtdHhfYXRvbWljX2RlY18zXzIKKyNkZWZpbmUgdW10eF9hdG9taWNfaW5jIHVt
dHhfYXRvbWljX2luY18zXzIKKyNkZWZpbmUgdW10eF9jbGVhbnVwIHVtdHhfY2xlYW51cF8zXzIK
KyNkZWZpbmUgdW10eF9kZXN0cm95IHVtdHhfZGVzdHJveV8zXzIKKyNkZWZpbmUgdW10eF9pbml0
IHVtdHhfaW5pdF8zXzIKKyNkZWZpbmUgdW10eF9sb2NrIHVtdHhfbG9ja18zXzIKKyNkZWZpbmUg
dW10eF91bmxvY2sgdW10eF91bmxvY2tfM18yCisjZGVmaW5lIHVub3JtX2FkZFByb3BlcnR5U3Rh
cnRzIHVub3JtX2FkZFByb3BlcnR5U3RhcnRzXzNfMgorI2RlZmluZSB1bm9ybV9jbG9zZUl0ZXIg
dW5vcm1fY2xvc2VJdGVyXzNfMgorI2RlZmluZSB1bm9ybV9jb21wYXJlIHVub3JtX2NvbXBhcmVf
M18yCisjZGVmaW5lIHVub3JtX2NvbXBvc2UgdW5vcm1fY29tcG9zZV8zXzIKKyNkZWZpbmUgdW5v
cm1fY29uY2F0ZW5hdGUgdW5vcm1fY29uY2F0ZW5hdGVfM18yCisjZGVmaW5lIHVub3JtX2RlY29t
cG9zZSB1bm9ybV9kZWNvbXBvc2VfM18yCisjZGVmaW5lIHVub3JtX2dldENhbm9uU3RhcnRTZXQg
dW5vcm1fZ2V0Q2Fub25TdGFydFNldF8zXzIKKyNkZWZpbmUgdW5vcm1fZ2V0Q2Fub25pY2FsRGVj
b21wb3NpdGlvbiB1bm9ybV9nZXRDYW5vbmljYWxEZWNvbXBvc2l0aW9uXzNfMgorI2RlZmluZSB1
bm9ybV9nZXREZWNvbXBvc2l0aW9uIHVub3JtX2dldERlY29tcG9zaXRpb25fM18yCisjZGVmaW5l
IHVub3JtX2dldEZDRDE2RnJvbUNvZGVQb2ludCB1bm9ybV9nZXRGQ0QxNkZyb21Db2RlUG9pbnRf
M18yCisjZGVmaW5lIHVub3JtX2dldEZDRFRyaWUgdW5vcm1fZ2V0RkNEVHJpZV8zXzIKKyNkZWZp
bmUgdW5vcm1fZ2V0TlggdW5vcm1fZ2V0TlhfM18yCisjZGVmaW5lIHVub3JtX2dldFF1aWNrQ2hl
Y2sgdW5vcm1fZ2V0UXVpY2tDaGVja18zXzIKKyNkZWZpbmUgdW5vcm1fZ2V0VW5pY29kZVZlcnNp
b24gdW5vcm1fZ2V0VW5pY29kZVZlcnNpb25fM18yCisjZGVmaW5lIHVub3JtX2hhdmVEYXRhIHVu
b3JtX2hhdmVEYXRhXzNfMgorI2RlZmluZSB1bm9ybV9pbnRlcm5hbElzRnVsbENvbXBvc2l0aW9u
RXhjbHVzaW9uIHVub3JtX2ludGVybmFsSXNGdWxsQ29tcG9zaXRpb25FeGNsdXNpb25fM18yCisj
ZGVmaW5lIHVub3JtX2ludGVybmFsTm9ybWFsaXplIHVub3JtX2ludGVybmFsTm9ybWFsaXplXzNf
MgorI2RlZmluZSB1bm9ybV9pbnRlcm5hbE5vcm1hbGl6ZVdpdGhOWCB1bm9ybV9pbnRlcm5hbE5v
cm1hbGl6ZVdpdGhOWF8zXzIKKyNkZWZpbmUgdW5vcm1faW50ZXJuYWxRdWlja0NoZWNrIHVub3Jt
X2ludGVybmFsUXVpY2tDaGVja18zXzIKKyNkZWZpbmUgdW5vcm1faXNDYW5vblNhZmVTdGFydCB1
bm9ybV9pc0Nhbm9uU2FmZVN0YXJ0XzNfMgorI2RlZmluZSB1bm9ybV9pc05GU2tpcHBhYmxlIHVu
b3JtX2lzTkZTa2lwcGFibGVfM18yCisjZGVmaW5lIHVub3JtX2lzTm9ybWFsaXplZCB1bm9ybV9p
c05vcm1hbGl6ZWRfM18yCisjZGVmaW5lIHVub3JtX2lzTm9ybWFsaXplZFdpdGhPcHRpb25zIHVu
b3JtX2lzTm9ybWFsaXplZFdpdGhPcHRpb25zXzNfMgorI2RlZmluZSB1bm9ybV9uZXh0IHVub3Jt
X25leHRfM18yCisjZGVmaW5lIHVub3JtX25vcm1hbGl6ZSB1bm9ybV9ub3JtYWxpemVfM18yCisj
ZGVmaW5lIHVub3JtX29wZW5JdGVyIHVub3JtX29wZW5JdGVyXzNfMgorI2RlZmluZSB1bm9ybV9w
cmV2aW91cyB1bm9ybV9wcmV2aW91c18zXzIKKyNkZWZpbmUgdW5vcm1fcXVpY2tDaGVjayB1bm9y
bV9xdWlja0NoZWNrXzNfMgorI2RlZmluZSB1bm9ybV9xdWlja0NoZWNrV2l0aE9wdGlvbnMgdW5v
cm1fcXVpY2tDaGVja1dpdGhPcHRpb25zXzNfMgorI2RlZmluZSB1bm9ybV9zZXRJdGVyIHVub3Jt
X3NldEl0ZXJfM18yCisjZGVmaW5lIHVub3JtX3N3YXAgdW5vcm1fc3dhcF8zXzIKKyNkZWZpbmUg
dW51bV9hcHBseVBhdHRlcm4gdW51bV9hcHBseVBhdHRlcm5fM18yCisjZGVmaW5lIHVudW1fY2xv
bmUgdW51bV9jbG9uZV8zXzIKKyNkZWZpbmUgdW51bV9jbG9zZSB1bnVtX2Nsb3NlXzNfMgorI2Rl
ZmluZSB1bnVtX2NvdW50QXZhaWxhYmxlIHVudW1fY291bnRBdmFpbGFibGVfM18yCisjZGVmaW5l
IHVudW1fZm9ybWF0IHVudW1fZm9ybWF0XzNfMgorI2RlZmluZSB1bnVtX2Zvcm1hdERvdWJsZSB1
bnVtX2Zvcm1hdERvdWJsZV8zXzIKKyNkZWZpbmUgdW51bV9mb3JtYXREb3VibGVDdXJyZW5jeSB1
bnVtX2Zvcm1hdERvdWJsZUN1cnJlbmN5XzNfMgorI2RlZmluZSB1bnVtX2Zvcm1hdEludDY0IHVu
dW1fZm9ybWF0SW50NjRfM18yCisjZGVmaW5lIHVudW1fZ2V0QXR0cmlidXRlIHVudW1fZ2V0QXR0
cmlidXRlXzNfMgorI2RlZmluZSB1bnVtX2dldEF2YWlsYWJsZSB1bnVtX2dldEF2YWlsYWJsZV8z
XzIKKyNkZWZpbmUgdW51bV9nZXREb3VibGVBdHRyaWJ1dGUgdW51bV9nZXREb3VibGVBdHRyaWJ1
dGVfM18yCisjZGVmaW5lIHVudW1fZ2V0TG9jYWxlQnlUeXBlIHVudW1fZ2V0TG9jYWxlQnlUeXBl
XzNfMgorI2RlZmluZSB1bnVtX2dldFN5bWJvbCB1bnVtX2dldFN5bWJvbF8zXzIKKyNkZWZpbmUg
dW51bV9nZXRUZXh0QXR0cmlidXRlIHVudW1fZ2V0VGV4dEF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUg
dW51bV9vcGVuIHVudW1fb3Blbl8zXzIKKyNkZWZpbmUgdW51bV9wYXJzZSB1bnVtX3BhcnNlXzNf
MgorI2RlZmluZSB1bnVtX3BhcnNlRG91YmxlIHVudW1fcGFyc2VEb3VibGVfM18yCisjZGVmaW5l
IHVudW1fcGFyc2VEb3VibGVDdXJyZW5jeSB1bnVtX3BhcnNlRG91YmxlQ3VycmVuY3lfM18yCisj
ZGVmaW5lIHVudW1fcGFyc2VJbnQ2NCB1bnVtX3BhcnNlSW50NjRfM18yCisjZGVmaW5lIHVudW1f
c2V0QXR0cmlidXRlIHVudW1fc2V0QXR0cmlidXRlXzNfMgorI2RlZmluZSB1bnVtX3NldERvdWJs
ZUF0dHJpYnV0ZSB1bnVtX3NldERvdWJsZUF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdW51bV9zZXRT
eW1ib2wgdW51bV9zZXRTeW1ib2xfM18yCisjZGVmaW5lIHVudW1fc2V0VGV4dEF0dHJpYnV0ZSB1
bnVtX3NldFRleHRBdHRyaWJ1dGVfM18yCisjZGVmaW5lIHVudW1fdG9QYXR0ZXJuIHVudW1fdG9Q
YXR0ZXJuXzNfMgorI2RlZmluZSB1cG5hbWVfc3dhcCB1cG5hbWVfc3dhcF8zXzIKKyNkZWZpbmUg
dXByb3BzX2dldFNvdXJjZSB1cHJvcHNfZ2V0U291cmNlXzNfMgorI2RlZmluZSB1cHJvcHNfc3dh
cCB1cHJvcHNfc3dhcF8zXzIKKyNkZWZpbmUgdXBydl9hc2NpaUZyb21FYmNkaWMgdXBydl9hc2Np
aUZyb21FYmNkaWNfM18yCisjZGVmaW5lIHVwcnZfYXNjaWl0b2xvd2VyIHVwcnZfYXNjaWl0b2xv
d2VyXzNfMgorI2RlZmluZSB1cHJ2X2NlaWwgdXBydl9jZWlsXzNfMgorI2RlZmluZSB1cHJ2X2Nu
dHRhYl9hZGRDb250cmFjdGlvbiB1cHJ2X2NudHRhYl9hZGRDb250cmFjdGlvbl8zXzIKKyNkZWZp
bmUgdXBydl9jbnR0YWJfY2hhbmdlQ29udHJhY3Rpb24gdXBydl9jbnR0YWJfY2hhbmdlQ29udHJh
Y3Rpb25fM18yCisjZGVmaW5lIHVwcnZfY250dGFiX2NoYW5nZUxhc3RDRSB1cHJ2X2NudHRhYl9j
aGFuZ2VMYXN0Q0VfM18yCisjZGVmaW5lIHVwcnZfY250dGFiX2Nsb25lIHVwcnZfY250dGFiX2Ns
b25lXzNfMgorI2RlZmluZSB1cHJ2X2NudHRhYl9jbG9zZSB1cHJ2X2NudHRhYl9jbG9zZV8zXzIK
KyNkZWZpbmUgdXBydl9jbnR0YWJfY29uc3RydWN0VGFibGUgdXBydl9jbnR0YWJfY29uc3RydWN0
VGFibGVfM18yCisjZGVmaW5lIHVwcnZfY250dGFiX2ZpbmRDRSB1cHJ2X2NudHRhYl9maW5kQ0Vf
M18yCisjZGVmaW5lIHVwcnZfY250dGFiX2ZpbmRDUCB1cHJ2X2NudHRhYl9maW5kQ1BfM18yCisj
ZGVmaW5lIHVwcnZfY250dGFiX2dldENFIHVwcnZfY250dGFiX2dldENFXzNfMgorI2RlZmluZSB1
cHJ2X2NudHRhYl9pbnNlcnRDb250cmFjdGlvbiB1cHJ2X2NudHRhYl9pbnNlcnRDb250cmFjdGlv
bl8zXzIKKyNkZWZpbmUgdXBydl9jbnR0YWJfaXNUYWlsb3JlZCB1cHJ2X2NudHRhYl9pc1RhaWxv
cmVkXzNfMgorI2RlZmluZSB1cHJ2X2NudHRhYl9vcGVuIHVwcnZfY250dGFiX29wZW5fM18yCisj
ZGVmaW5lIHVwcnZfY250dGFiX3NldENvbnRyYWN0aW9uIHVwcnZfY250dGFiX3NldENvbnRyYWN0
aW9uXzNfMgorI2RlZmluZSB1cHJ2X2NvbXBhcmVBU0NJSVByb3BlcnR5TmFtZXMgdXBydl9jb21w
YXJlQVNDSUlQcm9wZXJ0eU5hbWVzXzNfMgorI2RlZmluZSB1cHJ2X2NvbXBhcmVFQkNESUNQcm9w
ZXJ0eU5hbWVzIHVwcnZfY29tcGFyZUVCQ0RJQ1Byb3BlcnR5TmFtZXNfM18yCisjZGVmaW5lIHVw
cnZfY29tcGFyZUludkFzY2lpIHVwcnZfY29tcGFyZUludkFzY2lpXzNfMgorI2RlZmluZSB1cHJ2
X2NvbXBhcmVJbnZFYmNkaWMgdXBydl9jb21wYXJlSW52RWJjZGljXzNfMgorI2RlZmluZSB1cHJ2
X2NvbnZlcnRUb0xDSUQgdXBydl9jb252ZXJ0VG9MQ0lEXzNfMgorI2RlZmluZSB1cHJ2X2NvbnZl
cnRUb1Bvc2l4IHVwcnZfY29udmVydFRvUG9zaXhfM18yCisjZGVmaW5lIHVwcnZfY29weUFzY2lp
IHVwcnZfY29weUFzY2lpXzNfMgorI2RlZmluZSB1cHJ2X2NvcHlFYmNkaWMgdXBydl9jb3B5RWJj
ZGljXzNfMgorI2RlZmluZSB1cHJ2X2R0b3N0ciB1cHJ2X2R0b3N0cl8zXzIKKyNkZWZpbmUgdXBy
dl9lYmNkaWNGcm9tQXNjaWkgdXBydl9lYmNkaWNGcm9tQXNjaWlfM18yCisjZGVmaW5lIHVwcnZf
ZWJjZGljdG9sb3dlciB1cHJ2X2ViY2RpY3RvbG93ZXJfM18yCisjZGVmaW5lIHVwcnZfZmFicyB1
cHJ2X2ZhYnNfM18yCisjZGVmaW5lIHVwcnZfZmxvb3IgdXBydl9mbG9vcl8zXzIKKyNkZWZpbmUg
dXBydl9mbWF4IHVwcnZfZm1heF8zXzIKKyNkZWZpbmUgdXBydl9mbWluIHVwcnZfZm1pbl8zXzIK
KyNkZWZpbmUgdXBydl9mbW9kIHVwcnZfZm1vZF8zXzIKKyNkZWZpbmUgdXBydl9mcmVlIHVwcnZf
ZnJlZV8zXzIKKyNkZWZpbmUgdXBydl9nZXRDaGFyTmFtZUNoYXJhY3RlcnMgdXBydl9nZXRDaGFy
TmFtZUNoYXJhY3RlcnNfM18yCisjZGVmaW5lIHVwcnZfZ2V0RGVmYXVsdENvZGVwYWdlIHVwcnZf
Z2V0RGVmYXVsdENvZGVwYWdlXzNfMgorI2RlZmluZSB1cHJ2X2dldERlZmF1bHRMb2NhbGVJRCB1
cHJ2X2dldERlZmF1bHRMb2NhbGVJRF8zXzIKKyNkZWZpbmUgdXBydl9nZXRJbmZpbml0eSB1cHJ2
X2dldEluZmluaXR5XzNfMgorI2RlZmluZSB1cHJ2X2dldE1heENoYXJOYW1lTGVuZ3RoIHVwcnZf
Z2V0TWF4Q2hhck5hbWVMZW5ndGhfM18yCisjZGVmaW5lIHVwcnZfZ2V0TWF4VmFsdWVzIHVwcnZf
Z2V0TWF4VmFsdWVzXzNfMgorI2RlZmluZSB1cHJ2X2dldE5hTiB1cHJ2X2dldE5hTl8zXzIKKyNk
ZWZpbmUgdXBydl9nZXRTdGF0aWNDdXJyZW5jeU5hbWUgdXBydl9nZXRTdGF0aWNDdXJyZW5jeU5h
bWVfM18yCisjZGVmaW5lIHVwcnZfZ2V0VVRDdGltZSB1cHJ2X2dldFVUQ3RpbWVfM18yCisjZGVm
aW5lIHVwcnZfaGF2ZVByb3BlcnRpZXMgdXBydl9oYXZlUHJvcGVydGllc18zXzIKKyNkZWZpbmUg
dXBydl9pbml0X2NvbGxJdGVyYXRlIHVwcnZfaW5pdF9jb2xsSXRlcmF0ZV8zXzIKKyNkZWZpbmUg
dXBydl9pbnQzMkNvbXBhcmF0b3IgdXBydl9pbnQzMkNvbXBhcmF0b3JfM18yCisjZGVmaW5lIHVw
cnZfaXNJbmZpbml0ZSB1cHJ2X2lzSW5maW5pdGVfM18yCisjZGVmaW5lIHVwcnZfaXNJbnZhcmlh
bnRTdHJpbmcgdXBydl9pc0ludmFyaWFudFN0cmluZ18zXzIKKyNkZWZpbmUgdXBydl9pc0ludmFy
aWFudFVTdHJpbmcgdXBydl9pc0ludmFyaWFudFVTdHJpbmdfM18yCisjZGVmaW5lIHVwcnZfaXNO
YU4gdXBydl9pc05hTl8zXzIKKyNkZWZpbmUgdXBydl9pc05lZ2F0aXZlSW5maW5pdHkgdXBydl9p
c05lZ2F0aXZlSW5maW5pdHlfM18yCisjZGVmaW5lIHVwcnZfaXNQb3NpdGl2ZUluZmluaXR5IHVw
cnZfaXNQb3NpdGl2ZUluZmluaXR5XzNfMgorI2RlZmluZSB1cHJ2X2lzUnVsZVdoaXRlU3BhY2Ug
dXBydl9pc1J1bGVXaGl0ZVNwYWNlXzNfMgorI2RlZmluZSB1cHJ2X2l0b3UgdXBydl9pdG91XzNf
MgorI2RlZmluZSB1cHJ2X2xvYWRQcm9wc0RhdGEgdXBydl9sb2FkUHJvcHNEYXRhXzNfMgorI2Rl
ZmluZSB1cHJ2X2xvZyB1cHJ2X2xvZ18zXzIKKyNkZWZpbmUgdXBydl9sb2cxMCB1cHJ2X2xvZzEw
XzNfMgorI2RlZmluZSB1cHJ2X21hbGxvYyB1cHJ2X21hbGxvY18zXzIKKyNkZWZpbmUgdXBydl9t
YXBGaWxlIHVwcnZfbWFwRmlsZV8zXzIKKyNkZWZpbmUgdXBydl9tYXggdXBydl9tYXhfM18yCisj
ZGVmaW5lIHVwcnZfbWF4TWFudGlzc2EgdXBydl9tYXhNYW50aXNzYV8zXzIKKyNkZWZpbmUgdXBy
dl9taW4gdXBydl9taW5fM18yCisjZGVmaW5lIHVwcnZfbW9kZiB1cHJ2X21vZGZfM18yCisjZGVm
aW5lIHVwcnZfb3BlblJ1bGVXaGl0ZVNwYWNlU2V0IHVwcnZfb3BlblJ1bGVXaGl0ZVNwYWNlU2V0
XzNfMgorI2RlZmluZSB1cHJ2X3BhdGhJc0Fic29sdXRlIHVwcnZfcGF0aElzQWJzb2x1dGVfM18y
CisjZGVmaW5lIHVwcnZfcG93IHVwcnZfcG93XzNfMgorI2RlZmluZSB1cHJ2X3BvdzEwIHVwcnZf
cG93MTBfM18yCisjZGVmaW5lIHVwcnZfcmVhbGxvYyB1cHJ2X3JlYWxsb2NfM18yCisjZGVmaW5l
IHVwcnZfcm91bmQgdXBydl9yb3VuZF8zXzIKKyNkZWZpbmUgdXBydl9zb3J0QXJyYXkgdXBydl9z
b3J0QXJyYXlfM18yCisjZGVmaW5lIHVwcnZfc3RyQ29tcGFyZSB1cHJ2X3N0ckNvbXBhcmVfM18y
CisjZGVmaW5lIHVwcnZfc3RyZHVwIHVwcnZfc3RyZHVwXzNfMgorI2RlZmluZSB1cHJ2X3N0cm5k
dXAgdXBydl9zdHJuZHVwXzNfMgorI2RlZmluZSB1cHJ2X3N5bnRheEVycm9yIHVwcnZfc3ludGF4
RXJyb3JfM18yCisjZGVmaW5lIHVwcnZfdGltZXpvbmUgdXBydl90aW1lem9uZV8zXzIKKyNkZWZp
bmUgdXBydl90b3VwcGVyIHVwcnZfdG91cHBlcl8zXzIKKyNkZWZpbmUgdXBydl90cnVuYyB1cHJ2
X3RydW5jXzNfMgorI2RlZmluZSB1cHJ2X3R6bmFtZSB1cHJ2X3R6bmFtZV8zXzIKKyNkZWZpbmUg
dXBydl90enNldCB1cHJ2X3R6c2V0XzNfMgorI2RlZmluZSB1cHJ2X3VjYV9hZGRBbkVsZW1lbnQg
dXBydl91Y2FfYWRkQW5FbGVtZW50XzNfMgorI2RlZmluZSB1cHJ2X3VjYV9hc3NlbWJsZVRhYmxl
IHVwcnZfdWNhX2Fzc2VtYmxlVGFibGVfM18yCisjZGVmaW5lIHVwcnZfdWNhX2Nhbm9uaWNhbENs
b3N1cmUgdXBydl91Y2FfY2Fub25pY2FsQ2xvc3VyZV8zXzIKKyNkZWZpbmUgdXBydl91Y2FfY2xv
bmVUZW1wVGFibGUgdXBydl91Y2FfY2xvbmVUZW1wVGFibGVfM18yCisjZGVmaW5lIHVwcnZfdWNh
X2Nsb3NlVGVtcFRhYmxlIHVwcnZfdWNhX2Nsb3NlVGVtcFRhYmxlXzNfMgorI2RlZmluZSB1cHJ2
X3VjYV9nZXRDb2RlUG9pbnRGcm9tUmF3IHVwcnZfdWNhX2dldENvZGVQb2ludEZyb21SYXdfM18y
CisjZGVmaW5lIHVwcnZfdWNhX2dldEltcGxpY2l0RnJvbVJhdyB1cHJ2X3VjYV9nZXRJbXBsaWNp
dEZyb21SYXdfM18yCisjZGVmaW5lIHVwcnZfdWNhX2dldEltcGxpY2l0UHJpbWFyeSB1cHJ2X3Vj
YV9nZXRJbXBsaWNpdFByaW1hcnlfM18yCisjZGVmaW5lIHVwcnZfdWNhX2dldFJhd0Zyb21Db2Rl
UG9pbnQgdXBydl91Y2FfZ2V0UmF3RnJvbUNvZGVQb2ludF8zXzIKKyNkZWZpbmUgdXBydl91Y2Ff
Z2V0UmF3RnJvbUltcGxpY2l0IHVwcnZfdWNhX2dldFJhd0Zyb21JbXBsaWNpdF8zXzIKKyNkZWZp
bmUgdXBydl91Y2FfaW5pdEltcGxpY2l0Q29uc3RhbnRzIHVwcnZfdWNhX2luaXRJbXBsaWNpdENv
bnN0YW50c18zXzIKKyNkZWZpbmUgdXBydl91Y2FfaW5pdFRlbXBUYWJsZSB1cHJ2X3VjYV9pbml0
VGVtcFRhYmxlXzNfMgorI2RlZmluZSB1cHJ2X3VpbnQxNkNvbXBhcmF0b3IgdXBydl91aW50MTZD
b21wYXJhdG9yXzNfMgorI2RlZmluZSB1cHJ2X3VpbnQzMkNvbXBhcmF0b3IgdXBydl91aW50MzJD
b21wYXJhdG9yXzNfMgorI2RlZmluZSB1cHJ2X3VubWFwRmlsZSB1cHJ2X3VubWFwRmlsZV8zXzIK
KyNkZWZpbmUgdXJlZ2V4X2FwcGVuZFJlcGxhY2VtZW50IHVyZWdleF9hcHBlbmRSZXBsYWNlbWVu
dF8zXzIKKyNkZWZpbmUgdXJlZ2V4X2FwcGVuZFRhaWwgdXJlZ2V4X2FwcGVuZFRhaWxfM18yCisj
ZGVmaW5lIHVyZWdleF9jbG9uZSB1cmVnZXhfY2xvbmVfM18yCisjZGVmaW5lIHVyZWdleF9jbG9z
ZSB1cmVnZXhfY2xvc2VfM18yCisjZGVmaW5lIHVyZWdleF9lbmQgdXJlZ2V4X2VuZF8zXzIKKyNk
ZWZpbmUgdXJlZ2V4X2ZpbmQgdXJlZ2V4X2ZpbmRfM18yCisjZGVmaW5lIHVyZWdleF9maW5kTmV4
dCB1cmVnZXhfZmluZE5leHRfM18yCisjZGVmaW5lIHVyZWdleF9mbGFncyB1cmVnZXhfZmxhZ3Nf
M18yCisjZGVmaW5lIHVyZWdleF9nZXRUZXh0IHVyZWdleF9nZXRUZXh0XzNfMgorI2RlZmluZSB1
cmVnZXhfZ3JvdXAgdXJlZ2V4X2dyb3VwXzNfMgorI2RlZmluZSB1cmVnZXhfZ3JvdXBDb3VudCB1
cmVnZXhfZ3JvdXBDb3VudF8zXzIKKyNkZWZpbmUgdXJlZ2V4X2xvb2tpbmdBdCB1cmVnZXhfbG9v
a2luZ0F0XzNfMgorI2RlZmluZSB1cmVnZXhfbWF0Y2hlcyB1cmVnZXhfbWF0Y2hlc18zXzIKKyNk
ZWZpbmUgdXJlZ2V4X29wZW4gdXJlZ2V4X29wZW5fM18yCisjZGVmaW5lIHVyZWdleF9vcGVuQyB1
cmVnZXhfb3BlbkNfM18yCisjZGVmaW5lIHVyZWdleF9wYXR0ZXJuIHVyZWdleF9wYXR0ZXJuXzNf
MgorI2RlZmluZSB1cmVnZXhfcmVwbGFjZUFsbCB1cmVnZXhfcmVwbGFjZUFsbF8zXzIKKyNkZWZp
bmUgdXJlZ2V4X3JlcGxhY2VGaXJzdCB1cmVnZXhfcmVwbGFjZUZpcnN0XzNfMgorI2RlZmluZSB1
cmVnZXhfcmVzZXQgdXJlZ2V4X3Jlc2V0XzNfMgorI2RlZmluZSB1cmVnZXhfc2V0VGV4dCB1cmVn
ZXhfc2V0VGV4dF8zXzIKKyNkZWZpbmUgdXJlZ2V4X3NwbGl0IHVyZWdleF9zcGxpdF8zXzIKKyNk
ZWZpbmUgdXJlZ2V4X3N0YXJ0IHVyZWdleF9zdGFydF8zXzIKKyNkZWZpbmUgdXJlc19hcHBlbmRS
ZXNQYXRoIHVyZXNfYXBwZW5kUmVzUGF0aF8zXzIKKyNkZWZpbmUgdXJlc19jbG9zZSB1cmVzX2Ns
b3NlXzNfMgorI2RlZmluZSB1cmVzX2NvcHlSZXNiIHVyZXNfY29weVJlc2JfM18yCisjZGVmaW5l
IHVyZXNfY291bnRBcnJheUl0ZW1zIHVyZXNfY291bnRBcnJheUl0ZW1zXzNfMgorI2RlZmluZSB1
cmVzX2ZpbmRSZXNvdXJjZSB1cmVzX2ZpbmRSZXNvdXJjZV8zXzIKKyNkZWZpbmUgdXJlc19maW5k
U3ViUmVzb3VyY2UgdXJlc19maW5kU3ViUmVzb3VyY2VfM18yCisjZGVmaW5lIHVyZXNfZnJlZVJl
c1BhdGggdXJlc19mcmVlUmVzUGF0aF8zXzIKKyNkZWZpbmUgdXJlc19nZXRCaW5hcnkgdXJlc19n
ZXRCaW5hcnlfM18yCisjZGVmaW5lIHVyZXNfZ2V0QnlJbmRleCB1cmVzX2dldEJ5SW5kZXhfM18y
CisjZGVmaW5lIHVyZXNfZ2V0QnlLZXkgdXJlc19nZXRCeUtleV8zXzIKKyNkZWZpbmUgdXJlc19n
ZXRCeUtleVdpdGhGYWxsYmFjayB1cmVzX2dldEJ5S2V5V2l0aEZhbGxiYWNrXzNfMgorI2RlZmlu
ZSB1cmVzX2dldEZ1bmN0aW9uYWxFcXVpdmFsZW50IHVyZXNfZ2V0RnVuY3Rpb25hbEVxdWl2YWxl
bnRfM18yCisjZGVmaW5lIHVyZXNfZ2V0SW50IHVyZXNfZ2V0SW50XzNfMgorI2RlZmluZSB1cmVz
X2dldEludFZlY3RvciB1cmVzX2dldEludFZlY3Rvcl8zXzIKKyNkZWZpbmUgdXJlc19nZXRLZXkg
dXJlc19nZXRLZXlfM18yCisjZGVmaW5lIHVyZXNfZ2V0S2V5d29yZFZhbHVlcyB1cmVzX2dldEtl
eXdvcmRWYWx1ZXNfM18yCisjZGVmaW5lIHVyZXNfZ2V0TG9jYWxlIHVyZXNfZ2V0TG9jYWxlXzNf
MgorI2RlZmluZSB1cmVzX2dldExvY2FsZUJ5VHlwZSB1cmVzX2dldExvY2FsZUJ5VHlwZV8zXzIK
KyNkZWZpbmUgdXJlc19nZXROYW1lIHVyZXNfZ2V0TmFtZV8zXzIKKyNkZWZpbmUgdXJlc19nZXRO
ZXh0UmVzb3VyY2UgdXJlc19nZXROZXh0UmVzb3VyY2VfM18yCisjZGVmaW5lIHVyZXNfZ2V0TmV4
dFN0cmluZyB1cmVzX2dldE5leHRTdHJpbmdfM18yCisjZGVmaW5lIHVyZXNfZ2V0UGF0aCB1cmVz
X2dldFBhdGhfM18yCisjZGVmaW5lIHVyZXNfZ2V0U2l6ZSB1cmVzX2dldFNpemVfM18yCisjZGVm
aW5lIHVyZXNfZ2V0U3RyaW5nIHVyZXNfZ2V0U3RyaW5nXzNfMgorI2RlZmluZSB1cmVzX2dldFN0
cmluZ0J5SW5kZXggdXJlc19nZXRTdHJpbmdCeUluZGV4XzNfMgorI2RlZmluZSB1cmVzX2dldFN0
cmluZ0J5S2V5IHVyZXNfZ2V0U3RyaW5nQnlLZXlfM18yCisjZGVmaW5lIHVyZXNfZ2V0VHlwZSB1
cmVzX2dldFR5cGVfM18yCisjZGVmaW5lIHVyZXNfZ2V0VUludCB1cmVzX2dldFVJbnRfM18yCisj
ZGVmaW5lIHVyZXNfZ2V0VmVyc2lvbiB1cmVzX2dldFZlcnNpb25fM18yCisjZGVmaW5lIHVyZXNf
Z2V0VmVyc2lvbk51bWJlciB1cmVzX2dldFZlcnNpb25OdW1iZXJfM18yCisjZGVmaW5lIHVyZXNf
aGFzTmV4dCB1cmVzX2hhc05leHRfM18yCisjZGVmaW5lIHVyZXNfaW5pdFN0YWNrT2JqZWN0IHVy
ZXNfaW5pdFN0YWNrT2JqZWN0XzNfMgorI2RlZmluZSB1cmVzX29wZW4gdXJlc19vcGVuXzNfMgor
I2RlZmluZSB1cmVzX29wZW5BdmFpbGFibGVMb2NhbGVzIHVyZXNfb3BlbkF2YWlsYWJsZUxvY2Fs
ZXNfM18yCisjZGVmaW5lIHVyZXNfb3BlbkRpcmVjdCB1cmVzX29wZW5EaXJlY3RfM18yCisjZGVm
aW5lIHVyZXNfb3BlbkZpbGxJbiB1cmVzX29wZW5GaWxsSW5fM18yCisjZGVmaW5lIHVyZXNfb3Bl
blUgdXJlc19vcGVuVV8zXzIKKyNkZWZpbmUgdXJlc19yZXNldEl0ZXJhdG9yIHVyZXNfcmVzZXRJ
dGVyYXRvcl8zXzIKKyNkZWZpbmUgdXJlc19zd2FwIHVyZXNfc3dhcF8zXzIKKyNkZWZpbmUgdXNj
cmlwdF9jbG9zZVJ1biB1c2NyaXB0X2Nsb3NlUnVuXzNfMgorI2RlZmluZSB1c2NyaXB0X2dldENv
ZGUgdXNjcmlwdF9nZXRDb2RlXzNfMgorI2RlZmluZSB1c2NyaXB0X2dldE5hbWUgdXNjcmlwdF9n
ZXROYW1lXzNfMgorI2RlZmluZSB1c2NyaXB0X2dldFNjcmlwdCB1c2NyaXB0X2dldFNjcmlwdF8z
XzIKKyNkZWZpbmUgdXNjcmlwdF9nZXRTaG9ydE5hbWUgdXNjcmlwdF9nZXRTaG9ydE5hbWVfM18y
CisjZGVmaW5lIHVzY3JpcHRfbmV4dFJ1biB1c2NyaXB0X25leHRSdW5fM18yCisjZGVmaW5lIHVz
Y3JpcHRfb3BlblJ1biB1c2NyaXB0X29wZW5SdW5fM18yCisjZGVmaW5lIHVzY3JpcHRfcmVzZXRS
dW4gdXNjcmlwdF9yZXNldFJ1bl8zXzIKKyNkZWZpbmUgdXNjcmlwdF9zZXRSdW5UZXh0IHVzY3Jp
cHRfc2V0UnVuVGV4dF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9jbG9zZSB1c2VhcmNoX2Nsb3NlXzNf
MgorI2RlZmluZSB1c2VhcmNoX2ZpcnN0IHVzZWFyY2hfZmlyc3RfM18yCisjZGVmaW5lIHVzZWFy
Y2hfZm9sbG93aW5nIHVzZWFyY2hfZm9sbG93aW5nXzNfMgorI2RlZmluZSB1c2VhcmNoX2dldEF0
dHJpYnV0ZSB1c2VhcmNoX2dldEF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdXNlYXJjaF9nZXRCcmVh
a0l0ZXJhdG9yIHVzZWFyY2hfZ2V0QnJlYWtJdGVyYXRvcl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9n
ZXRDb2xsYXRvciB1c2VhcmNoX2dldENvbGxhdG9yXzNfMgorI2RlZmluZSB1c2VhcmNoX2dldE1h
dGNoZWRMZW5ndGggdXNlYXJjaF9nZXRNYXRjaGVkTGVuZ3RoXzNfMgorI2RlZmluZSB1c2VhcmNo
X2dldE1hdGNoZWRTdGFydCB1c2VhcmNoX2dldE1hdGNoZWRTdGFydF8zXzIKKyNkZWZpbmUgdXNl
YXJjaF9nZXRNYXRjaGVkVGV4dCB1c2VhcmNoX2dldE1hdGNoZWRUZXh0XzNfMgorI2RlZmluZSB1
c2VhcmNoX2dldE9mZnNldCB1c2VhcmNoX2dldE9mZnNldF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9n
ZXRQYXR0ZXJuIHVzZWFyY2hfZ2V0UGF0dGVybl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9nZXRUZXh0
IHVzZWFyY2hfZ2V0VGV4dF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9oYW5kbGVOZXh0Q2Fub25pY2Fs
IHVzZWFyY2hfaGFuZGxlTmV4dENhbm9uaWNhbF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9oYW5kbGVO
ZXh0RXhhY3QgdXNlYXJjaF9oYW5kbGVOZXh0RXhhY3RfM18yCisjZGVmaW5lIHVzZWFyY2hfaGFu
ZGxlUHJldmlvdXNDYW5vbmljYWwgdXNlYXJjaF9oYW5kbGVQcmV2aW91c0Nhbm9uaWNhbF8zXzIK
KyNkZWZpbmUgdXNlYXJjaF9oYW5kbGVQcmV2aW91c0V4YWN0IHVzZWFyY2hfaGFuZGxlUHJldmlv
dXNFeGFjdF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9sYXN0IHVzZWFyY2hfbGFzdF8zXzIKKyNkZWZp
bmUgdXNlYXJjaF9uZXh0IHVzZWFyY2hfbmV4dF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9vcGVuIHVz
ZWFyY2hfb3Blbl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9vcGVuRnJvbUNvbGxhdG9yIHVzZWFyY2hf
b3BlbkZyb21Db2xsYXRvcl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9wcmVjZWRpbmcgdXNlYXJjaF9w
cmVjZWRpbmdfM18yCisjZGVmaW5lIHVzZWFyY2hfcHJldmlvdXMgdXNlYXJjaF9wcmV2aW91c18z
XzIKKyNkZWZpbmUgdXNlYXJjaF9yZXNldCB1c2VhcmNoX3Jlc2V0XzNfMgorI2RlZmluZSB1c2Vh
cmNoX3NldEF0dHJpYnV0ZSB1c2VhcmNoX3NldEF0dHJpYnV0ZV8zXzIKKyNkZWZpbmUgdXNlYXJj
aF9zZXRCcmVha0l0ZXJhdG9yIHVzZWFyY2hfc2V0QnJlYWtJdGVyYXRvcl8zXzIKKyNkZWZpbmUg
dXNlYXJjaF9zZXRDb2xsYXRvciB1c2VhcmNoX3NldENvbGxhdG9yXzNfMgorI2RlZmluZSB1c2Vh
cmNoX3NldE9mZnNldCB1c2VhcmNoX3NldE9mZnNldF8zXzIKKyNkZWZpbmUgdXNlYXJjaF9zZXRQ
YXR0ZXJuIHVzZWFyY2hfc2V0UGF0dGVybl8zXzIKKyNkZWZpbmUgdXNlYXJjaF9zZXRUZXh0IHVz
ZWFyY2hfc2V0VGV4dF8zXzIKKyNkZWZpbmUgdXNlcnZfZGVsZXRlU3RyaW5nUGFpciB1c2Vydl9k
ZWxldGVTdHJpbmdQYWlyXzNfMgorI2RlZmluZSB1c2V0X2FkZCB1c2V0X2FkZF8zXzIKKyNkZWZp
bmUgdXNldF9hZGRBbGwgdXNldF9hZGRBbGxfM18yCisjZGVmaW5lIHVzZXRfYWRkUmFuZ2UgdXNl
dF9hZGRSYW5nZV8zXzIKKyNkZWZpbmUgdXNldF9hZGRTdHJpbmcgdXNldF9hZGRTdHJpbmdfM18y
CisjZGVmaW5lIHVzZXRfYXBwbHlJbnRQcm9wZXJ0eVZhbHVlIHVzZXRfYXBwbHlJbnRQcm9wZXJ0
eVZhbHVlXzNfMgorI2RlZmluZSB1c2V0X2FwcGx5UGF0dGVybiB1c2V0X2FwcGx5UGF0dGVybl8z
XzIKKyNkZWZpbmUgdXNldF9hcHBseVByb3BlcnR5QWxpYXMgdXNldF9hcHBseVByb3BlcnR5QWxp
YXNfM18yCisjZGVmaW5lIHVzZXRfY2hhckF0IHVzZXRfY2hhckF0XzNfMgorI2RlZmluZSB1c2V0
X2NsZWFyIHVzZXRfY2xlYXJfM18yCisjZGVmaW5lIHVzZXRfY2xvc2UgdXNldF9jbG9zZV8zXzIK
KyNkZWZpbmUgdXNldF9jb21wYWN0IHVzZXRfY29tcGFjdF8zXzIKKyNkZWZpbmUgdXNldF9jb21w
bGVtZW50IHVzZXRfY29tcGxlbWVudF8zXzIKKyNkZWZpbmUgdXNldF9jb21wbGVtZW50QWxsIHVz
ZXRfY29tcGxlbWVudEFsbF8zXzIKKyNkZWZpbmUgdXNldF9jb250YWlucyB1c2V0X2NvbnRhaW5z
XzNfMgorI2RlZmluZSB1c2V0X2NvbnRhaW5zQWxsIHVzZXRfY29udGFpbnNBbGxfM18yCisjZGVm
aW5lIHVzZXRfY29udGFpbnNOb25lIHVzZXRfY29udGFpbnNOb25lXzNfMgorI2RlZmluZSB1c2V0
X2NvbnRhaW5zUmFuZ2UgdXNldF9jb250YWluc1JhbmdlXzNfMgorI2RlZmluZSB1c2V0X2NvbnRh
aW5zU29tZSB1c2V0X2NvbnRhaW5zU29tZV8zXzIKKyNkZWZpbmUgdXNldF9jb250YWluc1N0cmlu
ZyB1c2V0X2NvbnRhaW5zU3RyaW5nXzNfMgorI2RlZmluZSB1c2V0X2VxdWFscyB1c2V0X2VxdWFs
c18zXzIKKyNkZWZpbmUgdXNldF9nZXRJdGVtIHVzZXRfZ2V0SXRlbV8zXzIKKyNkZWZpbmUgdXNl
dF9nZXRJdGVtQ291bnQgdXNldF9nZXRJdGVtQ291bnRfM18yCisjZGVmaW5lIHVzZXRfZ2V0U2Vy
aWFsaXplZFJhbmdlIHVzZXRfZ2V0U2VyaWFsaXplZFJhbmdlXzNfMgorI2RlZmluZSB1c2V0X2dl
dFNlcmlhbGl6ZWRSYW5nZUNvdW50IHVzZXRfZ2V0U2VyaWFsaXplZFJhbmdlQ291bnRfM18yCisj
ZGVmaW5lIHVzZXRfZ2V0U2VyaWFsaXplZFNldCB1c2V0X2dldFNlcmlhbGl6ZWRTZXRfM18yCisj
ZGVmaW5lIHVzZXRfaW5kZXhPZiB1c2V0X2luZGV4T2ZfM18yCisjZGVmaW5lIHVzZXRfaXNFbXB0
eSB1c2V0X2lzRW1wdHlfM18yCisjZGVmaW5lIHVzZXRfb3BlbiB1c2V0X29wZW5fM18yCisjZGVm
aW5lIHVzZXRfb3BlblBhdHRlcm4gdXNldF9vcGVuUGF0dGVybl8zXzIKKyNkZWZpbmUgdXNldF9v
cGVuUGF0dGVybk9wdGlvbnMgdXNldF9vcGVuUGF0dGVybk9wdGlvbnNfM18yCisjZGVmaW5lIHVz
ZXRfcmVtb3ZlIHVzZXRfcmVtb3ZlXzNfMgorI2RlZmluZSB1c2V0X3JlbW92ZUFsbCB1c2V0X3Jl
bW92ZUFsbF8zXzIKKyNkZWZpbmUgdXNldF9yZW1vdmVSYW5nZSB1c2V0X3JlbW92ZVJhbmdlXzNf
MgorI2RlZmluZSB1c2V0X3JlbW92ZVN0cmluZyB1c2V0X3JlbW92ZVN0cmluZ18zXzIKKyNkZWZp
bmUgdXNldF9yZXNlbWJsZXNQYXR0ZXJuIHVzZXRfcmVzZW1ibGVzUGF0dGVybl8zXzIKKyNkZWZp
bmUgdXNldF9yZXRhaW4gdXNldF9yZXRhaW5fM18yCisjZGVmaW5lIHVzZXRfcmV0YWluQWxsIHVz
ZXRfcmV0YWluQWxsXzNfMgorI2RlZmluZSB1c2V0X3NlcmlhbGl6ZSB1c2V0X3NlcmlhbGl6ZV8z
XzIKKyNkZWZpbmUgdXNldF9zZXJpYWxpemVkQ29udGFpbnMgdXNldF9zZXJpYWxpemVkQ29udGFp
bnNfM18yCisjZGVmaW5lIHVzZXRfc2V0IHVzZXRfc2V0XzNfMgorI2RlZmluZSB1c2V0X3NldFNl
cmlhbGl6ZWRUb09uZSB1c2V0X3NldFNlcmlhbGl6ZWRUb09uZV8zXzIKKyNkZWZpbmUgdXNldF9z
aXplIHVzZXRfc2l6ZV8zXzIKKyNkZWZpbmUgdXNldF90b1BhdHRlcm4gdXNldF90b1BhdHRlcm5f
M18yCisjZGVmaW5lIHVzcHJlcF9jbG9zZSB1c3ByZXBfY2xvc2VfM18yCisjZGVmaW5lIHVzcHJl
cF9vcGVuIHVzcHJlcF9vcGVuXzNfMgorI2RlZmluZSB1c3ByZXBfcHJlcGFyZSB1c3ByZXBfcHJl
cGFyZV8zXzIKKyNkZWZpbmUgdXNwcmVwX3N3YXAgdXNwcmVwX3N3YXBfM18yCisjZGVmaW5lIHVz
dHJfZm9sZENhc2UgdXN0cl9mb2xkQ2FzZV8zXzIKKyNkZWZpbmUgdXN0cl90b0xvd2VyIHVzdHJf
dG9Mb3dlcl8zXzIKKyNkZWZpbmUgdXN0cl90b1RpdGxlIHVzdHJfdG9UaXRsZV8zXzIKKyNkZWZp
bmUgdXN0cl90b1VwcGVyIHVzdHJfdG9VcHBlcl8zXzIKKyNkZWZpbmUgdXRmOF9hcHBlbmRDaGFy
U2FmZUJvZHkgdXRmOF9hcHBlbmRDaGFyU2FmZUJvZHlfM18yCisjZGVmaW5lIHV0ZjhfYmFjazFT
YWZlQm9keSB1dGY4X2JhY2sxU2FmZUJvZHlfM18yCisjZGVmaW5lIHV0ZjhfY291bnRUcmFpbEJ5
dGVzIHV0ZjhfY291bnRUcmFpbEJ5dGVzXzNfMgorI2RlZmluZSB1dGY4X25leHRDaGFyU2FmZUJv
ZHkgdXRmOF9uZXh0Q2hhclNhZmVCb2R5XzNfMgorI2RlZmluZSB1dGY4X3ByZXZDaGFyU2FmZUJv
ZHkgdXRmOF9wcmV2Q2hhclNhZmVCb2R5XzNfMgorI2RlZmluZSB1dG1zY2FsZV9mcm9tSW50NjQg
dXRtc2NhbGVfZnJvbUludDY0XzNfMgorI2RlZmluZSB1dG1zY2FsZV9nZXRUaW1lU2NhbGVWYWx1
ZSB1dG1zY2FsZV9nZXRUaW1lU2NhbGVWYWx1ZV8zXzIKKyNkZWZpbmUgdXRtc2NhbGVfdG9JbnQ2
NCB1dG1zY2FsZV90b0ludDY0XzNfMgorI2RlZmluZSB1dHJhY2VfY2xlYW51cCB1dHJhY2VfY2xl
YW51cF8zXzIKKyNkZWZpbmUgdXRyYWNlX2RhdGEgdXRyYWNlX2RhdGFfM18yCisjZGVmaW5lIHV0
cmFjZV9lbnRyeSB1dHJhY2VfZW50cnlfM18yCisjZGVmaW5lIHV0cmFjZV9leGl0IHV0cmFjZV9l
eGl0XzNfMgorI2RlZmluZSB1dHJhY2VfZm9ybWF0IHV0cmFjZV9mb3JtYXRfM18yCisjZGVmaW5l
IHV0cmFjZV9mdW5jdGlvbk5hbWUgdXRyYWNlX2Z1bmN0aW9uTmFtZV8zXzIKKyNkZWZpbmUgdXRy
YWNlX2dldEZ1bmN0aW9ucyB1dHJhY2VfZ2V0RnVuY3Rpb25zXzNfMgorI2RlZmluZSB1dHJhY2Vf
Z2V0TGV2ZWwgdXRyYWNlX2dldExldmVsXzNfMgorI2RlZmluZSB1dHJhY2VfbGV2ZWwgdXRyYWNl
X2xldmVsXzNfMgorI2RlZmluZSB1dHJhY2Vfc2V0RnVuY3Rpb25zIHV0cmFjZV9zZXRGdW5jdGlv
bnNfM18yCisjZGVmaW5lIHV0cmFjZV9zZXRMZXZlbCB1dHJhY2Vfc2V0TGV2ZWxfM18yCisjZGVm
aW5lIHV0cmFjZV92Zm9ybWF0IHV0cmFjZV92Zm9ybWF0XzNfMgorI2RlZmluZSB1dHJhbnNfY2xv
bmUgdXRyYW5zX2Nsb25lXzNfMgorI2RlZmluZSB1dHJhbnNfY2xvc2UgdXRyYW5zX2Nsb3NlXzNf
MgorI2RlZmluZSB1dHJhbnNfY291bnRBdmFpbGFibGVJRHMgdXRyYW5zX2NvdW50QXZhaWxhYmxl
SURzXzNfMgorI2RlZmluZSB1dHJhbnNfZ2V0QXZhaWxhYmxlSUQgdXRyYW5zX2dldEF2YWlsYWJs
ZUlEXzNfMgorI2RlZmluZSB1dHJhbnNfZ2V0SUQgdXRyYW5zX2dldElEXzNfMgorI2RlZmluZSB1
dHJhbnNfZ2V0VW5pY29kZUlEIHV0cmFuc19nZXRVbmljb2RlSURfM18yCisjZGVmaW5lIHV0cmFu
c19vcGVuIHV0cmFuc19vcGVuXzNfMgorI2RlZmluZSB1dHJhbnNfb3BlbklEcyB1dHJhbnNfb3Bl
bklEc18zXzIKKyNkZWZpbmUgdXRyYW5zX29wZW5JbnZlcnNlIHV0cmFuc19vcGVuSW52ZXJzZV8z
XzIKKyNkZWZpbmUgdXRyYW5zX29wZW5VIHV0cmFuc19vcGVuVV8zXzIKKyNkZWZpbmUgdXRyYW5z
X3JlZ2lzdGVyIHV0cmFuc19yZWdpc3Rlcl8zXzIKKyNkZWZpbmUgdXRyYW5zX3JlcF9jYXNlQ29u
dGV4dEl0ZXJhdG9yIHV0cmFuc19yZXBfY2FzZUNvbnRleHRJdGVyYXRvcl8zXzIKKyNkZWZpbmUg
dXRyYW5zX3NldEZpbHRlciB1dHJhbnNfc2V0RmlsdGVyXzNfMgorI2RlZmluZSB1dHJhbnNfdHJh
bnMgdXRyYW5zX3RyYW5zXzNfMgorI2RlZmluZSB1dHJhbnNfdHJhbnNJbmNyZW1lbnRhbCB1dHJh
bnNfdHJhbnNJbmNyZW1lbnRhbF8zXzIKKyNkZWZpbmUgdXRyYW5zX3RyYW5zSW5jcmVtZW50YWxV
Q2hhcnMgdXRyYW5zX3RyYW5zSW5jcmVtZW50YWxVQ2hhcnNfM18yCisjZGVmaW5lIHV0cmFuc190
cmFuc1VDaGFycyB1dHJhbnNfdHJhbnNVQ2hhcnNfM18yCisjZGVmaW5lIHV0cmFuc191bnJlZ2lz
dGVyIHV0cmFuc191bnJlZ2lzdGVyXzNfMgorI2RlZmluZSB1dHJhbnNfdW5yZWdpc3RlcklEIHV0
cmFuc191bnJlZ2lzdGVySURfM18yCisjZGVmaW5lIHV0cmllX2Nsb25lIHV0cmllX2Nsb25lXzNf
MgorI2RlZmluZSB1dHJpZV9jbG9zZSB1dHJpZV9jbG9zZV8zXzIKKyNkZWZpbmUgdXRyaWVfZW51
bSB1dHJpZV9lbnVtXzNfMgorI2RlZmluZSB1dHJpZV9nZXQzMiB1dHJpZV9nZXQzMl8zXzIKKyNk
ZWZpbmUgdXRyaWVfZ2V0RGF0YSB1dHJpZV9nZXREYXRhXzNfMgorI2RlZmluZSB1dHJpZV9vcGVu
IHV0cmllX29wZW5fM18yCisjZGVmaW5lIHV0cmllX3NlcmlhbGl6ZSB1dHJpZV9zZXJpYWxpemVf
M18yCisjZGVmaW5lIHV0cmllX3NldDMyIHV0cmllX3NldDMyXzNfMgorI2RlZmluZSB1dHJpZV9z
ZXRSYW5nZTMyIHV0cmllX3NldFJhbmdlMzJfM18yCisjZGVmaW5lIHV0cmllX3N3YXAgdXRyaWVf
c3dhcF8zXzIKKyNkZWZpbmUgdXRyaWVfdW5zZXJpYWxpemUgdXRyaWVfdW5zZXJpYWxpemVfM18y
CisvKiBDKysgY2xhc3MgbmFtZXMgcmVuYW1pbmcgZGVmaW5lcyAqLworCisjaWZkZWYgWFBfQ1BM
VVNQTFVTCisjaWYgIVVfSEFWRV9OQU1FU1BBQ0UKKworI2RlZmluZSBBYnNvbHV0ZVZhbHVlU3Vi
c3RpdHV0aW9uIEFic29sdXRlVmFsdWVTdWJzdGl0dXRpb25fM18yCisjZGVmaW5lIEFsdGVybmF0
ZVN1YnN0aXR1dGlvblN1YnRhYmxlIEFsdGVybmF0ZVN1YnN0aXR1dGlvblN1YnRhYmxlXzNfMgor
I2RlZmluZSBBbmNob3JUYWJsZSBBbmNob3JUYWJsZV8zXzIKKyNkZWZpbmUgQW55VHJhbnNsaXRl
cmF0b3IgQW55VHJhbnNsaXRlcmF0b3JfM18yCisjZGVmaW5lIEFyYWJpY09wZW5UeXBlTGF5b3V0
RW5naW5lIEFyYWJpY09wZW5UeXBlTGF5b3V0RW5naW5lXzNfMgorI2RlZmluZSBBcmFiaWNTaGFw
aW5nIEFyYWJpY1NoYXBpbmdfM18yCisjZGVmaW5lIEJhc2ljQ2FsZW5kYXJGYWN0b3J5IEJhc2lj
Q2FsZW5kYXJGYWN0b3J5XzNfMgorI2RlZmluZSBCaW5hcnlTZWFyY2hMb29rdXBUYWJsZSBCaW5h
cnlTZWFyY2hMb29rdXBUYWJsZV8zXzIKKyNkZWZpbmUgQnJlYWtEaWN0aW9uYXJ5IEJyZWFrRGlj
dGlvbmFyeV8zXzIKKyNkZWZpbmUgQnJlYWtJdGVyYXRvciBCcmVha0l0ZXJhdG9yXzNfMgorI2Rl
ZmluZSBCdWRkaGlzdENhbGVuZGFyIEJ1ZGRoaXN0Q2FsZW5kYXJfM18yCisjZGVmaW5lIENGYWN0
b3J5IENGYWN0b3J5XzNfMgorI2RlZmluZSBDYWxlbmRhciBDYWxlbmRhcl8zXzIKKyNkZWZpbmUg
Q2FsZW5kYXJBc3Ryb25vbWVyIENhbGVuZGFyQXN0cm9ub21lcl8zXzIKKyNkZWZpbmUgQ2FsZW5k
YXJDYWNoZSBDYWxlbmRhckNhY2hlXzNfMgorI2RlZmluZSBDYWxlbmRhckRhdGEgQ2FsZW5kYXJE
YXRhXzNfMgorI2RlZmluZSBDYWxlbmRhclNlcnZpY2UgQ2FsZW5kYXJTZXJ2aWNlXzNfMgorI2Rl
ZmluZSBDYW5vblNoYXBpbmcgQ2Fub25TaGFwaW5nXzNfMgorI2RlZmluZSBDYW5vbmljYWxJdGVy
YXRvciBDYW5vbmljYWxJdGVyYXRvcl8zXzIKKyNkZWZpbmUgQ2FzZU1hcFRyYW5zbGl0ZXJhdG9y
IENhc2VNYXBUcmFuc2xpdGVyYXRvcl8zXzIKKyNkZWZpbmUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vi
c3RpdHV0aW9uRm9ybWF0MVN1YnRhYmxlIENoYWluaW5nQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZv
cm1hdDFTdWJ0YWJsZV8zXzIKKyNkZWZpbmUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vic3RpdHV0aW9u
Rm9ybWF0MlN1YnRhYmxlIENoYWluaW5nQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDJTdWJ0
YWJsZV8zXzIKKyNkZWZpbmUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vic3RpdHV0aW9uRm9ybWF0M1N1
YnRhYmxlIENoYWluaW5nQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDNTdWJ0YWJsZV8zXzIK
KyNkZWZpbmUgQ2hhaW5pbmdDb250ZXh0dWFsU3Vic3RpdHV0aW9uU3VidGFibGUgQ2hhaW5pbmdD
b250ZXh0dWFsU3Vic3RpdHV0aW9uU3VidGFibGVfM18yCisjZGVmaW5lIENoYXJTdWJzdGl0dXRp
b25GaWx0ZXIgQ2hhclN1YnN0aXR1dGlvbkZpbHRlcl8zXzIKKyNkZWZpbmUgQ2hhcmFjdGVySXRl
cmF0b3IgQ2hhcmFjdGVySXRlcmF0b3JfM18yCisjZGVmaW5lIENob2ljZUZvcm1hdCBDaG9pY2VG
b3JtYXRfM18yCisjZGVmaW5lIENsYXNzRGVmRm9ybWF0MVRhYmxlIENsYXNzRGVmRm9ybWF0MVRh
YmxlXzNfMgorI2RlZmluZSBDbGFzc0RlZkZvcm1hdDJUYWJsZSBDbGFzc0RlZkZvcm1hdDJUYWJs
ZV8zXzIKKyNkZWZpbmUgQ2xhc3NEZWZpbml0aW9uVGFibGUgQ2xhc3NEZWZpbml0aW9uVGFibGVf
M18yCisjZGVmaW5lIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBDb2xsYXRpb25FbGVtZW50SXRl
cmF0b3JfM18yCisjZGVmaW5lIENvbGxhdGlvbktleSBDb2xsYXRpb25LZXlfM18yCisjZGVmaW5l
IENvbGxhdG9yIENvbGxhdG9yXzNfMgorI2RlZmluZSBDb2xsYXRvckZhY3RvcnkgQ29sbGF0b3JG
YWN0b3J5XzNfMgorI2RlZmluZSBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIENvbXBvdW5kVHJhbnNs
aXRlcmF0b3JfM18yCisjZGVmaW5lIENvbnRleHR1YWxHbHlwaFN1YnN0aXR1dGlvblByb2Nlc3Nv
ciBDb250ZXh0dWFsR2x5cGhTdWJzdGl0dXRpb25Qcm9jZXNzb3JfM18yCisjZGVmaW5lIENvbnRl
eHR1YWxTdWJzdGl0dXRpb25CYXNlIENvbnRleHR1YWxTdWJzdGl0dXRpb25CYXNlXzNfMgorI2Rl
ZmluZSBDb250ZXh0dWFsU3Vic3RpdHV0aW9uRm9ybWF0MVN1YnRhYmxlIENvbnRleHR1YWxTdWJz
dGl0dXRpb25Gb3JtYXQxU3VidGFibGVfM18yCisjZGVmaW5lIENvbnRleHR1YWxTdWJzdGl0dXRp
b25Gb3JtYXQyU3VidGFibGUgQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDJTdWJ0YWJsZV8z
XzIKKyNkZWZpbmUgQ29udGV4dHVhbFN1YnN0aXR1dGlvbkZvcm1hdDNTdWJ0YWJsZSBDb250ZXh0
dWFsU3Vic3RpdHV0aW9uRm9ybWF0M1N1YnRhYmxlXzNfMgorI2RlZmluZSBDb250ZXh0dWFsU3Vi
c3RpdHV0aW9uU3VidGFibGUgQ29udGV4dHVhbFN1YnN0aXR1dGlvblN1YnRhYmxlXzNfMgorI2Rl
ZmluZSBDb3ZlcmFnZUZvcm1hdDFUYWJsZSBDb3ZlcmFnZUZvcm1hdDFUYWJsZV8zXzIKKyNkZWZp
bmUgQ292ZXJhZ2VGb3JtYXQyVGFibGUgQ292ZXJhZ2VGb3JtYXQyVGFibGVfM18yCisjZGVmaW5l
IENvdmVyYWdlVGFibGUgQ292ZXJhZ2VUYWJsZV8zXzIKKyNkZWZpbmUgQ3VycmVuY3lBbW91bnQg
Q3VycmVuY3lBbW91bnRfM18yCisjZGVmaW5lIEN1cnJlbmN5Rm9ybWF0IEN1cnJlbmN5Rm9ybWF0
XzNfMgorI2RlZmluZSBDdXJyZW5jeVVuaXQgQ3VycmVuY3lVbml0XzNfMgorI2RlZmluZSBDdXJz
aXZlQXR0YWNobWVudFN1YnRhYmxlIEN1cnNpdmVBdHRhY2htZW50U3VidGFibGVfM18yCisjZGVm
aW5lIERhdGVGb3JtYXQgRGF0ZUZvcm1hdF8zXzIKKyNkZWZpbmUgRGF0ZUZvcm1hdFN5bWJvbHMg
RGF0ZUZvcm1hdFN5bWJvbHNfM18yCisjZGVmaW5lIERlY2ltYWxGb3JtYXQgRGVjaW1hbEZvcm1h
dF8zXzIKKyNkZWZpbmUgRGVjaW1hbEZvcm1hdFN5bWJvbHMgRGVjaW1hbEZvcm1hdFN5bWJvbHNf
M18yCisjZGVmaW5lIERlZmF1bHRDYWxlbmRhckZhY3RvcnkgRGVmYXVsdENhbGVuZGFyRmFjdG9y
eV8zXzIKKyNkZWZpbmUgRGVmYXVsdENoYXJNYXBwZXIgRGVmYXVsdENoYXJNYXBwZXJfM18yCisj
ZGVmaW5lIERldmljZVRhYmxlIERldmljZVRhYmxlXzNfMgorI2RlZmluZSBEaWN0aW9uYXJ5QmFz
ZWRCcmVha0l0ZXJhdG9yIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3JfM18yCisjZGVmaW5l
IERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3JUYWJsZXMgRGljdGlvbmFyeUJhc2VkQnJlYWtJ
dGVyYXRvclRhYmxlc18zXzIKKyNkZWZpbmUgRGlnaXRMaXN0IERpZ2l0TGlzdF8zXzIKKyNkZWZp
bmUgRW50cnkgRW50cnlfM18yCisjZGVmaW5lIEVudW1Ub09mZnNldCBFbnVtVG9PZmZzZXRfM18y
CisjZGVmaW5lIEVzY2FwZVRyYW5zbGl0ZXJhdG9yIEVzY2FwZVRyYW5zbGl0ZXJhdG9yXzNfMgor
I2RlZmluZSBFdmVudExpc3RlbmVyIEV2ZW50TGlzdGVuZXJfM18yCisjZGVmaW5lIEV4dGVuc2lv
blN1YnRhYmxlIEV4dGVuc2lvblN1YnRhYmxlXzNfMgorI2RlZmluZSBGZWF0dXJlTGlzdFRhYmxl
IEZlYXR1cmVMaXN0VGFibGVfM18yCisjZGVmaW5lIEZpZWxkUG9zaXRpb24gRmllbGRQb3NpdGlv
bl8zXzIKKyNkZWZpbmUgRm9udFJ1bnMgRm9udFJ1bnNfM18yCisjZGVmaW5lIEZvcm1hdCBGb3Jt
YXRfM18yCisjZGVmaW5lIEZvcm1hdDFBbmNob3JUYWJsZSBGb3JtYXQxQW5jaG9yVGFibGVfM18y
CisjZGVmaW5lIEZvcm1hdDJBbmNob3JUYWJsZSBGb3JtYXQyQW5jaG9yVGFibGVfM18yCisjZGVm
aW5lIEZvcm1hdDNBbmNob3JUYWJsZSBGb3JtYXQzQW5jaG9yVGFibGVfM18yCisjZGVmaW5lIEZv
cm1hdHRhYmxlIEZvcm1hdHRhYmxlXzNfMgorI2RlZmluZSBGb3J3YXJkQ2hhcmFjdGVySXRlcmF0
b3IgRm9yd2FyZENoYXJhY3Rlckl0ZXJhdG9yXzNfMgorI2RlZmluZSBGcmFjdGlvbmFsUGFydFN1
YnN0aXR1dGlvbiBGcmFjdGlvbmFsUGFydFN1YnN0aXR1dGlvbl8zXzIKKyNkZWZpbmUgRnVuY3Rp
b25SZXBsYWNlciBGdW5jdGlvblJlcGxhY2VyXzNfMgorI2RlZmluZSBHREVGTWFya0ZpbHRlciBH
REVGTWFya0ZpbHRlcl8zXzIKKyNkZWZpbmUgR1hMYXlvdXRFbmdpbmUgR1hMYXlvdXRFbmdpbmVf
M18yCisjZGVmaW5lIEdseXBoRGVmaW5pdGlvblRhYmxlSGVhZGVyIEdseXBoRGVmaW5pdGlvblRh
YmxlSGVhZGVyXzNfMgorI2RlZmluZSBHbHlwaEl0ZXJhdG9yIEdseXBoSXRlcmF0b3JfM18yCisj
ZGVmaW5lIEdseXBoTG9va3VwVGFibGVIZWFkZXIgR2x5cGhMb29rdXBUYWJsZUhlYWRlcl8zXzIK
KyNkZWZpbmUgR2x5cGhQb3NpdGlvbmluZ0xvb2t1cFByb2Nlc3NvciBHbHlwaFBvc2l0aW9uaW5n
TG9va3VwUHJvY2Vzc29yXzNfMgorI2RlZmluZSBHbHlwaFBvc2l0aW9uaW5nVGFibGVIZWFkZXIg
R2x5cGhQb3NpdGlvbmluZ1RhYmxlSGVhZGVyXzNfMgorI2RlZmluZSBHbHlwaFN1YnN0aXR1dGlv
bkxvb2t1cFByb2Nlc3NvciBHbHlwaFN1YnN0aXR1dGlvbkxvb2t1cFByb2Nlc3Nvcl8zXzIKKyNk
ZWZpbmUgR2x5cGhTdWJzdGl0dXRpb25UYWJsZUhlYWRlciBHbHlwaFN1YnN0aXR1dGlvblRhYmxl
SGVhZGVyXzNfMgorI2RlZmluZSBHcmVnbyBHcmVnb18zXzIKKyNkZWZpbmUgR3JlZ29yaWFuQ2Fs
ZW5kYXIgR3JlZ29yaWFuQ2FsZW5kYXJfM18yCisjZGVmaW5lIEhhbk9wZW5UeXBlTGF5b3V0RW5n
aW5lIEhhbk9wZW5UeXBlTGF5b3V0RW5naW5lXzNfMgorI2RlZmluZSBIZWJyZXdDYWxlbmRhciBI
ZWJyZXdDYWxlbmRhcl8zXzIKKyNkZWZpbmUgSUNVQnJlYWtJdGVyYXRvckZhY3RvcnkgSUNVQnJl
YWtJdGVyYXRvckZhY3RvcnlfM18yCisjZGVmaW5lIElDVUJyZWFrSXRlcmF0b3JTZXJ2aWNlIElD
VUJyZWFrSXRlcmF0b3JTZXJ2aWNlXzNfMgorI2RlZmluZSBJQ1VDb2xsYXRvckZhY3RvcnkgSUNV
Q29sbGF0b3JGYWN0b3J5XzNfMgorI2RlZmluZSBJQ1VDb2xsYXRvclNlcnZpY2UgSUNVQ29sbGF0
b3JTZXJ2aWNlXzNfMgorI2RlZmluZSBJQ1VMYXlvdXRFbmdpbmUgSUNVTGF5b3V0RW5naW5lXzNf
MgorI2RlZmluZSBJQ1VMb2NhbGVTZXJ2aWNlIElDVUxvY2FsZVNlcnZpY2VfM18yCisjZGVmaW5l
IElDVU5vdGlmaWVyIElDVU5vdGlmaWVyXzNfMgorI2RlZmluZSBJQ1VOdW1iZXJGb3JtYXRGYWN0
b3J5IElDVU51bWJlckZvcm1hdEZhY3RvcnlfM18yCisjZGVmaW5lIElDVU51bWJlckZvcm1hdFNl
cnZpY2UgSUNVTnVtYmVyRm9ybWF0U2VydmljZV8zXzIKKyNkZWZpbmUgSUNVUmVzb3VyY2VCdW5k
bGVGYWN0b3J5IElDVVJlc291cmNlQnVuZGxlRmFjdG9yeV8zXzIKKyNkZWZpbmUgSUNVU2Vydmlj
ZSBJQ1VTZXJ2aWNlXzNfMgorI2RlZmluZSBJQ1VTZXJ2aWNlRmFjdG9yeSBJQ1VTZXJ2aWNlRmFj
dG9yeV8zXzIKKyNkZWZpbmUgSUNVU2VydmljZUtleSBJQ1VTZXJ2aWNlS2V5XzNfMgorI2RlZmlu
ZSBJQ1VfVXRpbGl0eSBJQ1VfVXRpbGl0eV8zXzIKKyNkZWZpbmUgSW5kaWNDbGFzc1RhYmxlIElu
ZGljQ2xhc3NUYWJsZV8zXzIKKyNkZWZpbmUgSW5kaWNPcGVuVHlwZUxheW91dEVuZ2luZSBJbmRp
Y09wZW5UeXBlTGF5b3V0RW5naW5lXzNfMgorI2RlZmluZSBJbmRpY1JlYXJyYW5nZW1lbnRQcm9j
ZXNzb3IgSW5kaWNSZWFycmFuZ2VtZW50UHJvY2Vzc29yXzNfMgorI2RlZmluZSBJbmRpY1Jlb3Jk
ZXJpbmcgSW5kaWNSZW9yZGVyaW5nXzNfMgorI2RlZmluZSBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRp
b24gSW50ZWdyYWxQYXJ0U3Vic3RpdHV0aW9uXzNfMgorI2RlZmluZSBJc2xhbWljQ2FsZW5kYXIg
SXNsYW1pY0NhbGVuZGFyXzNfMgorI2RlZmluZSBKYXBhbmVzZUNhbGVuZGFyIEphcGFuZXNlQ2Fs
ZW5kYXJfM18yCisjZGVmaW5lIEtleXdvcmRFbnVtZXJhdGlvbiBLZXl3b3JkRW51bWVyYXRpb25f
M18yCisjZGVmaW5lIExFQ2hhck1hcHBlciBMRUNoYXJNYXBwZXJfM18yCisjZGVmaW5lIExFRm9u
dEluc3RhbmNlIExFRm9udEluc3RhbmNlXzNfMgorI2RlZmluZSBMRUdseXBoRmlsdGVyIExFR2x5
cGhGaWx0ZXJfM18yCisjZGVmaW5lIExFR2x5cGhTdG9yYWdlIExFR2x5cGhTdG9yYWdlXzNfMgor
I2RlZmluZSBMRUluc2VydGlvbkNhbGxiYWNrIExFSW5zZXJ0aW9uQ2FsbGJhY2tfM18yCisjZGVm
aW5lIExFSW5zZXJ0aW9uTGlzdCBMRUluc2VydGlvbkxpc3RfM18yCisjZGVmaW5lIExYVXRpbGl0
aWVzIExYVXRpbGl0aWVzXzNfMgorI2RlZmluZSBMYXlvdXRFbmdpbmUgTGF5b3V0RW5naW5lXzNf
MgorI2RlZmluZSBMaWdhdHVyZVN1YnN0aXR1dGlvblByb2Nlc3NvciBMaWdhdHVyZVN1YnN0aXR1
dGlvblByb2Nlc3Nvcl8zXzIKKyNkZWZpbmUgTGlnYXR1cmVTdWJzdGl0dXRpb25TdWJ0YWJsZSBM
aWdhdHVyZVN1YnN0aXR1dGlvblN1YnRhYmxlXzNfMgorI2RlZmluZSBMb2NEYXRhUGFyc2VyIExv
Y0RhdGFQYXJzZXJfM18yCisjZGVmaW5lIExvY2FsZSBMb2NhbGVfM18yCisjZGVmaW5lIExvY2Fs
ZUJhc2VkIExvY2FsZUJhc2VkXzNfMgorI2RlZmluZSBMb2NhbGVLZXkgTG9jYWxlS2V5XzNfMgor
I2RlZmluZSBMb2NhbGVLZXlGYWN0b3J5IExvY2FsZUtleUZhY3RvcnlfM18yCisjZGVmaW5lIExv
Y2FsZVJ1bnMgTG9jYWxlUnVuc18zXzIKKyNkZWZpbmUgTG9jYWxlVXRpbGl0eSBMb2NhbGVVdGls
aXR5XzNfMgorI2RlZmluZSBMb2NhbGl6YXRpb25JbmZvIExvY2FsaXphdGlvbkluZm9fM18yCisj
ZGVmaW5lIExvb2t1cExpc3RUYWJsZSBMb29rdXBMaXN0VGFibGVfM18yCisjZGVmaW5lIExvb2t1
cFByb2Nlc3NvciBMb29rdXBQcm9jZXNzb3JfM18yCisjZGVmaW5lIExvb2t1cFN1YnRhYmxlIExv
b2t1cFN1YnRhYmxlXzNfMgorI2RlZmluZSBMb29rdXBUYWJsZSBMb29rdXBUYWJsZV8zXzIKKyNk
ZWZpbmUgTG93ZXJjYXNlVHJhbnNsaXRlcmF0b3IgTG93ZXJjYXNlVHJhbnNsaXRlcmF0b3JfM18y
CisjZGVmaW5lIE1QcmVGaXh1cHMgTVByZUZpeHVwc18zXzIKKyNkZWZpbmUgTWFya0FycmF5IE1h
cmtBcnJheV8zXzIKKyNkZWZpbmUgTWFya1RvQmFzZVBvc2l0aW9uaW5nU3VidGFibGUgTWFya1Rv
QmFzZVBvc2l0aW9uaW5nU3VidGFibGVfM18yCisjZGVmaW5lIE1hcmtUb0xpZ2F0dXJlUG9zaXRp
b25pbmdTdWJ0YWJsZSBNYXJrVG9MaWdhdHVyZVBvc2l0aW9uaW5nU3VidGFibGVfM18yCisjZGVm
aW5lIE1hcmtUb01hcmtQb3NpdGlvbmluZ1N1YnRhYmxlIE1hcmtUb01hcmtQb3NpdGlvbmluZ1N1
YnRhYmxlXzNfMgorI2RlZmluZSBNYXRoIE1hdGhfM18yCisjZGVmaW5lIE1lYXN1cmUgTWVhc3Vy
ZV8zXzIKKyNkZWZpbmUgTWVhc3VyZUZvcm1hdCBNZWFzdXJlRm9ybWF0XzNfMgorI2RlZmluZSBN
ZWFzdXJlVW5pdCBNZWFzdXJlVW5pdF8zXzIKKyNkZWZpbmUgTWVzc2FnZUZvcm1hdCBNZXNzYWdl
Rm9ybWF0XzNfMgorI2RlZmluZSBNZXNzYWdlRm9ybWF0QWRhcHRlciBNZXNzYWdlRm9ybWF0QWRh
cHRlcl8zXzIKKyNkZWZpbmUgTW9kdWx1c1N1YnN0aXR1dGlvbiBNb2R1bHVzU3Vic3RpdHV0aW9u
XzNfMgorI2RlZmluZSBNb29uUmlzZVNldENvb3JkRnVuYyBNb29uUmlzZVNldENvb3JkRnVuY18z
XzIKKyNkZWZpbmUgTW9vblRpbWVBbmdsZUZ1bmMgTW9vblRpbWVBbmdsZUZ1bmNfM18yCisjZGVm
aW5lIE1vcnBoU3VidGFibGVIZWFkZXIgTW9ycGhTdWJ0YWJsZUhlYWRlcl8zXzIKKyNkZWZpbmUg
TW9ycGhUYWJsZUhlYWRlciBNb3JwaFRhYmxlSGVhZGVyXzNfMgorI2RlZmluZSBNdWx0aXBsZVN1
YnN0aXR1dGlvblN1YnRhYmxlIE11bHRpcGxlU3Vic3RpdHV0aW9uU3VidGFibGVfM18yCisjZGVm
aW5lIE11bHRpcGxpZXJTdWJzdGl0dXRpb24gTXVsdGlwbGllclN1YnN0aXR1dGlvbl8zXzIKKyNk
ZWZpbmUgTkZGYWN0b3J5IE5GRmFjdG9yeV8zXzIKKyNkZWZpbmUgTkZSdWxlIE5GUnVsZV8zXzIK
KyNkZWZpbmUgTkZSdWxlU2V0IE5GUnVsZVNldF8zXzIKKyNkZWZpbmUgTkZTdWJzdGl0dXRpb24g
TkZTdWJzdGl0dXRpb25fM18yCisjZGVmaW5lIE5hbWVUb0VudW0gTmFtZVRvRW51bV8zXzIKKyNk
ZWZpbmUgTmFtZVVuaWNvZGVUcmFuc2xpdGVyYXRvciBOYW1lVW5pY29kZVRyYW5zbGl0ZXJhdG9y
XzNfMgorI2RlZmluZSBOb25Db250ZXh0dWFsR2x5cGhTdWJzdGl0dXRpb25Qcm9jZXNzb3IgTm9u
Q29udGV4dHVhbEdseXBoU3Vic3RpdHV0aW9uUHJvY2Vzc29yXzNfMgorI2RlZmluZSBOb25Db250
aWd1b3VzRW51bVRvT2Zmc2V0IE5vbkNvbnRpZ3VvdXNFbnVtVG9PZmZzZXRfM18yCisjZGVmaW5l
IE5vcm1hbGl6YXRpb25UcmFuc2xpdGVyYXRvciBOb3JtYWxpemF0aW9uVHJhbnNsaXRlcmF0b3Jf
M18yCisjZGVmaW5lIE5vcm1hbGl6ZXIgTm9ybWFsaXplcl8zXzIKKyNkZWZpbmUgTnVsbFN1YnN0
aXR1dGlvbiBOdWxsU3Vic3RpdHV0aW9uXzNfMgorI2RlZmluZSBOdWxsVHJhbnNsaXRlcmF0b3Ig
TnVsbFRyYW5zbGl0ZXJhdG9yXzNfMgorI2RlZmluZSBOdW1iZXJGb3JtYXQgTnVtYmVyRm9ybWF0
XzNfMgorI2RlZmluZSBOdW1iZXJGb3JtYXRGYWN0b3J5IE51bWJlckZvcm1hdEZhY3RvcnlfM18y
CisjZGVmaW5lIE51bWVyYXRvclN1YnN0aXR1dGlvbiBOdW1lcmF0b3JTdWJzdGl0dXRpb25fM18y
CisjZGVmaW5lIE9sc29uVGltZVpvbmUgT2xzb25UaW1lWm9uZV8zXzIKKyNkZWZpbmUgT3BlblR5
cGVMYXlvdXRFbmdpbmUgT3BlblR5cGVMYXlvdXRFbmdpbmVfM18yCisjZGVmaW5lIE9wZW5UeXBl
VXRpbGl0aWVzIE9wZW5UeXBlVXRpbGl0aWVzXzNfMgorI2RlZmluZSBQYWlyUG9zaXRpb25pbmdG
b3JtYXQxU3VidGFibGUgUGFpclBvc2l0aW9uaW5nRm9ybWF0MVN1YnRhYmxlXzNfMgorI2RlZmlu
ZSBQYWlyUG9zaXRpb25pbmdGb3JtYXQyU3VidGFibGUgUGFpclBvc2l0aW9uaW5nRm9ybWF0MlN1
YnRhYmxlXzNfMgorI2RlZmluZSBQYWlyUG9zaXRpb25pbmdTdWJ0YWJsZSBQYWlyUG9zaXRpb25p
bmdTdWJ0YWJsZV8zXzIKKyNkZWZpbmUgUGFyYWdyYXBoTGF5b3V0IFBhcmFncmFwaExheW91dF8z
XzIKKyNkZWZpbmUgUGFyc2VEYXRhIFBhcnNlRGF0YV8zXzIKKyNkZWZpbmUgUGFyc2VQb3NpdGlv
biBQYXJzZVBvc2l0aW9uXzNfMgorI2RlZmluZSBQcm9wZXJ0eUFsaWFzZXMgUHJvcGVydHlBbGlh
c2VzXzNfMgorI2RlZmluZSBRdWFudGlmaWVyIFF1YW50aWZpZXJfM18yCisjZGVmaW5lIFJCQklE
YXRhV3JhcHBlciBSQkJJRGF0YVdyYXBwZXJfM18yCisjZGVmaW5lIFJCQklOb2RlIFJCQklOb2Rl
XzNfMgorI2RlZmluZSBSQkJJUnVsZUJ1aWxkZXIgUkJCSVJ1bGVCdWlsZGVyXzNfMgorI2RlZmlu
ZSBSQkJJUnVsZVNjYW5uZXIgUkJCSVJ1bGVTY2FubmVyXzNfMgorI2RlZmluZSBSQkJJU2V0QnVp
bGRlciBSQkJJU2V0QnVpbGRlcl8zXzIKKyNkZWZpbmUgUkJCSVN0YXRlRGVzY3JpcHRvciBSQkJJ
U3RhdGVEZXNjcmlwdG9yXzNfMgorI2RlZmluZSBSQkJJU3ltYm9sVGFibGUgUkJCSVN5bWJvbFRh
YmxlXzNfMgorI2RlZmluZSBSQkJJU3ltYm9sVGFibGVFbnRyeSBSQkJJU3ltYm9sVGFibGVFbnRy
eV8zXzIKKyNkZWZpbmUgUkJCSVRhYmxlQnVpbGRlciBSQkJJVGFibGVCdWlsZGVyXzNfMgorI2Rl
ZmluZSBSYW5nZURlc2NyaXB0b3IgUmFuZ2VEZXNjcmlwdG9yXzNfMgorI2RlZmluZSBSZWdleENv
bXBpbGUgUmVnZXhDb21waWxlXzNfMgorI2RlZmluZSBSZWdleE1hdGNoZXIgUmVnZXhNYXRjaGVy
XzNfMgorI2RlZmluZSBSZWdleFBhdHRlcm4gUmVnZXhQYXR0ZXJuXzNfMgorI2RlZmluZSBSZWdl
eFN0YXRpY1NldHMgUmVnZXhTdGF0aWNTZXRzXzNfMgorI2RlZmluZSBSZW1vdmVUcmFuc2xpdGVy
YXRvciBSZW1vdmVUcmFuc2xpdGVyYXRvcl8zXzIKKyNkZWZpbmUgUmVwbGFjZWFibGUgUmVwbGFj
ZWFibGVfM18yCisjZGVmaW5lIFJlcGxhY2VhYmxlR2x1ZSBSZXBsYWNlYWJsZUdsdWVfM18yCisj
ZGVmaW5lIFJlc291cmNlQnVuZGxlIFJlc291cmNlQnVuZGxlXzNfMgorI2RlZmluZSBSaXNlU2V0
Q29vcmRGdW5jIFJpc2VTZXRDb29yZEZ1bmNfM18yCisjZGVmaW5lIFJ1bGVCYXNlZEJyZWFrSXRl
cmF0b3IgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcl8zXzIKKyNkZWZpbmUgUnVsZUJhc2VkQ29sbGF0
b3IgUnVsZUJhc2VkQ29sbGF0b3JfM18yCisjZGVmaW5lIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBS
dWxlQmFzZWROdW1iZXJGb3JtYXRfM18yCisjZGVmaW5lIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9y
IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yXzNfMgorI2RlZmluZSBSdWxlQ2hhcmFjdGVySXRlcmF0
b3IgUnVsZUNoYXJhY3Rlckl0ZXJhdG9yXzNfMgorI2RlZmluZSBSdWxlSGFsZiBSdWxlSGFsZl8z
XzIKKyNkZWZpbmUgUnVuQXJyYXkgUnVuQXJyYXlfM18yCisjZGVmaW5lIFNhbWVWYWx1ZVN1YnN0
aXR1dGlvbiBTYW1lVmFsdWVTdWJzdGl0dXRpb25fM18yCisjZGVmaW5lIFNjcmlwdExpc3RUYWJs
ZSBTY3JpcHRMaXN0VGFibGVfM18yCisjZGVmaW5lIFNjcmlwdFJ1bkl0ZXJhdG9yIFNjcmlwdFJ1
bkl0ZXJhdG9yXzNfMgorI2RlZmluZSBTY3JpcHRUYWJsZSBTY3JpcHRUYWJsZV8zXzIKKyNkZWZp
bmUgU2VhcmNoSXRlcmF0b3IgU2VhcmNoSXRlcmF0b3JfM18yCisjZGVmaW5lIFNlZ21lbnRBcnJh
eVByb2Nlc3NvciBTZWdtZW50QXJyYXlQcm9jZXNzb3JfM18yCisjZGVmaW5lIFNlZ21lbnRTaW5n
bGVQcm9jZXNzb3IgU2VnbWVudFNpbmdsZVByb2Nlc3Nvcl8zXzIKKyNkZWZpbmUgU2VydmljZUVu
dW1lcmF0aW9uIFNlcnZpY2VFbnVtZXJhdGlvbl8zXzIKKyNkZWZpbmUgU2VydmljZUxpc3RlbmVy
IFNlcnZpY2VMaXN0ZW5lcl8zXzIKKyNkZWZpbmUgU2ltcGxlQXJyYXlQcm9jZXNzb3IgU2ltcGxl
QXJyYXlQcm9jZXNzb3JfM18yCisjZGVmaW5lIFNpbXBsZURhdGVGb3JtYXQgU2ltcGxlRGF0ZUZv
cm1hdF8zXzIKKyNkZWZpbmUgU2ltcGxlRmFjdG9yeSBTaW1wbGVGYWN0b3J5XzNfMgorI2RlZmlu
ZSBTaW1wbGVMb2NhbGVLZXlGYWN0b3J5IFNpbXBsZUxvY2FsZUtleUZhY3RvcnlfM18yCisjZGVm
aW5lIFNpbXBsZU51bWJlckZvcm1hdEZhY3RvcnkgU2ltcGxlTnVtYmVyRm9ybWF0RmFjdG9yeV8z
XzIKKyNkZWZpbmUgU2ltcGxlVGltZVpvbmUgU2ltcGxlVGltZVpvbmVfM18yCisjZGVmaW5lIFNp
bmdsZVBvc2l0aW9uaW5nRm9ybWF0MVN1YnRhYmxlIFNpbmdsZVBvc2l0aW9uaW5nRm9ybWF0MVN1
YnRhYmxlXzNfMgorI2RlZmluZSBTaW5nbGVQb3NpdGlvbmluZ0Zvcm1hdDJTdWJ0YWJsZSBTaW5n
bGVQb3NpdGlvbmluZ0Zvcm1hdDJTdWJ0YWJsZV8zXzIKKyNkZWZpbmUgU2luZ2xlUG9zaXRpb25p
bmdTdWJ0YWJsZSBTaW5nbGVQb3NpdGlvbmluZ1N1YnRhYmxlXzNfMgorI2RlZmluZSBTaW5nbGVT
dWJzdGl0dXRpb25Gb3JtYXQxU3VidGFibGUgU2luZ2xlU3Vic3RpdHV0aW9uRm9ybWF0MVN1YnRh
YmxlXzNfMgorI2RlZmluZSBTaW5nbGVTdWJzdGl0dXRpb25Gb3JtYXQyU3VidGFibGUgU2luZ2xl
U3Vic3RpdHV0aW9uRm9ybWF0MlN1YnRhYmxlXzNfMgorI2RlZmluZSBTaW5nbGVTdWJzdGl0dXRp
b25TdWJ0YWJsZSBTaW5nbGVTdWJzdGl0dXRpb25TdWJ0YWJsZV8zXzIKKyNkZWZpbmUgU2luZ2xl
VGFibGVQcm9jZXNzb3IgU2luZ2xlVGFibGVQcm9jZXNzb3JfM18yCisjZGVmaW5lIFNwZWMgU3Bl
Y18zXzIKKyNkZWZpbmUgU3RhdGVUYWJsZVByb2Nlc3NvciBTdGF0ZVRhYmxlUHJvY2Vzc29yXzNf
MgorI2RlZmluZSBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRv
cl8zXzIKKyNkZWZpbmUgU3RyaW5nRW51bWVyYXRpb24gU3RyaW5nRW51bWVyYXRpb25fM18yCisj
ZGVmaW5lIFN0cmluZ0xvY2FsaXphdGlvbkluZm8gU3RyaW5nTG9jYWxpemF0aW9uSW5mb18zXzIK
KyNkZWZpbmUgU3RyaW5nTWF0Y2hlciBTdHJpbmdNYXRjaGVyXzNfMgorI2RlZmluZSBTdHJpbmdQ
YWlyIFN0cmluZ1BhaXJfM18yCisjZGVmaW5lIFN0cmluZ1JlcGxhY2VyIFN0cmluZ1JlcGxhY2Vy
XzNfMgorI2RlZmluZSBTdHJpbmdTZWFyY2ggU3RyaW5nU2VhcmNoXzNfMgorI2RlZmluZSBTdHls
ZVJ1bnMgU3R5bGVSdW5zXzNfMgorI2RlZmluZSBTdWJzdGl0dXRpb25Mb29rdXAgU3Vic3RpdHV0
aW9uTG9va3VwXzNfMgorI2RlZmluZSBTdWJ0YWJsZVByb2Nlc3NvciBTdWJ0YWJsZVByb2Nlc3Nv
cl8zXzIKKyNkZWZpbmUgU3VuVGltZUFuZ2xlRnVuYyBTdW5UaW1lQW5nbGVGdW5jXzNfMgorI2Rl
ZmluZSBTeW1ib2xUYWJsZSBTeW1ib2xUYWJsZV8zXzIKKyNkZWZpbmUgVFpFbnVtZXJhdGlvbiBU
WkVudW1lcmF0aW9uXzNfMgorI2RlZmluZSBUaGFpTGF5b3V0RW5naW5lIFRoYWlMYXlvdXRFbmdp
bmVfM18yCisjZGVmaW5lIFRoYWlTaGFwaW5nIFRoYWlTaGFwaW5nXzNfMgorI2RlZmluZSBUaW1l
Wm9uZSBUaW1lWm9uZV8zXzIKKyNkZWZpbmUgVGl0bGVjYXNlVHJhbnNsaXRlcmF0b3IgVGl0bGVj
YXNlVHJhbnNsaXRlcmF0b3JfM18yCisjZGVmaW5lIFRyYW5zbGl0ZXJhdGlvblJ1bGUgVHJhbnNs
aXRlcmF0aW9uUnVsZV8zXzIKKyNkZWZpbmUgVHJhbnNsaXRlcmF0aW9uUnVsZURhdGEgVHJhbnNs
aXRlcmF0aW9uUnVsZURhdGFfM18yCisjZGVmaW5lIFRyYW5zbGl0ZXJhdGlvblJ1bGVTZXQgVHJh
bnNsaXRlcmF0aW9uUnVsZVNldF8zXzIKKyNkZWZpbmUgVHJhbnNsaXRlcmF0b3IgVHJhbnNsaXRl
cmF0b3JfM18yCisjZGVmaW5lIFRyYW5zbGl0ZXJhdG9yQWxpYXMgVHJhbnNsaXRlcmF0b3JBbGlh
c18zXzIKKyNkZWZpbmUgVHJhbnNsaXRlcmF0b3JJRFBhcnNlciBUcmFuc2xpdGVyYXRvcklEUGFy
c2VyXzNfMgorI2RlZmluZSBUcmFuc2xpdGVyYXRvclBhcnNlciBUcmFuc2xpdGVyYXRvclBhcnNl
cl8zXzIKKyNkZWZpbmUgVHJhbnNsaXRlcmF0b3JSZWdpc3RyeSBUcmFuc2xpdGVyYXRvclJlZ2lz
dHJ5XzNfMgorI2RlZmluZSBUcmltbWVkQXJyYXlQcm9jZXNzb3IgVHJpbW1lZEFycmF5UHJvY2Vz
c29yXzNfMgorI2RlZmluZSBVQ2hhckNoYXJhY3Rlckl0ZXJhdG9yIFVDaGFyQ2hhcmFjdGVySXRl
cmF0b3JfM18yCisjZGVmaW5lIFVNZW1vcnkgVU1lbW9yeV8zXzIKKyNkZWZpbmUgVU9iamVjdCBV
T2JqZWN0XzNfMgorI2RlZmluZSBVU3RhY2sgVVN0YWNrXzNfMgorI2RlZmluZSBVU3RyaW5nRW51
bWVyYXRpb24gVVN0cmluZ0VudW1lcmF0aW9uXzNfMgorI2RlZmluZSBVVmVjdG9yIFVWZWN0b3Jf
M18yCisjZGVmaW5lIFVWZWN0b3IzMiBVVmVjdG9yMzJfM18yCisjZGVmaW5lIFVuZXNjYXBlVHJh
bnNsaXRlcmF0b3IgVW5lc2NhcGVUcmFuc2xpdGVyYXRvcl8zXzIKKyNkZWZpbmUgVW5pY29kZUFy
YWJpY09wZW5UeXBlTGF5b3V0RW5naW5lIFVuaWNvZGVBcmFiaWNPcGVuVHlwZUxheW91dEVuZ2lu
ZV8zXzIKKyNkZWZpbmUgVW5pY29kZUZpbHRlciBVbmljb2RlRmlsdGVyXzNfMgorI2RlZmluZSBV
bmljb2RlRnVuY3RvciBVbmljb2RlRnVuY3Rvcl8zXzIKKyNkZWZpbmUgVW5pY29kZU1hdGNoZXIg
VW5pY29kZU1hdGNoZXJfM18yCisjZGVmaW5lIFVuaWNvZGVOYW1lVHJhbnNsaXRlcmF0b3IgVW5p
Y29kZU5hbWVUcmFuc2xpdGVyYXRvcl8zXzIKKyNkZWZpbmUgVW5pY29kZVJlcGxhY2VyIFVuaWNv
ZGVSZXBsYWNlcl8zXzIKKyNkZWZpbmUgVW5pY29kZVNldCBVbmljb2RlU2V0XzNfMgorI2RlZmlu
ZSBVbmljb2RlU2V0SXRlcmF0b3IgVW5pY29kZVNldEl0ZXJhdG9yXzNfMgorI2RlZmluZSBVbmlj
b2RlU3RyaW5nIFVuaWNvZGVTdHJpbmdfM18yCisjZGVmaW5lIFVwcGVyY2FzZVRyYW5zbGl0ZXJh
dG9yIFVwcGVyY2FzZVRyYW5zbGl0ZXJhdG9yXzNfMgorI2RlZmluZSBWYWx1ZVJlY29yZCBWYWx1
ZVJlY29yZF8zXzIKKyNkZWZpbmUgVmFsdWVSdW5zIFZhbHVlUnVuc18zXzIKKyNkZWZpbmUgbG9j
YWxlX3NldF9kZWZhdWx0X2ludGVybmFsIGxvY2FsZV9zZXRfZGVmYXVsdF9pbnRlcm5hbF8zXzIK
KyNkZWZpbmUgdXBydl9wYXJzZUN1cnJlbmN5IHVwcnZfcGFyc2VDdXJyZW5jeV8zXzIKKyNkZWZp
bmUgdXRpbDY0X2Zyb21Eb3VibGUgdXRpbDY0X2Zyb21Eb3VibGVfM18yCisjZGVmaW5lIHV0aWw2
NF9wb3cgdXRpbDY0X3Bvd18zXzIKKyNkZWZpbmUgdXRpbDY0X3RvdSB1dGlsNjRfdG91XzNfMgor
I2RlZmluZSB1dGlsNjRfdXRvaSB1dGlsNjRfdXRvaV8zXzIKKworI2VuZGlmCisjZW5kaWYKKwor
I2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUv
dXN0cmluZy5oIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXN0cmluZy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYmI2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9K
YXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91c3RyaW5nLmgKQEAgLTAsMCArMSwxMzIwIEBACisv
KgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgorKiAgIENvcHlyaWdodCAoQykgMTk5OC0yMDA0LCBJbnRlcm5hdGlv
bmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIEZpbGUgdXN0cmluZy5oCisqCisq
IE1vZGlmaWNhdGlvbiBIaXN0b3J5OgorKgorKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERl
c2NyaXB0aW9uCisqICAgMTIvMDcvOTggICAgYmVydHJhbmQgICAgQ3JlYXRpb24uCisqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioKKyovCisKKyNpZm5kZWYgVVNUUklOR19ICisjZGVmaW5lIFVTVFJJTkdf
SAorCisjaW5jbHVkZSAidW5pY29kZS91dHlwZXMuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3B1dGls
LmgiCisjaW5jbHVkZSAidW5pY29kZS91aXRlci5oIgorCisvKiogU2ltcGxlIGRlY2xhcmF0aW9u
IGZvciB1X3N0clRvVGl0bGUoKSB0byBhdm9pZCBpbmNsdWRpbmcgdW5pY29kZS91YnJrLmguIEBz
dGFibGUgSUNVIDIuMSovCisjaWZuZGVmIFVCUktfVFlQRURFRl9VQlJFQUtfSVRFUkFUT1IKKyMg
ICBkZWZpbmUgVUJSS19UWVBFREVGX1VCUkVBS19JVEVSQVRPUgorICAgIHR5cGVkZWYgdm9pZCBV
QnJlYWtJdGVyYXRvcjsKKyNlbmRpZgorCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6
IFVuaWNvZGUgc3RyaW5nIGhhbmRsaW5nIGZ1bmN0aW9ucworICoKKyAqIFRoZXNlIEMgQVBJIGZ1
bmN0aW9ucyBwcm92aWRlIGdlbmVyYWwgVW5pY29kZSBzdHJpbmcgaGFuZGxpbmcuCisgKgorICog
U29tZSBmdW5jdGlvbnMgYXJlIGVxdWl2YWxlbnQgaW4gbmFtZSwgc2lnbmF0dXJlLCBhbmQgYmVo
YXZpb3IgdG8gdGhlIEFOU0kgQyA8c3RyaW5nLmg+CisgKiBmdW5jdGlvbnMuIChGb3IgZXhhbXBs
ZSwgdGhleSBkbyBub3QgY2hlY2sgZm9yIGJhZCBhcmd1bWVudHMgbGlrZSBOVUxMIHN0cmluZyBw
b2ludGVycy4pCisgKiBJbiBzb21lIGNhc2VzLCBvbmx5IHRoZSB0aHJlYWQtc2FmZSB2YXJpYW50
IG9mIHN1Y2ggYSBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBoZXJlCisgKiAoc2VlIHVfc3RydG9r
X3IoKSkuCisgKgorICogT3RoZXIgZnVuY3Rpb25zIHByb3ZpZGUgbW9yZSBVbmljb2RlLXNwZWNp
ZmljIGZ1bmN0aW9uYWxpdHkgbGlrZSBsb2NhbGUtc3BlY2lmaWMKKyAqIHVwcGVyL2xvd2VyLWNh
c2luZyBhbmQgc3RyaW5nIGNvbXBhcmlzb24gaW4gY29kZSBwb2ludCBvcmRlci4KKyAqCisgKiBJ
Q1UgdXNlcyAxNi1iaXQgVW5pY29kZSAoVVRGLTE2KSBpbiB0aGUgZm9ybSBvZiBhcnJheXMgb2Yg
VUNoYXIgY29kZSB1bml0cy4KKyAqIFVURi0xNiBlbmNvZGVzIGVhY2ggVW5pY29kZSBjb2RlIHBv
aW50IHdpdGggZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0cy4KKyAqIChUaGlzIGlz
IHRoZSBkZWZhdWx0IGZvcm0gb2YgVW5pY29kZSwgYW5kIGEgZm9yd2FyZC1jb21wYXRpYmxlIGV4
dGVuc2lvbiBvZiB0aGUgb3JpZ2luYWwsCisgKiBmaXhlZC13aWR0aCBmb3JtIHRoYXQgd2FzIGtu
b3duIGFzIFVDUy0yLiBVVEYtMTYgc3VwZXJzZWRlZCBVQ1MtMiB3aXRoIFVuaWNvZGUgMi4wCisg
KiBpbiAxOTk2LikKKyAqCisgKiBTb21lIEFQSXMgYWNjZXB0IGEgMzItYml0IFVDaGFyMzIgdmFs
dWUgZm9yIGEgc2luZ2xlIGNvZGUgcG9pbnQuCisgKgorICogSUNVIGFsc28gaGFuZGxlcyAxNi1i
aXQgVW5pY29kZSB0ZXh0IHdpdGggdW5wYWlyZWQgc3Vycm9nYXRlcy4KKyAqIFN1Y2ggdGV4dCBp
cyBub3Qgd2VsbC1mb3JtZWQgVVRGLTE2LgorICogQ29kZS1wb2ludC1yZWxhdGVkIGZ1bmN0aW9u
cyB0cmVhdCB1bnBhaXJlZCBzdXJyb2dhdGVzIGFzIHN1cnJvZ2F0ZSBjb2RlIHBvaW50cywKKyAq
IGkuZS4sIGFzIHNlcGFyYXRlIHVuaXRzLgorICoKKyAqIEFsdGhvdWdoIFVURi0xNiBpcyBhIHZh
cmlhYmxlLXdpZHRoIGVuY29kaW5nIGZvcm0gKGxpa2Ugc29tZSBsZWdhY3kgbXVsdGktYnl0ZSBl
bmNvZGluZ3MpLAorICogaXQgaXMgbXVjaCBtb3JlIGVmZmljaWVudCBldmVuIGZvciByYW5kb20g
YWNjZXNzIGJlY2F1c2UgdGhlIGNvZGUgdW5pdCB2YWx1ZXMKKyAqIGZvciBzaW5nbGUtdW5pdCBj
aGFyYWN0ZXJzIHZzLiBsZWFkIHVuaXRzIHZzLiB0cmFpbCB1bml0cyBhcmUgY29tcGxldGVseSBk
aXNqb2ludC4KKyAqIFRoaXMgbWVhbnMgdGhhdCBpdCBpcyBlYXN5IHRvIGRldGVybWluZSBjaGFy
YWN0ZXIgKGNvZGUgcG9pbnQpIGJvdW5kYXJpZXMgZnJvbQorICogcmFuZG9tIG9mZnNldHMgaW4g
dGhlIHN0cmluZy4KKyAqCisgKiBVbmljb2RlIChVVEYtMTYpIHN0cmluZyBwcm9jZXNzaW5nIGlz
IG9wdGltaXplZCBmb3IgdGhlIHNpbmdsZS11bml0IGNhc2UuCisgKiBBbHRob3VnaCBpdCBpcyBp
bXBvcnRhbnQgdG8gc3VwcG9ydCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMKKyAqICh3aGljaCB1
c2UgcGFpcnMgb2YgbGVhZC90cmFpbCBjb2RlIHVuaXRzIGNhbGxlZCAic3Vycm9nYXRlcyIpLAor
ICogdGhlaXIgb2NjdXJyZW5jZSBpcyByYXJlLiBBbG1vc3QgYWxsIGNoYXJhY3RlcnMgaW4gbW9k
ZXJuIHVzZSByZXF1aXJlIG9ubHkKKyAqIGEgc2luZ2xlIFVDaGFyIGNvZGUgdW5pdCAoaS5lLiwg
dGhlaXIgY29kZSBwb2ludCB2YWx1ZXMgYXJlIDw9MHhmZmZmKS4KKyAqCisgKiBGb3IgbW9yZSBk
ZXRhaWxzIHNlZSB0aGUgVXNlciBHdWlkZSBTdHJpbmdzIGNoYXB0ZXIgKGh0dHA6Ly9vc3Muc29m
dHdhcmUuaWJtLmNvbS9pY3UvdXNlcmd1aWRlL3N0cmluZ3MuaHRtbCkuCisgKiBGb3IgYSBkaXNj
dXNzaW9uIG9mIHRoZSBoYW5kbGluZyBvZiB1bnBhaXJlZCBzdXJyb2dhdGVzIHNlZSBhbHNvCisg
KiBKaXR0ZXJidWcgMjE0NSBhbmQgaXRzIGljdSBtYWlsaW5nIGxpc3QgcHJvcG9zYWwgb24gMjAw
Mi1zZXAtMTguCisgKi8KKworLyoqCisgKiBEZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiBhbiBhcnJh
eSBvZiBVQ2hhci4KKyAqCisgKiBAcGFyYW0gcyBUaGUgYXJyYXkgb2YgVUNoYXJzLCBOVUxMIChV
KzAwMDApIHRlcm1pbmF0ZWQuCisgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgVUNoYXJzIGluIDxj
b2RlPmNoYXJzPC9jb2RlPiwgbWludXMgdGhlIHRlcm1pbmF0b3IuCisgKiBAc3RhYmxlIElDVSAy
LjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vfc3RybGVuKGNvbnN0IFVDaGFy
ICpzKTsKKworLyoqCisgKiBDb3VudCBVbmljb2RlIGNvZGUgcG9pbnRzIGluIHRoZSBsZW5ndGgg
VUNoYXIgY29kZSB1bml0cyBvZiB0aGUgc3RyaW5nLgorICogQSBjb2RlIHBvaW50IG1heSBvY2N1
cHkgZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1bml0cy4KKyAqIENvdW50aW5nIGNvZGUg
cG9pbnRzIGludm9sdmVzIHJlYWRpbmcgYWxsIGNvZGUgdW5pdHMuCisgKgorICogVGhpcyBmdW5j
dGlvbnMgaXMgYmFzaWNhbGx5IHRoZSBpbnZlcnNlIG9mIHRoZSBVMTZfRldEX04oKSBtYWNybyAo
c2VlIHV0Zi5oKS4KKyAqCisgKiBAcGFyYW0gcyBUaGUgaW5wdXQgc3RyaW5nLgorICogQHBhcmFt
IGxlbmd0aCBUaGUgbnVtYmVyIG9mIFVDaGFyIGNvZGUgdW5pdHMgdG8gYmUgY2hlY2tlZCwgb3Ig
LTEgdG8gY291bnQgYWxsCisgKiAgICAgICAgICAgICAgIGNvZGUgcG9pbnRzIGJlZm9yZSB0aGUg
Zmlyc3QgTlVMIChVKzAwMDApLgorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRz
IGluIHRoZSBzcGVjaWZpZWQgY29kZSB1bml0cy4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitV
X1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9jb3VudENoYXIzMihjb25zdCBVQ2hhciAqcywg
aW50MzJfdCBsZW5ndGgpOworCisvKioKKyAqIENoZWNrIGlmIHRoZSBzdHJpbmcgY29udGFpbnMg
bW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRoYW4gYSBjZXJ0YWluIG51bWJlci4KKyAqIFRoaXMg
aXMgbW9yZSBlZmZpY2llbnQgdGhhbiBjb3VudGluZyBhbGwgY29kZSBwb2ludHMgaW4gdGhlIGVu
dGlyZSBzdHJpbmcKKyAqIGFuZCBjb21wYXJpbmcgdGhhdCBudW1iZXIgd2l0aCBhIHRocmVzaG9s
ZC4KKyAqIFRoaXMgZnVuY3Rpb24gbWF5IG5vdCBuZWVkIHRvIHNjYW4gdGhlIHN0cmluZyBhdCBh
bGwgaWYgdGhlIGxlbmd0aCBpcyBrbm93bgorICogKG5vdCAtMSBmb3IgTlVMLXRlcm1pbmF0aW9u
KSBhbmQgZmFsbHMgd2l0aGluIGEgY2VydGFpbiByYW5nZSwgYW5kCisgKiBuZXZlciBuZWVkcyB0
byBjb3VudCBtb3JlIHRoYW4gJ251bWJlcisxJyBjb2RlIHBvaW50cy4KKyAqIExvZ2ljYWxseSBl
cXVpdmFsZW50IHRvICh1X2NvdW50Q2hhcjMyKHMsIGxlbmd0aCk+bnVtYmVyKS4KKyAqIEEgVW5p
Y29kZSBjb2RlIHBvaW50IG1heSBvY2N1cHkgZWl0aGVyIG9uZSBvciB0d28gVUNoYXIgY29kZSB1
bml0cy4KKyAqCisgKiBAcGFyYW0gcyBUaGUgaW5wdXQgc3RyaW5nLgorICogQHBhcmFtIGxlbmd0
aCBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIG9yIC0xIGlmIGl0IGlzIE5VTC10ZXJtaW5hdGVk
LgorICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIHRoZSBzdHJp
bmcgaXMgY29tcGFyZWQgYWdhaW5zdAorICogICAgICAgICAgICAgICB0aGUgJ251bWJlcicgcGFy
YW1ldGVyLgorICogQHJldHVybiBCb29sZWFuIHZhbHVlIGZvciB3aGV0aGVyIHRoZSBzdHJpbmcg
Y29udGFpbnMgbW9yZSBVbmljb2RlIGNvZGUgcG9pbnRzCisgKiAgICAgICAgIHRoYW4gJ251bWJl
cicuIFNhbWUgYXMgKHVfY291bnRDaGFyMzIocywgbGVuZ3RoKT5udW1iZXIpLgorICogQHN0YWJs
ZSBJQ1UgMi40CisgKi8KK1VfU1RBQkxFIFVCb29sIFVfRVhQT1JUMgordV9zdHJIYXNNb3JlQ2hh
cjMyVGhhbihjb25zdCBVQ2hhciAqcywgaW50MzJfdCBsZW5ndGgsIGludDMyX3QgbnVtYmVyKTsK
KworLyoqCisgKiBDb25jYXRlbmF0ZSB0d28gdXN0cmluZ3MuICBBcHBlbmRzIGEgY29weSBvZiA8
Y29kZT5zcmM8L2NvZGU+LAorICogaW5jbHVkaW5nIHRoZSBudWxsIHRlcm1pbmF0b3IsIHRvIDxj
b2RlPmRzdDwvY29kZT4uIFRoZSBpbml0aWFsIGNvcGllZAorICogY2hhcmFjdGVyIGZyb20gPGNv
ZGU+c3JjPC9jb2RlPiBvdmVyd3JpdGVzIHRoZSBudWxsIHRlcm1pbmF0b3IgaW4gPGNvZGU+ZHN0
PC9jb2RlPi4KKyAqCisgKiBAcGFyYW0gZHN0IFRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCisgKiBA
cGFyYW0gc3JjIFRoZSBzb3VyY2Ugc3RyaW5nLgorICogQHJldHVybiBBIHBvaW50ZXIgdG8gPGNv
ZGU+ZHN0PC9jb2RlPi4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQ2hhciog
VV9FWFBPUlQyCit1X3N0cmNhdChVQ2hhciAgICAgKmRzdCwgCisgICAgY29uc3QgVUNoYXIgICAg
ICpzcmMpOworCisvKioKKyAqIENvbmNhdGVuYXRlIHR3byB1c3RyaW5ncy4gIAorICogQXBwZW5k
cyBhdCBtb3N0IDxjb2RlPm48L2NvZGU+IGNoYXJhY3RlcnMgZnJvbSA8Y29kZT5zcmM8L2NvZGU+
IHRvIDxjb2RlPmRzdDwvY29kZT4uCisgKiBBZGRzIGEgdGVybWluYXRpbmcgTlVMLgorICogSWYg
c3JjIGlzIHRvbyBsb25nLCB0aGVuIG9ubHkgPGNvZGU+bi0xPC9jb2RlPiBjaGFyYWN0ZXJzIHdp
bGwgYmUgY29waWVkCisgKiBiZWZvcmUgdGhlIHRlcm1pbmF0aW5nIE5VTC4KKyAqIElmIDxjb2Rl
Pm4mbHQ7PTA8L2NvZGU+IHRoZW4gZHN0IGlzIG5vdCBtb2RpZmllZC4KKyAqCisgKiBAcGFyYW0g
ZHN0IFRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCisgKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2Ugc3Ry
aW5nLgorICogQHBhcmFtIG4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29t
cGFyZS4KKyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4uCisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgordV9zdHJuY2F0KFVD
aGFyICAgICAqZHN0LCAKKyAgICAgY29uc3QgVUNoYXIgICAgICpzcmMsIAorICAgICBpbnQzMl90
ICAgICBuKTsKKworLyoqCisgKiBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgc3Vic3Ry
aW5nIGluIGEgc3RyaW5nLgorICogVGhlIHN1YnN0cmluZyBpcyBmb3VuZCBhdCBjb2RlIHBvaW50
IGJvdW5kYXJpZXMuCisgKiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlIHN1YnN0cmluZyBiZWdpbnMg
d2l0aAorICogYSB0cmFpbCBzdXJyb2dhdGUgb3IgZW5kcyB3aXRoIGEgbGVhZCBzdXJyb2dhdGUs
CisgKiB0aGVuIGl0IGlzIGZvdW5kIG9ubHkgaWYgdGhlc2Ugc3Vycm9nYXRlcyBzdGFuZCBhbG9u
ZSBpbiB0aGUgdGV4dC4KKyAqIE90aGVyd2lzZSwgdGhlIHN1YnN0cmluZyBlZGdlIHVuaXRzIHdv
dWxkIGJlIG1hdGNoZWQgYWdhaW5zdAorICogaGFsdmVzIG9mIHN1cnJvZ2F0ZSBwYWlycy4KKyAq
CisgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHNlYXJjaCAoTlVMLXRlcm1pbmF0ZWQpLgorICog
QHBhcmFtIHN1YnN0cmluZyBUaGUgc3Vic3RyaW5nIHRvIGZpbmQgKE5VTC10ZXJtaW5hdGVkKS4K
KyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIDxjb2RlPnN1
YnN0cmluZzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4sCisgKiAgICAgICAgIG9yIDxjb2RlPnM8
L2NvZGU+IGl0c2VsZiBpZiB0aGUgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpcyBlbXB0eSwKKyAq
ICAgICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBp
cyBub3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqCisgKiBAc2Vl
IHVfc3RycnN0cgorICogQHNlZSB1X3N0ckZpbmRGaXJzdAorICogQHNlZSB1X3N0ckZpbmRMYXN0
CisgKi8KK1VfU1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCit1X3N0cnN0cihjb25zdCBVQ2hhciAq
cywgY29uc3QgVUNoYXIgKnN1YnN0cmluZyk7CisKKy8qKgorICogRmluZCB0aGUgZmlyc3Qgb2Nj
dXJyZW5jZSBvZiBhIHN1YnN0cmluZyBpbiBhIHN0cmluZy4KKyAqIFRoZSBzdWJzdHJpbmcgaXMg
Zm91bmQgYXQgY29kZSBwb2ludCBib3VuZGFyaWVzLgorICogVGhhdCBtZWFucyB0aGF0IGlmIHRo
ZSBzdWJzdHJpbmcgYmVnaW5zIHdpdGgKKyAqIGEgdHJhaWwgc3Vycm9nYXRlIG9yIGVuZHMgd2l0
aCBhIGxlYWQgc3Vycm9nYXRlLAorICogdGhlbiBpdCBpcyBmb3VuZCBvbmx5IGlmIHRoZXNlIHN1
cnJvZ2F0ZXMgc3RhbmQgYWxvbmUgaW4gdGhlIHRleHQuCisgKiBPdGhlcndpc2UsIHRoZSBzdWJz
dHJpbmcgZWRnZSB1bml0cyB3b3VsZCBiZSBtYXRjaGVkIGFnYWluc3QKKyAqIGhhbHZlcyBvZiBz
dXJyb2dhdGUgcGFpcnMuCisgKgorICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBzZWFyY2guCisg
KiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgcyAobnVtYmVyIG9mIFVDaGFycyksIG9yIC0x
IGlmIGl0IGlzIE5VTC10ZXJtaW5hdGVkLgorICogQHBhcmFtIHN1YnN0cmluZyBUaGUgc3Vic3Ry
aW5nIHRvIGZpbmQgKE5VTC10ZXJtaW5hdGVkKS4KKyAqIEBwYXJhbSBzdWJMZW5ndGggVGhlIGxl
bmd0aCBvZiBzdWJzdHJpbmcgKG51bWJlciBvZiBVQ2hhcnMpLCBvciAtMSBpZiBpdCBpcyBOVUwt
dGVybWluYXRlZC4KKyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBmaXJzdCBvY2N1cnJlbmNl
IG9mIDxjb2RlPnN1YnN0cmluZzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4sCisgKiAgICAgICAg
IG9yIDxjb2RlPnM8L2NvZGU+IGl0c2VsZiBpZiB0aGUgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBp
cyBlbXB0eSwKKyAqICAgICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+c3Vic3Ry
aW5nPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjQK
KyAqCisgKiBAc2VlIHVfc3Ryc3RyCisgKiBAc2VlIHVfc3RyRmluZExhc3QKKyAqLworVV9TVEFC
TEUgVUNoYXIgKiBVX0VYUE9SVDIKK3Vfc3RyRmluZEZpcnN0KGNvbnN0IFVDaGFyICpzLCBpbnQz
Ml90IGxlbmd0aCwgY29uc3QgVUNoYXIgKnN1YnN0cmluZywgaW50MzJfdCBzdWJMZW5ndGgpOwor
CisvKioKKyAqIEZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBCTVAgY29kZSBwb2ludCBp
biBhIHN0cmluZy4KKyAqIEEgc3Vycm9nYXRlIGNvZGUgcG9pbnQgaXMgZm91bmQgb25seSBpZiBp
dHMgbWF0Y2ggaW4gdGhlIHRleHQgaXMgbm90CisgKiBwYXJ0IG9mIGEgc3Vycm9nYXRlIHBhaXIu
CisgKiBBIE5VTCBjaGFyYWN0ZXIgaXMgZm91bmQgYXQgdGhlIHN0cmluZyB0ZXJtaW5hdG9yLgor
ICoKKyAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChOVUwtdGVybWluYXRlZCkuCisg
KiBAcGFyYW0gYyBUaGUgQk1QIGNvZGUgcG9pbnQgdG8gZmluZC4KKyAqIEByZXR1cm4gQSBwb2lu
dGVyIHRvIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIDxjb2RlPmM8L2NvZGU+IGluIDxjb2RlPnM8
L2NvZGU+CisgKiAgICAgICAgIG9yIDxjb2RlPk5VTEw8L2NvZGU+IGlmIDxjb2RlPmM8L2NvZGU+
IGlzIG5vdCBpbiA8Y29kZT5zPC9jb2RlPi4KKyAqIEBzdGFibGUgSUNVIDIuMAorICoKKyAqIEBz
ZWUgdV9zdHJjaHIzMgorICogQHNlZSB1X21lbWNocgorICogQHNlZSB1X3N0cnN0cgorICogQHNl
ZSB1X3N0ckZpbmRGaXJzdAorICovCitVX1NUQUJMRSBVQ2hhciAqIFVfRVhQT1JUMgordV9zdHJj
aHIoY29uc3QgVUNoYXIgKnMsIFVDaGFyIGMpOworCisvKioKKyAqIEZpbmQgdGhlIGZpcnN0IG9j
Y3VycmVuY2Ugb2YgYSBjb2RlIHBvaW50IGluIGEgc3RyaW5nLgorICogQSBzdXJyb2dhdGUgY29k
ZSBwb2ludCBpcyBmb3VuZCBvbmx5IGlmIGl0cyBtYXRjaCBpbiB0aGUgdGV4dCBpcyBub3QKKyAq
IHBhcnQgb2YgYSBzdXJyb2dhdGUgcGFpci4KKyAqIEEgTlVMIGNoYXJhY3RlciBpcyBmb3VuZCBh
dCB0aGUgc3RyaW5nIHRlcm1pbmF0b3IuCisgKgorICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byBz
ZWFyY2ggKE5VTC10ZXJtaW5hdGVkKS4KKyAqIEBwYXJhbSBjIFRoZSBjb2RlIHBvaW50IHRvIGZp
bmQuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiA8Y29k
ZT5jPC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPgorICogICAgICAgICBvciA8Y29kZT5OVUxMPC9j
b2RlPiBpZiA8Y29kZT5jPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3Rh
YmxlIElDVSAyLjAKKyAqCisgKiBAc2VlIHVfc3RyY2hyCisgKiBAc2VlIHVfbWVtY2hyMzIKKyAq
IEBzZWUgdV9zdHJzdHIKKyAqIEBzZWUgdV9zdHJGaW5kRmlyc3QKKyAqLworVV9TVEFCTEUgVUNo
YXIgKiBVX0VYUE9SVDIKK3Vfc3RyY2hyMzIoY29uc3QgVUNoYXIgKnMsIFVDaGFyMzIgYyk7CisK
Ky8qKgorICogRmluZCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgc3Vic3RyaW5nIGluIGEgc3Ry
aW5nLgorICogVGhlIHN1YnN0cmluZyBpcyBmb3VuZCBhdCBjb2RlIHBvaW50IGJvdW5kYXJpZXMu
CisgKiBUaGF0IG1lYW5zIHRoYXQgaWYgdGhlIHN1YnN0cmluZyBiZWdpbnMgd2l0aAorICogYSB0
cmFpbCBzdXJyb2dhdGUgb3IgZW5kcyB3aXRoIGEgbGVhZCBzdXJyb2dhdGUsCisgKiB0aGVuIGl0
IGlzIGZvdW5kIG9ubHkgaWYgdGhlc2Ugc3Vycm9nYXRlcyBzdGFuZCBhbG9uZSBpbiB0aGUgdGV4
dC4KKyAqIE90aGVyd2lzZSwgdGhlIHN1YnN0cmluZyBlZGdlIHVuaXRzIHdvdWxkIGJlIG1hdGNo
ZWQgYWdhaW5zdAorICogaGFsdmVzIG9mIHN1cnJvZ2F0ZSBwYWlycy4KKyAqCisgKiBAcGFyYW0g
cyBUaGUgc3RyaW5nIHRvIHNlYXJjaCAoTlVMLXRlcm1pbmF0ZWQpLgorICogQHBhcmFtIHN1YnN0
cmluZyBUaGUgc3Vic3RyaW5nIHRvIGZpbmQgKE5VTC10ZXJtaW5hdGVkKS4KKyAqIEByZXR1cm4g
QSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+c3Vic3RyaW5nPC9jb2Rl
PiBpbiA8Y29kZT5zPC9jb2RlPiwKKyAqICAgICAgICAgb3IgPGNvZGU+czwvY29kZT4gaXRzZWxm
IGlmIHRoZSA8Y29kZT5zdWJzdHJpbmc8L2NvZGU+IGlzIGVtcHR5LAorICogICAgICAgICBvciA8
Y29kZT5OVUxMPC9jb2RlPiBpZiA8Y29kZT5zdWJzdHJpbmc8L2NvZGU+IGlzIG5vdCBpbiA8Y29k
ZT5zPC9jb2RlPi4KKyAqIEBzdGFibGUgSUNVIDIuNAorICoKKyAqIEBzZWUgdV9zdHJzdHIKKyAq
IEBzZWUgdV9zdHJGaW5kRmlyc3QKKyAqIEBzZWUgdV9zdHJGaW5kTGFzdAorICovCitVX1NUQUJM
RSBVQ2hhciAqIFVfRVhQT1JUMgordV9zdHJyc3RyKGNvbnN0IFVDaGFyICpzLCBjb25zdCBVQ2hh
ciAqc3Vic3RyaW5nKTsKKworLyoqCisgKiBGaW5kIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgYSBz
dWJzdHJpbmcgaW4gYSBzdHJpbmcuCisgKiBUaGUgc3Vic3RyaW5nIGlzIGZvdW5kIGF0IGNvZGUg
cG9pbnQgYm91bmRhcmllcy4KKyAqIFRoYXQgbWVhbnMgdGhhdCBpZiB0aGUgc3Vic3RyaW5nIGJl
Z2lucyB3aXRoCisgKiBhIHRyYWlsIHN1cnJvZ2F0ZSBvciBlbmRzIHdpdGggYSBsZWFkIHN1cnJv
Z2F0ZSwKKyAqIHRoZW4gaXQgaXMgZm91bmQgb25seSBpZiB0aGVzZSBzdXJyb2dhdGVzIHN0YW5k
IGFsb25lIGluIHRoZSB0ZXh0LgorICogT3RoZXJ3aXNlLCB0aGUgc3Vic3RyaW5nIGVkZ2UgdW5p
dHMgd291bGQgYmUgbWF0Y2hlZCBhZ2FpbnN0CisgKiBoYWx2ZXMgb2Ygc3Vycm9nYXRlIHBhaXJz
LgorICoKKyAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoLgorICogQHBhcmFtIGxlbmd0
aCBUaGUgbGVuZ3RoIG9mIHMgKG51bWJlciBvZiBVQ2hhcnMpLCBvciAtMSBpZiBpdCBpcyBOVUwt
dGVybWluYXRlZC4KKyAqIEBwYXJhbSBzdWJzdHJpbmcgVGhlIHN1YnN0cmluZyB0byBmaW5kIChO
VUwtdGVybWluYXRlZCkuCisgKiBAcGFyYW0gc3ViTGVuZ3RoIFRoZSBsZW5ndGggb2Ygc3Vic3Ry
aW5nIChudW1iZXIgb2YgVUNoYXJzKSwgb3IgLTEgaWYgaXQgaXMgTlVMLXRlcm1pbmF0ZWQuCisg
KiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIDxjb2RlPnN1YnN0
cmluZzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4sCisgKiAgICAgICAgIG9yIDxjb2RlPnM8L2Nv
ZGU+IGl0c2VsZiBpZiB0aGUgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpcyBlbXB0eSwKKyAqICAg
ICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+c3Vic3RyaW5nPC9jb2RlPiBpcyBu
b3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqCisgKiBAc2VlIHVf
c3Ryc3RyCisgKiBAc2VlIHVfc3RyRmluZExhc3QKKyAqLworVV9TVEFCTEUgVUNoYXIgKiBVX0VY
UE9SVDIKK3Vfc3RyRmluZExhc3QoY29uc3QgVUNoYXIgKnMsIGludDMyX3QgbGVuZ3RoLCBjb25z
dCBVQ2hhciAqc3Vic3RyaW5nLCBpbnQzMl90IHN1Ykxlbmd0aCk7CisKKy8qKgorICogRmluZCB0
aGUgbGFzdCBvY2N1cnJlbmNlIG9mIGEgQk1QIGNvZGUgcG9pbnQgaW4gYSBzdHJpbmcuCisgKiBB
IHN1cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5kIG9ubHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0
ZXh0IGlzIG5vdAorICogcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLgorICogQSBOVUwgY2hhcmFj
dGVyIGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVybWluYXRvci4KKyAqCisgKiBAcGFyYW0gcyBU
aGUgc3RyaW5nIHRvIHNlYXJjaCAoTlVMLXRlcm1pbmF0ZWQpLgorICogQHBhcmFtIGMgVGhlIEJN
UCBjb2RlIHBvaW50IHRvIGZpbmQuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgbGFzdCBv
Y2N1cnJlbmNlIG9mIDxjb2RlPmM8L2NvZGU+IGluIDxjb2RlPnM8L2NvZGU+CisgKiAgICAgICAg
IG9yIDxjb2RlPk5VTEw8L2NvZGU+IGlmIDxjb2RlPmM8L2NvZGU+IGlzIG5vdCBpbiA8Y29kZT5z
PC9jb2RlPi4KKyAqIEBzdGFibGUgSUNVIDIuNAorICoKKyAqIEBzZWUgdV9zdHJyY2hyMzIKKyAq
IEBzZWUgdV9tZW1yY2hyCisgKiBAc2VlIHVfc3RycnN0cgorICogQHNlZSB1X3N0ckZpbmRMYXN0
CisgKi8KK1VfU1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCit1X3N0cnJjaHIoY29uc3QgVUNoYXIg
KnMsIFVDaGFyIGMpOworCisvKioKKyAqIEZpbmQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNv
ZGUgcG9pbnQgaW4gYSBzdHJpbmcuCisgKiBBIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5k
IG9ubHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0ZXh0IGlzIG5vdAorICogcGFydCBvZiBhIHN1cnJv
Z2F0ZSBwYWlyLgorICogQSBOVUwgY2hhcmFjdGVyIGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVy
bWluYXRvci4KKyAqCisgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHNlYXJjaCAoTlVMLXRlcm1p
bmF0ZWQpLgorICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gZmluZC4KKyAqIEByZXR1cm4g
QSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+YzwvY29kZT4gaW4gPGNv
ZGU+czwvY29kZT4KKyAqICAgICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+Yzwv
Y29kZT4gaXMgbm90IGluIDxjb2RlPnM8L2NvZGU+LgorICogQHN0YWJsZSBJQ1UgMi40CisgKgor
ICogQHNlZSB1X3N0cnJjaHIKKyAqIEBzZWUgdV9tZW1jaHIzMgorICogQHNlZSB1X3N0cnJzdHIK
KyAqIEBzZWUgdV9zdHJGaW5kTGFzdAorICovCitVX1NUQUJMRSBVQ2hhciAqIFVfRVhQT1JUMgor
dV9zdHJyY2hyMzIoY29uc3QgVUNoYXIgKnMsIFVDaGFyMzIgYyk7CisKKy8qKgorICogTG9jYXRl
cyB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBpbiB0aGUgc3RyaW5nIDxjb2RlPnN0cmluZzwvY29kZT4g
b2YgYW55IG9mIHRoZSBjaGFyYWN0ZXJzCisgKiBpbiB0aGUgc3RyaW5nIDxjb2RlPm1hdGNoU2V0
PC9jb2RlPi4KKyAqIFdvcmtzIGp1c3QgbGlrZSBDJ3Mgc3RycGJyayBidXQgd2l0aCBVbmljb2Rl
LgorICoKKyAqIEBwYXJhbSBzdHJpbmcgVGhlIHN0cmluZyBpbiB3aGljaCB0byBzZWFyY2gsIE5V
TC10ZXJtaW5hdGVkLgorICogQHBhcmFtIG1hdGNoU2V0IEEgTlVMLXRlcm1pbmF0ZWQgc3RyaW5n
IGRlZmluaW5nIGEgc2V0IG9mIGNvZGUgcG9pbnRzCisgKiAgICAgICAgICAgICAgICAgZm9yIHdo
aWNoIHRvIHNlYXJjaCBpbiB0aGUgdGV4dCBzdHJpbmcuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0
byB0aGUgIGNoYXJhY3RlciBpbiA8Y29kZT5zdHJpbmc8L2NvZGU+IHRoYXQgbWF0Y2hlcyBvbmUg
b2YgdGhlCisgKiAgICAgICAgIGNoYXJhY3RlcnMgaW4gPGNvZGU+bWF0Y2hTZXQ8L2NvZGU+LCBv
ciBOVUxMIGlmIG5vIHN1Y2ggY2hhcmFjdGVyIGlzIGZvdW5kLgorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KK1VfU1RBQkxFIFVDaGFyICogVV9FWFBPUlQyCit1X3N0cnBicmsoY29uc3QgVUNoYXIg
KnN0cmluZywgY29uc3QgVUNoYXIgKm1hdGNoU2V0KTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSBu
dW1iZXIgb2YgY29uc2VjdXRpdmUgY2hhcmFjdGVycyBpbiA8Y29kZT5zdHJpbmc8L2NvZGU+LAor
ICogYmVnaW5uaW5nIHdpdGggdGhlIGZpcnN0LCB0aGF0IGRvIG5vdCBvY2N1ciBzb21ld2hlcmUg
aW4gPGNvZGU+bWF0Y2hTZXQ8L2NvZGU+LgorICogV29ya3MganVzdCBsaWtlIEMncyBzdHJjc3Bu
IGJ1dCB3aXRoIFVuaWNvZGUuCisgKgorICogQHBhcmFtIHN0cmluZyBUaGUgc3RyaW5nIGluIHdo
aWNoIHRvIHNlYXJjaCwgTlVMLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gbWF0Y2hTZXQgQSBOVUwt
dGVybWluYXRlZCBzdHJpbmcgZGVmaW5pbmcgYSBzZXQgb2YgY29kZSBwb2ludHMKKyAqICAgICAg
ICAgICAgICAgICBmb3Igd2hpY2ggdG8gc2VhcmNoIGluIHRoZSB0ZXh0IHN0cmluZy4KKyAqIEBy
ZXR1cm4gVGhlIG51bWJlciBvZiBpbml0aWFsIGNoYXJhY3RlcnMgaW4gPGNvZGU+c3RyaW5nPC9j
b2RlPiB0aGF0IGRvIG5vdAorICogICAgICAgICBvY2N1ciBpbiA8Y29kZT5tYXRjaFNldDwvY29k
ZT4uCisgKiBAc2VlIHVfc3Ryc3BuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUg
aW50MzJfdCBVX0VYUE9SVDIKK3Vfc3RyY3Nwbihjb25zdCBVQ2hhciAqc3RyaW5nLCBjb25zdCBV
Q2hhciAqbWF0Y2hTZXQpOworCisvKioKKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBjb25zZWN1
dGl2ZSBjaGFyYWN0ZXJzIGluIDxjb2RlPnN0cmluZzwvY29kZT4sCisgKiBiZWdpbm5pbmcgd2l0
aCB0aGUgZmlyc3QsIHRoYXQgb2NjdXIgc29tZXdoZXJlIGluIDxjb2RlPm1hdGNoU2V0PC9jb2Rl
Pi4KKyAqIFdvcmtzIGp1c3QgbGlrZSBDJ3Mgc3Ryc3BuIGJ1dCB3aXRoIFVuaWNvZGUuCisgKgor
ICogQHBhcmFtIHN0cmluZyBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHNlYXJjaCwgTlVMLXRlcm1p
bmF0ZWQuCisgKiBAcGFyYW0gbWF0Y2hTZXQgQSBOVUwtdGVybWluYXRlZCBzdHJpbmcgZGVmaW5p
bmcgYSBzZXQgb2YgY29kZSBwb2ludHMKKyAqICAgICAgICAgICAgICAgICBmb3Igd2hpY2ggdG8g
c2VhcmNoIGluIHRoZSB0ZXh0IHN0cmluZy4KKyAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBpbml0
aWFsIGNoYXJhY3RlcnMgaW4gPGNvZGU+c3RyaW5nPC9jb2RlPiB0aGF0IGRvCisgKiAgICAgICAg
IG9jY3VyIGluIDxjb2RlPm1hdGNoU2V0PC9jb2RlPi4KKyAqIEBzZWUgdV9zdHJjc3BuCisgKiBA
c3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vfc3Ryc3Bu
KGNvbnN0IFVDaGFyICpzdHJpbmcsIGNvbnN0IFVDaGFyICptYXRjaFNldCk7CisKKy8qKgorICog
VGhlIHN0cmluZyB0b2tlbml6ZXIgQVBJIGFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byBicmVhayBh
IHN0cmluZyBpbnRvCisgKiB0b2tlbnMuIFVubGlrZSBzdHJ0b2soKSwgdGhlIHNhdmVTdGF0ZSAo
dGhlIGN1cnJlbnQgcG9pbnRlciB3aXRoaW4gdGhlCisgKiBvcmlnaW5hbCBzdHJpbmcpIGlzIG1h
aW50YWluZWQgaW4gc2F2ZVN0YXRlLiBJbiB0aGUgZmlyc3QgY2FsbCwgdGhlCisgKiBhcmd1bWVu
dCBzcmMgaXMgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcuIEluIHN1YnNlcXVlbnQgY2FsbHMgdG8K
KyAqIHJldHVybiBzdWNjZXNzaXZlIHRva2VucyBvZiB0aGF0IHN0cmluZywgc3JjIG11c3QgYmUg
c3BlY2lmaWVkIGFzCisgKiBOVUxMLiBUaGUgdmFsdWUgc2F2ZVN0YXRlIGlzIHNldCBieSB0aGlz
IGZ1bmN0aW9uIHRvIG1haW50YWluIHRoZQorICogZnVuY3Rpb24ncyBwb3NpdGlvbiB3aXRoaW4g
dGhlIHN0cmluZywgYW5kIG9uIGVhY2ggc3Vic2VxdWVudCBjYWxsCisgKiB5b3UgbXVzdCBnaXZl
IHRoaXMgYXJndW1lbnQgdGhlIHNhbWUgdmFyaWFibGUuIFRoaXMgZnVuY3Rpb24gZG9lcworICog
aGFuZGxlIHN1cnJvZ2F0ZSBwYWlycy4gVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIHRoZSBz
dHJ0b2tfcigpCisgKiB0aGUgUE9TSVggVGhyZWFkcyBFeHRlbnNpb24gKDEwMDMuMWMtMTk5NSkg
dmVyc2lvbi4KKyAqCisgKiBAcGFyYW0gc3JjIFN0cmluZyBjb250YWluaW5nIHRva2VuKHMpLiBU
aGlzIHN0cmluZyB3aWxsIGJlIG1vZGlmaWVkLgorICogICAgICAgICAgICBBZnRlciB0aGUgZmly
c3QgY2FsbCB0byB1X3N0cnRva19yKCksIHRoaXMgYXJndW1lbnQgbXVzdAorICogICAgICAgICAg
ICBiZSBOVUxMIHRvIGdldCB0byB0aGUgbmV4dCB0b2tlbi4KKyAqIEBwYXJhbSBkZWxpbSBTZXQg
b2YgZGVsaW1pdGVyIGNoYXJhY3RlcnMgKFVuaWNvZGUgY29kZSBwb2ludHMpLgorICogQHBhcmFt
IHNhdmVTdGF0ZSBUaGUgY3VycmVudCBwb2ludGVyIHdpdGhpbiB0aGUgb3JpZ2luYWwgc3RyaW5n
LAorICogICAgICAgICAgICAgIHdoaWNoIGlzIHNldCBieSB0aGlzIGZ1bmN0aW9uLiBUaGUgc2F2
ZVN0YXRlCisgKiAgICAgICAgICAgICAgcGFyYW1ldGVyIHNob3VsZCB0aGUgYWRkcmVzcyBvZiBh
IGxvY2FsIHZhcmlhYmxlIG9mIHR5cGUKKyAqICAgICAgICAgICAgICBVQ2hhciAqLiAoaS5lLiBk
ZWZpbmVkICJVaGFyICpteUxvY2FsU2F2ZVN0YXRlIiBhbmQgdXNlCisgKiAgICAgICAgICAgICAg
Jm15TG9jYWxTYXZlU3RhdGUgZm9yIHRoaXMgcGFyYW1ldGVyKS4KKyAqIEByZXR1cm4gQSBwb2lu
dGVyIHRvIHRoZSBuZXh0IHRva2VuIGZvdW5kIGluIHNyYywgb3IgTlVMTAorICogICAgICAgICB3
aGVuIHRoZXJlIGFyZSBubyBtb3JlIHRva2Vucy4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitV
X1NUQUJMRSBVQ2hhciAqIFVfRVhQT1JUMgordV9zdHJ0b2tfcihVQ2hhciAgICAqc3JjLCAKKyAg
ICAgY29uc3QgVUNoYXIgICAgKmRlbGltLAorICAgICAgICAgICBVQ2hhciAgICoqc2F2ZVN0YXRl
KTsKKworLyoqCisgKiBDb21wYXJlIHR3byBVbmljb2RlIHN0cmluZ3MgZm9yIGJpdHdpc2UgZXF1
YWxpdHkgKGNvZGUgdW5pdCBvcmRlcikuCisgKgorICogQHBhcmFtIHMxIEEgc3RyaW5nIHRvIGNv
bXBhcmUuCisgKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEByZXR1cm4gMCBp
ZiA8Y29kZT5zMTwvY29kZT4gYW5kIDxjb2RlPnMyPC9jb2RlPiBhcmUgYml0d2lzZSBlcXVhbDsg
YSBuZWdhdGl2ZQorICogdmFsdWUgaWYgPGNvZGU+czE8L2NvZGU+IGlzIGJpdHdpc2UgbGVzcyB0
aGFuIDxjb2RlPnMyLDwvY29kZT47IGEgcG9zaXRpdmUKKyAqIHZhbHVlIGlmIDxjb2RlPnMxPC9j
b2RlPiBpcyBiaXR3aXNlIGdyZWF0ZXIgdGhhbiA8Y29kZT5zMjwvY29kZT4uCisgKiBAc3RhYmxl
IElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCAgVV9FWFBPUlQyCit1X3N0cmNtcChjb25z
dCBVQ2hhciAgICAgKnMxLCAKKyAgICAgICAgIGNvbnN0IFVDaGFyICAgICAqczIpOworCisvKioK
KyAqIENvbXBhcmUgdHdvIFVuaWNvZGUgc3RyaW5ncyBpbiBjb2RlIHBvaW50IG9yZGVyLgorICog
U2VlIHVfc3RyQ29tcGFyZSBmb3IgZGV0YWlscy4KKyAqCisgKiBAcGFyYW0gczEgQSBzdHJpbmcg
dG8gY29tcGFyZS4KKyAqIEBwYXJhbSBzMiBBIHN0cmluZyB0byBjb21wYXJlLgorICogQHJldHVy
biBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25kaW5nIHRvIHdoZXRo
ZXIKKyAqIHRoZSBmaXJzdCBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRvL2dyZWF0ZXIgdGhh
biB0aGUgc2Vjb25kIG9uZQorICogaW4gY29kZSBwb2ludCBvcmRlcgorICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0cmNtcENvZGVQb2ludE9y
ZGVyKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyKTsKKworLyoqCisgKiBDb21wYXJl
IHR3byBVbmljb2RlIHN0cmluZ3MgKGJpbmFyeSBvcmRlcikuCisgKgorICogVGhlIGNvbXBhcmlz
b24gY2FuIGJlIGRvbmUgaW4gY29kZSB1bml0IG9yZGVyIG9yIGluIGNvZGUgcG9pbnQgb3JkZXIu
CisgKiBUaGV5IGRpZmZlciBvbmx5IGluIFVURi0xNiB3aGVuCisgKiBjb21wYXJpbmcgc3VwcGxl
bWVudGFyeSBjb2RlIHBvaW50cyAoVSsxMDAwMC4uVSsxMGZmZmYpCisgKiB0byBCTVAgY29kZSBw
b2ludHMgbmVhciB0aGUgZW5kIG9mIHRoZSBCTVAgKGkuZS4sIFUrZTAwMC4uVStmZmZmKS4KKyAq
IEluIGNvZGUgdW5pdCBvcmRlciwgaGlnaCBCTVAgY29kZSBwb2ludHMgc29ydCBhZnRlciBzdXBw
bGVtZW50YXJ5IGNvZGUgcG9pbnRzCisgKiBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBhcyBwYWly
cyBvZiBzdXJyb2dhdGVzIHdoaWNoIGFyZSBhdCBVK2Q4MDAuLlUrZGZmZi4KKyAqCisgKiBUaGlz
IGZ1bmN0aW9ucyB3b3JrcyB3aXRoIHN0cmluZ3Mgb2YgZGlmZmVyZW50IGV4cGxpY2l0bHkgc3Bl
Y2lmaWVkIGxlbmd0aHMKKyAqIHVubGlrZSB0aGUgQU5TSSBDLWxpa2UgdV9zdHJjbXAoKSBhbmQg
dV9tZW1jbXAoKSBldGMuCisgKiBOVUwtdGVybWluYXRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSB3
aXRoIGxlbmd0aCBhcmd1bWVudHMgb2YgLTEuCisgKgorICogQHBhcmFtIHMxIEZpcnN0IHNvdXJj
ZSBzdHJpbmcuCisgKiBAcGFyYW0gbGVuZ3RoMSBMZW5ndGggb2YgZmlyc3Qgc291cmNlIHN0cmlu
Zywgb3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQuCisgKgorICogQHBhcmFtIHMyIFNlY29uZCBzb3Vy
Y2Ugc3RyaW5nLgorICogQHBhcmFtIGxlbmd0aDIgTGVuZ3RoIG9mIHNlY29uZCBzb3VyY2Ugc3Ry
aW5nLCBvciAtMSBpZiBOVUwtdGVybWluYXRlZC4KKyAqCisgKiBAcGFyYW0gY29kZVBvaW50T3Jk
ZXIgQ2hvb3NlIGJldHdlZW4gY29kZSB1bml0IG9yZGVyIChGQUxTRSkKKyAqICAgICAgICAgICAg
ICAgICAgICAgICBhbmQgY29kZSBwb2ludCBvcmRlciAoVFJVRSkuCisgKgorICogQHJldHVybiA8
MCBvciAwIG9yID4wIGFzIHVzdWFsIGZvciBzdHJpbmcgY29tcGFyaXNvbnMKKyAqCisgKiBAc3Rh
YmxlIElDVSAyLjIKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vfc3RyQ29tcGFy
ZShjb25zdCBVQ2hhciAqczEsIGludDMyX3QgbGVuZ3RoMSwKKyAgICAgICAgICAgICBjb25zdCBV
Q2hhciAqczIsIGludDMyX3QgbGVuZ3RoMiwKKyAgICAgICAgICAgICBVQm9vbCBjb2RlUG9pbnRP
cmRlcik7CisKKy8qKgorICogQ29tcGFyZSB0d28gVW5pY29kZSBzdHJpbmdzIChiaW5hcnkgb3Jk
ZXIpCisgKiBhcyBwcmVzZW50ZWQgYnkgVUNoYXJJdGVyYXRvciBvYmplY3RzLgorICogV29ya3Mg
b3RoZXJ3aXNlIGp1c3QgbGlrZSB1X3N0ckNvbXBhcmUoKS4KKyAqCisgKiBCb3RoIGl0ZXJhdG9y
cyBhcmUgcmVzZXQgdG8gdGhlaXIgc3RhcnQgcG9zaXRpb25zLgorICogV2hlbiB0aGUgZnVuY3Rp
b24gcmV0dXJucywgaXQgaXMgdW5kZWZpbmVkIHdoZXJlIHRoZSBpdGVyYXRvcnMKKyAqIGhhdmUg
c3RvcHBlZC4KKyAqCisgKiBAcGFyYW0gaXRlcjEgRmlyc3Qgc291cmNlIHN0cmluZyBpdGVyYXRv
ci4KKyAqIEBwYXJhbSBpdGVyMiBTZWNvbmQgc291cmNlIHN0cmluZyBpdGVyYXRvci4KKyAqIEBw
YXJhbSBjb2RlUG9pbnRPcmRlciBDaG9vc2UgYmV0d2VlbiBjb2RlIHVuaXQgb3JkZXIgKEZBTFNF
KQorICogICAgICAgICAgICAgICAgICAgICAgIGFuZCBjb2RlIHBvaW50IG9yZGVyIChUUlVFKS4K
KyAqCisgKiBAcmV0dXJuIDwwIG9yIDAgb3IgPjAgYXMgdXN1YWwgZm9yIHN0cmluZyBjb21wYXJp
c29ucworICoKKyAqIEBzZWUgdV9zdHJDb21wYXJlCisgKgorICogQHN0YWJsZSBJQ1UgMi42Cisg
Ki8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0ckNvbXBhcmVJdGVyKFVDaGFySXRl
cmF0b3IgKml0ZXIxLCBVQ2hhckl0ZXJhdG9yICppdGVyMiwgVUJvb2wgY29kZVBvaW50T3JkZXIp
OworCisjaWZuZGVmIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVSCisvKiBzZWUgYWxzbyB1bmlz
dHIuaCBhbmQgdW5vcm0uaCAqLworLyoqCisgKiBPcHRpb24gYml0IGZvciB1X3N0ckNhc2VDb21w
YXJlLCB1X3N0cmNhc2VjbXAsIHVub3JtX2NvbXBhcmUsIGV0YzoKKyAqIENvbXBhcmUgc3RyaW5n
cyBpbiBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1bml0IG9yZGVyLgorICogQHN0
YWJsZSBJQ1UgMi4yCisgKi8KKyNkZWZpbmUgVV9DT01QQVJFX0NPREVfUE9JTlRfT1JERVIgIDB4
ODAwMAorI2VuZGlmCisKKy8qKgorICogQ29tcGFyZSB0d28gc3RyaW5ncyBjYXNlLWluc2Vuc2l0
aXZlbHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRpbmcuCisgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8K
KyAqICAgdV9zdHJDb21wYXJlKHVfc3RyRm9sZENhc2UoczEsIG9wdGlvbnMpLAorICogICAgICAg
ICAgICAgICAgdV9zdHJGb2xkQ2FzZShzMiwgb3B0aW9ucyksCisgKiAgICAgICAgICAgICAgICAo
b3B0aW9ucyZVX0NPTVBBUkVfQ09ERV9QT0lOVF9PUkRFUikhPTApLgorICoKKyAqIFRoZSBjb21w
YXJpc29uIGNhbiBiZSBkb25lIGluIFVURi0xNiBjb2RlIHVuaXQgb3JkZXIgb3IgaW4gY29kZSBw
b2ludCBvcmRlci4KKyAqIFRoZXkgZGlmZmVyIG9ubHkgd2hlbiBjb21wYXJpbmcgc3VwcGxlbWVu
dGFyeSBjb2RlIHBvaW50cyAoVSsxMDAwMC4uVSsxMGZmZmYpCisgKiB0byBCTVAgY29kZSBwb2lu
dHMgbmVhciB0aGUgZW5kIG9mIHRoZSBCTVAgKGkuZS4sIFUrZTAwMC4uVStmZmZmKS4KKyAqIElu
IGNvZGUgdW5pdCBvcmRlciwgaGlnaCBCTVAgY29kZSBwb2ludHMgc29ydCBhZnRlciBzdXBwbGVt
ZW50YXJ5IGNvZGUgcG9pbnRzCisgKiBiZWNhdXNlIHRoZXkgYXJlIHN0b3JlZCBhcyBwYWlycyBv
ZiBzdXJyb2dhdGVzIHdoaWNoIGFyZSBhdCBVK2Q4MDAuLlUrZGZmZi4KKyAqCisgKiBUaGlzIGZ1
bmN0aW9ucyB3b3JrcyB3aXRoIHN0cmluZ3Mgb2YgZGlmZmVyZW50IGV4cGxpY2l0bHkgc3BlY2lm
aWVkIGxlbmd0aHMKKyAqIHVubGlrZSB0aGUgQU5TSSBDLWxpa2UgdV9zdHJjbXAoKSBhbmQgdV9t
ZW1jbXAoKSBldGMuCisgKiBOVUwtdGVybWluYXRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSB3aXRo
IGxlbmd0aCBhcmd1bWVudHMgb2YgLTEuCisgKgorICogQHBhcmFtIHMxIEZpcnN0IHNvdXJjZSBz
dHJpbmcuCisgKiBAcGFyYW0gbGVuZ3RoMSBMZW5ndGggb2YgZmlyc3Qgc291cmNlIHN0cmluZywg
b3IgLTEgaWYgTlVMLXRlcm1pbmF0ZWQuCisgKgorICogQHBhcmFtIHMyIFNlY29uZCBzb3VyY2Ug
c3RyaW5nLgorICogQHBhcmFtIGxlbmd0aDIgTGVuZ3RoIG9mIHNlY29uZCBzb3VyY2Ugc3RyaW5n
LCBvciAtMSBpZiBOVUwtdGVybWluYXRlZC4KKyAqCisgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBz
ZXQgb2Ygb3B0aW9uczoKKyAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBm
b3IgZGVmYXVsdCBvcHRpb25zOgorICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1bml0IG9yZGVy
IHdpdGggZGVmYXVsdCBjYXNlIGZvbGRpbmcuCisgKgorICogICAtIFVfQ09NUEFSRV9DT0RFX1BP
SU5UX09SREVSCisgKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQg
b2YgY29kZSB1bml0IG9yZGVyCisgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMp
LgorICoKKyAqICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICoKKyAqIEBwYXJh
bSBwRXJyb3JDb2RlIE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9yIGNvZGUgdmFs
dWUsCisgKiAgICAgICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVy
ZSBiZWZvcmUgdGhlIGZ1bmN0aW9uIGNhbGwuCisgKgorICogQHJldHVybiA8MCBvciAwIG9yID4w
IGFzIHVzdWFsIGZvciBzdHJpbmcgY29tcGFyaXNvbnMKKyAqCisgKiBAc3RhYmxlIElDVSAyLjIK
KyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIKK3Vfc3RyQ2FzZUNvbXBhcmUoY29uc3Qg
VUNoYXIgKnMxLCBpbnQzMl90IGxlbmd0aDEsCisgICAgICAgICAgICAgICAgIGNvbnN0IFVDaGFy
ICpzMiwgaW50MzJfdCBsZW5ndGgyLAorICAgICAgICAgICAgICAgICB1aW50MzJfdCBvcHRpb25z
LAorICAgICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisgKiBD
b21wYXJlIHR3byB1c3RyaW5ncyBmb3IgYml0d2lzZSBlcXVhbGl0eS4gCisgKiBDb21wYXJlcyBh
dCBtb3N0IDxjb2RlPm48L2NvZGU+IGNoYXJhY3RlcnMuCisgKgorICogQHBhcmFtIHVjczEgQSBz
dHJpbmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSB1Y3MyIEEgc3RyaW5nIHRvIGNvbXBhcmUuCisg
KiBAcGFyYW0gbiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21wYXJlLgor
ICogQHJldHVybiAwIGlmIDxjb2RlPnMxPC9jb2RlPiBhbmQgPGNvZGU+czI8L2NvZGU+IGFyZSBi
aXR3aXNlIGVxdWFsOyBhIG5lZ2F0aXZlCisgKiB2YWx1ZSBpZiA8Y29kZT5zMTwvY29kZT4gaXMg
Yml0d2lzZSBsZXNzIHRoYW4gPGNvZGU+czI8L2NvZGU+OyBhIHBvc2l0aXZlCisgKiB2YWx1ZSBp
ZiA8Y29kZT5zMTwvY29kZT4gaXMgYml0d2lzZSBncmVhdGVyIHRoYW4gPGNvZGU+czI8L2NvZGU+
LgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1
X3N0cm5jbXAoY29uc3QgVUNoYXIgICAgICp1Y3MxLCAKKyAgICAgY29uc3QgVUNoYXIgICAgICp1
Y3MyLCAKKyAgICAgaW50MzJfdCAgICAgbik7CisKKy8qKgorICogQ29tcGFyZSB0d28gVW5pY29k
ZSBzdHJpbmdzIGluIGNvZGUgcG9pbnQgb3JkZXIuCisgKiBUaGlzIGlzIGRpZmZlcmVudCBpbiBV
VEYtMTYgZnJvbSB1X3N0cm5jbXAoKSBpZiBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgYXJlIHBy
ZXNlbnQuCisgKiBGb3IgZGV0YWlscywgc2VlIHVfc3RyQ29tcGFyZSgpLgorICoKKyAqIEBwYXJh
bSBzMSBBIHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIHMyIEEgc3RyaW5nIHRvIGNvbXBh
cmUuCisgKiBAcGFyYW0gbiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21w
YXJlLgorICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNw
b25kaW5nIHRvIHdoZXRoZXIKKyAqIHRoZSBmaXJzdCBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFs
IHRvL2dyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICogaW4gY29kZSBwb2ludCBvcmRlcgor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0
cm5jbXBDb2RlUG9pbnRPcmRlcihjb25zdCBVQ2hhciAqczEsIGNvbnN0IFVDaGFyICpzMiwgaW50
MzJfdCBuKTsKKworLyoqCisgKiBDb21wYXJlIHR3byBzdHJpbmdzIGNhc2UtaW5zZW5zaXRpdmVs
eSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KKyAqIFRoaXMgaXMgZXF1aXZhbGVudCB0byB1X3N0
cmNtcCh1X3N0ckZvbGRDYXNlKHMxLCBvcHRpb25zKSwgdV9zdHJGb2xkQ2FzZShzMiwgb3B0aW9u
cykpLgorICoKKyAqIEBwYXJhbSBzMSBBIHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIHMy
IEEgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gb3B0aW9ucyBBIGJpdCBzZXQgb2Ygb3B0
aW9uczoKKyAqICAgLSBVX0ZPTERfQ0FTRV9ERUZBVUxUIG9yIDAgaXMgdXNlZCBmb3IgZGVmYXVs
dCBvcHRpb25zOgorICogICAgIENvbXBhcmlzb24gaW4gY29kZSB1bml0IG9yZGVyIHdpdGggZGVm
YXVsdCBjYXNlIGZvbGRpbmcuCisgKgorICogICAtIFVfQ09NUEFSRV9DT0RFX1BPSU5UX09SREVS
CisgKiAgICAgU2V0IHRvIGNob29zZSBjb2RlIHBvaW50IG9yZGVyIGluc3RlYWQgb2YgY29kZSB1
bml0IG9yZGVyCisgKiAgICAgKHNlZSB1X3N0ckNvbXBhcmUgZm9yIGRldGFpbHMpLgorICoKKyAq
ICAgLSBVX0ZPTERfQ0FTRV9FWENMVURFX1NQRUNJQUxfSQorICoKKyAqIEByZXR1cm4gQSBuZWdh
dGl2ZSwgemVybywgb3IgcG9zaXRpdmUgaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBjb21wYXJpc29u
IHJlc3VsdC4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQ
T1JUMgordV9zdHJjYXNlY21wKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyLCB1aW50
MzJfdCBvcHRpb25zKTsKKworLyoqCisgKiBDb21wYXJlIHR3byBzdHJpbmdzIGNhc2UtaW5zZW5z
aXRpdmVseSB1c2luZyBmdWxsIGNhc2UgZm9sZGluZy4KKyAqIFRoaXMgaXMgZXF1aXZhbGVudCB0
byB1X3N0cmNtcCh1X3N0ckZvbGRDYXNlKHMxLCBhdCBtb3N0IG4sIG9wdGlvbnMpLAorICogdV9z
dHJGb2xkQ2FzZShzMiwgYXQgbW9zdCBuLCBvcHRpb25zKSkuCisgKgorICogQHBhcmFtIHMxIEEg
c3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4KKyAq
IEBwYXJhbSBuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGVhY2ggc3RyaW5nIHRv
IGNhc2UtZm9sZCBhbmQgdGhlbiBjb21wYXJlLgorICogQHBhcmFtIG9wdGlvbnMgQSBiaXQgc2V0
IG9mIG9wdGlvbnM6CisgKiAgIC0gVV9GT0xEX0NBU0VfREVGQVVMVCBvciAwIGlzIHVzZWQgZm9y
IGRlZmF1bHQgb3B0aW9uczoKKyAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRlciB3
aXRoIGRlZmF1bHQgY2FzZSBmb2xkaW5nLgorICoKKyAqICAgLSBVX0NPTVBBUkVfQ09ERV9QT0lO
VF9PUkRFUgorICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFkIG9m
IGNvZGUgdW5pdCBvcmRlcgorICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRhaWxzKS4K
KyAqCisgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAqCisgKiBAcmV0dXJu
IEEgbmVnYXRpdmUsIHplcm8sIG9yIHBvc2l0aXZlIGludGVnZXIgaW5kaWNhdGluZyB0aGUgY29t
cGFyaXNvbiByZXN1bHQuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJf
dCBVX0VYUE9SVDIKK3Vfc3RybmNhc2VjbXAoY29uc3QgVUNoYXIgKnMxLCBjb25zdCBVQ2hhciAq
czIsIGludDMyX3QgbiwgdWludDMyX3Qgb3B0aW9ucyk7CisKKy8qKgorICogQ29tcGFyZSB0d28g
c3RyaW5ncyBjYXNlLWluc2Vuc2l0aXZlbHkgdXNpbmcgZnVsbCBjYXNlIGZvbGRpbmcuCisgKiBU
aGlzIGlzIGVxdWl2YWxlbnQgdG8gdV9zdHJjbXAodV9zdHJGb2xkQ2FzZShzMSwgbiwgb3B0aW9u
cyksCisgKiB1X3N0ckZvbGRDYXNlKHMyLCBuLCBvcHRpb25zKSkuCisgKgorICogQHBhcmFtIHMx
IEEgc3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4K
KyAqIEBwYXJhbSBsZW5ndGggVGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGVhY2ggc3RyaW5n
IHRvIGNhc2UtZm9sZCBhbmQgdGhlbiBjb21wYXJlLgorICogQHBhcmFtIG9wdGlvbnMgQSBiaXQg
c2V0IG9mIG9wdGlvbnM6CisgKiAgIC0gVV9GT0xEX0NBU0VfREVGQVVMVCBvciAwIGlzIHVzZWQg
Zm9yIGRlZmF1bHQgb3B0aW9uczoKKyAqICAgICBDb21wYXJpc29uIGluIGNvZGUgdW5pdCBvcmRl
ciB3aXRoIGRlZmF1bHQgY2FzZSBmb2xkaW5nLgorICoKKyAqICAgLSBVX0NPTVBBUkVfQ09ERV9Q
T0lOVF9PUkRFUgorICogICAgIFNldCB0byBjaG9vc2UgY29kZSBwb2ludCBvcmRlciBpbnN0ZWFk
IG9mIGNvZGUgdW5pdCBvcmRlcgorICogICAgIChzZWUgdV9zdHJDb21wYXJlIGZvciBkZXRhaWxz
KS4KKyAqCisgKiAgIC0gVV9GT0xEX0NBU0VfRVhDTFVERV9TUEVDSUFMX0kKKyAqCisgKiBAcmV0
dXJuIEEgbmVnYXRpdmUsIHplcm8sIG9yIHBvc2l0aXZlIGludGVnZXIgaW5kaWNhdGluZyB0aGUg
Y29tcGFyaXNvbiByZXN1bHQuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50
MzJfdCBVX0VYUE9SVDIKK3VfbWVtY2FzZWNtcChjb25zdCBVQ2hhciAqczEsIGNvbnN0IFVDaGFy
ICpzMiwgaW50MzJfdCBsZW5ndGgsIHVpbnQzMl90IG9wdGlvbnMpOworCisvKioKKyAqIENvcHkg
YSB1c3RyaW5nLiBBZGRzIGEgbnVsbCB0ZXJtaW5hdG9yLgorICoKKyAqIEBwYXJhbSBkc3QgVGhl
IGRlc3RpbmF0aW9uIHN0cmluZy4KKyAqIEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBzdHJpbmcuCisg
KiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kc3Q8L2NvZGU+LgorICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIKK3Vfc3RyY3B5KFVDaGFyICAgICAq
ZHN0LCAKKyAgICBjb25zdCBVQ2hhciAgICAgKnNyYyk7CisKKy8qKgorICogQ29weSBhIHVzdHJp
bmcuCisgKiBDb3BpZXMgYXQgbW9zdCA8Y29kZT5uPC9jb2RlPiBjaGFyYWN0ZXJzLiAgVGhlIHJl
c3VsdCB3aWxsIGJlIG51bGwgdGVybWluYXRlZAorICogaWYgdGhlIGxlbmd0aCBvZiA8Y29kZT5z
cmM8L2NvZGU+IGlzIGxlc3MgdGhhbiA8Y29kZT5uPC9jb2RlPi4KKyAqCisgKiBAcGFyYW0gZHN0
IFRoZSBkZXN0aW5hdGlvbiBzdHJpbmcuCisgKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2Ugc3RyaW5n
LgorICogQHBhcmFtIG4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29weS4K
KyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4uCisgKiBAc3RhYmxlIElD
VSAyLjAKKyAqLworVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgordV9zdHJuY3B5KFVDaGFyICAg
ICAqZHN0LCAKKyAgICAgY29uc3QgVUNoYXIgICAgICpzcmMsIAorICAgICBpbnQzMl90ICAgICBu
KTsKKworI2lmICFVQ09ORklHX05PX0NPTlZFUlNJT04KKworLyoqCisgKiBDb3B5IGEgYnl0ZSBz
dHJpbmcgZW5jb2RlZCBpbiB0aGUgZGVmYXVsdCBjb2RlcGFnZSB0byBhIHVzdHJpbmcuCisgKiBB
ZGRzIGEgbnVsbCB0ZXJtaW5hdG9yLgorICogUGVyZm9ybXMgYSBob3N0IGJ5dGUgdG8gVUNoYXIg
Y29udmVyc2lvbgorICoKKyAqIEBwYXJhbSBkc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZy4KKyAq
IEBwYXJhbSBzcmMgVGhlIHNvdXJjZSBzdHJpbmcuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byA8
Y29kZT5kc3Q8L2NvZGU+LgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFy
KiBVX0VYUE9SVDIgdV91YXN0cmNweShVQ2hhciAqZHN0LAorICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqc3JjICk7CisKKy8qKgorICogQ29weSBhIGJ5dGUgc3RyaW5nIGVuY29kZWQgaW4gdGhl
IGRlZmF1bHQgY29kZXBhZ2UgdG8gYSB1c3RyaW5nLgorICogQ29waWVzIGF0IG1vc3QgPGNvZGU+
bjwvY29kZT4gY2hhcmFjdGVycy4gIFRoZSByZXN1bHQgd2lsbCBiZSBudWxsIHRlcm1pbmF0ZWQK
KyAqIGlmIHRoZSBsZW5ndGggb2YgPGNvZGU+c3JjPC9jb2RlPiBpcyBsZXNzIHRoYW4gPGNvZGU+
bjwvY29kZT4uCisgKiBQZXJmb3JtcyBhIGhvc3QgYnl0ZSB0byBVQ2hhciBjb252ZXJzaW9uCisg
KgorICogQHBhcmFtIGRzdCBUaGUgZGVzdGluYXRpb24gc3RyaW5nLgorICogQHBhcmFtIHNyYyBU
aGUgc291cmNlIHN0cmluZy4KKyAqIEBwYXJhbSBuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFy
YWN0ZXJzIHRvIGNvcHkuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kc3Q8L2NvZGU+
LgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIgdV91
YXN0cm5jcHkoVUNoYXIgKmRzdCwKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNyYywKKyAgICAg
ICAgICAgIGludDMyX3Qgbik7CisKKy8qKgorICogQ29weSB1c3RyaW5nIHRvIGEgYnl0ZSBzdHJp
bmcgZW5jb2RlZCBpbiB0aGUgZGVmYXVsdCBjb2RlcGFnZS4KKyAqIEFkZHMgYSBudWxsIHRlcm1p
bmF0b3IuCisgKiBQZXJmb3JtcyBhIFVDaGFyIHRvIGhvc3QgYnl0ZSBjb252ZXJzaW9uCisgKgor
ICogQHBhcmFtIGRzdCBUaGUgZGVzdGluYXRpb24gc3RyaW5nLgorICogQHBhcmFtIHNyYyBUaGUg
c291cmNlIHN0cmluZy4KKyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4u
CisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgY2hhciogVV9FWFBPUlQyIHVfYXVz
dHJjcHkoY2hhciAqZHN0LAorICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYyApOworCisvKioK
KyAqIENvcHkgdXN0cmluZyB0byBhIGJ5dGUgc3RyaW5nIGVuY29kZWQgaW4gdGhlIGRlZmF1bHQg
Y29kZXBhZ2UuCisgKiBDb3BpZXMgYXQgbW9zdCA8Y29kZT5uPC9jb2RlPiBjaGFyYWN0ZXJzLiAg
VGhlIHJlc3VsdCB3aWxsIGJlIG51bGwgdGVybWluYXRlZAorICogaWYgdGhlIGxlbmd0aCBvZiA8
Y29kZT5zcmM8L2NvZGU+IGlzIGxlc3MgdGhhbiA8Y29kZT5uPC9jb2RlPi4KKyAqIFBlcmZvcm1z
IGEgVUNoYXIgdG8gaG9zdCBieXRlIGNvbnZlcnNpb24KKyAqCisgKiBAcGFyYW0gZHN0IFRoZSBk
ZXN0aW5hdGlvbiBzdHJpbmcuCisgKiBAcGFyYW0gc3JjIFRoZSBzb3VyY2Ugc3RyaW5nLgorICog
QHBhcmFtIG4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gY29weS4KKyAqIEBy
ZXR1cm4gQSBwb2ludGVyIHRvIDxjb2RlPmRzdDwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjAK
KyAqLworVV9TVEFCTEUgY2hhciogVV9FWFBPUlQyIHVfYXVzdHJuY3B5KGNoYXIgKmRzdCwKKyAg
ICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsCisgICAgICAgICAgICBpbnQzMl90IG4gKTsKKwor
I2VuZGlmCisKKy8qKgorICogU3lub255bSBmb3IgbWVtY3B5KCksIGJ1dCB3aXRoIFVDaGFycyBv
bmx5LgorICogQHBhcmFtIGRlc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZworICogQHBhcmFtIHNy
YyBUaGUgc291cmNlIHN0cmluZworICogQHBhcmFtIGNvdW50IFRoZSBudW1iZXIgb2YgY2hhcmFj
dGVycyB0byBjb3B5CisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kZXN0PC9jb2RlPgor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIKK3VfbWVt
Y3B5KFVDaGFyICpkZXN0LCBjb25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IGNvdW50KTsKKworLyoq
CisgKiBTeW5vbnltIGZvciBtZW1tb3ZlKCksIGJ1dCB3aXRoIFVDaGFycyBvbmx5LgorICogQHBh
cmFtIGRlc3QgVGhlIGRlc3RpbmF0aW9uIHN0cmluZworICogQHBhcmFtIHNyYyBUaGUgc291cmNl
IHN0cmluZworICogQHBhcmFtIGNvdW50IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBtb3Zl
CisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byA8Y29kZT5kZXN0PC9jb2RlPgorICogQHN0YWJsZSBJ
Q1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIKK3VfbWVtbW92ZShVQ2hhciAq
ZGVzdCwgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBjb3VudCk7CisKKy8qKgorICogSW5pdGlh
bGl6ZSA8Y29kZT5jb3VudDwvY29kZT4gY2hhcmFjdGVycyBvZiA8Y29kZT5kZXN0PC9jb2RlPiB0
byA8Y29kZT5jPC9jb2RlPi4KKyAqCisgKiBAcGFyYW0gZGVzdCBUaGUgZGVzdGluYXRpb24gc3Ry
aW5nLgorICogQHBhcmFtIGMgVGhlIGNoYXJhY3RlciB0byBpbml0aWFsaXplIHRoZSBzdHJpbmcu
CisgKiBAcGFyYW0gY291bnQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gc2V0
LgorICogQHJldHVybiBBIHBvaW50ZXIgdG8gPGNvZGU+ZGVzdDwvY29kZT4uCisgKiBAc3RhYmxl
IElDVSAyLjAKKyAqLworVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgordV9tZW1zZXQoVUNoYXIg
KmRlc3QsIFVDaGFyIGMsIGludDMyX3QgY291bnQpOworCisvKioKKyAqIENvbXBhcmUgdGhlIGZp
cnN0IDxjb2RlPmNvdW50PC9jb2RlPiBVQ2hhcnMgb2YgZWFjaCBidWZmZXIuCisgKgorICogQHBh
cmFtIGJ1ZjEgVGhlIGZpcnN0IHN0cmluZyB0byBjb21wYXJlLgorICogQHBhcmFtIGJ1ZjIgVGhl
IHNlY29uZCBzdHJpbmcgdG8gY29tcGFyZS4KKyAqIEBwYXJhbSBjb3VudCBUaGUgbWF4aW11bSBu
dW1iZXIgb2YgVUNoYXJzIHRvIGNvbXBhcmUuCisgKiBAcmV0dXJuIFdoZW4gYnVmMSA8IGJ1ZjIs
IGEgbmVnYXRpdmUgbnVtYmVyIGlzIHJldHVybmVkLgorICogICAgICBXaGVuIGJ1ZjEgPT0gYnVm
MiwgMCBpcyByZXR1cm5lZC4KKyAqICAgICAgV2hlbiBidWYxID4gYnVmMiwgYSBwb3NpdGl2ZSBu
dW1iZXIgaXMgcmV0dXJuZWQuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50
MzJfdCBVX0VYUE9SVDIKK3VfbWVtY21wKGNvbnN0IFVDaGFyICpidWYxLCBjb25zdCBVQ2hhciAq
YnVmMiwgaW50MzJfdCBjb3VudCk7CisKKy8qKgorICogQ29tcGFyZSB0d28gVW5pY29kZSBzdHJp
bmdzIGluIGNvZGUgcG9pbnQgb3JkZXIuCisgKiBUaGlzIGlzIGRpZmZlcmVudCBpbiBVVEYtMTYg
ZnJvbSB1X21lbWNtcCgpIGlmIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVycyBhcmUgcHJlc2VudC4K
KyAqIEZvciBkZXRhaWxzLCBzZWUgdV9zdHJDb21wYXJlKCkuCisgKgorICogQHBhcmFtIHMxIEEg
c3RyaW5nIHRvIGNvbXBhcmUuCisgKiBAcGFyYW0gczIgQSBzdHJpbmcgdG8gY29tcGFyZS4KKyAq
IEBwYXJhbSBjb3VudCBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBjb21wYXJl
LgorICogQHJldHVybiBhIG5lZ2F0aXZlL3plcm8vcG9zaXRpdmUgaW50ZWdlciBjb3JyZXNwb25k
aW5nIHRvIHdoZXRoZXIKKyAqIHRoZSBmaXJzdCBzdHJpbmcgaXMgbGVzcyB0aGFuL2VxdWFsIHRv
L2dyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG9uZQorICogaW4gY29kZSBwb2ludCBvcmRlcgorICog
QHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X21lbWNt
cENvZGVQb2ludE9yZGVyKGNvbnN0IFVDaGFyICpzMSwgY29uc3QgVUNoYXIgKnMyLCBpbnQzMl90
IGNvdW50KTsKKworLyoqCisgKiBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgQk1QIGNv
ZGUgcG9pbnQgaW4gYSBzdHJpbmcuCisgKiBBIHN1cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5k
IG9ubHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0ZXh0IGlzIG5vdAorICogcGFydCBvZiBhIHN1cnJv
Z2F0ZSBwYWlyLgorICogQSBOVUwgY2hhcmFjdGVyIGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVy
bWluYXRvci4KKyAqCisgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHNlYXJjaCAoY29udGFpbnMg
PGNvZGU+Y291bnQ8L2NvZGU+IFVDaGFycykuCisgKiBAcGFyYW0gYyBUaGUgQk1QIGNvZGUgcG9p
bnQgdG8gZmluZC4KKyAqIEBwYXJhbSBjb3VudCBUaGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisg
KiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiA8Y29kZT5jPC9j
b2RlPiBpbiA8Y29kZT5zPC9jb2RlPgorICogICAgICAgICBvciA8Y29kZT5OVUxMPC9jb2RlPiBp
ZiA8Y29kZT5jPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+czwvY29kZT4uCisgKiBAc3RhYmxlIElD
VSAyLjAKKyAqCisgKiBAc2VlIHVfc3RyY2hyCisgKiBAc2VlIHVfbWVtY2hyMzIKKyAqIEBzZWUg
dV9zdHJGaW5kRmlyc3QKKyAqLworVV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMgordV9tZW1jaHIo
Y29uc3QgVUNoYXIgKnMsIFVDaGFyIGMsIGludDMyX3QgY291bnQpOworCisvKioKKyAqIEZpbmQg
dGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBjb2RlIHBvaW50IGluIGEgc3RyaW5nLgorICogQSBz
dXJyb2dhdGUgY29kZSBwb2ludCBpcyBmb3VuZCBvbmx5IGlmIGl0cyBtYXRjaCBpbiB0aGUgdGV4
dCBpcyBub3QKKyAqIHBhcnQgb2YgYSBzdXJyb2dhdGUgcGFpci4KKyAqIEEgTlVMIGNoYXJhY3Rl
ciBpcyBmb3VuZCBhdCB0aGUgc3RyaW5nIHRlcm1pbmF0b3IuCisgKgorICogQHBhcmFtIHMgVGhl
IHN0cmluZyB0byBzZWFyY2ggKGNvbnRhaW5zIDxjb2RlPmNvdW50PC9jb2RlPiBVQ2hhcnMpLgor
ICogQHBhcmFtIGMgVGhlIGNvZGUgcG9pbnQgdG8gZmluZC4KKyAqIEBwYXJhbSBjb3VudCBUaGUg
bGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisgKiBAcmV0dXJuIEEgcG9pbnRlciB0byB0aGUgZmlyc3Qg
b2NjdXJyZW5jZSBvZiA8Y29kZT5jPC9jb2RlPiBpbiA8Y29kZT5zPC9jb2RlPgorICogICAgICAg
ICBvciA8Y29kZT5OVUxMPC9jb2RlPiBpZiA8Y29kZT5jPC9jb2RlPiBpcyBub3QgaW4gPGNvZGU+
czwvY29kZT4uCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqCisgKiBAc2VlIHVfc3RyY2hyMzIKKyAq
IEBzZWUgdV9tZW1jaHIKKyAqIEBzZWUgdV9zdHJGaW5kRmlyc3QKKyAqLworVV9TVEFCTEUgVUNo
YXIqIFVfRVhQT1JUMgordV9tZW1jaHIzMihjb25zdCBVQ2hhciAqcywgVUNoYXIzMiBjLCBpbnQz
Ml90IGNvdW50KTsKKworLyoqCisgKiBGaW5kIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgYSBCTVAg
Y29kZSBwb2ludCBpbiBhIHN0cmluZy4KKyAqIEEgc3Vycm9nYXRlIGNvZGUgcG9pbnQgaXMgZm91
bmQgb25seSBpZiBpdHMgbWF0Y2ggaW4gdGhlIHRleHQgaXMgbm90CisgKiBwYXJ0IG9mIGEgc3Vy
cm9nYXRlIHBhaXIuCisgKiBBIE5VTCBjaGFyYWN0ZXIgaXMgZm91bmQgYXQgdGhlIHN0cmluZyB0
ZXJtaW5hdG9yLgorICoKKyAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gc2VhcmNoIChjb250YWlu
cyA8Y29kZT5jb3VudDwvY29kZT4gVUNoYXJzKS4KKyAqIEBwYXJhbSBjIFRoZSBCTVAgY29kZSBw
b2ludCB0byBmaW5kLgorICogQHBhcmFtIGNvdW50IFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4K
KyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgPGNvZGU+Yzwv
Y29kZT4gaW4gPGNvZGU+czwvY29kZT4KKyAqICAgICAgICAgb3IgPGNvZGU+TlVMTDwvY29kZT4g
aWYgPGNvZGU+YzwvY29kZT4gaXMgbm90IGluIDxjb2RlPnM8L2NvZGU+LgorICogQHN0YWJsZSBJ
Q1UgMi40CisgKgorICogQHNlZSB1X3N0cnJjaHIKKyAqIEBzZWUgdV9tZW1yY2hyMzIKKyAqIEBz
ZWUgdV9zdHJGaW5kTGFzdAorICovCitVX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQyCit1X21lbXJj
aHIoY29uc3QgVUNoYXIgKnMsIFVDaGFyIGMsIGludDMyX3QgY291bnQpOworCisvKioKKyAqIEZp
bmQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNvZGUgcG9pbnQgaW4gYSBzdHJpbmcuCisgKiBB
IHN1cnJvZ2F0ZSBjb2RlIHBvaW50IGlzIGZvdW5kIG9ubHkgaWYgaXRzIG1hdGNoIGluIHRoZSB0
ZXh0IGlzIG5vdAorICogcGFydCBvZiBhIHN1cnJvZ2F0ZSBwYWlyLgorICogQSBOVUwgY2hhcmFj
dGVyIGlzIGZvdW5kIGF0IHRoZSBzdHJpbmcgdGVybWluYXRvci4KKyAqCisgKiBAcGFyYW0gcyBU
aGUgc3RyaW5nIHRvIHNlYXJjaCAoY29udGFpbnMgPGNvZGU+Y291bnQ8L2NvZGU+IFVDaGFycyku
CisgKiBAcGFyYW0gYyBUaGUgY29kZSBwb2ludCB0byBmaW5kLgorICogQHBhcmFtIGNvdW50IFRo
ZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KKyAqIEByZXR1cm4gQSBwb2ludGVyIHRvIHRoZSBsYXN0
IG9jY3VycmVuY2Ugb2YgPGNvZGU+YzwvY29kZT4gaW4gPGNvZGU+czwvY29kZT4KKyAqICAgICAg
ICAgb3IgPGNvZGU+TlVMTDwvY29kZT4gaWYgPGNvZGU+YzwvY29kZT4gaXMgbm90IGluIDxjb2Rl
PnM8L2NvZGU+LgorICogQHN0YWJsZSBJQ1UgMi40CisgKgorICogQHNlZSB1X3N0cnJjaHIzMgor
ICogQHNlZSB1X21lbXJjaHIKKyAqIEBzZWUgdV9zdHJGaW5kTGFzdAorICovCitVX1NUQUJMRSBV
Q2hhciogVV9FWFBPUlQyCit1X21lbXJjaHIzMihjb25zdCBVQ2hhciAqcywgVUNoYXIzMiBjLCBp
bnQzMl90IGNvdW50KTsKKworLyoqCisgKiBVbmljb2RlIFN0cmluZyBsaXRlcmFscyBpbiBDLgor
ICogV2UgbmVlZCBvbmUgbWFjcm8gdG8gZGVjbGFyZSBhIHZhcmlhYmxlIGZvciB0aGUgc3RyaW5n
CisgKiBhbmQgdG8gc3RhdGljYWxseSBwcmVpbml0aWFsaXplIGl0IGlmIHBvc3NpYmxlLAorICog
YW5kIGEgc2Vjb25kIG1hY3JvIHRvIGR5bmFtaWNhbGx5IGludGlhbGl6ZSBzdWNoIGEgc3RyaW5n
IHZhcmlhYmxlIGlmIG5lY2Vzc2FyeS4KKyAqCisgKiBUaGUgbWFjcm9zIGFyZSBkZWZpbmVkIGZv
ciBtYXhpbXVtIHBlcmZvcm1hbmNlLgorICogVGhleSB3b3JrIG9ubHkgZm9yIHN0cmluZ3MgdGhh
dCBjb250YWluICJpbnZhcmlhbnQgY2hhcmFjdGVycyIsIGkuZS4sCisgKiBvbmx5IGxhdGluIGxl
dHRlcnMsIGRpZ2l0cywgYW5kIHNvbWUgcHVuY3R1YXRpb24uCisgKiBTZWUgdXR5cGVzLmggZm9y
IGRldGFpbHMuCisgKgorICogQSBwYWlyIG9mIG1hY3JvcyBmb3IgYSBzaW5nbGUgc3RyaW5nIG11
c3QgYmUgdXNlZCB3aXRoIHRoZSBzYW1lCisgKiBwYXJhbWV0ZXJzLgorICogVGhlIHN0cmluZyBw
YXJhbWV0ZXIgbXVzdCBiZSBhIEMgc3RyaW5nIGxpdGVyYWwuCisgKiBUaGUgbGVuZ3RoIG9mIHRo
ZSBzdHJpbmcsIG5vdCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nCisgKiA8Y29kZT5OVUw8L2Nv
ZGU+LCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGNvbnN0YW50LgorICogVGhlIFVfU1RSSU5HX0RF
Q0wgbWFjcm8gc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIGZvciBvbmUKKyAqIHN1Y2gg
c3RyaW5nIHZhcmlhYmxlIGJlZm9yZSBpdCBpcyB1c2VkLgorICoKKyAqIFVzYWdlOgorICogPHBy
ZT4KKyAqICYjMzI7ICAgVV9TVFJJTkdfREVDTCh1c3RyaW5nVmFyMSwgIlF1aWNrLUZveCAyIiwg
MTEpOworICogJiMzMjsgICBVX1NUUklOR19ERUNMKHVzdHJpbmdWYXIyLCAianVtcHMgNSUiLCA4
KTsKKyAqICYjMzI7ICAgc3RhdGljIFVCb29sIGRpZEluaXQ9RkFMU0U7CisgKiAmIzMyOworICog
JiMzMjsgICBpbnQzMl90IGZ1bmN0aW9uKCkgeworICogJiMzMjsgICAgICAgaWYoIWRpZEluaXQp
IHsKKyAqICYjMzI7ICAgICAgICAgICBVX1NUUklOR19JTklUKHVzdHJpbmdWYXIxLCAiUXVpY2st
Rm94IDIiLCAxMSk7CisgKiAmIzMyOyAgICAgICAgICAgVV9TVFJJTkdfSU5JVCh1c3RyaW5nVmFy
MiwgImp1bXBzIDUlIiwgOCk7CisgKiAmIzMyOyAgICAgICAgICAgZGlkSW5pdD1UUlVFOworICog
JiMzMjsgICAgICAgfQorICogJiMzMjsgICAgICAgcmV0dXJuIHVfc3RyY21wKHVzdHJpbmdWYXIx
LCB1c3RyaW5nVmFyMik7CisgKiAmIzMyOyAgIH0KKyAqIDwvcHJlPgorICogQHN0YWJsZSBJQ1Ug
Mi4wCisgKi8KKyNpZiBVX1NJWkVPRl9XQ0hBUl9UPT1VX1NJWkVPRl9VQ0hBUiAmJiBVX0NIQVJT
RVRfRkFNSUxZPT1VX0FTQ0lJX0ZBTUlMWQorIyAgIGRlZmluZSBVX1NUUklOR19ERUNMKHZhciwg
Y3MsIGxlbmd0aCkgc3RhdGljIGNvbnN0IHdjaGFyX3QgdmFyWyhsZW5ndGgpKzFdPXsgTCAjIyBj
cyB9CisgICAgLyoqQHN0YWJsZSBJQ1UgMi4wICovCisjICAgZGVmaW5lIFVfU1RSSU5HX0lOSVQo
dmFyLCBjcywgbGVuZ3RoKQorI2VsaWYgVV9TSVpFT0ZfVUNIQVI9PTEgJiYgVV9DSEFSU0VUX0ZB
TUlMWT09VV9BU0NJSV9GQU1JTFkKKyMgICBkZWZpbmUgVV9TVFJJTkdfREVDTCh2YXIsIGNzLCBs
ZW5ndGgpIHN0YXRpYyBjb25zdCBVQ2hhciB2YXJbKGxlbmd0aCkrMV09eyAoY29uc3QgVUNoYXIg
KiljcyB9CisgICAgLyoqQHN0YWJsZSBJQ1UgMi4wICovCisjICAgZGVmaW5lIFVfU1RSSU5HX0lO
SVQodmFyLCBjcywgbGVuZ3RoKQorI2Vsc2UKKyMgICBkZWZpbmUgVV9TVFJJTkdfREVDTCh2YXIs
IGNzLCBsZW5ndGgpIHN0YXRpYyBVQ2hhciB2YXJbKGxlbmd0aCkrMV0KKyAgICAvKipAc3RhYmxl
IElDVSAyLjAgKi8KKyMgICBkZWZpbmUgVV9TVFJJTkdfSU5JVCh2YXIsIGNzLCBsZW5ndGgpIHVf
Y2hhcnNUb1VDaGFycyhjcywgdmFyLCBsZW5ndGgrMSkKKyNlbmRpZgorCisvKioKKyAqIFVuZXNj
YXBlIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgYW5kIHdyaXRlIHRoZSByZXN1bHRpbmcKKyAqIFVu
aWNvZGUgY2hhcmFjdGVycyB0byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgVGhlIGZvbGxvd2lu
ZyBlc2NhcGUKKyAqIHNlcXVlbmNlcyBhcmUgcmVjb2duaXplZDoKKyAqCisgKiBcXHVoaGhoICAg
ICAgIDQgaGV4IGRpZ2l0czsgaCBpbiBbMC05QS1GYS1mXQorICogXFxVaGhoaGhoaGggICA4IGhl
eCBkaWdpdHMKKyAqIFxceGhoICAgICAgICAgMS0yIGhleCBkaWdpdHMKKyAqIFxceHtoLi4ufSAg
ICAgMS04IGhleCBkaWdpdHMKKyAqIFxcb29vICAgICAgICAgMS0zIG9jdGFsIGRpZ2l0czsgbyBp
biBbMC03XQorICogXFxjWCAgICAgICAgICBjb250cm9sLVg7IFggaXMgbWFza2VkIHdpdGggMHgx
RgorICoKKyAqIGFzIHdlbGwgYXMgdGhlIHN0YW5kYXJkIEFOU0kgQyBlc2NhcGVzOgorICoKKyAq
IFxcYSA9PiBVKzAwMDcsIFxcYiA9PiBVKzAwMDgsIFxcdCA9PiBVKzAwMDksIFxcbiA9PiBVKzAw
MEEsCisgKiBcXHYgPT4gVSswMDBCLCBcXGYgPT4gVSswMDBDLCBcXHIgPT4gVSswMDBELCBcXGUg
PT4gVSswMDFCLAorICogXFwiID0+IFUrMDAyMiwgXFwnID0+IFUrMDAyNywgXFw/ID0+IFUrMDAz
RiwgXFxcXCA9PiBVKzAwNUMKKyAqCisgKiBBbnl0aGluZyBlbHNlIGZvbGxvd2luZyBhIGJhY2tz
bGFzaCBpcyBnZW5lcmljYWxseSBlc2NhcGVkLiAgRm9yCisgKiBleGFtcGxlLCAiW2FcXC16XSIg
cmV0dXJucyAiW2Etel0iLgorICoKKyAqIElmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBpbGwtZm9y
bWVkLCB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5CisgKiBzdHJpbmcuICBBbiBleGFtcGxl
IG9mIGFuIGlsbC1mb3JtZWQgc2VxdWVuY2UgaXMgIlxcdSIgZm9sbG93ZWQgYnkKKyAqIGZld2Vy
IHRoYW4gNCBoZXggZGlnaXRzLgorICoKKyAqIFRoZSBhYm92ZSBjaGFyYWN0ZXJzIGFyZSByZWNv
Z25pemVkIGluIHRoZSBjb21waWxlcidzIGNvZGVwYWdlLAorICogdGhhdCBpcywgdGhleSBhcmUg
Y29kZWQgYXMgJ3UnLCAnXFwnLCBldGMuICBDaGFyYWN0ZXJzIHRoYXQgYXJlCisgKiBub3QgcGFy
dHMgb2YgZXNjYXBlIHNlcXVlbmNlcyBhcmUgY29udmVydGVkIHVzaW5nIHVfY2hhcnNUb1VDaGFy
cygpLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBVbmljb2RlU3RyaW5nOjp1
bmVzY2FwZSgpIGJ1dCBub3QKKyAqIGlkZW50aWNhbCB0byBpdC4gIFRoZSBsYXR0ZXIgdGFrZXMg
YSBzb3VyY2UgVW5pY29kZVN0cmluZywgc28gaXQKKyAqIGRvZXMgZXNjYXBlIHJlY29nbml0aW9u
IGJ1dCBubyBjb252ZXJzaW9uLgorICoKKyAqIEBwYXJhbSBzcmMgYSB6ZXJvLXRlcm1pbmF0ZWQg
c3RyaW5nIG9mIGludmFyaWFudCBjaGFyYWN0ZXJzCisgKiBAcGFyYW0gZGVzdCBwb2ludGVyIHRv
IGJ1ZmZlciB0byByZWNlaXZlIGNvbnZlcnRlZCBhbmQgdW5lc2NhcGVkCisgKiB0ZXh0IGFuZCwg
aWYgdGhlcmUgaXMgcm9vbSwgYSB6ZXJvIHRlcm1pbmF0b3IuICBNYXkgYmUgTlVMTCBmb3IKKyAq
IHByZWZsaWdodGluZywgaW4gd2hpY2ggY2FzZSBubyBVQ2hhcnMgd2lsbCBiZSB3cml0dGVuLCBi
dXQgdGhlCisgKiByZXR1cm4gdmFsdWUgd2lsbCBzdGlsbCBiZSB2YWxpZC4gIE9uIGVycm9yLCBh
biBlbXB0eSBzdHJpbmcgaXMKKyAqIHN0b3JlZCBoZXJlIChpZiBwb3NzaWJsZSkuCisgKiBAcGFy
YW0gZGVzdENhcGFjaXR5IHRoZSBudW1iZXIgb2YgVUNoYXJzIHRoYXQgbWF5IGJlIHdyaXR0ZW4g
YXQKKyAqIGRlc3QuICBJZ25vcmVkIGlmIGRlc3QgPT0gTlVMTC4KKyAqIEByZXR1cm4gdGhlIGxl
bmd0aCBvZiB1bmVzY2FwZWQgc3RyaW5nLgorICogQHNlZSB1X3VuZXNjYXBlQXQKKyAqIEBzZWUg
VW5pY29kZVN0cmluZyN1bmVzY2FwZSgpCisgKiBAc2VlIFVuaWNvZGVTdHJpbmcjdW5lc2NhcGVB
dCgpCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50MzJfdCBVX0VYUE9SVDIK
K3VfdW5lc2NhcGUoY29uc3QgY2hhciAqc3JjLAorICAgICAgICAgICBVQ2hhciAqZGVzdCwgaW50
MzJfdCBkZXN0Q2FwYWNpdHkpOworCitVX0NERUNMX0JFR0lOCisvKioKKyAqIENhbGxiYWNrIGZ1
bmN0aW9uIGZvciB1X3VuZXNjYXBlQXQoKSB0aGF0IHJldHVybnMgYSBjaGFyYWN0ZXIgb2YKKyAq
IHRoZSBzb3VyY2UgdGV4dCBnaXZlbiBhbiBvZmZzZXQgYW5kIGEgY29udGV4dCBwb2ludGVyLiAg
VGhlIGNvbnRleHQKKyAqIHBvaW50ZXIgd2lsbCBiZSB3aGF0ZXZlciBpcyBwYXNzZWQgaW50byB1
X3VuZXNjYXBlQXQoKS4KKyAqCisgKiBAcGFyYW0gb2Zmc2V0IHBvaW50ZXIgdG8gdGhlIG9mZnNl
dCB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHVfdW5lc2NhcGVBdCgpLgorICogQHBhcmFtIGNvbnRl
eHQgYW4gb3BhcXVlIHBvaW50ZXIgcGFzc2VkIGRpcmVjdGx5IGludG8gdV91bmVzY2FwZUF0KCkK
KyAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciByZXByZXNlbnRlZCBieSB0aGUgZXNjYXBlIHNlcXVl
bmNlIGF0CisgKiBvZmZzZXQKKyAqIEBzZWUgdV91bmVzY2FwZUF0CisgKiBAc3RhYmxlIElDVSAy
LjAKKyAqLwordHlwZWRlZiBVQ2hhciAoVV9DQUxMQ09OViAqVU5FU0NBUEVfQ0hBUl9BVCkoaW50
MzJfdCBvZmZzZXQsIHZvaWQgKmNvbnRleHQpOworVV9DREVDTF9FTkQKKworLyoqCisgKiBVbmVz
Y2FwZSBhIHNpbmdsZSBzZXF1ZW5jZS4gVGhlIGNoYXJhY3RlciBhdCBvZmZzZXQtMSBpcyBhc3N1
bWVkCisgKiAod2l0aG91dCBjaGVja2luZykgdG8gYmUgYSBiYWNrc2xhc2guICBUaGlzIG1ldGhv
ZCB0YWtlcyBhIGNhbGxiYWNrCisgKiBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5z
IHRoZSBVQ2hhciBhdCBhIGdpdmVuIG9mZnNldC4gIEJ5CisgKiB2YXJ5aW5nIHRoaXMgY2FsbGJh
Y2ssIElDVSBmdW5jdGlvbnMgYXJlIGFibGUgdG8gdW5lc2NhcGUgY2hhcioKKyAqIHN0cmluZ3Ms
IFVuaWNvZGVTdHJpbmcgb2JqZWN0cywgYW5kIFVGSUxFIHBvaW50ZXJzLgorICoKKyAqIElmIG9m
ZnNldCBpcyBvdXQgb2YgcmFuZ2UsIG9yIGlmIHRoZSBlc2NhcGUgc2VxdWVuY2UgaXMgaWxsLWZv
cm1lZCwKKyAqIChVQ2hhcjMyKTB4RkZGRkZGRkYgaXMgcmV0dXJuZWQuICBTZWUgZG9jdW1lbnRh
dGlvbiBvZiB1X3VuZXNjYXBlKCkKKyAqIGZvciBhIGxpc3Qgb2YgcmVjb2duaXplZCBzZXF1ZW5j
ZXMuCisgKgorICogQHBhcmFtIGNoYXJBdCBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHJldHVybnMg
YSBVQ2hhciBvZiB0aGUgc291cmNlCisgKiB0ZXh0IGdpdmVuIGFuIG9mZnNldCBhbmQgYSBjb250
ZXh0IHBvaW50ZXIuCisgKiBAcGFyYW0gb2Zmc2V0IHBvaW50ZXIgdG8gdGhlIG9mZnNldCB0aGF0
IHdpbGwgYmUgcGFzc2VkIHRvIGNoYXJBdC4KKyAqIFRoZSBvZmZzZXQgdmFsdWUgd2lsbCBiZSB1
cGRhdGVkIHVwb24gcmV0dXJuIHRvIHBvaW50IGFmdGVyIHRoZQorICogbGFzdCBwYXJzZWQgY2hh
cmFjdGVyIG9mIHRoZSBlc2NhcGUgc2VxdWVuY2UuICBPbiBlcnJvciB0aGUgb2Zmc2V0CisgKiBp
cyB1bmNoYW5nZWQuCisgKiBAcGFyYW0gbGVuZ3RoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBp
biB0aGUgc291cmNlIHRleHQuICBUaGUKKyAqIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBzb3VyY2Ug
dGV4dCBpcyBjb25zaWRlcmVkIHRvIGJlIGF0IG9mZnNldAorICogbGVuZ3RoLTEuCisgKiBAcGFy
YW0gY29udGV4dCBhbiBvcGFxdWUgcG9pbnRlciBwYXNzZWQgZGlyZWN0bHkgaW50byBjaGFyQXQu
CisgKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGVzY2FwZSBzZXF1
ZW5jZSBhdAorICogb2Zmc2V0LCBvciAoVUNoYXIzMikweEZGRkZGRkZGIG9uIGVycm9yLgorICog
QHNlZSB1X3VuZXNjYXBlKCkKKyAqIEBzZWUgVW5pY29kZVN0cmluZyN1bmVzY2FwZSgpCisgKiBA
c2VlIFVuaWNvZGVTdHJpbmcjdW5lc2NhcGVBdCgpCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLwor
VV9TVEFCTEUgVUNoYXIzMiBVX0VYUE9SVDIKK3VfdW5lc2NhcGVBdChVTkVTQ0FQRV9DSEFSX0FU
IGNoYXJBdCwKKyAgICAgICAgICAgICBpbnQzMl90ICpvZmZzZXQsCisgICAgICAgICAgICAgaW50
MzJfdCBsZW5ndGgsCisgICAgICAgICAgICAgdm9pZCAqY29udGV4dCk7CisKKy8qKgorICogVXBw
ZXJjYXNlIHRoZSBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLgorICogQ2FzaW5nIGlzIGxvY2FsZS1k
ZXBlbmRlbnQgYW5kIGNvbnRleHQtc2Vuc2l0aXZlLgorICogVGhlIHJlc3VsdCBtYXkgYmUgbG9u
Z2VyIG9yIHNob3J0ZXIgdGhhbiB0aGUgb3JpZ2luYWwuCisgKiBUaGUgc291cmNlIHN0cmluZyBh
bmQgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciBhcmUgYWxsb3dlZCB0byBvdmVybGFwLgorICoKKyAq
IEBwYXJhbSBkZXN0ICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQgc3RyaW5nLiBUaGUgcmVz
dWx0IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCisgKiAgICAgICAgICAgICAgICAgIHRoZSBi
dWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgorICogQHBhcmFtIGRlc3RDYXBhY2l0eSBUaGUgc2l6ZSBv
ZiB0aGUgYnVmZmVyIChudW1iZXIgb2YgVUNoYXJzKS4gSWYgaXQgaXMgMCwgdGhlbgorICogICAg
ICAgICAgICAgICAgICBkZXN0IG1heSBiZSBOVUxMIGFuZCB0aGUgZnVuY3Rpb24gd2lsbCBvbmx5
IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQKKyAqICAgICAgICAgICAgICAgICAgd2l0
aG91dCB3cml0aW5nIGFueSBvZiB0aGUgcmVzdWx0IHN0cmluZy4KKyAqIEBwYXJhbSBzcmMgICAg
ICAgVGhlIG9yaWdpbmFsIHN0cmluZworICogQHBhcmFtIHNyY0xlbmd0aCBUaGUgbGVuZ3RoIG9m
IHRoZSBvcmlnaW5hbCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBtdXN0IGJlIHplcm8tdGVybWlu
YXRlZC4KKyAqIEBwYXJhbSBsb2NhbGUgICAgVGhlIGxvY2FsZSB0byBjb25zaWRlciwgb3IgIiIg
Zm9yIHRoZSByb290IGxvY2FsZSBvciBOVUxMIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUuCisgKiBA
cGFyYW0gcEVycm9yQ29kZSBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2Rl
IHZhbHVlLAorICogICAgICAgICAgICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZh
aWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgorICogQHJldHVybiBUaGUgbGVuZ3RoIG9m
IHRoZSByZXN1bHQgc3RyaW5nLiBJdCBtYXkgYmUgZ3JlYXRlciB0aGFuIGRlc3RDYXBhY2l0eS4g
SW4gdGhhdCBjYXNlLAorICogICAgICAgICBvbmx5IHNvbWUgb2YgdGhlIHJlc3VsdCB3YXMgd3Jp
dHRlbiB0byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8K
K1VfU1RBQkxFIGludDMyX3QgVV9FWFBPUlQyCit1X3N0clRvVXBwZXIoVUNoYXIgKmRlc3QsIGlu
dDMyX3QgZGVzdENhcGFjaXR5LAorICAgICAgICAgICAgIGNvbnN0IFVDaGFyICpzcmMsIGludDMy
X3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxvY2FsZSwKKyAgICAgICAg
ICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisgKiBMb3dlcmNhc2UgdGhlIGNo
YXJhY3RlcnMgaW4gYSBzdHJpbmcuCisgKiBDYXNpbmcgaXMgbG9jYWxlLWRlcGVuZGVudCBhbmQg
Y29udGV4dC1zZW5zaXRpdmUuCisgKiBUaGUgcmVzdWx0IG1heSBiZSBsb25nZXIgb3Igc2hvcnRl
ciB0aGFuIHRoZSBvcmlnaW5hbC4KKyAqIFRoZSBzb3VyY2Ugc3RyaW5nIGFuZCB0aGUgZGVzdGlu
YXRpb24gYnVmZmVyIGFyZSBhbGxvd2VkIHRvIG92ZXJsYXAuCisgKgorICogQHBhcmFtIGRlc3Qg
ICAgICBBIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBzdHJpbmcuIFRoZSByZXN1bHQgd2lsbCBiZSB6
ZXJvLXRlcm1pbmF0ZWQgaWYKKyAqICAgICAgICAgICAgICAgICAgdGhlIGJ1ZmZlciBpcyBsYXJn
ZSBlbm91Z2guCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5IFRoZSBzaXplIG9mIHRoZSBidWZmZXIg
KG51bWJlciBvZiBVQ2hhcnMpLiBJZiBpdCBpcyAwLCB0aGVuCisgKiAgICAgICAgICAgICAgICAg
IGRlc3QgbWF5IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBs
ZW5ndGggb2YgdGhlIHJlc3VsdAorICogICAgICAgICAgICAgICAgICB3aXRob3V0IHdyaXRpbmcg
YW55IG9mIHRoZSByZXN1bHQgc3RyaW5nLgorICogQHBhcmFtIHNyYyAgICAgICBUaGUgb3JpZ2lu
YWwgc3RyaW5nCisgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFs
IHN0cmluZy4gSWYgLTEsIHRoZW4gc3JjIG11c3QgYmUgemVyby10ZXJtaW5hdGVkLgorICogQHBh
cmFtIGxvY2FsZSAgICBUaGUgbG9jYWxlIHRvIGNvbnNpZGVyLCBvciAiIiBmb3IgdGhlIHJvb3Qg
bG9jYWxlIG9yIE5VTEwgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAqIEBwYXJhbSBwRXJyb3JD
b2RlIE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9yIGNvZGUgdmFsdWUsCisgKiAg
ICAgICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUg
dGhlIGZ1bmN0aW9uIGNhbGwuCisgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdCBz
dHJpbmcuIEl0IG1heSBiZSBncmVhdGVyIHRoYW4gZGVzdENhcGFjaXR5LiBJbiB0aGF0IGNhc2Us
CisgKiAgICAgICAgIG9ubHkgc29tZSBvZiB0aGUgcmVzdWx0IHdhcyB3cml0dGVuIHRvIHRoZSBk
ZXN0aW5hdGlvbiBidWZmZXIuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgaW50
MzJfdCBVX0VYUE9SVDIKK3Vfc3RyVG9Mb3dlcihVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2Fw
YWNpdHksCisgICAgICAgICAgICAgY29uc3QgVUNoYXIgKnNyYywgaW50MzJfdCBzcmNMZW5ndGgs
CisgICAgICAgICAgICAgY29uc3QgY2hhciAqbG9jYWxlLAorICAgICAgICAgICAgIFVFcnJvckNv
ZGUgKnBFcnJvckNvZGUpOworCisjaWYgIVVDT05GSUdfTk9fQlJFQUtfSVRFUkFUSU9OCisKKy8q
KgorICogVGl0bGVjYXNlIGEgc3RyaW5nLgorICogQ2FzaW5nIGlzIGxvY2FsZS1kZXBlbmRlbnQg
YW5kIGNvbnRleHQtc2Vuc2l0aXZlLgorICogVGl0bGVjYXNpbmcgdXNlcyBhIGJyZWFrIGl0ZXJh
dG9yIHRvIGZpbmQgdGhlIGZpcnN0IGNoYXJhY3RlcnMgb2Ygd29yZHMKKyAqIHRoYXQgYXJlIHRv
IGJlIHRpdGxlY2FzZWQuIEl0IHRpdGxlY2FzZXMgdGhvc2UgY2hhcmFjdGVycyBhbmQgbG93ZXJj
YXNlcworICogYWxsIG90aGVycy4KKyAqCisgKiBUaGUgdGl0bGVjYXNlIGJyZWFrIGl0ZXJhdG9y
IGNhbiBiZSBwcm92aWRlZCB0byBjdXN0b21pemUgZm9yIGFyYml0cmFyeQorICogc3R5bGVzLCB1
c2luZyBydWxlcyBhbmQgZGljdGlvbmFyaWVzIGJleW9uZCB0aGUgc3RhbmRhcmQgaXRlcmF0b3Jz
LgorICogSXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50IHRvIGFsd2F5cyBwcm92aWRlIGFuIGl0ZXJh
dG9yIHRvIGF2b2lkCisgKiBvcGVuaW5nIGFuZCBjbG9zaW5nIG9uZSBmb3IgZWFjaCBzdHJpbmcu
CisgKiBUaGUgc3RhbmRhcmQgdGl0bGVjYXNlIGl0ZXJhdG9yIGZvciB0aGUgcm9vdCBsb2NhbGUg
aW1wbGVtZW50cyB0aGUKKyAqIGFsZ29yaXRobSBvZiBVbmljb2RlIFRSIDIxLgorICoKKyAqIFRo
aXMgZnVuY3Rpb24gdXNlcyBvbmx5IHRoZSBmaXJzdCgpIGFuZCBuZXh0KCkgbWV0aG9kcyBvZiB0
aGUKKyAqIHByb3ZpZGVkIGJyZWFrIGl0ZXJhdG9yLgorICoKKyAqIFRoZSByZXN1bHQgbWF5IGJl
IGxvbmdlciBvciBzaG9ydGVyIHRoYW4gdGhlIG9yaWdpbmFsLgorICogVGhlIHNvdXJjZSBzdHJp
bmcgYW5kIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgYXJlIGFsbG93ZWQgdG8gb3ZlcmxhcC4KKyAq
CisgKiBAcGFyYW0gZGVzdCAgICAgIEEgYnVmZmVyIGZvciB0aGUgcmVzdWx0IHN0cmluZy4gVGhl
IHJlc3VsdCB3aWxsIGJlIHplcm8tdGVybWluYXRlZCBpZgorICogICAgICAgICAgICAgICAgICB0
aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgVGhlIHNp
emUgb2YgdGhlIGJ1ZmZlciAobnVtYmVyIG9mIFVDaGFycykuIElmIGl0IGlzIDAsIHRoZW4KKyAq
ICAgICAgICAgICAgICAgICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwg
b25seSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0CisgKiAgICAgICAgICAgICAgICAg
IHdpdGhvdXQgd3JpdGluZyBhbnkgb2YgdGhlIHJlc3VsdCBzdHJpbmcuCisgKiBAcGFyYW0gc3Jj
ICAgICAgIFRoZSBvcmlnaW5hbCBzdHJpbmcKKyAqIEBwYXJhbSBzcmNMZW5ndGggVGhlIGxlbmd0
aCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMgbXVzdCBiZSB6ZXJvLXRl
cm1pbmF0ZWQuCisgKiBAcGFyYW0gdGl0bGVJdGVyIEEgYnJlYWsgaXRlcmF0b3IgdG8gZmluZCB0
aGUgZmlyc3QgY2hhcmFjdGVycyBvZiB3b3JkcworICogICAgICAgICAgICAgICAgICB0aGF0IGFy
ZSB0byBiZSB0aXRsZWNhc2VkLgorICogICAgICAgICAgICAgICAgICBJZiBub25lIGlzIHByb3Zp
ZGVkIChOVUxMKSwgdGhlbiBhIHN0YW5kYXJkIHRpdGxlY2FzZQorICogICAgICAgICAgICAgICAg
ICBicmVhayBpdGVyYXRvciBpcyBvcGVuZWQuCisgKiBAcGFyYW0gbG9jYWxlICAgIFRoZSBsb2Nh
bGUgdG8gY29uc2lkZXIsIG9yICIiIGZvciB0aGUgcm9vdCBsb2NhbGUgb3IgTlVMTCBmb3IgdGhl
IGRlZmF1bHQgbG9jYWxlLgorICogQHBhcmFtIHBFcnJvckNvZGUgTXVzdCBiZSBhIHZhbGlkIHBv
aW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKKyAqICAgICAgICAgICAgICAgICAgd2hpY2gg
bXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAq
IEByZXR1cm4gVGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IHN0cmluZy4gSXQgbWF5IGJlIGdyZWF0
ZXIgdGhhbiBkZXN0Q2FwYWNpdHkuIEluIHRoYXQgY2FzZSwKKyAqICAgICAgICAgb25seSBzb21l
IG9mIHRoZSByZXN1bHQgd2FzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAq
IEBzdGFibGUgSUNVIDIuMQorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9zdHJU
b1RpdGxlKFVDaGFyICpkZXN0LCBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAgICAgICAgICAgICBj
b25zdCBVQ2hhciAqc3JjLCBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICBVQnJlYWtJ
dGVyYXRvciAqdGl0bGVJdGVyLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxvY2FsZSwKKyAg
ICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworI2VuZGlmCisKKy8qKgorICog
Q2FzZS1mb2xkIHRoZSBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLgorICogQ2FzZS1mb2xkaW5nIGlz
IGxvY2FsZS1pbmRlcGVuZGVudCBhbmQgbm90IGNvbnRleHQtc2Vuc2l0aXZlLAorICogYnV0IHRo
ZXJlIGlzIGFuIG9wdGlvbiBmb3Igd2hldGhlciB0byBpbmNsdWRlIG9yIGV4Y2x1ZGUgbWFwcGlu
Z3MgZm9yIGRvdHRlZCBJCisgKiBhbmQgZG90bGVzcyBpIHRoYXQgYXJlIG1hcmtlZCB3aXRoICdJ
JyBpbiBDYXNlRm9sZGluZy50eHQuCisgKiBUaGUgcmVzdWx0IG1heSBiZSBsb25nZXIgb3Igc2hv
cnRlciB0aGFuIHRoZSBvcmlnaW5hbC4KKyAqIFRoZSBzb3VyY2Ugc3RyaW5nIGFuZCB0aGUgZGVz
dGluYXRpb24gYnVmZmVyIGFyZSBhbGxvd2VkIHRvIG92ZXJsYXAuCisgKgorICogQHBhcmFtIGRl
c3QgICAgICBBIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBzdHJpbmcuIFRoZSByZXN1bHQgd2lsbCBi
ZSB6ZXJvLXRlcm1pbmF0ZWQgaWYKKyAqICAgICAgICAgICAgICAgICAgdGhlIGJ1ZmZlciBpcyBs
YXJnZSBlbm91Z2guCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5IFRoZSBzaXplIG9mIHRoZSBidWZm
ZXIgKG51bWJlciBvZiBVQ2hhcnMpLiBJZiBpdCBpcyAwLCB0aGVuCisgKiAgICAgICAgICAgICAg
ICAgIGRlc3QgbWF5IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRo
ZSBsZW5ndGggb2YgdGhlIHJlc3VsdAorICogICAgICAgICAgICAgICAgICB3aXRob3V0IHdyaXRp
bmcgYW55IG9mIHRoZSByZXN1bHQgc3RyaW5nLgorICogQHBhcmFtIHNyYyAgICAgICBUaGUgb3Jp
Z2luYWwgc3RyaW5nCisgKiBAcGFyYW0gc3JjTGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIG9yaWdp
bmFsIHN0cmluZy4gSWYgLTEsIHRoZW4gc3JjIG11c3QgYmUgemVyby10ZXJtaW5hdGVkLgorICog
QHBhcmFtIG9wdGlvbnMgICBFaXRoZXIgVV9GT0xEX0NBU0VfREVGQVVMVCBvciBVX0ZPTERfQ0FT
RV9FWENMVURFX1NQRUNJQUxfSQorICogQHBhcmFtIHBFcnJvckNvZGUgTXVzdCBiZSBhIHZhbGlk
IHBvaW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKKyAqICAgICAgICAgICAgICAgICAgd2hp
Y2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4K
KyAqIEByZXR1cm4gVGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0IHN0cmluZy4gSXQgbWF5IGJlIGdy
ZWF0ZXIgdGhhbiBkZXN0Q2FwYWNpdHkuIEluIHRoYXQgY2FzZSwKKyAqICAgICAgICAgb25seSBz
b21lIG9mIHRoZSByZXN1bHQgd2FzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4K
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBpbnQzMl90IFVfRVhQT1JUMgordV9z
dHJGb2xkQ2FzZShVQ2hhciAqZGVzdCwgaW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAg
ICAgIGNvbnN0IFVDaGFyICpzcmMsIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICB1
aW50MzJfdCBvcHRpb25zLAorICAgICAgICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsK
KworLyoqCisgKiBDb252ZXJ0cyBhIHNlcXVlbmNlIG9mIFVDaGFycyB0byB3Y2hhcl90IHVuaXRz
LgorICoKKyAqIEBwYXJhbSBkZXN0ICAgICAgICAgIEEgYnVmZmVyIGZvciB0aGUgcmVzdWx0IHN0
cmluZy4gVGhlIHJlc3VsdCB3aWxsIGJlIHplcm8tdGVybWluYXRlZCBpZgorICogICAgICAgICAg
ICAgICAgICAgICAgdGhlIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2guCisgKiBAcGFyYW0gZGVzdENh
cGFjaXR5ICBUaGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChudW1iZXIgb2Ygd2NoYXJfdCdzKS4gSWYg
aXQgaXMgMCwgdGhlbgorICogICAgICAgICAgICAgICAgICAgICAgZGVzdCBtYXkgYmUgTlVMTCBh
bmQgdGhlIGZ1bmN0aW9uIHdpbGwgb25seSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgCisgKiAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQgd2l0aG91dCB3cml0aW5nIGFueSBvZiB0aGUgcmVz
dWx0IHN0cmluZyAocHJlLWZsaWdodGluZykuCisgKiBAcGFyYW0gcERlc3RMZW5ndGggICBBIHBv
aW50ZXIgdG8gcmVjZWl2ZSB0aGUgbnVtYmVyIG9mIHVuaXRzIHdyaXR0ZW4gdG8gdGhlIGRlc3Rp
bmF0aW9uLiBJZiAKKyAqICAgICAgICAgICAgICAgICAgICAgIHBEZXN0TGVuZ3RoIT1OVUxMIHRo
ZW4gKnBEZXN0TGVuZ3RoIGlzIGFsd2F5cyBzZXQgdG8gdGhlIAorICogICAgICAgICAgICAgICAg
ICAgICAgbnVtYmVyIG9mIG91dHB1dCB1bml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0cmFuc2Zv
cm1hdGlvbiBvZiAKKyAqICAgICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgaW5wdXQgdW5pdHMs
IGV2ZW4gaW4gY2FzZSBvZiBhIGJ1ZmZlciBvdmVyZmxvdy4KKyAqIEBwYXJhbSBzcmMgICAgICAg
ICAgIFRoZSBvcmlnaW5hbCBzb3VyY2Ugc3RyaW5nCisgKiBAcGFyYW0gc3JjTGVuZ3RoICAgICBU
aGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBtdXN0IGJl
IHplcm8tdGVybWluYXRlZC4KKyAqIEBwYXJhbSBwRXJyb3JDb2RlICAgIE11c3QgYmUgYSB2YWxp
ZCBwb2ludGVyIHRvIGFuIGVycm9yIGNvZGUgdmFsdWUsCisgKiAgICAgICAgICAgICAgICAgICAg
ICB3aGljaCBtdXN0IG5vdCBpbmRpY2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBj
YWxsLgorICogQHJldHVybiBUaGUgcG9pbnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIuCisgKiBA
c3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgd2NoYXJfdCogVV9FWFBPUlQyCit1X3N0clRv
V0NTKHdjaGFyX3QgKmRlc3QsIAorICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwKKyAg
ICAgICAgICAgaW50MzJfdCAqcERlc3RMZW5ndGgsCisgICAgICAgICAgIGNvbnN0IFVDaGFyICpz
cmMsIAorICAgICAgICAgICBpbnQzMl90IHNyY0xlbmd0aCwKKyAgICAgICAgICAgVUVycm9yQ29k
ZSAqcEVycm9yQ29kZSk7CisvKioKKyAqIENvbnZlcnRzIGEgc2VxdWVuY2Ugb2Ygd2NoYXJfdCB1
bml0cyB0byBVQ2hhcnMKKyAqCisgKiBAcGFyYW0gZGVzdCAgICAgICAgICBBIGJ1ZmZlciBmb3Ig
dGhlIHJlc3VsdCBzdHJpbmcuIFRoZSByZXN1bHQgd2lsbCBiZSB6ZXJvLXRlcm1pbmF0ZWQgaWYK
KyAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgorICog
QHBhcmFtIGRlc3RDYXBhY2l0eSAgVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAobnVtYmVyIG9mIFVD
aGFycykuIElmIGl0IGlzIDAsIHRoZW4KKyAqICAgICAgICAgICAgICAgICAgICAgIGRlc3QgbWF5
IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBsZW5ndGggb2Yg
dGhlIAorICogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHdpdGhvdXQgd3JpdGluZyBhbnkg
b2YgdGhlIHJlc3VsdCBzdHJpbmcgKHByZS1mbGlnaHRpbmcpLgorICogQHBhcmFtIHBEZXN0TGVu
Z3RoICAgQSBwb2ludGVyIHRvIHJlY2VpdmUgdGhlIG51bWJlciBvZiB1bml0cyB3cml0dGVuIHRv
IHRoZSBkZXN0aW5hdGlvbi4gSWYgCisgKiAgICAgICAgICAgICAgICAgICAgICBwRGVzdExlbmd0
aCE9TlVMTCB0aGVuICpwRGVzdExlbmd0aCBpcyBhbHdheXMgc2V0IHRvIHRoZSAKKyAqICAgICAg
ICAgICAgICAgICAgICAgIG51bWJlciBvZiBvdXRwdXQgdW5pdHMgY29ycmVzcG9uZGluZyB0byB0
aGUgdHJhbnNmb3JtYXRpb24gb2YgCisgKiAgICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIGlu
cHV0IHVuaXRzLCBldmVuIGluIGNhc2Ugb2YgYSBidWZmZXIgb3ZlcmZsb3cuCisgKiBAcGFyYW0g
c3JjICAgICAgICAgICBUaGUgb3JpZ2luYWwgc291cmNlIHN0cmluZworICogQHBhcmFtIHNyY0xl
bmd0aCAgICAgVGhlIGxlbmd0aCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBz
cmMgbXVzdCBiZSB6ZXJvLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gcEVycm9yQ29kZSAgICBNdXN0
IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLAorICogICAgICAgICAg
ICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUg
ZnVuY3Rpb24gY2FsbC4KKyAqIEByZXR1cm4gVGhlIHBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVm
ZmVyLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyKiBVX0VYUE9SVDIK
K3Vfc3RyRnJvbVdDUyhVQ2hhciAgICpkZXN0LAorICAgICAgICAgICAgIGludDMyX3QgZGVzdENh
cGFjaXR5LCAKKyAgICAgICAgICAgICBpbnQzMl90ICpwRGVzdExlbmd0aCwKKyAgICAgICAgICAg
ICBjb25zdCB3Y2hhcl90ICpzcmMsCisgICAgICAgICAgICAgaW50MzJfdCBzcmNMZW5ndGgsCisg
ICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisvKioKKyAqIENvbnZlcnRzIGEg
c2VxdWVuY2Ugb2YgVUNoYXJzIChVVEYtMTYpIHRvIFVURi04IGJ5dGVzCisgKgorICogQHBhcmFt
IGRlc3QgICAgICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQgc3RyaW5nLiBUaGUgcmVzdWx0
IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCisgKiAgICAgICAgICAgICAgICAgICAgICB0aGUg
YnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAqIEBwYXJhbSBkZXN0Q2FwYWNpdHkgIFRoZSBzaXpl
IG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBjaGFycykuIElmIGl0IGlzIDAsIHRoZW4KKyAqICAg
ICAgICAgICAgICAgICAgICAgIGRlc3QgbWF5IGJlIE5VTEwgYW5kIHRoZSBmdW5jdGlvbiB3aWxs
IG9ubHkgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIAorICogICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0IHdpdGhvdXQgd3JpdGluZyBhbnkgb2YgdGhlIHJlc3VsdCBzdHJpbmcgKHByZS1mbGln
aHRpbmcpLgorICogQHBhcmFtIHBEZXN0TGVuZ3RoICAgQSBwb2ludGVyIHRvIHJlY2VpdmUgdGhl
IG51bWJlciBvZiB1bml0cyB3cml0dGVuIHRvIHRoZSBkZXN0aW5hdGlvbi4gSWYgCisgKiAgICAg
ICAgICAgICAgICAgICAgICBwRGVzdExlbmd0aCE9TlVMTCB0aGVuICpwRGVzdExlbmd0aCBpcyBh
bHdheXMgc2V0IHRvIHRoZSAKKyAqICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBvdXRw
dXQgdW5pdHMgY29ycmVzcG9uZGluZyB0byB0aGUgdHJhbnNmb3JtYXRpb24gb2YgCisgKiAgICAg
ICAgICAgICAgICAgICAgICBhbGwgdGhlIGlucHV0IHVuaXRzLCBldmVuIGluIGNhc2Ugb2YgYSBi
dWZmZXIgb3ZlcmZsb3cuCisgKiBAcGFyYW0gc3JjICAgICAgICAgICBUaGUgb3JpZ2luYWwgc291
cmNlIHN0cmluZworICogQHBhcmFtIHNyY0xlbmd0aCAgICAgVGhlIGxlbmd0aCBvZiB0aGUgb3Jp
Z2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMgbXVzdCBiZSB6ZXJvLXRlcm1pbmF0ZWQuCisg
KiBAcGFyYW0gcEVycm9yQ29kZSAgICBNdXN0IGJlIGEgdmFsaWQgcG9pbnRlciB0byBhbiBlcnJv
ciBjb2RlIHZhbHVlLAorICogICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVzdCBub3QgaW5k
aWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24gY2FsbC4KKyAqIEByZXR1cm4gVGhl
IHBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyLgorICogQHN0YWJsZSBJQ1UgMi4wCisgKi8K
K1VfU1RBQkxFIGNoYXIqIFVfRVhQT1JUMiAKK3Vfc3RyVG9VVEY4KGNoYXIgKmRlc3QsICAgICAg
ICAgICAKKyAgICAgICAgICAgIGludDMyX3QgZGVzdENhcGFjaXR5LAorICAgICAgICAgICAgaW50
MzJfdCAqcERlc3RMZW5ndGgsCisgICAgICAgICAgICBjb25zdCBVQ2hhciAqc3JjLCAKKyAgICAg
ICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9y
Q29kZSk7CisKKy8qKgorICogQ29udmVydHMgYSBzZXF1ZW5jZSBvZiBVVEYtOCBieXRlcyB0byBV
Q2hhcnMgKFVURi0xNikuCisgKgorICogQHBhcmFtIGRlc3QgICAgICAgICAgQSBidWZmZXIgZm9y
IHRoZSByZXN1bHQgc3RyaW5nLiBUaGUgcmVzdWx0IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlm
CisgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAq
IEBwYXJhbSBkZXN0Q2FwYWNpdHkgIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBV
Q2hhcnMpLiBJZiBpdCBpcyAwLCB0aGVuCisgKiAgICAgICAgICAgICAgICAgICAgICBkZXN0IG1h
eSBiZSBOVUxMIGFuZCB0aGUgZnVuY3Rpb24gd2lsbCBvbmx5IHJldHVybiB0aGUgbGVuZ3RoIG9m
IHRoZSAKKyAqICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB3aXRob3V0IHdyaXRpbmcgYW55
IG9mIHRoZSByZXN1bHQgc3RyaW5nIChwcmUtZmxpZ2h0aW5nKS4KKyAqIEBwYXJhbSBwRGVzdExl
bmd0aCAgIEEgcG9pbnRlciB0byByZWNlaXZlIHRoZSBudW1iZXIgb2YgdW5pdHMgd3JpdHRlbiB0
byB0aGUgZGVzdGluYXRpb24uIElmIAorICogICAgICAgICAgICAgICAgICAgICAgcERlc3RMZW5n
dGghPU5VTEwgdGhlbiAqcERlc3RMZW5ndGggaXMgYWx3YXlzIHNldCB0byB0aGUgCisgKiAgICAg
ICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygb3V0cHV0IHVuaXRzIGNvcnJlc3BvbmRpbmcgdG8g
dGhlIHRyYW5zZm9ybWF0aW9uIG9mIAorICogICAgICAgICAgICAgICAgICAgICAgYWxsIHRoZSBp
bnB1dCB1bml0cywgZXZlbiBpbiBjYXNlIG9mIGEgYnVmZmVyIG92ZXJmbG93LgorICogQHBhcmFt
IHNyYyAgICAgICAgICAgVGhlIG9yaWdpbmFsIHNvdXJjZSBzdHJpbmcKKyAqIEBwYXJhbSBzcmNM
ZW5ndGggICAgIFRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIHN0cmluZy4gSWYgLTEsIHRoZW4g
c3JjIG11c3QgYmUgemVyby10ZXJtaW5hdGVkLgorICogQHBhcmFtIHBFcnJvckNvZGUgICAgTXVz
dCBiZSBhIHZhbGlkIHBvaW50ZXIgdG8gYW4gZXJyb3IgY29kZSB2YWx1ZSwKKyAqICAgICAgICAg
ICAgICAgICAgICAgIHdoaWNoIG11c3Qgbm90IGluZGljYXRlIGEgZmFpbHVyZSBiZWZvcmUgdGhl
IGZ1bmN0aW9uIGNhbGwuCisgKiBAcmV0dXJuIFRoZSBwb2ludGVyIHRvIGRlc3RpbmF0aW9uIGJ1
ZmZlci4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCitVX1NUQUJMRSBVQ2hhciogVV9FWFBPUlQy
Cit1X3N0ckZyb21VVEY4KFVDaGFyICpkZXN0LCAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
aW50MzJfdCBkZXN0Q2FwYWNpdHksCisgICAgICAgICAgICAgIGludDMyX3QgKnBEZXN0TGVuZ3Ro
LAorICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsIAorICAgICAgICAgICAgICBpbnQzMl90
IHNyY0xlbmd0aCwKKyAgICAgICAgICAgICAgVUVycm9yQ29kZSAqcEVycm9yQ29kZSk7CisKKy8q
KgorICogQ29udmVydHMgYSBzZXF1ZW5jZSBvZiBVQ2hhcnMgKFVURi0xNikgdG8gVVRGMzIgdW5p
dHMuCisgKgorICogQHBhcmFtIGRlc3QgICAgICAgICAgQSBidWZmZXIgZm9yIHRoZSByZXN1bHQg
c3RyaW5nLiBUaGUgcmVzdWx0IHdpbGwgYmUgemVyby10ZXJtaW5hdGVkIGlmCisgKiAgICAgICAg
ICAgICAgICAgICAgICB0aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaC4KKyAqIEBwYXJhbSBkZXN0
Q2FwYWNpdHkgIFRoZSBzaXplIG9mIHRoZSBidWZmZXIgKG51bWJlciBvZiBVQ2hhcjMycykuIElm
IGl0IGlzIDAsIHRoZW4KKyAqICAgICAgICAgICAgICAgICAgICAgIGRlc3QgbWF5IGJlIE5VTEwg
YW5kIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIAorICog
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHdpdGhvdXQgd3JpdGluZyBhbnkgb2YgdGhlIHJl
c3VsdCBzdHJpbmcgKHByZS1mbGlnaHRpbmcpLgorICogQHBhcmFtIHBEZXN0TGVuZ3RoICAgQSBw
b2ludGVyIHRvIHJlY2VpdmUgdGhlIG51bWJlciBvZiB1bml0cyB3cml0dGVuIHRvIHRoZSBkZXN0
aW5hdGlvbi4gSWYgCisgKiAgICAgICAgICAgICAgICAgICAgICBwRGVzdExlbmd0aCE9TlVMTCB0
aGVuICpwRGVzdExlbmd0aCBpcyBhbHdheXMgc2V0IHRvIHRoZSAKKyAqICAgICAgICAgICAgICAg
ICAgICAgIG51bWJlciBvZiBvdXRwdXQgdW5pdHMgY29ycmVzcG9uZGluZyB0byB0aGUgdHJhbnNm
b3JtYXRpb24gb2YgCisgKiAgICAgICAgICAgICAgICAgICAgICBhbGwgdGhlIGlucHV0IHVuaXRz
LCBldmVuIGluIGNhc2Ugb2YgYSBidWZmZXIgb3ZlcmZsb3cuCisgKiBAcGFyYW0gc3JjICAgICAg
ICAgICBUaGUgb3JpZ2luYWwgc291cmNlIHN0cmluZworICogQHBhcmFtIHNyY0xlbmd0aCAgICAg
VGhlIGxlbmd0aCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nLiBJZiAtMSwgdGhlbiBzcmMgbXVzdCBi
ZSB6ZXJvLXRlcm1pbmF0ZWQuCisgKiBAcGFyYW0gcEVycm9yQ29kZSAgICBNdXN0IGJlIGEgdmFs
aWQgcG9pbnRlciB0byBhbiBlcnJvciBjb2RlIHZhbHVlLAorICogICAgICAgICAgICAgICAgICAg
ICAgd2hpY2ggbXVzdCBub3QgaW5kaWNhdGUgYSBmYWlsdXJlIGJlZm9yZSB0aGUgZnVuY3Rpb24g
Y2FsbC4KKyAqIEByZXR1cm4gVGhlIHBvaW50ZXIgdG8gZGVzdGluYXRpb24gYnVmZmVyLgorICog
QHN0YWJsZSBJQ1UgMi4wCisgKi8KK1VfU1RBQkxFIFVDaGFyMzIqIFVfRVhQT1JUMiAKK3Vfc3Ry
VG9VVEYzMihVQ2hhcjMyICpkZXN0LCAKKyAgICAgICAgICAgICBpbnQzMl90ICBkZXN0Q2FwYWNp
dHksCisgICAgICAgICAgICAgaW50MzJfdCAgKnBEZXN0TGVuZ3RoLAorICAgICAgICAgICAgIGNv
bnN0IFVDaGFyICpzcmMsIAorICAgICAgICAgICAgIGludDMyX3QgIHNyY0xlbmd0aCwKKyAgICAg
ICAgICAgICBVRXJyb3JDb2RlICpwRXJyb3JDb2RlKTsKKworLyoqCisgKiBDb252ZXJ0cyBhIHNl
cXVlbmNlIG9mIFVURjMyIHVuaXRzIHRvIFVDaGFycyAoVVRGLTE2KQorICoKKyAqIEBwYXJhbSBk
ZXN0ICAgICAgICAgIEEgYnVmZmVyIGZvciB0aGUgcmVzdWx0IHN0cmluZy4gVGhlIHJlc3VsdCB3
aWxsIGJlIHplcm8tdGVybWluYXRlZCBpZgorICogICAgICAgICAgICAgICAgICAgICAgdGhlIGJ1
ZmZlciBpcyBsYXJnZSBlbm91Z2guCisgKiBAcGFyYW0gZGVzdENhcGFjaXR5ICBUaGUgc2l6ZSBv
ZiB0aGUgYnVmZmVyIChudW1iZXIgb2YgVUNoYXJzKS4gSWYgaXQgaXMgMCwgdGhlbgorICogICAg
ICAgICAgICAgICAgICAgICAgZGVzdCBtYXkgYmUgTlVMTCBhbmQgdGhlIGZ1bmN0aW9uIHdpbGwg
b25seSByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgCisgKiAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQgd2l0aG91dCB3cml0aW5nIGFueSBvZiB0aGUgcmVzdWx0IHN0cmluZyAocHJlLWZsaWdo
dGluZykuCisgKiBAcGFyYW0gcERlc3RMZW5ndGggICBBIHBvaW50ZXIgdG8gcmVjZWl2ZSB0aGUg
bnVtYmVyIG9mIHVuaXRzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uLiBJZiAKKyAqICAgICAg
ICAgICAgICAgICAgICAgIHBEZXN0TGVuZ3RoIT1OVUxMIHRoZW4gKnBEZXN0TGVuZ3RoIGlzIGFs
d2F5cyBzZXQgdG8gdGhlIAorICogICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIG91dHB1
dCB1bml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbiBvZiAKKyAqICAgICAg
ICAgICAgICAgICAgICAgIGFsbCB0aGUgaW5wdXQgdW5pdHMsIGV2ZW4gaW4gY2FzZSBvZiBhIGJ1
ZmZlciBvdmVyZmxvdy4KKyAqIEBwYXJhbSBzcmMgICAgICAgICAgIFRoZSBvcmlnaW5hbCBzb3Vy
Y2Ugc3RyaW5nCisgKiBAcGFyYW0gc3JjTGVuZ3RoICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBvcmln
aW5hbCBzdHJpbmcuIElmIC0xLCB0aGVuIHNyYyBtdXN0IGJlIHplcm8tdGVybWluYXRlZC4KKyAq
IEBwYXJhbSBwRXJyb3JDb2RlICAgIE11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVycm9y
IGNvZGUgdmFsdWUsCisgKiAgICAgICAgICAgICAgICAgICAgICB3aGljaCBtdXN0IG5vdCBpbmRp
Y2F0ZSBhIGZhaWx1cmUgYmVmb3JlIHRoZSBmdW5jdGlvbiBjYWxsLgorICogQHJldHVybiBUaGUg
cG9pbnRlciB0byBkZXN0aW5hdGlvbiBidWZmZXIuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLwor
VV9TVEFCTEUgVUNoYXIqIFVfRVhQT1JUMiAKK3Vfc3RyRnJvbVVURjMyKFVDaGFyICAgKmRlc3Qs
CisgICAgICAgICAgICAgICBpbnQzMl90IGRlc3RDYXBhY2l0eSwgCisgICAgICAgICAgICAgICBp
bnQzMl90ICpwRGVzdExlbmd0aCwKKyAgICAgICAgICAgICAgIGNvbnN0IFVDaGFyMzIgKnNyYywK
KyAgICAgICAgICAgICAgIGludDMyX3Qgc3JjTGVuZ3RoLAorICAgICAgICAgICAgICAgVUVycm9y
Q29kZSAqcEVycm9yQ29kZSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUv
aWN1L3VuaWNvZGUvdXRmLmggYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dGYuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDE2OTFkCi0tLSAvZGV2L251bGwKKysr
IGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXRmLmgKQEAgLTAsMCArMSwyMjEgQEAKKy8q
CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDQs
IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3Ro
ZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyog
ICBmaWxlIG5hbWU6ICB1dGYuaAorKiAgIGVuY29kaW5nOiAgIFVTLUFTQ0lJCisqICAgdGFiIHNp
emU6ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50YXRpb246NAorKgorKiAgIGNyZWF0ZWQgb246
IDE5OTlzZXAwOQorKiAgIGNyZWF0ZWQgYnk6IE1hcmt1cyBXLiBTY2hlcmVyCisqLworCisvKioK
KyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6IENvZGUgcG9pbnQgbWFjcm9zCisgKgorICogVGhp
cyBmaWxlIGRlZmluZXMgbWFjcm9zIGZvciBjaGVja2luZyB3aGV0aGVyIGEgY29kZSBwb2ludCBp
cworICogYSBzdXJyb2dhdGUgb3IgYSBub24tY2hhcmFjdGVyIGV0Yy4KKyAqCisgKiBUaGUgVUNo
YXIgYW5kIFVDaGFyMzIgZGF0YSB0eXBlcyBmb3IgVW5pY29kZSBjb2RlIHVuaXRzIGFuZCBjb2Rl
IHBvaW50cworICogYXJlIGRlZmluZWQgaW4gdW1hY2hpbmVzLmggYmVjYXVzZSB0aGV5IGNhbiBi
ZSBtYWNoaW5lLWRlcGVuZGVudC4KKyAqCisgKiB1dGYuaCBpcyBpbmNsdWRlZCBieSB1dHlwZXMu
aCBhbmQgaXRzZWxmIGluY2x1ZGVzIHV0ZjguaCBhbmQgdXRmMTYuaCBhZnRlciBzb21lCisgKiBj
b21tb24gZGVmaW5pdGlvbnMuIFRob3NlIGZpbGVzIGRlZmluZSBtYWNyb3MgZm9yIGVmZmljaWVu
dGx5IGdldHRpbmcgY29kZSBwb2ludHMKKyAqIGluIGFuZCBvdXQgb2YgVVRGLTgvMTYgc3RyaW5n
cy4KKyAqIHV0ZjE2LmggbWFjcm9zIGhhdmUgIlUxNl8iIHByZWZpeGVzLgorICogdXRmOC5oIGRl
ZmluZXMgc2ltaWxhciBtYWNyb3Mgd2l0aCAiVThfIiBwcmVmaXhlcyBmb3IgVVRGLTggc3RyaW5n
IGhhbmRsaW5nLgorICoKKyAqIElDVSBwcm9jZXNzZXMgMTYtYml0IFVuaWNvZGUgc3RyaW5ncy4K
KyAqIE1vc3Qgb2YgdGhlIHRpbWUsIHN1Y2ggc3RyaW5ncyBhcmUgd2VsbC1mb3JtZWQgVVRGLTE2
LgorICogU2luZ2xlLCB1bnBhaXJlZCBzdXJyb2dhdGVzIG11c3QgYmUgaGFuZGxlZCBhcyB3ZWxs
LCBhbmQgYXJlIHRyZWF0ZWQgaW4gSUNVCisgKiBsaWtlIHJlZ3VsYXIgY29kZSBwb2ludHMgd2hl
cmUgcG9zc2libGUuCisgKiAoUGFpcnMgb2Ygc3Vycm9nYXRlIGNvZGUgcG9pbnRzIGFyZSBpbmRp
c3Rpbmd1aXNoYWJsZSBmcm9tIHN1cHBsZW1lbnRhcnkKKyAqIGNvZGUgcG9pbnRzIGVuY29kZWQg
YXMgcGFpcnMgb2Ygc3VwcGxlbWVudGFyeSBjb2RlIHVuaXRzLikKKyAqCisgKiBJbiBmYWN0LCBh
bG1vc3QgYWxsIFVuaWNvZGUgY29kZSBwb2ludHMgaW4gbm9ybWFsIHRleHQgKD45OSUpCisgKiBh
cmUgb24gdGhlIEJNUCAoPD1VK2ZmZmYpIGFuZCBldmVuIDw9VStkN2ZmLgorICogSUNVIGZ1bmN0
aW9ucyBoYW5kbGUgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cyAoVSsxMDAwMC4uVSsxMGZmZmYp
CisgKiBidXQgYXJlIG9wdGltaXplZCBmb3IgdGhlIG11Y2ggbW9yZSBmcmVxdWVudGx5IG9jY3Vy
cmluZyBCTVAgY29kZSBwb2ludHMuCisgKgorICogdXRmLmggZGVmaW5lcyBVQ2hhciB0byBiZSBh
biB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlci4gSWYgdGhpcyBtYXRjaGVzIHdjaGFyX3QsIHRoZW4K
KyAqIFVDaGFyIGlzIGRlZmluZWQgdG8gYmUgZXhhY3RseSB3Y2hhcl90LCBvdGhlcndpc2UgdWlu
dDE2X3QuCisgKgorICogVUNoYXIzMiBpcyBkZWZpbmVkIHRvIGJlIGEgc2lnbmVkIDMyLWJpdCBp
bnRlZ2VyIChpbnQzMl90KSwgbGFyZ2UgZW5vdWdoIGZvciBhIDIxLWJpdAorICogVW5pY29kZSBj
b2RlIHBvaW50IChVbmljb2RlIHNjYWxhciB2YWx1ZSwgMC4uMHgxMGZmZmYpLgorICogQmVmb3Jl
IElDVSAyLjQsIHRoZSBkZWZpbml0aW9uIG9mIFVDaGFyMzIgd2FzIHNpbWlsYXJseSBwbGF0Zm9y
bS1kZXBlbmRlbnQgYXMKKyAqIHRoZSBkZWZpbml0aW9uIG9mIFVDaGFyLiBGb3IgZGV0YWlscyBz
ZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIFVDaGFyMzIgaXRzZWxmLgorICoKKyAqIHV0Zi5oIGFs
c28gZGVmaW5lcyBhIHNtYWxsIG51bWJlciBvZiBDIG1hY3JvcyBmb3Igc2luZ2xlIFVuaWNvZGUg
Y29kZSBwb2ludHMuCisgKiBUaGVzZSBhcmUgc2ltcGxlIGNoZWNrcyBmb3Igc3Vycm9nYXRlcyBh
bmQgbm9uLWNoYXJhY3RlcnMuCisgKiBGb3IgYWN0dWFsIFVuaWNvZGUgY2hhcmFjdGVyIHByb3Bl
cnRpZXMgc2VlIHVjaGFyLmguCisgKgorICogQnkgZGVmYXVsdCwgc3RyaW5nIG9wZXJhdGlvbnMg
bXVzdCBiZSBkb25lIHdpdGggZXJyb3IgY2hlY2tpbmcgaW4gY2FzZQorICogYSBzdHJpbmcgaXMg
bm90IHdlbGwtZm9ybWVkIFVURi0xNi4KKyAqIFRoZSBtYWNyb3Mgd2lsbCBkZXRlY3QgaWYgYSBz
dXJyb2dhdGUgY29kZSB1bml0IGlzIHVucGFpcmVkCisgKiAobGVhZCB1bml0IHdpdGhvdXQgdHJh
aWwgdW5pdCBvciB2aWNlIHZlcnNhKSBhbmQganVzdCByZXR1cm4gdGhlIHVuaXQgaXRzZWxmCisg
KiBhcyB0aGUgY29kZSBwb2ludC4KKyAqIChJdCBpcyBhbiBhY2NpZGVudGFsIHByb3BlcnR5IG9m
IFVuaWNvZGUgYW5kIFVURi0xNiB0aGF0IGFsbAorICogbWFsZm9ybWVkIHNlcXVlbmNlcyBjYW4g
YmUgZXhwcmVzc2VkIHVuYW1iaWd1b3VzbHkgd2l0aCBhIGRpc3RpbmN0IHN1YnJhbmdlCisgKiBv
ZiBVbmljb2RlIGNvZGUgcG9pbnRzLikKKyAqCisgKiBXaGVuIGl0IGlzIHNhZmUgdG8gYXNzdW1l
IHRoYXQgdGV4dCBpcyB3ZWxsLWZvcm1lZCBVVEYtMTYKKyAqIChkb2VzIG5vdCBjb250YWluIHNp
bmdsZSwgdW5wYWlyZWQgc3Vycm9nYXRlcyksIHRoZW4gb25lIGNhbiB1c2UKKyAqIFUxNl8uLi5f
VU5TQUZFIG1hY3Jvcy4KKyAqIFRoZXNlIGRvIG5vdCBjaGVjayBmb3IgcHJvcGVyIGNvZGUgdW5p
dCBzZXF1ZW5jZXMgb3IgdHJ1bmNhdGVkIHRleHQgYW5kIG1heQorICogeWllbGQgd3JvbmcgcmVz
dWx0cyBvciBldmVuIGNhdXNlIGEgY3Jhc2ggaWYgdGhleSBhcmUgdXNlZCB3aXRoICJtYWxmb3Jt
ZWQiCisgKiB0ZXh0LgorICogSW4gcHJhY3RpY2UsIFUxNl8uLi5fVU5TQUZFIG1hY3JvcyB3aWxs
IHByb2R1Y2Ugc2xpZ2h0bHkgbGVzcyBjb2RlIGJ1dAorICogc2hvdWxkIG5vdCBiZSBmYXN0ZXIg
YmVjYXVzZSB0aGUgcHJvY2Vzc2luZyBpcyBvbmx5IGRpZmZlcmVudCB3aGVuIGEKKyAqIHN1cnJv
Z2F0ZSBjb2RlIHVuaXQgaXMgZGV0ZWN0ZWQsIHdoaWNoIHdpbGwgYmUgcmFyZS4KKyAqCisgKiBT
aW1pbGFybHkgZm9yIFVURi04LCB0aGVyZSBhcmUgInNhZmUiIG1hY3JvcyB3aXRob3V0IGEgc3Vm
Zml4LAorICogYW5kIFU4Xy4uLl9VTlNBRkUgdmVyc2lvbnMuCisgKiBUaGUgcGVyZm9ybWFuY2Ug
ZGlmZmVyZW5jZXMgYXJlIG11Y2ggbGFyZ2VyIGhlcmUgYmVjYXVzZSBVVEYtOCBwcm92aWRlcyBz
bworICogbWFueSBvcHBvcnR1bml0aWVzIGZvciBtYWxmb3JtZWQgc2VxdWVuY2VzLgorICogVGhl
IHVuc2FmZSBVVEYtOCBtYWNyb3MgYXJlIGVudGlyZWx5IGltcGxlbWVudGVkIGluc2lkZSB0aGUg
bWFjcm8gZGVmaW5pdGlvbnMKKyAqIGFuZCBhcmUgZmFzdCwgd2hpbGUgdGhlIHNhZmUgVVRGLTgg
bWFjcm9zIGNhbGwgZnVuY3Rpb25zIGZvciBhbGwgYnV0IHRoZQorICogdHJpdmlhbCAoQVNDSUkp
IGNhc2VzLgorICoKKyAqIFVubGlrZSB3aXRoIFVURi0xNiwgbWFsZm9ybWVkIHNlcXVlbmNlcyBj
YW5ub3QgYmUgZXhwcmVzc2VkIHdpdGggZGlzdGluY3QKKyAqIGNvZGUgcG9pbnQgdmFsdWVzICgw
Li5VKzEwZmZmZikuIFRoZXkgYXJlIGluZGljYXRlZCB3aXRoIG5lZ2F0aXZlIHZhbHVlcyBpbnN0
ZWFkLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUgSUNVIFVzZXIgR3VpZGUg
U3RyaW5ncyBjaGFwdGVyCisgKiAoaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2Vy
Z3VpZGUvKS4KKyAqCisgKiA8ZW0+VXNhZ2U6PC9lbT4KKyAqIElDVSBjb2RpbmcgZ3VpZGVsaW5l
cyBmb3IgaWYoKSBzdGF0ZW1lbnRzIHNob3VsZCBiZSBmb2xsb3dlZCB3aGVuIHVzaW5nIHRoZXNl
IG1hY3Jvcy4KKyAqIENvbXBvdW5kIHN0YXRlbWVudHMgKGN1cmx5IGJyYWNlcyB7fSkgbXVzdCBi
ZSB1c2VkICBmb3IgaWYtZWxzZS13aGlsZS4uLiAKKyAqIGJvZGllcyBhbmQgYWxsIG1hY3JvIHN0
YXRlbWVudHMgc2hvdWxkIGJlIHRlcm1pbmF0ZWQgd2l0aCBzZW1pY29sb24uCisgKgorICogQHN0
YWJsZSBJQ1UgMi40CisgKi8KKworI2lmbmRlZiBfX1VURl9IX18KKyNkZWZpbmUgX19VVEZfSF9f
CisKKyNpbmNsdWRlICJ1bmljb2RlL3V0eXBlcy5oIgorLyogaW5jbHVkZSB0aGUgdXRmWFguaCBh
ZnRlciB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zICovCisKKy8qIHNpbmdsZS1jb2RlIHBvaW50
IGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICovCisKKy8qKgorICogVGhpcyB2YWx1ZSBpcyBpbnRlbmRlZCBmb3Igc2VudGluZWwgdmFsdWVz
IGZvciBBUElzIHRoYXQKKyAqICh0YWtlIG9yKSByZXR1cm4gc2luZ2xlIGNvZGUgcG9pbnRzIChV
Q2hhcjMyKS4KKyAqIEl0IGlzIG91dHNpZGUgb2YgdGhlIFVuaWNvZGUgY29kZSBwb2ludCByYW5n
ZSAwLi4weDEwZmZmZi4KKyAqIAorICogRm9yIGV4YW1wbGUsIGEgImRvbmUiIG9yICJlcnJvciIg
dmFsdWUgaW4gYSBuZXcgQVBJCisgKiBjb3VsZCBiZSBpbmRpY2F0ZWQgd2l0aCBVX1NFTlRJTkVM
LgorICoKKyAqIElDVSBBUElzIGRlc2lnbmVkIGJlZm9yZSBJQ1UgMi40IHVzdWFsbHkgZGVmaW5l
IHNlcnZpY2Utc3BlY2lmaWMgImRvbmUiCisgKiB2YWx1ZXMsIG1vc3RseSAweGZmZmYuCisgKiBU
aG9zZSBtYXkgbmVlZCB0byBiZSBkaXN0aW5ndWlzaGVkIGZyb20KKyAqIGFjdHVhbCBVK2ZmZmYg
dGV4dCBjb250ZW50cyBieSBjYWxsaW5nIGZ1bmN0aW9ucyBsaWtlCisgKiBDaGFyYWN0ZXJJdGVy
YXRvcjo6aGFzTmV4dCgpIG9yIFVuaWNvZGVTdHJpbmc6Omxlbmd0aCgpLgorICoKKyAqIEByZXR1
cm4gLTEKKyAqIEBzZWUgVUNoYXIzMgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUg
VV9TRU5USU5FTCAoLTEpCisKKy8qKgorICogSXMgdGhpcyBjb2RlIHBvaW50IGEgVW5pY29kZSBu
b25jaGFyYWN0ZXI/CisgKiBAcGFyYW0gYyAzMi1iaXQgY29kZSBwb2ludAorICogQHJldHVybiBU
UlVFIG9yIEZBTFNFCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVX0lTX1VOSUNP
REVfTk9OQ0hBUihjKSBcCisgICAgKChjKT49MHhmZGQwICYmIFwKKyAgICAgKCh1aW50MzJfdCko
Yyk8PTB4ZmRlZiB8fCAoKGMpJjB4ZmZmZSk9PTB4ZmZmZSkgJiYgXAorICAgICAodWludDMyX3Qp
KGMpPD0weDEwZmZmZikKKworLyoqCisgKiBJcyBjIGEgVW5pY29kZSBjb2RlIHBvaW50IHZhbHVl
ICgwLi5VKzEwZmZmZikKKyAqIHRoYXQgY2FuIGJlIGFzc2lnbmVkIGEgY2hhcmFjdGVyPworICoK
KyAqIENvZGUgcG9pbnRzIHRoYXQgYXJlIG5vdCBjaGFyYWN0ZXJzIGluY2x1ZGU6CisgKiAtIHNp
bmdsZSBzdXJyb2dhdGUgY29kZSBwb2ludHMgKFUrZDgwMC4uVStkZmZmLCAyMDQ4IGNvZGUgcG9p
bnRzKQorICogLSB0aGUgbGFzdCB0d28gY29kZSBwb2ludHMgb24gZWFjaCBwbGFuZSAoVStfX2Zm
ZmUgYW5kIFUrX19mZmZmLCAzNCBjb2RlIHBvaW50cykKKyAqIC0gVStmZGQwLi5VK2ZkZWYgKG5l
dyB3aXRoIFVuaWNvZGUgMy4xLCAzMiBjb2RlIHBvaW50cykKKyAqIC0gdGhlIGhpZ2hlc3QgVW5p
Y29kZSBjb2RlIHBvaW50IHZhbHVlIGlzIFUrMTBmZmZmCisgKgorICogVGhpcyBtZWFucyB0aGF0
IGFsbCBjb2RlIHBvaW50cyBiZWxvdyBVK2Q4MDAgYXJlIGNoYXJhY3RlciBjb2RlIHBvaW50cywK
KyAqIGFuZCB0aGF0IGJvdW5kYXJ5IGlzIHRlc3RlZCBmaXJzdCBmb3IgcGVyZm9ybWFuY2UuCisg
KgorICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxT
RQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVV9JU19VTklDT0RFX0NIQVIoYykg
XAorICAgICgodWludDMyX3QpKGMpPDB4ZDgwMCB8fCBcCisgICAgICAgICgodWludDMyX3QpKGMp
PjB4ZGZmZiAmJiBcCisgICAgICAgICAodWludDMyX3QpKGMpPD0weDEwZmZmZiAmJiBcCisgICAg
ICAgICAhVV9JU19VTklDT0RFX05PTkNIQVIoYykpKQorCisjaWZuZGVmIFVfSElERV9EUkFGVF9B
UEkKKworLyoqCisgKiBJcyB0aGlzIGNvZGUgcG9pbnQgYSBCTVAgY29kZSBwb2ludCAoVSswMDAw
Li5VK2ZmZmYpPworICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gVFJV
RSBvciBGQUxTRQorICogQGRyYWZ0IElDVSAyLjgKKyAqLworI2RlZmluZSBVX0lTX0JNUChjKSAo
KHVpbnQzMl90KShjKTw9MHhmZmZmKQorCisvKioKKyAqIElzIHRoaXMgY29kZSBwb2ludCBhIHN1
cHBsZW1lbnRhcnkgY29kZSBwb2ludCAoVSsxMDAwMC4uVSsxMGZmZmYpPworICogQHBhcmFtIGMg
MzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQorICogQGRyYWZ0IElD
VSAyLjgKKyAqLworI2RlZmluZSBVX0lTX1NVUFBMRU1FTlRBUlkoYykgKCh1aW50MzJfdCkoKGMp
LTB4MTAwMDApPD0weGZmZmZmKQorCisjZW5kaWYgLypVX0hJREVfRFJBRlRfQVBJKi8KKyAKKy8q
KgorICogSXMgdGhpcyBjb2RlIHBvaW50IGEgbGVhZCBzdXJyb2dhdGUgKFUrZDgwMC4uVStkYmZm
KT8KKyAqIEBwYXJhbSBjIDMyLWJpdCBjb2RlIHBvaW50CisgKiBAcmV0dXJuIFRSVUUgb3IgRkFM
U0UKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFVfSVNfTEVBRChjKSAoKChjKSYw
eGZmZmZmYzAwKT09MHhkODAwKQorCisvKioKKyAqIElzIHRoaXMgY29kZSBwb2ludCBhIHRyYWls
IHN1cnJvZ2F0ZSAoVStkYzAwLi5VK2RmZmYpPworICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9p
bnQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNk
ZWZpbmUgVV9JU19UUkFJTChjKSAoKChjKSYweGZmZmZmYzAwKT09MHhkYzAwKQorCisvKioKKyAq
IElzIHRoaXMgY29kZSBwb2ludCBhIHN1cnJvZ2F0ZSAoVStkODAwLi5VK2RmZmYpPworICogQHBh
cmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQorICogQHN0
YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVV9JU19TVVJST0dBVEUoYykgKCgoYykmMHhmZmZm
ZjgwMCk9PTB4ZDgwMCkKKworLyoqCisgKiBBc3N1bWluZyBjIGlzIGEgc3Vycm9nYXRlIGNvZGUg
cG9pbnQgKFVfSVNfU1VSUk9HQVRFKGMpKSwKKyAqIGlzIGl0IGEgbGVhZCBzdXJyb2dhdGU/Cisg
KiBAcGFyYW0gYyAzMi1iaXQgY29kZSBwb2ludAorICogQHJldHVybiBUUlVFIG9yIEZBTFNFCisg
KiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVX0lTX1NVUlJPR0FURV9MRUFEKGMpICgo
KGMpJjB4NDAwKT09MCkKKworLyogaW5jbHVkZSB0aGUgdXRmWFguaCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2luY2x1ZGUgInVu
aWNvZGUvdXRmOC5oIgorI2luY2x1ZGUgInVuaWNvZGUvdXRmMTYuaCIKKworLyogdXRmX29sZC5o
IGNvbnRhaW5zIGRlcHJlY2F0ZWQsIHByZS1JQ1UgMi40IGRlZmluaXRpb25zICovCisjaW5jbHVk
ZSAidW5pY29kZS91dGZfb2xkLmgiCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEds
dWUvaWN1L3VuaWNvZGUvdXRmMTYuaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0ZjE2
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JmMzg3MgotLS0gL2Rldi9u
dWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0ZjE2LmgKQEAgLTAsMCArMSw2
MDUgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDQsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlv
biBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoKKyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKKyogICBmaWxlIG5hbWU6ICB1dGYxNi5oCisqICAgZW5jb2Rpbmc6ICAgVVMtQVNDSUkK
KyogICB0YWIgc2l6ZTogICA4IChub3QgdXNlZCkKKyogICBpbmRlbnRhdGlvbjo0CisqCisqICAg
Y3JlYXRlZCBvbjogMTk5OXNlcDA5CisqICAgY3JlYXRlZCBieTogTWFya3VzIFcuIFNjaGVyZXIK
KyovCisKKy8qKgorICogXGZpbGUKKyAqIFxicmllZiBDIEFQSTogMTYtYml0IFVuaWNvZGUgaGFu
ZGxpbmcgbWFjcm9zCisgKiAKKyAqIFRoaXMgZmlsZSBkZWZpbmVzIG1hY3JvcyB0byBkZWFsIHdp
dGggMTYtYml0IFVuaWNvZGUgKFVURi0xNikgY29kZSB1bml0cyBhbmQgc3RyaW5ncy4KKyAqIHV0
ZjE2LmggaXMgaW5jbHVkZWQgYnkgdXRmLmggYWZ0ZXIgdW5pY29kZS91bWFjaGluZS5oCisgKiBh
bmQgc29tZSBjb21tb24gZGVmaW5pdGlvbnMuCisgKgorICogRm9yIG1vcmUgaW5mb3JtYXRpb24g
c2VlIHV0Zi5oIGFuZCB0aGUgSUNVIFVzZXIgR3VpZGUgU3RyaW5ncyBjaGFwdGVyCisgKiAoaHR0
cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdS91c2VyZ3VpZGUvKS4KKyAqCisgKiA8ZW0+VXNh
Z2U6PC9lbT4KKyAqIElDVSBjb2RpbmcgZ3VpZGVsaW5lcyBmb3IgaWYoKSBzdGF0ZW1lbnRzIHNo
b3VsZCBiZSBmb2xsb3dlZCB3aGVuIHVzaW5nIHRoZXNlIG1hY3Jvcy4KKyAqIENvbXBvdW5kIHN0
YXRlbWVudHMgKGN1cmx5IGJyYWNlcyB7fSkgbXVzdCBiZSB1c2VkICBmb3IgaWYtZWxzZS13aGls
ZS4uLiAKKyAqIGJvZGllcyBhbmQgYWxsIG1hY3JvIHN0YXRlbWVudHMgc2hvdWxkIGJlIHRlcm1p
bmF0ZWQgd2l0aCBzZW1pY29sb24uCisgKi8KKworI2lmbmRlZiBfX1VURjE2X0hfXworI2RlZmlu
ZSBfX1VURjE2X0hfXworCisvKiB1dGYuaCBtdXN0IGJlIGluY2x1ZGVkIGZpcnN0LiAqLworI2lm
bmRlZiBfX1VURl9IX18KKyMgICBpbmNsdWRlICJ1bmljb2RlL3V0Zi5oIgorI2VuZGlmCisKKy8q
IHNpbmdsZS1jb2RlIHBvaW50IGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorICogRG9lcyB0aGlzIGNvZGUgdW5pdCBhbG9u
ZSBlbmNvZGUgYSBjb2RlIHBvaW50IChCTVAsIG5vdCBhIHN1cnJvZ2F0ZSk/CisgKiBAcGFyYW0g
YyAxNi1iaXQgY29kZSB1bml0CisgKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UKKyAqIEBzdGFibGUg
SUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9JU19TSU5HTEUoYykgIVVfSVNfU1VSUk9HQVRFKGMp
CisKKy8qKgorICogSXMgdGhpcyBjb2RlIHVuaXQgYSBsZWFkIHN1cnJvZ2F0ZSAoVStkODAwLi5V
K2RiZmYpPworICogQHBhcmFtIGMgMTYtYml0IGNvZGUgdW5pdAorICogQHJldHVybiBUUlVFIG9y
IEZBTFNFCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVMTZfSVNfTEVBRChjKSAo
KChjKSYweGZmZmZmYzAwKT09MHhkODAwKQorCisvKioKKyAqIElzIHRoaXMgY29kZSB1bml0IGEg
dHJhaWwgc3Vycm9nYXRlIChVK2RjMDAuLlUrZGZmZik/CisgKiBAcGFyYW0gYyAxNi1iaXQgY29k
ZSB1bml0CisgKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UKKyAqIEBzdGFibGUgSUNVIDIuNAorICov
CisjZGVmaW5lIFUxNl9JU19UUkFJTChjKSAoKChjKSYweGZmZmZmYzAwKT09MHhkYzAwKQorCisv
KioKKyAqIElzIHRoaXMgY29kZSB1bml0IGEgc3Vycm9nYXRlIChVK2Q4MDAuLlUrZGZmZik/Cisg
KiBAcGFyYW0gYyAxNi1iaXQgY29kZSB1bml0CisgKiBAcmV0dXJuIFRSVUUgb3IgRkFMU0UKKyAq
IEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9JU19TVVJST0dBVEUoYykgVV9JU19T
VVJST0dBVEUoYykKKworLyoqCisgKiBBc3N1bWluZyBjIGlzIGEgc3Vycm9nYXRlIGNvZGUgcG9p
bnQgKFUxNl9JU19TVVJST0dBVEUoYykpLAorICogaXMgaXQgYSBsZWFkIHN1cnJvZ2F0ZT8KKyAq
IEBwYXJhbSBjIDE2LWJpdCBjb2RlIHVuaXQKKyAqIEByZXR1cm4gVFJVRSBvciBGQUxTRQorICog
QHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVTE2X0lTX1NVUlJPR0FURV9MRUFEKGMpICgo
KGMpJjB4NDAwKT09MCkKKworLyoqCisgKiBIZWxwZXIgY29uc3RhbnQgZm9yIFUxNl9HRVRfU1VQ
UExFTUVOVEFSWS4KKyAqIEBpbnRlcm5hbAorICovCisjZGVmaW5lIFUxNl9TVVJST0dBVEVfT0ZG
U0VUICgoMHhkODAwPDwxMFVMKSsweGRjMDAtMHgxMDAwMCkKKworLyoqCisgKiBHZXQgYSBzdXBw
bGVtZW50YXJ5IGNvZGUgcG9pbnQgdmFsdWUgKFUrMTAwMDAuLlUrMTBmZmZmKQorICogZnJvbSBp
dHMgbGVhZCBhbmQgdHJhaWwgc3Vycm9nYXRlcy4KKyAqIFRoZSByZXN1bHQgaXMgdW5kZWZpbmVk
IGlmIHRoZSBpbnB1dCB2YWx1ZXMgYXJlIG5vdAorICogbGVhZCBhbmQgdHJhaWwgc3Vycm9nYXRl
cy4KKyAqCisgKiBAcGFyYW0gbGVhZCBsZWFkIHN1cnJvZ2F0ZSAoVStkODAwLi5VK2RiZmYpCisg
KiBAcGFyYW0gdHJhaWwgdHJhaWwgc3Vycm9nYXRlIChVK2RjMDAuLlUrZGZmZikKKyAqIEByZXR1
cm4gc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50IChVKzEwMDAwLi5VKzEwZmZmZikKKyAqIEBzdGFi
bGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9HRVRfU1VQUExFTUVOVEFSWShsZWFkLCB0cmFp
bCkgXAorICAgICgoKFVDaGFyMzIpKGxlYWQpPDwxMFVMKSsoVUNoYXIzMikodHJhaWwpLVUxNl9T
VVJST0dBVEVfT0ZGU0VUKQorCisKKy8qKgorICogR2V0IHRoZSBsZWFkIHN1cnJvZ2F0ZSAoMHhk
ODAwLi4weGRiZmYpIGZvciBhCisgKiBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQgKDB4MTAwMDAu
LjB4MTBmZmZmKS4KKyAqIEBwYXJhbSBzdXBwbGVtZW50YXJ5IDMyLWJpdCBjb2RlIHBvaW50IChV
KzEwMDAwLi5VKzEwZmZmZikKKyAqIEByZXR1cm4gbGVhZCBzdXJyb2dhdGUgKFUrZDgwMC4uVStk
YmZmKSBmb3Igc3VwcGxlbWVudGFyeQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUg
VTE2X0xFQUQoc3VwcGxlbWVudGFyeSkgKFVDaGFyKSgoKHN1cHBsZW1lbnRhcnkpPj4xMCkrMHhk
N2MwKQorCisvKioKKyAqIEdldCB0aGUgdHJhaWwgc3Vycm9nYXRlICgweGRjMDAuLjB4ZGZmZikg
Zm9yIGEKKyAqIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCAoMHgxMDAwMC4uMHgxMGZmZmYpLgor
ICogQHBhcmFtIHN1cHBsZW1lbnRhcnkgMzItYml0IGNvZGUgcG9pbnQgKFUrMTAwMDAuLlUrMTBm
ZmZmKQorICogQHJldHVybiB0cmFpbCBzdXJyb2dhdGUgKFUrZGMwMC4uVStkZmZmKSBmb3Igc3Vw
cGxlbWVudGFyeQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVTE2X1RSQUlMKHN1
cHBsZW1lbnRhcnkpIChVQ2hhcikoKChzdXBwbGVtZW50YXJ5KSYweDNmZil8MHhkYzAwKQorCisv
KioKKyAqIEhvdyBtYW55IDE2LWJpdCBjb2RlIHVuaXRzIGFyZSB1c2VkIHRvIGVuY29kZSB0aGlz
IFVuaWNvZGUgY29kZSBwb2ludD8gKDEgb3IgMikKKyAqIFRoZSByZXN1bHQgaXMgbm90IGRlZmlu
ZWQgaWYgYyBpcyBub3QgYSBVbmljb2RlIGNvZGUgcG9pbnQgKFUrMDAwMC4uVSsxMGZmZmYpLgor
ICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAqIEByZXR1cm4gMSBvciAyCisgKiBAc3Rh
YmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVMTZfTEVOR1RIKGMpICgodWludDMyX3QpKGMpPD0w
eGZmZmYgPyAxIDogMikKKworLyoqCisgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgMTYtYml0IGNv
ZGUgdW5pdHMgcGVyIFVuaWNvZGUgY29kZSBwb2ludCAoVSswMDAwLi5VKzEwZmZmZikuCisgKiBA
cmV0dXJuIDIKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9NQVhfTEVOR1RI
IDIKKworLyoqCisgKiBHZXQgYSBjb2RlIHBvaW50IGZyb20gYSBzdHJpbmcgYXQgYSByYW5kb20t
YWNjZXNzIG9mZnNldCwKKyAqIHdpdGhvdXQgY2hhbmdpbmcgdGhlIG9mZnNldC4KKyAqICJVbnNh
ZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi0xNi4KKyAqCisgKiBUaGUgb2Zmc2V0
IG1heSBwb2ludCB0byBlaXRoZXIgdGhlIGxlYWQgb3IgdHJhaWwgc3Vycm9nYXRlIHVuaXQKKyAq
IGZvciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgaW4gd2hpY2ggY2FzZSB0aGUgbWFjcm8g
d2lsbCByZWFkCisgKiB0aGUgYWRqYWNlbnQgbWF0Y2hpbmcgc3Vycm9nYXRlIGFzIHdlbGwuCisg
KiBUaGUgcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHNpbmds
ZSwgdW5wYWlyZWQgc3Vycm9nYXRlLgorICogSXRlcmF0aW9uIHRocm91Z2ggYSBzdHJpbmcgaXMg
bW9yZSBlZmZpY2llbnQgd2l0aCBVMTZfTkVYVF9VTlNBRkUgb3IgVTE2X05FWFQuCisgKgorICog
QHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQK
KyAqIEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlCisgKiBAc2VlIFUxNl9HRVQKKyAq
IEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9HRVRfVU5TQUZFKHMsIGksIGMpIHsg
XAorICAgIChjKT0ocylbaV07IFwKKyAgICBpZihVMTZfSVNfU1VSUk9HQVRFKGMpKSB7IFwKKyAg
ICAgICAgaWYoVTE2X0lTX1NVUlJPR0FURV9MRUFEKGMpKSB7IFwKKyAgICAgICAgICAgIChjKT1V
MTZfR0VUX1NVUFBMRU1FTlRBUlkoKGMpLCAocylbKGkpKzFdKTsgXAorICAgICAgICB9IGVsc2Ug
eyBcCisgICAgICAgICAgICAoYyk9VTE2X0dFVF9TVVBQTEVNRU5UQVJZKChzKVsoaSktMV0sIChj
KSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9CisKKy8qKgorICogR2V0IGEgY29kZSBwb2lu
dCBmcm9tIGEgc3RyaW5nIGF0IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQsCisgKiB3aXRob3V0IGNo
YW5naW5nIHRoZSBvZmZzZXQuCisgKiAiU2FmZSIgbWFjcm8sIGhhbmRsZXMgdW5wYWlyZWQgc3Vy
cm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91bmRhcmllcy4KKyAqCisgKiBUaGUgb2Zm
c2V0IG1heSBwb2ludCB0byBlaXRoZXIgdGhlIGxlYWQgb3IgdHJhaWwgc3Vycm9nYXRlIHVuaXQK
KyAqIGZvciBhIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludCwgaW4gd2hpY2ggY2FzZSB0aGUgbWFj
cm8gd2lsbCByZWFkCisgKiB0aGUgYWRqYWNlbnQgbWF0Y2hpbmcgc3Vycm9nYXRlIGFzIHdlbGwu
CisgKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHNpbmdsZSwgdW5wYWlyZWQgc3Vycm9nYXRl
LCB0aGVuIHRoYXQgaXRzZWxmCisgKiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBvaW50
LgorICogSXRlcmF0aW9uIHRocm91Z2ggYSBzdHJpbmcgaXMgbW9yZSBlZmZpY2llbnQgd2l0aCBV
MTZfTkVYVF9VTlNBRkUgb3IgVTE2X05FWFQuCisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIg
KiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJpbmcgb2Zmc2V0ICh1c3VhbGx5
IDApCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9aTxsZW5ndGgKKyAqIEBwYXJh
bSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICogQHBhcmFtIGMgb3V0cHV0IFVDaGFyMzIgdmFyaWFi
bGUKKyAqIEBzZWUgVTE2X0dFVF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVm
aW5lIFUxNl9HRVQocywgc3RhcnQsIGksIGxlbmd0aCwgYykgeyBcCisgICAgKGMpPShzKVtpXTsg
XAorICAgIGlmKFUxNl9JU19TVVJST0dBVEUoYykpIHsgXAorICAgICAgICB1aW50MTZfdCBfX2My
OyBcCisgICAgICAgIGlmKFUxNl9JU19TVVJST0dBVEVfTEVBRChjKSkgeyBcCisgICAgICAgICAg
ICBpZigoaSkrMTwobGVuZ3RoKSAmJiBVMTZfSVNfVFJBSUwoX19jMj0ocylbKGkpKzFdKSkgeyBc
CisgICAgICAgICAgICAgICAgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWSgoYyksIF9fYzIpOyBc
CisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgICAgaWYoKGkp
LTE+PShzdGFydCkgJiYgVTE2X0lTX0xFQUQoX19jMj0ocylbKGkpLTFdKSkgeyBcCisgICAgICAg
ICAgICAgICAgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFSWShfX2MyLCAoYykpOyBcCisgICAgICAg
ICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9CisKKy8qIGRlZmluaXRpb25zIHdpdGgg
Zm9yd2FyZCBpdGVyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
ICovCisKKy8qKgorICogR2V0IGEgY29kZSBwb2ludCBmcm9tIGEgc3RyaW5nIGF0IGEgY29kZSBw
b2ludCBib3VuZGFyeSBvZmZzZXQsCisgKiBhbmQgYWR2YW5jZSB0aGUgb2Zmc2V0IHRvIHRoZSBu
ZXh0IGNvZGUgcG9pbnQgYm91bmRhcnkuCisgKiAoUG9zdC1pbmNyZW1lbnRpbmcgZm9yd2FyZCBp
dGVyYXRpb24uKQorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1mb3JtZWQgVVRGLTE2
LgorICoKKyAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRvIHRoZSBsZWFkIHN1cnJvZ2F0ZSB1bml0
CisgKiBmb3IgYSBzdXBwbGVtZW50YXJ5IGNvZGUgcG9pbnQsIGluIHdoaWNoIGNhc2UgdGhlIG1h
Y3JvIHdpbGwgcmVhZAorICogdGhlIGZvbGxvd2luZyB0cmFpbCBzdXJyb2dhdGUgYXMgd2VsbC4K
KyAqIElmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgdHJhaWwgc3Vycm9nYXRlLCB0aGVuIHRoYXQg
aXRzZWxmCisgKiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBvaW50LgorICogVGhlIHJl
c3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIG9mZnNldCBwb2ludHMgdG8gYSBzaW5nbGUsIHVucGFp
cmVkIGxlYWQgc3Vycm9nYXRlLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5n
CisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2
YXJpYWJsZQorICogQHNlZSBVMTZfTkVYVAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZp
bmUgVTE2X05FWFRfVU5TQUZFKHMsIGksIGMpIHsgXAorICAgIChjKT0ocylbKGkpKytdOyBcCisg
ICAgaWYoVTE2X0lTX0xFQUQoYykpIHsgXAorICAgICAgICAoYyk9VTE2X0dFVF9TVVBQTEVNRU5U
QVJZKChjKSwgKHMpWyhpKSsrXSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBHZXQgYSBjb2Rl
IHBvaW50IGZyb20gYSBzdHJpbmcgYXQgYSBjb2RlIHBvaW50IGJvdW5kYXJ5IG9mZnNldCwKKyAq
IGFuZCBhZHZhbmNlIHRoZSBvZmZzZXQgdG8gdGhlIG5leHQgY29kZSBwb2ludCBib3VuZGFyeS4K
KyAqIChQb3N0LWluY3JlbWVudGluZyBmb3J3YXJkIGl0ZXJhdGlvbi4pCisgKiAiU2FmZSIgbWFj
cm8sIGhhbmRsZXMgdW5wYWlyZWQgc3Vycm9nYXRlcyBhbmQgY2hlY2tzIGZvciBzdHJpbmcgYm91
bmRhcmllcy4KKyAqCisgKiBUaGUgb2Zmc2V0IG1heSBwb2ludCB0byB0aGUgbGVhZCBzdXJyb2dh
dGUgdW5pdAorICogZm9yIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50LCBpbiB3aGljaCBjYXNl
IHRoZSBtYWNybyB3aWxsIHJlYWQKKyAqIHRoZSBmb2xsb3dpbmcgdHJhaWwgc3Vycm9nYXRlIGFz
IHdlbGwuCisgKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBhIHRyYWlsIHN1cnJvZ2F0ZSBvcgor
ICogdG8gYSBzaW5nbGUsIHVucGFpcmVkIGxlYWQgc3Vycm9nYXRlLCB0aGVuIHRoYXQgaXRzZWxm
CisgKiB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSBjb2RlIHBvaW50LgorICoKKyAqIEBwYXJhbSBz
IGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBpPGxlbmd0
aAorICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3RoCisgKiBAcGFyYW0gYyBvdXRwdXQgVUNo
YXIzMiB2YXJpYWJsZQorICogQHNlZSBVMTZfTkVYVF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIu
NAorICovCisjZGVmaW5lIFUxNl9ORVhUKHMsIGksIGxlbmd0aCwgYykgeyBcCisgICAgKGMpPShz
KVsoaSkrK107IFwKKyAgICBpZihVMTZfSVNfTEVBRChjKSkgeyBcCisgICAgICAgIHVpbnQxNl90
IF9fYzI7IFwKKyAgICAgICAgaWYoKGkpPChsZW5ndGgpICYmIFUxNl9JU19UUkFJTChfX2MyPShz
KVsoaSldKSkgeyBcCisgICAgICAgICAgICArKyhpKTsgXAorICAgICAgICAgICAgKGMpPVUxNl9H
RVRfU1VQUExFTUVOVEFSWSgoYyksIF9fYzIpOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorfQor
CisvKioKKyAqIEFwcGVuZCBhIGNvZGUgcG9pbnQgdG8gYSBzdHJpbmcsIG92ZXJ3cml0aW5nIDEg
b3IgMiBjb2RlIHVuaXRzLgorICogVGhlIG9mZnNldCBwb2ludHMgdG8gdGhlIGN1cnJlbnQgZW5k
IG9mIHRoZSBzdHJpbmcgY29udGVudHMKKyAqIGFuZCBpcyBhZHZhbmNlZCAocG9zdC1pbmNyZW1l
bnQpLgorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgYSB2YWxpZCBjb2RlIHBvaW50IGFuZCBz
dWZmaWNpZW50IHNwYWNlIGluIHRoZSBzdHJpbmcuCisgKiBPdGhlcndpc2UsIHRoZSByZXN1bHQg
aXMgdW5kZWZpbmVkLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nIGJ1ZmZl
cgorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAorICogQHBhcmFtIGMgY29kZSBwb2ludCB0byBh
cHBlbmQKKyAqIEBzZWUgVTE2X0FQUEVORAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZp
bmUgVTE2X0FQUEVORF9VTlNBRkUocywgaSwgYykgeyBcCisgICAgaWYoKHVpbnQzMl90KShjKTw9
MHhmZmZmKSB7IFwKKyAgICAgICAgKHMpWyhpKSsrXT0odWludDE2X3QpKGMpOyBcCisgICAgfSBl
bHNlIHsgXAorICAgICAgICAocylbKGkpKytdPSh1aW50MTZfdCkoKChjKT4+MTApKzB4ZDdjMCk7
IFwKKyAgICAgICAgKHMpWyhpKSsrXT0odWludDE2X3QpKCgoYykmMHgzZmYpfDB4ZGMwMCk7IFwK
KyAgICB9IFwKK30KKworLyoqCisgKiBBcHBlbmQgYSBjb2RlIHBvaW50IHRvIGEgc3RyaW5nLCBv
dmVyd3JpdGluZyAxIG9yIDIgY29kZSB1bml0cy4KKyAqIFRoZSBvZmZzZXQgcG9pbnRzIHRvIHRo
ZSBjdXJyZW50IGVuZCBvZiB0aGUgc3RyaW5nIGNvbnRlbnRzCisgKiBhbmQgaXMgYWR2YW5jZWQg
KHBvc3QtaW5jcmVtZW50KS4KKyAqICJTYWZlIiBtYWNybywgY2hlY2tzIGZvciBhIHZhbGlkIGNv
ZGUgcG9pbnQuCisgKiBJZiBhIHN1cnJvZ2F0ZSBwYWlyIGlzIHdyaXR0ZW4sIGNoZWNrcyBmb3Ig
c3VmZmljaWVudCBzcGFjZSBpbiB0aGUgc3RyaW5nLgorICogSWYgdGhlIGNvZGUgcG9pbnQgaXMg
bm90IHZhbGlkIG9yIGEgdHJhaWwgc3Vycm9nYXRlIGRvZXMgbm90IGZpdCwKKyAqIHRoZW4gaXNF
cnJvciBpcyBzZXQgdG8gVFJVRS4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmlu
ZyBidWZmZXIKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIGk8bGVuZ3RoCisgKiBAcGFyYW0g
Y2FwYWNpdHkgc2l6ZSBvZiB0aGUgc3RyaW5nIGJ1ZmZlcgorICogQHBhcmFtIGMgY29kZSBwb2lu
dCB0byBhcHBlbmQKKyAqIEBwYXJhbSBpc0Vycm9yIG91dHB1dCBVQm9vbCBzZXQgdG8gVFJVRSBp
ZiBhbiBlcnJvciBvY2N1cnMsIG90aGVyd2lzZSBub3QgbW9kaWZpZWQKKyAqIEBzZWUgVTE2X0FQ
UEVORF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9BUFBFTkQo
cywgaSwgY2FwYWNpdHksIGMsIGlzRXJyb3IpIHsgXAorICAgIGlmKCh1aW50MzJfdCkoYyk8PTB4
ZmZmZikgeyBcCisgICAgICAgIChzKVsoaSkrK109KHVpbnQxNl90KShjKTsgXAorICAgIH0gZWxz
ZSBpZigodWludDMyX3QpKGMpPD0weDEwZmZmZiAmJiAoaSkrMTwoY2FwYWNpdHkpKSB7IFwKKyAg
ICAgICAgKHMpWyhpKSsrXT0odWludDE2X3QpKCgoYyk+PjEwKSsweGQ3YzApOyBcCisgICAgICAg
IChzKVsoaSkrK109KHVpbnQxNl90KSgoKGMpJjB4M2ZmKXwweGRjMDApOyBcCisgICAgfSBlbHNl
IC8qIGM+MHgxMGZmZmYgb3Igbm90IGVub3VnaCBzcGFjZSAqLyB7IFwKKyAgICAgICAgKGlzRXJy
b3IpPVRSVUU7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZHZhbmNlIHRoZSBzdHJpbmcgb2Zm
c2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG5leHQuCisgKiAoUG9zdC1p
bmNyZW1lbnRpbmcgaXRlcmF0aW9uLikKKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwt
Zm9ybWVkIFVURi0xNi4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCBVQ2hhciAqIHN0cmluZworICog
QHBhcmFtIGkgc3RyaW5nIG9mZnNldAorICogQHNlZSBVMTZfRldEXzEKKyAqIEBzdGFibGUgSUNV
IDIuNAorICovCisjZGVmaW5lIFUxNl9GV0RfMV9VTlNBRkUocywgaSkgeyBcCisgICAgaWYoVTE2
X0lTX0xFQUQoKHMpWyhpKSsrXSkpIHsgXAorICAgICAgICArKyhpKTsgXAorICAgIH0gXAorfQor
CisvKioKKyAqIEFkdmFuY2UgdGhlIHN0cmluZyBvZmZzZXQgZnJvbSBvbmUgY29kZSBwb2ludCBi
b3VuZGFyeSB0byB0aGUgbmV4dC4KKyAqIChQb3N0LWluY3JlbWVudGluZyBpdGVyYXRpb24uKQor
ICogIlNhZmUiIG1hY3JvLCBoYW5kbGVzIHVucGFpcmVkIHN1cnJvZ2F0ZXMgYW5kIGNoZWNrcyBm
b3Igc3RyaW5nIGJvdW5kYXJpZXMuCisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJp
bmcKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQsIGk8bGVuZ3RoCisgKiBAcGFyYW0gbGVuZ3Ro
IHN0cmluZyBsZW5ndGgKKyAqIEBzZWUgVTE2X0ZXRF8xX1VOU0FGRQorICogQHN0YWJsZSBJQ1Ug
Mi40CisgKi8KKyNkZWZpbmUgVTE2X0ZXRF8xKHMsIGksIGxlbmd0aCkgeyBcCisgICAgaWYoVTE2
X0lTX0xFQUQoKHMpWyhpKSsrXSkgJiYgKGkpPChsZW5ndGgpICYmIFUxNl9JU19UUkFJTCgocylb
aV0pKSB7IFwKKyAgICAgICAgKysoaSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZHZhbmNl
IHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4t
dGggbmV4dCBvbmUsCisgKiBpLmUuLCBtb3ZlIGZvcndhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAq
IChQb3N0LWluY3JlbWVudGluZyBpdGVyYXRpb24uKQorICogIlVuc2FmZSIgbWFjcm8sIGFzc3Vt
ZXMgd2VsbC1mb3JtZWQgVVRGLTE2LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3Ry
aW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gbiBudW1iZXIgb2YgY29k
ZSBwb2ludHMgdG8gc2tpcAorICogQHNlZSBVMTZfRldEX04KKyAqIEBzdGFibGUgSUNVIDIuNAor
ICovCisjZGVmaW5lIFUxNl9GV0RfTl9VTlNBRkUocywgaSwgbikgeyBcCisgICAgaW50MzJfdCBf
X049KG4pOyBcCisgICAgd2hpbGUoX19OPjApIHsgXAorICAgICAgICBVMTZfRldEXzFfVU5TQUZF
KHMsIGkpOyBcCisgICAgICAgIC0tX19OOyBcCisgICAgfSBcCit9CisKKy8qKgorICogQWR2YW5j
ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBu
LXRoIG5leHQgb25lLAorICogaS5lLiwgbW92ZSBmb3J3YXJkIGJ5IG4gY29kZSBwb2ludHMuCisg
KiAoUG9zdC1pbmNyZW1lbnRpbmcgaXRlcmF0aW9uLikKKyAqICJTYWZlIiBtYWNybywgaGFuZGxl
cyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgor
ICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcg
b2Zmc2V0LCBpPGxlbmd0aAorICogQHBhcmFtIGxlbmd0aCBzdHJpbmcgbGVuZ3RoCisgKiBAcGFy
YW0gbiBudW1iZXIgb2YgY29kZSBwb2ludHMgdG8gc2tpcAorICogQHNlZSBVMTZfRldEX05fVU5T
QUZFCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVMTZfRldEX04ocywgaSwgbGVu
Z3RoLCBuKSB7IFwKKyAgICBpbnQzMl90IF9fTj0obik7IFwKKyAgICB3aGlsZShfX04+MCAmJiAo
aSk8KGxlbmd0aCkpIHsgXAorICAgICAgICBVMTZfRldEXzEocywgaSwgbGVuZ3RoKTsgXAorICAg
ICAgICAtLV9fTjsgXAorICAgIH0gXAorfQorCisvKioKKyAqIEFkanVzdCBhIHJhbmRvbS1hY2Nl
c3Mgb2Zmc2V0IHRvIGEgY29kZSBwb2ludCBib3VuZGFyeQorICogYXQgdGhlIHN0YXJ0IG9mIGEg
Y29kZSBwb2ludC4KKyAqIElmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIHRoZSB0cmFpbCBzdXJyb2dh
dGUgb2YgYSBzdXJyb2dhdGUgcGFpciwKKyAqIHRoZW4gdGhlIG9mZnNldCBpcyBkZWNyZW1lbnRl
ZC4KKyAqIE90aGVyd2lzZSwgaXQgaXMgbm90IG1vZGlmaWVkLgorICogIlVuc2FmZSIgbWFjcm8s
IGFzc3VtZXMgd2VsbC1mb3JtZWQgVVRGLTE2LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFy
ICogc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAc2VlIFUxNl9TRVRfQ1Bf
U1RBUlQKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9TRVRfQ1BfU1RBUlRf
VU5TQUZFKHMsIGkpIHsgXAorICAgIGlmKFUxNl9JU19UUkFJTCgocylbaV0pKSB7IFwKKyAgICAg
ICAgLS0oaSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNz
IG9mZnNldCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkKKyAqIGF0IHRoZSBzdGFydCBvZiBhIGNv
ZGUgcG9pbnQuCisgKiBJZiB0aGUgb2Zmc2V0IHBvaW50cyB0byB0aGUgdHJhaWwgc3Vycm9nYXRl
IG9mIGEgc3Vycm9nYXRlIHBhaXIsCisgKiB0aGVuIHRoZSBvZmZzZXQgaXMgZGVjcmVtZW50ZWQu
CisgKiBPdGhlcndpc2UsIGl0IGlzIG5vdCBtb2RpZmllZC4KKyAqICJTYWZlIiBtYWNybywgaGFu
ZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVz
LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQg
c3RhcnRpbmcgc3RyaW5nIG9mZnNldCAodXN1YWxseSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9m
ZnNldCwgc3RhcnQ8PWkKKyAqIEBzZWUgVTE2X1NFVF9DUF9TVEFSVF9VTlNBRkUKKyAqIEBzdGFi
bGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9TRVRfQ1BfU1RBUlQocywgc3RhcnQsIGkpIHsg
XAorICAgIGlmKFUxNl9JU19UUkFJTCgocylbaV0pICYmIChpKT4oc3RhcnQpICYmIFUxNl9JU19M
RUFEKChzKVsoaSktMV0pKSB7IFwKKyAgICAgICAgLS0oaSk7IFwKKyAgICB9IFwKK30KKworLyog
ZGVmaW5pdGlvbnMgd2l0aCBiYWNrd2FyZCBpdGVyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZy
b20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIHByZXZpb3VzIG9uZQorICogYW5kIGdl
dCB0aGUgY29kZSBwb2ludCBiZXR3ZWVuIHRoZW0uCisgKiAoUHJlLWRlY3JlbWVudGluZyBiYWNr
d2FyZCBpdGVyYXRpb24uKQorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1mb3JtZWQg
VVRGLTE2LgorICoKKyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBz
dHJpbmcgbGVuZ3RoLgorICogSWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYSB0cmFpbCBzdXJyb2dh
dGUgdW5pdAorICogZm9yIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50LCB0aGVuIHRoZSBtYWNy
byB3aWxsIHJlYWQKKyAqIHRoZSBwcmVjZWRpbmcgbGVhZCBzdXJyb2dhdGUgYXMgd2VsbC4KKyAq
IElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgbGVhZCBzdXJyb2dhdGUsIHRoZW4gdGhhdCBpdHNl
bGYKKyAqIHdpbGwgYmUgcmV0dXJuZWQgYXMgdGhlIGNvZGUgcG9pbnQuCisgKiBUaGUgcmVzdWx0
IGlzIHVuZGVmaW5lZCBpZiB0aGUgb2Zmc2V0IGlzIGJlaGluZCBhIHNpbmdsZSwgdW5wYWlyZWQg
dHJhaWwgc3Vycm9nYXRlLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisg
KiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJp
YWJsZQorICogQHNlZSBVMTZfUFJFVgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUg
VTE2X1BSRVZfVU5TQUZFKHMsIGksIGMpIHsgXAorICAgIChjKT0ocylbLS0oaSldOyBcCisgICAg
aWYoVTE2X0lTX1RSQUlMKGMpKSB7IFwKKyAgICAgICAgKGMpPVUxNl9HRVRfU1VQUExFTUVOVEFS
WSgocylbLS0oaSldLCAoYykpOyBcCisgICAgfSBcCit9CisKKy8qKgorICogTW92ZSB0aGUgc3Ry
aW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBv
bmUKKyAqIGFuZCBnZXQgdGhlIGNvZGUgcG9pbnQgYmV0d2VlbiB0aGVtLgorICogKFByZS1kZWNy
ZW1lbnRpbmcgYmFja3dhcmQgaXRlcmF0aW9uLikKKyAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1
bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoK
KyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVuZ3Ro
LgorICogSWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgYSB0cmFpbCBzdXJyb2dhdGUgdW5pdAorICog
Zm9yIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50LCB0aGVuIHRoZSBtYWNybyB3aWxsIHJlYWQK
KyAqIHRoZSBwcmVjZWRpbmcgbGVhZCBzdXJyb2dhdGUgYXMgd2VsbC4KKyAqIElmIHRoZSBvZmZz
ZXQgaXMgYmVoaW5kIGEgbGVhZCBzdXJyb2dhdGUgb3IgYmVoaW5kIGEgc2luZ2xlLCB1bnBhaXJl
ZAorICogdHJhaWwgc3Vycm9nYXRlLCB0aGVuIHRoYXQgaXRzZWxmCisgKiB3aWxsIGJlIHJldHVy
bmVkIGFzIHRoZSBjb2RlIHBvaW50LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3Ry
aW5nCisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9mZnNldCAodXN1YWxseSAwKQor
ICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWkKKyAqIEBwYXJhbSBjIG91dHB1dCBV
Q2hhcjMyIHZhcmlhYmxlCisgKiBAc2VlIFUxNl9QUkVWX1VOU0FGRQorICogQHN0YWJsZSBJQ1Ug
Mi40CisgKi8KKyNkZWZpbmUgVTE2X1BSRVYocywgc3RhcnQsIGksIGMpIHsgXAorICAgIChjKT0o
cylbLS0oaSldOyBcCisgICAgaWYoVTE2X0lTX1RSQUlMKGMpKSB7IFwKKyAgICAgICAgdWludDE2
X3QgX19jMjsgXAorICAgICAgICBpZigoaSk+KHN0YXJ0KSAmJiBVMTZfSVNfTEVBRChfX2MyPShz
KVsoaSktMV0pKSB7IFwKKyAgICAgICAgICAgIC0tKGkpOyBcCisgICAgICAgICAgICAoYyk9VTE2
X0dFVF9TVVBQTEVNRU5UQVJZKF9fYzIsIChjKSk7IFwKKyAgICAgICAgfSBcCisgICAgfSBcCit9
CisKKy8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJv
dW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUuCisgKiAoUHJlLWRlY3JlbWVudGluZyBiYWNrd2Fy
ZCBpdGVyYXRpb24uKQorICogVGhlIGlucHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMgdGhl
IHN0cmluZyBsZW5ndGguCisgKiAiVW5zYWZlIiBtYWNybywgYXNzdW1lcyB3ZWxsLWZvcm1lZCBV
VEYtMTYuCisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJhbSBp
IHN0cmluZyBvZmZzZXQKKyAqIEBzZWUgVTE2X0JBQ0tfMQorICogQHN0YWJsZSBJQ1UgMi40Cisg
Ki8KKyNkZWZpbmUgVTE2X0JBQ0tfMV9VTlNBRkUocywgaSkgeyBcCisgICAgaWYoVTE2X0lTX1RS
QUlMKChzKVstLShpKV0pKSB7IFwKKyAgICAgICAgLS0oaSk7IFwKKyAgICB9IFwKK30KKworLyoq
CisgKiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkg
dG8gdGhlIHByZXZpb3VzIG9uZS4KKyAqIChQcmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJh
dGlvbi4pCisgKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5n
IGxlbmd0aC4KKyAqICJTYWZlIiBtYWNybywgaGFuZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFu
ZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVD
aGFyICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9mZnNldCAodXN1
YWxseSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWkKKyAqIEBzZWUgVTE2
X0JBQ0tfMV9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9CQUNL
XzEocywgc3RhcnQsIGkpIHsgXAorICAgIGlmKFUxNl9JU19UUkFJTCgocylbLS0oaSldKSAmJiAo
aSk+KHN0YXJ0KSAmJiBVMTZfSVNfTEVBRCgocylbKGkpLTFdKSkgeyBcCisgICAgICAgIC0tKGkp
OyBcCisgICAgfSBcCit9CisKKy8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9u
ZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBuLXRoIG9uZSBiZWZvcmUgaXQsCisgKiBpLmUu
LCBtb3ZlIGJhY2t3YXJkIGJ5IG4gY29kZSBwb2ludHMuCisgKiAoUHJlLWRlY3JlbWVudGluZyBi
YWNrd2FyZCBpdGVyYXRpb24uKQorICogVGhlIGlucHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUg
YXMgdGhlIHN0cmluZyBsZW5ndGguCisgKiAiVW5zYWZlIiBtYWNybywgYXNzdW1lcyB3ZWxsLWZv
cm1lZCBVVEYtMTYuCisgKgorICogQHBhcmFtIHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBw
YXJhbSBpIHN0cmluZyBvZmZzZXQKKyAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50cyB0
byBza2lwCisgKiBAc2VlIFUxNl9CQUNLX04KKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVm
aW5lIFUxNl9CQUNLX05fVU5TQUZFKHMsIGksIG4pIHsgXAorICAgIGludDMyX3QgX19OPShuKTsg
XAorICAgIHdoaWxlKF9fTj4wKSB7IFwKKyAgICAgICAgVTE2X0JBQ0tfMV9VTlNBRkUocywgaSk7
IFwKKyAgICAgICAgLS1fX047IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJp
bmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggb25lIGJl
Zm9yZSBpdCwKKyAqIGkuZS4sIG1vdmUgYmFja3dhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQ
cmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCisgKiBUaGUgaW5wdXQgb2Zmc2V0
IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAqICJTYWZlIiBtYWNybywg
aGFuZGxlcyB1bnBhaXJlZCBzdXJyb2dhdGVzIGFuZCBjaGVja3MgZm9yIHN0cmluZyBib3VuZGFy
aWVzLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3RyaW5nCisgKiBAcGFyYW0gc3Rh
cnQgc3RhcnQgb2Ygc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBpPGxlbmd0aAor
ICogQHBhcmFtIG4gbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRvIHNraXAKKyAqIEBzZWUgVTE2X0JB
Q0tfTl9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9CQUNLX04o
cywgc3RhcnQsIGksIG4pIHsgXAorICAgIGludDMyX3QgX19OPShuKTsgXAorICAgIHdoaWxlKF9f
Tj4wICYmIChpKT4oc3RhcnQpKSB7IFwKKyAgICAgICAgVTE2X0JBQ0tfMShzLCBzdGFydCwgaSk7
IFwKKyAgICAgICAgLS1fX047IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZGp1c3QgYSByYW5k
b20tYWNjZXNzIG9mZnNldCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkgYWZ0ZXIgYSBjb2RlIHBv
aW50LgorICogSWYgdGhlIG9mZnNldCBpcyBiZWhpbmQgdGhlIGxlYWQgc3Vycm9nYXRlIG9mIGEg
c3Vycm9nYXRlIHBhaXIsCisgKiB0aGVuIHRoZSBvZmZzZXQgaXMgaW5jcmVtZW50ZWQuCisgKiBP
dGhlcndpc2UsIGl0IGlzIG5vdCBtb2RpZmllZC4KKyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJl
IHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVuZ3RoLgorICogIlVuc2FmZSIgbWFjcm8sIGFzc3Vt
ZXMgd2VsbC1mb3JtZWQgVVRGLTE2LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IFVDaGFyICogc3Ry
aW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAc2VlIFUxNl9TRVRfQ1BfTElNSVQK
KyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9TRVRfQ1BfTElNSVRfVU5TQUZF
KHMsIGkpIHsgXAorICAgIGlmKFUxNl9JU19MRUFEKChzKVsoaSktMV0pKSB7IFwKKyAgICAgICAg
KysoaSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9m
ZnNldCB0byBhIGNvZGUgcG9pbnQgYm91bmRhcnkgYWZ0ZXIgYSBjb2RlIHBvaW50LgorICogSWYg
dGhlIG9mZnNldCBpcyBiZWhpbmQgdGhlIGxlYWQgc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBh
aXIsCisgKiB0aGVuIHRoZSBvZmZzZXQgaXMgaW5jcmVtZW50ZWQuCisgKiBPdGhlcndpc2UsIGl0
IGlzIG5vdCBtb2RpZmllZC4KKyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFz
IHRoZSBzdHJpbmcgbGVuZ3RoLgorICogIlNhZmUiIG1hY3JvLCBoYW5kbGVzIHVucGFpcmVkIHN1
cnJvZ2F0ZXMgYW5kIGNoZWNrcyBmb3Igc3RyaW5nIGJvdW5kYXJpZXMuCisgKgorICogQHBhcmFt
IHMgY29uc3QgVUNoYXIgKiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJpbmcg
b2Zmc2V0ICh1c3VhbGx5IDApCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9aTw9
bGVuZ3RoCisgKiBAcGFyYW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgKKyAqIEBzZWUgVTE2X1NFVF9D
UF9MSU1JVF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFUxNl9TRVRf
Q1BfTElNSVQocywgc3RhcnQsIGksIGxlbmd0aCkgeyBcCisgICAgaWYoKHN0YXJ0KTwoaSkgJiYg
KGkpPChsZW5ndGgpICYmIFUxNl9JU19MRUFEKChzKVsoaSktMV0pICYmIFUxNl9JU19UUkFJTCgo
cylbaV0pKSB7IFwKKyAgICAgICAgKysoaSk7IFwKKyAgICB9IFwKK30KKworI2VuZGlmCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dGY4LmggYi9KYXZhU2NyaXB0R2x1
ZS9pY3UvdW5pY29kZS91dGY4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZjgzNjYyYgotLS0gL2Rldi9udWxsCisrKyBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2RlL3V0
ZjguaApAQCAtMCwwICsxLDYyNyBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyog
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5l
cworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKgor
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKgorKiAgIGZpbGUgbmFtZTogIHV0ZjguaAorKiAgIGVuY29k
aW5nOiAgIFVTLUFTQ0lJCisqICAgdGFiIHNpemU6ICAgOCAobm90IHVzZWQpCisqICAgaW5kZW50
YXRpb246NAorKgorKiAgIGNyZWF0ZWQgb246IDE5OTlzZXAxMworKiAgIGNyZWF0ZWQgYnk6IE1h
cmt1cyBXLiBTY2hlcmVyCisqLworCisvKioKKyAqIFxmaWxlCisgKiBcYnJpZWYgQyBBUEk6IDgt
Yml0IFVuaWNvZGUgaGFuZGxpbmcgbWFjcm9zCisgKiAKKyAqIFRoaXMgZmlsZSBkZWZpbmVzIG1h
Y3JvcyB0byBkZWFsIHdpdGggOC1iaXQgVW5pY29kZSAoVVRGLTgpIGNvZGUgdW5pdHMgKGJ5dGVz
KSBhbmQgc3RyaW5ncy4KKyAqIHV0ZjguaCBpcyBpbmNsdWRlZCBieSB1dGYuaCBhZnRlciB1bmlj
b2RlL3VtYWNoaW5lLmgKKyAqIGFuZCBzb21lIGNvbW1vbiBkZWZpbml0aW9ucy4KKyAqCisgKiBG
b3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdXRmLmggYW5kIHRoZSBJQ1UgVXNlciBHdWlkZSBTdHJp
bmdzIGNoYXB0ZXIKKyAqIChodHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1L3VzZXJndWlk
ZS8pLgorICoKKyAqIDxlbT5Vc2FnZTo8L2VtPgorICogSUNVIGNvZGluZyBndWlkZWxpbmVzIGZv
ciBpZigpIHN0YXRlbWVudHMgc2hvdWxkIGJlIGZvbGxvd2VkIHdoZW4gdXNpbmcgdGhlc2UgbWFj
cm9zLgorICogQ29tcG91bmQgc3RhdGVtZW50cyAoY3VybHkgYnJhY2VzIHt9KSBtdXN0IGJlIHVz
ZWQgIGZvciBpZi1lbHNlLXdoaWxlLi4uIAorICogYm9kaWVzIGFuZCBhbGwgbWFjcm8gc3RhdGVt
ZW50cyBzaG91bGQgYmUgdGVybWluYXRlZCB3aXRoIHNlbWljb2xvbi4KKyAqLworCisjaWZuZGVm
IF9fVVRGOF9IX18KKyNkZWZpbmUgX19VVEY4X0hfXworCisvKiB1dGYuaCBtdXN0IGJlIGluY2x1
ZGVkIGZpcnN0LiAqLworI2lmbmRlZiBfX1VURl9IX18KKyMgICBpbmNsdWRlICJ1bmljb2RlL3V0
Zi5oIgorI2VuZGlmCisKKy8qIGludGVybmFsIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qKgorICogXHZhciB1
dGY4X2NvdW50VHJhaWxCeXRlcworICogSW50ZXJuYWwgYXJyYXkgd2l0aCBudW1iZXJzIG9mIHRy
YWlsIGJ5dGVzIGZvciBhbnkgZ2l2ZW4gYnl0ZSB1c2VkIGluCisgKiBsZWFkIGJ5dGUgcG9zaXRp
b24uCisgKiBAaW50ZXJuYWwKKyAqLworI2lmZGVmIFVfVVRGOF9JTVBMCitVX0lOVEVSTkFMIGNv
bnN0IHVpbnQ4X3QgCisjZWxpZiBkZWZpbmVkKFVfU1RBVElDX0lNUExFTUVOVEFUSU9OKQorVV9D
RlVOQyBjb25zdCB1aW50OF90CisjZWxzZQorVV9DRlVOQyBVX0lNUE9SVCBjb25zdCB1aW50OF90
IC8qIFVfSU1QT1JUMj8gKi8gLypVX0lNUE9SVCovIAorI2VuZGlmCit1dGY4X2NvdW50VHJhaWxC
eXRlc1syNTZdOworCisvKioKKyAqIENvdW50IHRoZSB0cmFpbCBieXRlcyBmb3IgYSBVVEYtOCBs
ZWFkIGJ5dGUuCisgKiBAaW50ZXJuYWwKKyAqLworI2RlZmluZSBVOF9DT1VOVF9UUkFJTF9CWVRF
UyhsZWFkQnl0ZSkgKHV0ZjhfY291bnRUcmFpbEJ5dGVzWyh1aW50OF90KWxlYWRCeXRlXSkKKwor
LyoqCisgKiBNYXNrIGEgVVRGLTggbGVhZCBieXRlLCBsZWF2ZSBvbmx5IHRoZSBsb3dlciBiaXRz
IHRoYXQgZm9ybSBwYXJ0IG9mIHRoZSBjb2RlIHBvaW50IHZhbHVlLgorICogQGludGVybmFsCisg
Ki8KKyNkZWZpbmUgVThfTUFTS19MRUFEX0JZVEUobGVhZEJ5dGUsIGNvdW50VHJhaWxCeXRlcykg
KChsZWFkQnl0ZSkmPSgxPDwoNi0oY291bnRUcmFpbEJ5dGVzKSkpLTEpCisKKy8qKgorICogRnVu
Y3Rpb24gZm9yIGhhbmRsaW5nICJuZXh0IGNvZGUgcG9pbnQiIHdpdGggZXJyb3ItY2hlY2tpbmcu
CisgKiBAaW50ZXJuYWwKKyAqLworVV9JTlRFUk5BTCBVQ2hhcjMyIFVfRVhQT1JUMgordXRmOF9u
ZXh0Q2hhclNhZmVCb2R5KGNvbnN0IHVpbnQ4X3QgKnMsIGludDMyX3QgKnBpLCBpbnQzMl90IGxl
bmd0aCwgVUNoYXIzMiBjLCBVQm9vbCBzdHJpY3QpOworCisvKioKKyAqIEZ1bmN0aW9uIGZvciBo
YW5kbGluZyAiYXBwZW5kIGNvZGUgcG9pbnQiIHdpdGggZXJyb3ItY2hlY2tpbmcuCisgKiBAaW50
ZXJuYWwKKyAqLworVV9JTlRFUk5BTCBpbnQzMl90IFVfRVhQT1JUMgordXRmOF9hcHBlbmRDaGFy
U2FmZUJvZHkodWludDhfdCAqcywgaW50MzJfdCBpLCBpbnQzMl90IGxlbmd0aCwgVUNoYXIzMiBj
LCBVQm9vbCAqcElzRXJyb3IpOworCisvKioKKyAqIEZ1bmN0aW9uIGZvciBoYW5kbGluZyAicHJl
dmlvdXMgY29kZSBwb2ludCIgd2l0aCBlcnJvci1jaGVja2luZy4KKyAqIEBpbnRlcm5hbAorICov
CitVX0lOVEVSTkFMIFVDaGFyMzIgVV9FWFBPUlQyCit1dGY4X3ByZXZDaGFyU2FmZUJvZHkoY29u
c3QgdWludDhfdCAqcywgaW50MzJfdCBzdGFydCwgaW50MzJfdCAqcGksIFVDaGFyMzIgYywgVUJv
b2wgc3RyaWN0KTsKKworLyoqCisgKiBGdW5jdGlvbiBmb3IgaGFuZGxpbmcgInNraXAgYmFja3dh
cmQgb25lIGNvZGUgcG9pbnQiIHdpdGggZXJyb3ItY2hlY2tpbmcuCisgKiBAaW50ZXJuYWwKKyAq
LworVV9JTlRFUk5BTCBpbnQzMl90IFVfRVhQT1JUMgordXRmOF9iYWNrMVNhZmVCb2R5KGNvbnN0
IHVpbnQ4X3QgKnMsIGludDMyX3Qgc3RhcnQsIGludDMyX3QgaSk7CisKKy8qIHNpbmdsZS1jb2Rl
IHBvaW50IGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICovCisKKy8qKgorICogRG9lcyB0aGlzIGNvZGUgdW5pdCAoYnl0ZSkgZW5jb2RlIGEg
Y29kZSBwb2ludCBieSBpdHNlbGYgKFVTLUFTQ0lJIDAuLjB4N2YpPworICogQHBhcmFtIGMgOC1i
aXQgY29kZSB1bml0IChieXRlKQorICogQHJldHVybiBUUlVFIG9yIEZBTFNFCisgKiBAc3RhYmxl
IElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9JU19TSU5HTEUoYykgKCgoYykmMHg4MCk9PTApCisK
Ky8qKgorICogSXMgdGhpcyBjb2RlIHVuaXQgKGJ5dGUpIGEgVVRGLTggbGVhZCBieXRlPworICog
QHBhcmFtIGMgOC1iaXQgY29kZSB1bml0IChieXRlKQorICogQHJldHVybiBUUlVFIG9yIEZBTFNF
CisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9JU19MRUFEKGMpICgodWludDhf
dCkoKGMpLTB4YzApPDB4M2UpCisKKy8qKgorICogSXMgdGhpcyBjb2RlIHVuaXQgKGJ5dGUpIGEg
VVRGLTggdHJhaWwgYnl0ZT8KKyAqIEBwYXJhbSBjIDgtYml0IGNvZGUgdW5pdCAoYnl0ZSkKKyAq
IEByZXR1cm4gVFJVRSBvciBGQUxTRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUg
VThfSVNfVFJBSUwoYykgKCgoYykmMHhjMCk9PTB4ODApCisKKy8qKgorICogSG93IG1hbnkgY29k
ZSB1bml0cyAoYnl0ZXMpIGFyZSB1c2VkIGZvciB0aGUgVVRGLTggZW5jb2RpbmcKKyAqIG9mIHRo
aXMgVW5pY29kZSBjb2RlIHBvaW50PworICogQHBhcmFtIGMgMzItYml0IGNvZGUgcG9pbnQKKyAq
IEByZXR1cm4gMS4uNCwgb3IgMCBpZiBjIGlzIGEgc3Vycm9nYXRlIG9yIG5vdCBhIFVuaWNvZGUg
Y29kZSBwb2ludAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfTEVOR1RIKGMp
IFwKKyAgICAoKHVpbnQzMl90KShjKTw9MHg3ZiA/IDEgOiBcCisgICAgICAgICgodWludDMyX3Qp
KGMpPD0weDdmZiA/IDIgOiBcCisgICAgICAgICAgICAoKHVpbnQzMl90KShjKTw9MHhkN2ZmID8g
MyA6IFwKKyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShjKTw9MHhkZmZmIHx8ICh1aW50MzJf
dCkoYyk+MHgxMGZmZmYgPyAwIDogXAorICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShj
KTw9MHhmZmZmID8gMyA6IDQpXAorICAgICAgICAgICAgICAgICkgXAorICAgICAgICAgICAgKSBc
CisgICAgICAgICkgXAorICAgICkKKworLyoqCisgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgVVRG
LTggY29kZSB1bml0cyAoYnl0ZXMpIHBlciBVbmljb2RlIGNvZGUgcG9pbnQgKFUrMDAwMC4uVSsx
MGZmZmYpLgorICogQHJldHVybiA0CisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBV
OF9NQVhfTEVOR1RIIDQKKworLyoqCisgKiBHZXQgYSBjb2RlIHBvaW50IGZyb20gYSBzdHJpbmcg
YXQgYSByYW5kb20tYWNjZXNzIG9mZnNldCwKKyAqIHdpdGhvdXQgY2hhbmdpbmcgdGhlIG9mZnNl
dC4KKyAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRvIGVpdGhlciB0aGUgbGVhZCBieXRlIG9yIG9u
ZSBvZiB0aGUgdHJhaWwgYnl0ZXMKKyAqIGZvciBhIGNvZGUgcG9pbnQsIGluIHdoaWNoIGNhc2Ug
dGhlIG1hY3JvIHdpbGwgcmVhZCBhbGwgb2YgdGhlIGJ5dGVzCisgKiBmb3IgdGhlIGNvZGUgcG9p
bnQuCisgKiBUaGUgcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgb2Zmc2V0IHBvaW50cyB0byBh
biBpbGxlZ2FsIFVURi04CisgKiBieXRlIHNlcXVlbmNlLgorICogSXRlcmF0aW9uIHRocm91Z2gg
YSBzdHJpbmcgaXMgbW9yZSBlZmZpY2llbnQgd2l0aCBVOF9ORVhUX1VOU0FGRSBvciBVOF9ORVhU
LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0
cmluZyBvZmZzZXQKKyAqIEBwYXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlCisgKiBAc2Vl
IFU4X0dFVAorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfR0VUX1VOU0FGRShz
LCBpLCBjKSB7IFwKKyAgICBpbnQzMl90IF91OF9nZXRfdW5zYWZlX2luZGV4PShpbnQzMl90KShp
KTsgXAorICAgIFU4X1NFVF9DUF9TVEFSVF9VTlNBRkUocywgX3U4X2dldF91bnNhZmVfaW5kZXgp
OyBcCisgICAgVThfTkVYVF9VTlNBRkUocywgX3U4X2dldF91bnNhZmVfaW5kZXgsIGMpOyBcCit9
CisKKy8qKgorICogR2V0IGEgY29kZSBwb2ludCBmcm9tIGEgc3RyaW5nIGF0IGEgcmFuZG9tLWFj
Y2VzcyBvZmZzZXQsCisgKiB3aXRob3V0IGNoYW5naW5nIHRoZSBvZmZzZXQuCisgKiBUaGUgb2Zm
c2V0IG1heSBwb2ludCB0byBlaXRoZXIgdGhlIGxlYWQgYnl0ZSBvciBvbmUgb2YgdGhlIHRyYWls
IGJ5dGVzCisgKiBmb3IgYSBjb2RlIHBvaW50LCBpbiB3aGljaCBjYXNlIHRoZSBtYWNybyB3aWxs
IHJlYWQgYWxsIG9mIHRoZSBieXRlcworICogZm9yIHRoZSBjb2RlIHBvaW50LgorICogSWYgdGhl
IG9mZnNldCBwb2ludHMgdG8gYW4gaWxsZWdhbCBVVEYtOCBieXRlIHNlcXVlbmNlLCB0aGVuCisg
KiBjIGlzIHNldCB0byBhIG5lZ2F0aXZlIHZhbHVlLgorICogSXRlcmF0aW9uIHRocm91Z2ggYSBz
dHJpbmcgaXMgbW9yZSBlZmZpY2llbnQgd2l0aCBVOF9ORVhUX1VOU0FGRSBvciBVOF9ORVhULgor
ICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBz
dGFydGluZyBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9
aTxsZW5ndGgKKyAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICogQHBhcmFtIGMgb3V0
cHV0IFVDaGFyMzIgdmFyaWFibGUsIHNldCB0byA8MCBpbiBjYXNlIG9mIGFuIGVycm9yCisgKiBA
c2VlIFU4X0dFVF9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFU4X0dF
VChzLCBzdGFydCwgaSwgbGVuZ3RoLCBjKSB7IFwKKyAgICBpbnQzMl90IF91OF9nZXRfaW5kZXg9
KGludDMyX3QpKGkpOyBcCisgICAgVThfU0VUX0NQX1NUQVJUKHMsIHN0YXJ0LCBfdThfZ2V0X2lu
ZGV4KTsgXAorICAgIFU4X05FWFQocywgX3U4X2dldF9pbmRleCwgbGVuZ3RoLCBjKTsgXAorfQor
CisvKiBkZWZpbml0aW9ucyB3aXRoIGZvcndhcmQgaXRlcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKioKKyAqIEdldCBhIGNvZGUgcG9pbnQgZnJv
bSBhIHN0cmluZyBhdCBhIGNvZGUgcG9pbnQgYm91bmRhcnkgb2Zmc2V0LAorICogYW5kIGFkdmFu
Y2UgdGhlIG9mZnNldCB0byB0aGUgbmV4dCBjb2RlIHBvaW50IGJvdW5kYXJ5LgorICogKFBvc3Qt
aW5jcmVtZW50aW5nIGZvcndhcmQgaXRlcmF0aW9uLikKKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1
bWVzIHdlbGwtZm9ybWVkIFVURi04LgorICoKKyAqIFRoZSBvZmZzZXQgbWF5IHBvaW50IHRvIHRo
ZSBsZWFkIGJ5dGUgb2YgYSBtdWx0aS1ieXRlIHNlcXVlbmNlLAorICogaW4gd2hpY2ggY2FzZSB0
aGUgbWFjcm8gd2lsbCByZWFkIHRoZSB3aG9sZSBzZXF1ZW5jZS4KKyAqIFRoZSByZXN1bHQgaXMg
dW5kZWZpbmVkIGlmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgdHJhaWwgYnl0ZQorICogb3IgYW4g
aWxsZWdhbCBVVEYtOCBzZXF1ZW5jZS4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICog
c3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAcGFyYW0gYyBvdXRwdXQgVUNo
YXIzMiB2YXJpYWJsZQorICogQHNlZSBVOF9ORVhUCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLwor
I2RlZmluZSBVOF9ORVhUX1VOU0FGRShzLCBpLCBjKSB7IFwKKyAgICAoYyk9KHMpWyhpKSsrXTsg
XAorICAgIGlmKCh1aW50OF90KSgoYyktMHhjMCk8MHgzNSkgeyBcCisgICAgICAgIHVpbnQ4X3Qg
X19jb3VudD1VOF9DT1VOVF9UUkFJTF9CWVRFUyhjKTsgXAorICAgICAgICBVOF9NQVNLX0xFQURf
QllURShjLCBfX2NvdW50KTsgXAorICAgICAgICBzd2l0Y2goX19jb3VudCkgeyBcCisgICAgICAg
IC8qIGVhY2ggZm9sbG93aW5nIGJyYW5jaCBmYWxscyB0aHJvdWdoIHRvIHRoZSBuZXh0IG9uZSAq
LyBcCisgICAgICAgIGNhc2UgMzogXAorICAgICAgICAgICAgKGMpPSgoYyk8PDYpfCgocylbKGkp
KytdJjB4M2YpOyBcCisgICAgICAgIGNhc2UgMjogXAorICAgICAgICAgICAgKGMpPSgoYyk8PDYp
fCgocylbKGkpKytdJjB4M2YpOyBcCisgICAgICAgIGNhc2UgMTogXAorICAgICAgICAgICAgKGMp
PSgoYyk8PDYpfCgocylbKGkpKytdJjB4M2YpOyBcCisgICAgICAgIC8qIG5vIG90aGVyIGJyYW5j
aGVzIHRvIG9wdGltaXplIHN3aXRjaCgpICovIFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAg
ICAgIH0gXAorICAgIH0gXAorfQorCisvKioKKyAqIEdldCBhIGNvZGUgcG9pbnQgZnJvbSBhIHN0
cmluZyBhdCBhIGNvZGUgcG9pbnQgYm91bmRhcnkgb2Zmc2V0LAorICogYW5kIGFkdmFuY2UgdGhl
IG9mZnNldCB0byB0aGUgbmV4dCBjb2RlIHBvaW50IGJvdW5kYXJ5LgorICogKFBvc3QtaW5jcmVt
ZW50aW5nIGZvcndhcmQgaXRlcmF0aW9uLikKKyAqICJTYWZlIiBtYWNybywgY2hlY2tzIGZvciBp
bGxlZ2FsIHNlcXVlbmNlcyBhbmQgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIFRoZSBv
ZmZzZXQgbWF5IHBvaW50IHRvIHRoZSBsZWFkIGJ5dGUgb2YgYSBtdWx0aS1ieXRlIHNlcXVlbmNl
LAorICogaW4gd2hpY2ggY2FzZSB0aGUgbWFjcm8gd2lsbCByZWFkIHRoZSB3aG9sZSBzZXF1ZW5j
ZS4KKyAqIElmIHRoZSBvZmZzZXQgcG9pbnRzIHRvIGEgdHJhaWwgYnl0ZSBvciBhbiBpbGxlZ2Fs
IFVURi04IHNlcXVlbmNlLCB0aGVuCisgKiBjIGlzIHNldCB0byBhIG5lZ2F0aXZlIHZhbHVlLgor
ICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0cmlu
ZyBvZmZzZXQsIGk8bGVuZ3RoCisgKiBAcGFyYW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgKKyAqIEBw
YXJhbSBjIG91dHB1dCBVQ2hhcjMyIHZhcmlhYmxlLCBzZXQgdG8gPDAgaW4gY2FzZSBvZiBhbiBl
cnJvcgorICogQHNlZSBVOF9ORVhUX1VOU0FGRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNk
ZWZpbmUgVThfTkVYVChzLCBpLCBsZW5ndGgsIGMpIHsgXAorICAgIChjKT0ocylbKGkpKytdOyBc
CisgICAgaWYoKCh1aW50OF90KShjKSk+PTB4ODApIHsgXAorICAgICAgICBpZihVOF9JU19MRUFE
KGMpKSB7IFwKKyAgICAgICAgICAgIChjKT11dGY4X25leHRDaGFyU2FmZUJvZHkoKGNvbnN0IHVp
bnQ4X3QgKilzLCAmKGkpLCAoaW50MzJfdCkobGVuZ3RoKSwgYywgLTEpOyBcCisgICAgICAgIH0g
ZWxzZSB7IFwKKyAgICAgICAgICAgIChjKT1VX1NFTlRJTkVMOyBcCisgICAgICAgIH0gXAorICAg
IH0gXAorfQorCisvKioKKyAqIEFwcGVuZCBhIGNvZGUgcG9pbnQgdG8gYSBzdHJpbmcsIG92ZXJ3
cml0aW5nIDEgdG8gNCBieXRlcy4KKyAqIFRoZSBvZmZzZXQgcG9pbnRzIHRvIHRoZSBjdXJyZW50
IGVuZCBvZiB0aGUgc3RyaW5nIGNvbnRlbnRzCisgKiBhbmQgaXMgYWR2YW5jZWQgKHBvc3QtaW5j
cmVtZW50KS4KKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIGEgdmFsaWQgY29kZSBwb2ludCBh
bmQgc3VmZmljaWVudCBzcGFjZSBpbiB0aGUgc3RyaW5nLgorICogT3RoZXJ3aXNlLCB0aGUgcmVz
dWx0IGlzIHVuZGVmaW5lZC4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5n
IGJ1ZmZlcgorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldAorICogQHBhcmFtIGMgY29kZSBwb2lu
dCB0byBhcHBlbmQKKyAqIEBzZWUgVThfQVBQRU5ECisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLwor
I2RlZmluZSBVOF9BUFBFTkRfVU5TQUZFKHMsIGksIGMpIHsgXAorICAgIGlmKCh1aW50MzJfdCko
Yyk8PTB4N2YpIHsgXAorICAgICAgICAocylbKGkpKytdPSh1aW50OF90KShjKTsgXAorICAgIH0g
ZWxzZSB7IFwKKyAgICAgICAgaWYoKHVpbnQzMl90KShjKTw9MHg3ZmYpIHsgXAorICAgICAgICAg
ICAgKHMpWyhpKSsrXT0odWludDhfdCkoKChjKT4+Nil8MHhjMCk7IFwKKyAgICAgICAgfSBlbHNl
IHsgXAorICAgICAgICAgICAgaWYoKHVpbnQzMl90KShjKTw9MHhmZmZmKSB7IFwKKyAgICAgICAg
ICAgICAgICAocylbKGkpKytdPSh1aW50OF90KSgoKGMpPj4xMil8MHhlMCk7IFwKKyAgICAgICAg
ICAgIH0gZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAocylbKGkpKytdPSh1aW50OF90KSgoKGMp
Pj4xOCl8MHhmMCk7IFwKKyAgICAgICAgICAgICAgICAocylbKGkpKytdPSh1aW50OF90KSgoKChj
KT4+MTIpJjB4M2YpfDB4ODApOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIChzKVso
aSkrK109KHVpbnQ4X3QpKCgoKGMpPj42KSYweDNmKXwweDgwKTsgXAorICAgICAgICB9IFwKKyAg
ICAgICAgKHMpWyhpKSsrXT0odWludDhfdCkoKChjKSYweDNmKXwweDgwKTsgXAorICAgIH0gXAor
fQorCisvKioKKyAqIEFwcGVuZCBhIGNvZGUgcG9pbnQgdG8gYSBzdHJpbmcsIG92ZXJ3cml0aW5n
IDEgb3IgMiBjb2RlIHVuaXRzLgorICogVGhlIG9mZnNldCBwb2ludHMgdG8gdGhlIGN1cnJlbnQg
ZW5kIG9mIHRoZSBzdHJpbmcgY29udGVudHMKKyAqIGFuZCBpcyBhZHZhbmNlZCAocG9zdC1pbmNy
ZW1lbnQpLgorICogIlNhZmUiIG1hY3JvLCBjaGVja3MgZm9yIGEgdmFsaWQgY29kZSBwb2ludC4K
KyAqIElmIGEgbm9uLUFTQ0lJIGNvZGUgcG9pbnQgaXMgd3JpdHRlbiwgY2hlY2tzIGZvciBzdWZm
aWNpZW50IHNwYWNlIGluIHRoZSBzdHJpbmcuCisgKiBJZiB0aGUgY29kZSBwb2ludCBpcyBub3Qg
dmFsaWQgb3IgdHJhaWwgYnl0ZXMgZG8gbm90IGZpdCwKKyAqIHRoZW4gaXNFcnJvciBpcyBzZXQg
dG8gVFJVRS4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5nIGJ1ZmZlcgor
ICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5ndGgKKyAqIEBwYXJhbSBsZW5ndGggc2l6
ZSBvZiB0aGUgc3RyaW5nIGJ1ZmZlcgorICogQHBhcmFtIGMgY29kZSBwb2ludCB0byBhcHBlbmQK
KyAqIEBwYXJhbSBpc0Vycm9yIG91dHB1dCBVQm9vbCBzZXQgdG8gVFJVRSBpZiBhbiBlcnJvciBv
Y2N1cnMsIG90aGVyd2lzZSBub3QgbW9kaWZpZWQKKyAqIEBzZWUgVThfQVBQRU5EX1VOU0FGRQor
ICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfQVBQRU5EKHMsIGksIGxlbmd0aCwg
YywgaXNFcnJvcikgeyBcCisgICAgaWYoKHVpbnQzMl90KShjKTw9MHg3ZikgeyBcCisgICAgICAg
IChzKVsoaSkrK109KHVpbnQ4X3QpKGMpOyBcCisgICAgfSBlbHNlIHsgXAorICAgICAgICAoaSk9
dXRmOF9hcHBlbmRDaGFyU2FmZUJvZHkocywgKGludDMyX3QpKGkpLCAoaW50MzJfdCkobGVuZ3Ro
KSwgYywgJihpc0Vycm9yKSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZHZhbmNlIHRoZSBz
dHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG5leHQuCisg
KiAoUG9zdC1pbmNyZW1lbnRpbmcgaXRlcmF0aW9uLikKKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1
bWVzIHdlbGwtZm9ybWVkIFVURi04LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBz
dHJpbmcKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKKyAqIEBzZWUgVThfRldEXzEKKyAqIEBz
dGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFU4X0ZXRF8xX1VOU0FGRShzLCBpKSB7IFwKKyAg
ICAoaSkrPTErVThfQ09VTlRfVFJBSUxfQllURVMoKHMpW2ldKTsgXAorfQorCisvKioKKyAqIEFk
dmFuY2UgdGhlIHN0cmluZyBvZmZzZXQgZnJvbSBvbmUgY29kZSBwb2ludCBib3VuZGFyeSB0byB0
aGUgbmV4dC4KKyAqIChQb3N0LWluY3JlbWVudGluZyBpdGVyYXRpb24uKQorICogIlNhZmUiIG1h
Y3JvLCBjaGVja3MgZm9yIGlsbGVnYWwgc2VxdWVuY2VzIGFuZCBmb3Igc3RyaW5nIGJvdW5kYXJp
ZXMuCisgKgorICogQHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZworICogQHBhcmFtIGkg
c3RyaW5nIG9mZnNldCwgaTxsZW5ndGgKKyAqIEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAor
ICogQHNlZSBVOF9GV0RfMV9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5l
IFU4X0ZXRF8xKHMsIGksIGxlbmd0aCkgeyBcCisgICAgdWludDhfdCBfX2I9KHMpWyhpKSsrXTsg
XAorICAgIGlmKFU4X0lTX0xFQUQoX19iKSkgeyBcCisgICAgICAgIHVpbnQ4X3QgX19jb3VudD1V
OF9DT1VOVF9UUkFJTF9CWVRFUyhfX2IpOyBcCisgICAgICAgIGlmKChpKStfX2NvdW50PihsZW5n
dGgpKSB7IFwKKyAgICAgICAgICAgIF9fY291bnQ9KHVpbnQ4X3QpKChsZW5ndGgpLShpKSk7IFwK
KyAgICAgICAgfSBcCisgICAgICAgIHdoaWxlKF9fY291bnQ+MCAmJiBVOF9JU19UUkFJTCgocylb
aV0pKSB7IFwKKyAgICAgICAgICAgICsrKGkpOyBcCisgICAgICAgICAgICAtLV9fY291bnQ7IFwK
KyAgICAgICAgfSBcCisgICAgfSBcCit9CisKKy8qKgorICogQWR2YW5jZSB0aGUgc3RyaW5nIG9m
ZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJvdW5kYXJ5IHRvIHRoZSBuLXRoIG5leHQgb25lLAor
ICogaS5lLiwgbW92ZSBmb3J3YXJkIGJ5IG4gY29kZSBwb2ludHMuCisgKiAoUG9zdC1pbmNyZW1l
bnRpbmcgaXRlcmF0aW9uLikKKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVk
IFVURi04LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJh
bSBpIHN0cmluZyBvZmZzZXQKKyAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50cyB0byBz
a2lwCisgKiBAc2VlIFU4X0ZXRF9OCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBV
OF9GV0RfTl9VTlNBRkUocywgaSwgbikgeyBcCisgICAgaW50MzJfdCBfX049KG4pOyBcCisgICAg
d2hpbGUoX19OPjApIHsgXAorICAgICAgICBVOF9GV0RfMV9VTlNBRkUocywgaSk7IFwKKyAgICAg
ICAgLS1fX047IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBBZHZhbmNlIHRoZSBzdHJpbmcgb2Zm
c2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggbmV4dCBvbmUsCisg
KiBpLmUuLCBtb3ZlIGZvcndhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQb3N0LWluY3JlbWVu
dGluZyBpdGVyYXRpb24uKQorICogIlNhZmUiIG1hY3JvLCBjaGVja3MgZm9yIGlsbGVnYWwgc2Vx
dWVuY2VzIGFuZCBmb3Igc3RyaW5nIGJvdW5kYXJpZXMuCisgKgorICogQHBhcmFtIHMgY29uc3Qg
dWludDhfdCAqIHN0cmluZworICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgaTxsZW5ndGgKKyAq
IEBwYXJhbSBsZW5ndGggc3RyaW5nIGxlbmd0aAorICogQHBhcmFtIG4gbnVtYmVyIG9mIGNvZGUg
cG9pbnRzIHRvIHNraXAKKyAqIEBzZWUgVThfRldEX05fVU5TQUZFCisgKiBAc3RhYmxlIElDVSAy
LjQKKyAqLworI2RlZmluZSBVOF9GV0RfTihzLCBpLCBsZW5ndGgsIG4pIHsgXAorICAgIGludDMy
X3QgX19OPShuKTsgXAorICAgIHdoaWxlKF9fTj4wICYmIChpKTwobGVuZ3RoKSkgeyBcCisgICAg
ICAgIFU4X0ZXRF8xKHMsIGksIGxlbmd0aCk7IFwKKyAgICAgICAgLS1fX047IFwKKyAgICB9IFwK
K30KKworLyoqCisgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9mZnNldCB0byBhIGNvZGUgcG9p
bnQgYm91bmRhcnkKKyAqIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgcG9pbnQuCisgKiBJZiB0aGUg
b2Zmc2V0IHBvaW50cyB0byBhIFVURi04IHRyYWlsIGJ5dGUsCisgKiB0aGVuIHRoZSBvZmZzZXQg
aXMgbW92ZWQgYmFja3dhcmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVhZCBieXRlLgorICogT3Ro
ZXJ3aXNlLCBpdCBpcyBub3QgbW9kaWZpZWQuCisgKiAiVW5zYWZlIiBtYWNybywgYXNzdW1lcyB3
ZWxsLWZvcm1lZCBVVEYtOC4KKyAqCisgKiBAcGFyYW0gcyBjb25zdCB1aW50OF90ICogc3RyaW5n
CisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBAc2VlIFU4X1NFVF9DUF9TVEFSVAorICog
QHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfU0VUX0NQX1NUQVJUX1VOU0FGRShzLCBp
KSB7IFwKKyAgICB3aGlsZShVOF9JU19UUkFJTCgocylbaV0pKSB7IC0tKGkpOyB9IFwKK30KKwor
LyoqCisgKiBBZGp1c3QgYSByYW5kb20tYWNjZXNzIG9mZnNldCB0byBhIGNvZGUgcG9pbnQgYm91
bmRhcnkKKyAqIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgcG9pbnQuCisgKiBJZiB0aGUgb2Zmc2V0
IHBvaW50cyB0byBhIFVURi04IHRyYWlsIGJ5dGUsCisgKiB0aGVuIHRoZSBvZmZzZXQgaXMgbW92
ZWQgYmFja3dhcmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbGVhZCBieXRlLgorICogT3RoZXJ3aXNl
LCBpdCBpcyBub3QgbW9kaWZpZWQuCisgKiAiU2FmZSIgbWFjcm8sIGNoZWNrcyBmb3IgaWxsZWdh
bCBzZXF1ZW5jZXMgYW5kIGZvciBzdHJpbmcgYm91bmRhcmllcy4KKyAqCisgKiBAcGFyYW0gcyBj
b25zdCB1aW50OF90ICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9m
ZnNldCAodXN1YWxseSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWkKKyAq
IEBzZWUgVThfU0VUX0NQX1NUQVJUX1VOU0FGRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNk
ZWZpbmUgVThfU0VUX0NQX1NUQVJUKHMsIHN0YXJ0LCBpKSB7IFwKKyAgICBpZihVOF9JU19UUkFJ
TCgocylbKGkpXSkpIHsgXAorICAgICAgICAoaSk9dXRmOF9iYWNrMVNhZmVCb2R5KHMsIHN0YXJ0
LCAoaW50MzJfdCkoaSkpOyBcCisgICAgfSBcCit9CisKKy8qIGRlZmluaXRpb25zIHdpdGggYmFj
a3dhcmQgaXRlcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov
CisKKy8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50IGJv
dW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUKKyAqIGFuZCBnZXQgdGhlIGNvZGUgcG9pbnQgYmV0
d2VlbiB0aGVtLgorICogKFByZS1kZWNyZW1lbnRpbmcgYmFja3dhcmQgaXRlcmF0aW9uLikKKyAq
ICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi04LgorICoKKyAqIFRoZSBp
bnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVuZ3RoLgorICogSWYg
dGhlIG9mZnNldCBpcyBiZWhpbmQgYSBtdWx0aS1ieXRlIHNlcXVlbmNlLCB0aGVuIHRoZSBtYWNy
byB3aWxsIHJlYWQKKyAqIHRoZSB3aG9sZSBzZXF1ZW5jZS4KKyAqIElmIHRoZSBvZmZzZXQgaXMg
YmVoaW5kIGEgbGVhZCBieXRlLCB0aGVuIHRoYXQgaXRzZWxmCisgKiB3aWxsIGJlIHJldHVybmVk
IGFzIHRoZSBjb2RlIHBvaW50LgorICogVGhlIHJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIG9m
ZnNldCBpcyBiZWhpbmQgYW4gaWxsZWdhbCBVVEYtOCBzZXF1ZW5jZS4KKyAqCisgKiBAcGFyYW0g
cyBjb25zdCB1aW50OF90ICogc3RyaW5nCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0CisgKiBA
cGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJpYWJsZQorICogQHNlZSBVOF9QUkVWCisgKiBAc3Rh
YmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9QUkVWX1VOU0FGRShzLCBpLCBjKSB7IFwKKyAg
ICAoYyk9KHMpWy0tKGkpXTsgXAorICAgIGlmKFU4X0lTX1RSQUlMKGMpKSB7IFwKKyAgICAgICAg
dWludDhfdCBfX2IsIF9fY291bnQ9MSwgX19zaGlmdD02OyBcCitcCisgICAgICAgIC8qIGMgaXMg
YSB0cmFpbCBieXRlICovIFwKKyAgICAgICAgKGMpJj0weDNmOyBcCisgICAgICAgIGZvcig7Oykg
eyBcCisgICAgICAgICAgICBfX2I9KHMpWy0tKGkpXTsgXAorICAgICAgICAgICAgaWYoX19iPj0w
eGMwKSB7IFwKKyAgICAgICAgICAgICAgICBVOF9NQVNLX0xFQURfQllURShfX2IsIF9fY291bnQp
OyBcCisgICAgICAgICAgICAgICAgKGMpfD0oVUNoYXIzMilfX2I8PF9fc2hpZnQ7IFwKKyAgICAg
ICAgICAgICAgICBicmVhazsgXAorICAgICAgICAgICAgfSBlbHNlIHsgXAorICAgICAgICAgICAg
ICAgIChjKXw9KFVDaGFyMzIpKF9fYiYweDNmKTw8X19zaGlmdDsgXAorICAgICAgICAgICAgICAg
ICsrX19jb3VudDsgXAorICAgICAgICAgICAgICAgIF9fc2hpZnQrPTY7IFwKKyAgICAgICAgICAg
IH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJpbmcg
b2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIHByZXZpb3VzIG9uZQor
ICogYW5kIGdldCB0aGUgY29kZSBwb2ludCBiZXR3ZWVuIHRoZW0uCisgKiAoUHJlLWRlY3JlbWVu
dGluZyBiYWNrd2FyZCBpdGVyYXRpb24uKQorICogIlNhZmUiIG1hY3JvLCBjaGVja3MgZm9yIGls
bGVnYWwgc2VxdWVuY2VzIGFuZCBmb3Igc3RyaW5nIGJvdW5kYXJpZXMuCisgKgorICogVGhlIGlu
cHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMgdGhlIHN0cmluZyBsZW5ndGguCisgKiBJZiB0
aGUgb2Zmc2V0IGlzIGJlaGluZCBhIG11bHRpLWJ5dGUgc2VxdWVuY2UsIHRoZW4gdGhlIG1hY3Jv
IHdpbGwgcmVhZAorICogdGhlIHdob2xlIHNlcXVlbmNlLgorICogSWYgdGhlIG9mZnNldCBpcyBi
ZWhpbmQgYSBsZWFkIGJ5dGUsIHRoZW4gdGhhdCBpdHNlbGYKKyAqIHdpbGwgYmUgcmV0dXJuZWQg
YXMgdGhlIGNvZGUgcG9pbnQuCisgKiBJZiB0aGUgb2Zmc2V0IGlzIGJlaGluZCBhbiBpbGxlZ2Fs
IFVURi04IHNlcXVlbmNlLCB0aGVuIGMgaXMgc2V0IHRvIGEgbmVnYXRpdmUgdmFsdWUuCisgKgor
ICogQHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZworICogQHBhcmFtIHN0YXJ0IHN0YXJ0
aW5nIHN0cmluZyBvZmZzZXQgKHVzdWFsbHkgMCkKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQs
IHN0YXJ0PD1pCisgKiBAcGFyYW0gYyBvdXRwdXQgVUNoYXIzMiB2YXJpYWJsZSwgc2V0IHRvIDww
IGluIGNhc2Ugb2YgYW4gZXJyb3IKKyAqIEBzZWUgVThfUFJFVl9VTlNBRkUKKyAqIEBzdGFibGUg
SUNVIDIuNAorICovCisjZGVmaW5lIFU4X1BSRVYocywgc3RhcnQsIGksIGMpIHsgXAorICAgIChj
KT0ocylbLS0oaSldOyBcCisgICAgaWYoKGMpPj0weDgwKSB7IFwKKyAgICAgICAgaWYoKGMpPD0w
eGJmKSB7IFwKKyAgICAgICAgICAgIChjKT11dGY4X3ByZXZDaGFyU2FmZUJvZHkocywgc3RhcnQs
ICYoaSksIGMsIC0xKTsgXAorICAgICAgICB9IGVsc2UgeyBcCisgICAgICAgICAgICAoYyk9VV9T
RU5USU5FTDsgXAorICAgICAgICB9IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBz
dHJpbmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIHByZXZpb3Vz
IG9uZS4KKyAqIChQcmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCisgKiBUaGUg
aW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAqICJV
bnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwtZm9ybWVkIFVURi04LgorICoKKyAqIEBwYXJhbSBz
IGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKKyAqIEBz
ZWUgVThfQkFDS18xCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLworI2RlZmluZSBVOF9CQUNLXzFf
VU5TQUZFKHMsIGkpIHsgXAorICAgIHdoaWxlKFU4X0lTX1RSQUlMKChzKVstLShpKV0pKSB7fSBc
Cit9CisKKy8qKgorICogTW92ZSB0aGUgc3RyaW5nIG9mZnNldCBmcm9tIG9uZSBjb2RlIHBvaW50
IGJvdW5kYXJ5IHRvIHRoZSBwcmV2aW91cyBvbmUuCisgKiAoUHJlLWRlY3JlbWVudGluZyBiYWNr
d2FyZCBpdGVyYXRpb24uKQorICogVGhlIGlucHV0IG9mZnNldCBtYXkgYmUgdGhlIHNhbWUgYXMg
dGhlIHN0cmluZyBsZW5ndGguCisgKiAiU2FmZSIgbWFjcm8sIGNoZWNrcyBmb3IgaWxsZWdhbCBz
ZXF1ZW5jZXMgYW5kIGZvciBzdHJpbmcgYm91bmRhcmllcy4KKyAqCisgKiBAcGFyYW0gcyBjb25z
dCB1aW50OF90ICogc3RyaW5nCisgKiBAcGFyYW0gc3RhcnQgc3RhcnRpbmcgc3RyaW5nIG9mZnNl
dCAodXN1YWxseSAwKQorICogQHBhcmFtIGkgc3RyaW5nIG9mZnNldCwgc3RhcnQ8PWkKKyAqIEBz
ZWUgVThfQkFDS18xX1VOU0FGRQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThf
QkFDS18xKHMsIHN0YXJ0LCBpKSB7IFwKKyAgICBpZihVOF9JU19UUkFJTCgocylbLS0oaSldKSkg
eyBcCisgICAgICAgIChpKT11dGY4X2JhY2sxU2FmZUJvZHkocywgc3RhcnQsIChpbnQzMl90KShp
KSk7IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJpbmcgb2Zmc2V0IGZyb20g
b25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggb25lIGJlZm9yZSBpdCwKKyAqIGku
ZS4sIG1vdmUgYmFja3dhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQcmUtZGVjcmVtZW50aW5n
IGJhY2t3YXJkIGl0ZXJhdGlvbi4pCisgKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2Ft
ZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAqICJVbnNhZmUiIG1hY3JvLCBhc3N1bWVzIHdlbGwt
Zm9ybWVkIFVURi04LgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAq
IEBwYXJhbSBpIHN0cmluZyBvZmZzZXQKKyAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50
cyB0byBza2lwCisgKiBAc2VlIFU4X0JBQ0tfTgorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNk
ZWZpbmUgVThfQkFDS19OX1VOU0FGRShzLCBpLCBuKSB7IFwKKyAgICBpbnQzMl90IF9fTj0obik7
IFwKKyAgICB3aGlsZShfX04+MCkgeyBcCisgICAgICAgIFU4X0JBQ0tfMV9VTlNBRkUocywgaSk7
IFwKKyAgICAgICAgLS1fX047IFwKKyAgICB9IFwKK30KKworLyoqCisgKiBNb3ZlIHRoZSBzdHJp
bmcgb2Zmc2V0IGZyb20gb25lIGNvZGUgcG9pbnQgYm91bmRhcnkgdG8gdGhlIG4tdGggb25lIGJl
Zm9yZSBpdCwKKyAqIGkuZS4sIG1vdmUgYmFja3dhcmQgYnkgbiBjb2RlIHBvaW50cy4KKyAqIChQ
cmUtZGVjcmVtZW50aW5nIGJhY2t3YXJkIGl0ZXJhdGlvbi4pCisgKiBUaGUgaW5wdXQgb2Zmc2V0
IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5nIGxlbmd0aC4KKyAqICJTYWZlIiBtYWNybywg
Y2hlY2tzIGZvciBpbGxlZ2FsIHNlcXVlbmNlcyBhbmQgZm9yIHN0cmluZyBib3VuZGFyaWVzLgor
ICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3QgKiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBp
bmRleCBvZiB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZworICogQHBhcmFtIGkgc3RyaW5nIG9mZnNl
dCwgaTxsZW5ndGgKKyAqIEBwYXJhbSBuIG51bWJlciBvZiBjb2RlIHBvaW50cyB0byBza2lwCisg
KiBAc2VlIFU4X0JBQ0tfTl9VTlNBRkUKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5l
IFU4X0JBQ0tfTihzLCBzdGFydCwgaSwgbikgeyBcCisgICAgaW50MzJfdCBfX049KG4pOyBcCisg
ICAgd2hpbGUoX19OPjAgJiYgKGkpPihzdGFydCkpIHsgXAorICAgICAgICBVOF9CQUNLXzEocywg
c3RhcnQsIGkpOyBcCisgICAgICAgIC0tX19OOyBcCisgICAgfSBcCit9CisKKy8qKgorICogQWRq
dXN0IGEgcmFuZG9tLWFjY2VzcyBvZmZzZXQgdG8gYSBjb2RlIHBvaW50IGJvdW5kYXJ5IGFmdGVy
IGEgY29kZSBwb2ludC4KKyAqIElmIHRoZSBvZmZzZXQgaXMgYmVoaW5kIGEgcGFydGlhbCBtdWx0
aS1ieXRlIHNlcXVlbmNlLAorICogdGhlbiB0aGUgb2Zmc2V0IGlzIGluY3JlbWVudGVkIHRvIGJl
aGluZCB0aGUgd2hvbGUgc2VxdWVuY2UuCisgKiBPdGhlcndpc2UsIGl0IGlzIG5vdCBtb2RpZmll
ZC4KKyAqIFRoZSBpbnB1dCBvZmZzZXQgbWF5IGJlIHRoZSBzYW1lIGFzIHRoZSBzdHJpbmcgbGVu
Z3RoLgorICogIlVuc2FmZSIgbWFjcm8sIGFzc3VtZXMgd2VsbC1mb3JtZWQgVVRGLTguCisgKgor
ICogQHBhcmFtIHMgY29uc3QgdWludDhfdCAqIHN0cmluZworICogQHBhcmFtIGkgc3RyaW5nIG9m
ZnNldAorICogQHNlZSBVOF9TRVRfQ1BfTElNSVQKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisj
ZGVmaW5lIFU4X1NFVF9DUF9MSU1JVF9VTlNBRkUocywgaSkgeyBcCisgICAgVThfQkFDS18xX1VO
U0FGRShzLCBpKTsgXAorICAgIFU4X0ZXRF8xX1VOU0FGRShzLCBpKTsgXAorfQorCisvKioKKyAq
IEFkanVzdCBhIHJhbmRvbS1hY2Nlc3Mgb2Zmc2V0IHRvIGEgY29kZSBwb2ludCBib3VuZGFyeSBh
ZnRlciBhIGNvZGUgcG9pbnQuCisgKiBJZiB0aGUgb2Zmc2V0IGlzIGJlaGluZCBhIHBhcnRpYWwg
bXVsdGktYnl0ZSBzZXF1ZW5jZSwKKyAqIHRoZW4gdGhlIG9mZnNldCBpcyBpbmNyZW1lbnRlZCB0
byBiZWhpbmQgdGhlIHdob2xlIHNlcXVlbmNlLgorICogT3RoZXJ3aXNlLCBpdCBpcyBub3QgbW9k
aWZpZWQuCisgKiBUaGUgaW5wdXQgb2Zmc2V0IG1heSBiZSB0aGUgc2FtZSBhcyB0aGUgc3RyaW5n
IGxlbmd0aC4KKyAqICJTYWZlIiBtYWNybywgY2hlY2tzIGZvciBpbGxlZ2FsIHNlcXVlbmNlcyBh
bmQgZm9yIHN0cmluZyBib3VuZGFyaWVzLgorICoKKyAqIEBwYXJhbSBzIGNvbnN0IHVpbnQ4X3Qg
KiBzdHJpbmcKKyAqIEBwYXJhbSBzdGFydCBzdGFydGluZyBzdHJpbmcgb2Zmc2V0ICh1c3VhbGx5
IDApCisgKiBAcGFyYW0gaSBzdHJpbmcgb2Zmc2V0LCBzdGFydDw9aTw9bGVuZ3RoCisgKiBAcGFy
YW0gbGVuZ3RoIHN0cmluZyBsZW5ndGgKKyAqIEBzZWUgVThfU0VUX0NQX0xJTUlUX1VOU0FGRQor
ICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVThfU0VUX0NQX0xJTUlUKHMsIHN0YXJ0
LCBpLCBsZW5ndGgpIHsgXAorICAgIGlmKChzdGFydCk8KGkpICYmIChpKTwobGVuZ3RoKSkgeyBc
CisgICAgICAgIFU4X0JBQ0tfMShzLCBzdGFydCwgaSk7IFwKKyAgICAgICAgVThfRldEXzEocywg
aSwgbGVuZ3RoKTsgXAorICAgIH0gXAorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRHbHVlL2ljdS91bmljb2RlL3V0Zl9vbGQuaCBiL0phdmFTY3JpcHRHbHVlL2ljdS91bmljb2Rl
L3V0Zl9vbGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5pY29kZS91dHlwZXMuaCBiL0phdmFTY3Jp
cHRHbHVlL2ljdS91bmljb2RlL3V0eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmUyMGNkNzkKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0R2x1ZS9pY3UvdW5p
Y29kZS91dHlwZXMuaApAQCAtMCwwICsxLDc0NSBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBD
b3B5cmlnaHQgKEMpIDE5OTYtMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcwor
KiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorKgorKiAgRklMRSBOQU1FIDogVVRZUEVTLkggKGZvcm1lcmx5IHB0eXBlcy5oKQor
KgorKiAgIERhdGUgICAgICAgIE5hbWUgICAgICAgIERlc2NyaXB0aW9uCisqICAgMTIvMTEvOTYg
ICAgaGVsZW5hICAgICAgQ3JlYXRpb24uCisqICAgMDIvMjcvOTcgICAgYWxpdSAgICAgICAgQWRk
ZWQgdHlwZWRlZnMgZm9yIFVDbGFzc0lELCBpbnQ4LCBpbnQxNiwgaW50MzIsCisqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDgsIHVpbnQxNiwgYW5kIHVpbnQzMi4KKyogICAwNC8wMS85
NyAgICBhbGl1ICAgICAgICBBZGRlZCBYUF9DUExVU1BMVVMgYW5kIG1vZGlmaWVkIHRvIHdvcmsg
dW5kZXIgQyBhcworKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWxsIGFzIEMrKy4KKyog
ICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RpZmllZCB0byB1c2UgbWVtY3B5KCkgZm9yIHVw
cnZfYXJyYXlDb3B5KCkgZm5zLgorKiAgIDA0LzE0Lzk3ICAgIGFsaXUgICAgICAgIEFkZGVkIFRQ
bGF0Zm9ybVV0aWxpdGllcy4KKyogICAwNS8wNy85NyAgICBhbGl1ICAgICAgICBBZGRlZCBpbXBv
cnQvZXhwb3J0IHNwZWNpZmllcnMgKHJlcGxhY2luZyB0aGUgb2xkCisqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJva2VuIEVYVF9DTEFTUykuICBBZGRlZCB2ZXJzaW9uIG51bWJlciBmb3Ig
b3VyCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS4gIENsZWFuZWQgdXAgaGVhZGVy
LgorKiAgICA2LzIwLzk3ICAgIGhlbGVuYSAgICAgIEphdmEgY2xhc3MgbmFtZSBjaGFuZ2UuCisq
ICAgMDgvMTEvOTggICAgc3RlcGhlbiAgICAgVUVycm9yQ29kZSBjaGFuZ2VkIGZyb20gdHlwZWRl
ZiB0byBlbnVtCisqICAgMDgvMTIvOTggICAgZXJtICAgICAgICAgQ2hhbmdlZCBUX0FOQUxZVElD
X1BBQ0tBR0VfVkVSU0lPTiB0byAzCisqICAgMDgvMTQvOTggICAgc3RlcGhlbiAgICAgQWRkZWQg
dXBydl9hcnJheUNvcHkoKSBmb3IgaW50OF90LCBpbnQxNl90LCBpbnQzMl90CisqICAgMTIvMDkv
OTggICAgamZpdHogICAgICAgQWRkZWQgQlVGRkVSX09WRVJGTE9XX0VSUk9SIChidWcgMTEwMDA2
NikKKyogICAwNC8yMC85OSAgICBzdGVwaGVuICAgICBDbGVhbmVkIHVwICYgcmV3b3JrZWQgZm9y
IGF1dG9jb25mLgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmFtZWQgdG8gdXR5cGVz
LmguCisqICAgMDUvMDUvOTkgICAgc3RlcGhlbiAgICAgQ2hhbmdlZCB0byB1c2UgPGludHR5cGVz
Lmg+CisqICAgMTIvMDcvOTkgICAgaGVsZW5hICAgICAgTW92ZWQgY29weXJpZ2h0IG5vdGljZSBz
dHJpbmcgZnJvbSB1Y252X2JsZC5oIGhlcmUuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLwor
CisjaWZuZGVmIFVUWVBFU19ICisjZGVmaW5lIFVUWVBFU19ICisKKworI2luY2x1ZGUgInVuaWNv
ZGUvdW1hY2hpbmUuaCIKKyNpbmNsdWRlICJ1bmljb2RlL3V0Zi5oIgorI2luY2x1ZGUgInVuaWNv
ZGUvdXZlcnNpb24uaCIKKyNpbmNsdWRlICJ1bmljb2RlL3Vjb25maWcuaCIKKworI2lmZGVmIFVf
SElERV9EUkFGVF9BUEkKKyNpbmNsdWRlICJ1bmljb2RlL3VkcmFmdC5oIgorI2VuZGlmCisKKyNp
ZmRlZiBVX0hJREVfREVQUkVDQVRFRF9BUEkKKyNpbmNsdWRlICJ1bmljb2RlL3VkZXByY3RkLmgi
CisjZW5kaWYKKworI2lmZGVmIFVfSElERV9ERVBSRUNBVEVEX0FQSQorI2luY2x1ZGUgInVuaWNv
ZGUvdW9ic2xldGUuaCIKKyNlbmRpZgorCisKKy8qIQorICogXGZpbGUKKyAqIFxicmllZiBCYXNp
YyBkZWZpbml0aW9ucyBmb3IgSUNVLCBmb3IgYm90aCBDIGFuZCBDKysgQVBJcworICoKKyAqIFRo
aXMgZmlsZSBkZWZpbmVzIGJhc2ljIHR5cGVzLCBjb25zdGFudHMsIGFuZCBlbnVtZXJhdGlvbnMg
ZGlyZWN0bHkgb3IKKyAqIGluZGlyZWN0bHkgYnkgaW5jbHVkaW5nIG90aGVyIGhlYWRlciBmaWxl
cywgZXNwZWNpYWxseSB1dGYuaCBmb3IgdGhlCisgKiBiYXNpYyBjaGFyYWN0ZXIgYW5kIHN0cmlu
ZyBkZWZpbml0aW9ucyBhbmQgdW1hY2hpbmUuaCBmb3IgY29uc2lzdGVudAorICogaW50ZWdlciBh
bmQgb3RoZXIgdHlwZXMuCisgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogY2hhciBD
aGFyYWN0ZXIgc2V0IGZhbWlseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKioKKyAqIFVfQ0hBUlNF
VF9GQU1JTFkgaXMgZXF1YWwgdG8gdGhpcyB2YWx1ZSB3aGVuIHRoZSBwbGF0Zm9ybSBpcyBhbiBB
U0NJSSBiYXNlZCBwbGF0Zm9ybS4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisjZGVmaW5lIFVf
QVNDSUlfRkFNSUxZIDAKKworLyoqCisgKiBVX0NIQVJTRVRfRkFNSUxZIGlzIGVxdWFsIHRvIHRo
aXMgdmFsdWUgd2hlbiB0aGUgcGxhdGZvcm0gaXMgYW4gRUJDRElDIGJhc2VkIHBsYXRmb3JtLgor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KKyNkZWZpbmUgVV9FQkNESUNfRkFNSUxZIDEKKworLyoq
CisgKiBcZGVmIFVfQ0hBUlNFVF9GQU1JTFkKKyAqCisgKiA8cD5UaGVzZSBkZWZpbml0aW9ucyBh
bGxvdyB0byBzcGVjaWZ5IHRoZSBlbmNvZGluZyBvZiB0ZXh0CisgKiBpbiB0aGUgY2hhciBkYXRh
IHR5cGUgYXMgZGVmaW5lZCBieSB0aGUgcGxhdGZvcm0gYW5kIHRoZSBjb21waWxlci4KKyAqIEl0
IGlzIGVub3VnaCB0byBkZXRlcm1pbmUgdGhlIGNvZGUgcG9pbnQgdmFsdWVzIG9mICJpbnZhcmlh
bnQgY2hhcmFjdGVycyIsCisgKiB3aGljaCBhcmUgdGhlIG9uZXMgc2hhcmVkIGJ5IGFsbCBlbmNv
ZGluZ3MgdGhhdCBhcmUgaW4gdXNlCisgKiBvbiBhIGdpdmVuIHBsYXRmb3JtLjwvcD4KKyAqCisg
KiA8cD5UaG9zZSAiaW52YXJpYW50IGNoYXJhY3RlcnMiIHNob3VsZCBiZSBhbGwgdGhlIHVwcGVy
Y2FzZSBhbmQgbG93ZXJjYXNlCisgKiBsYXRpbiBsZXR0ZXJzLCB0aGUgZGlnaXRzLCB0aGUgc3Bh
Y2UsIGFuZCAiYmFzaWMgcHVuY3R1YXRpb24iLgorICogQWxzbywgJ1xcbicsICdcXHInLCAnXFx0
JyBzaG91bGQgYmUgYXZhaWxhYmxlLjwvcD4KKyAqCisgKiA8cD5UaGUgbGlzdCBvZiAiaW52YXJp
YW50IGNoYXJhY3RlcnMiIGlzOjxicj4KKyAqIFxjb2RlCisgKiAgICBBLVogIGEteiAgMC05ICBT
UEFDRSAgIiAgJSAgJmFtcDsgICcgICggICkgICogICsgICwgIC0gIC4gIC8gIDogIDsgIDwgID0g
ID4gID8gIF8KKyAqIFxlbmRjb2RlCisgKiA8YnI+CisgKiAoNTIgbGV0dGVycyArIDEwIG51bWJl
cnMgKyAyMCBwdW5jL3N5bS9zcGFjZSA9IDgyIHRvdGFsKTwvcD4KKyAqCisgKiA8cD5UaGlzIG1h
dGNoZXMgdGhlIElCTSBTeW50YWN0aWMgQ2hhcmFjdGVyIFNldCAoQ1MgNjQwKS48L3A+CisgKgor
ICogPHA+SW4gb3RoZXIgd29yZHMsIGFsbCB0aGUgZ3JhcGhpYyBjaGFyYWN0ZXJzIGluIDctYml0
IEFTQ0lJIHNob3VsZAorICogYmUgc2FmZWx5IGFjY2Vzc2libGUgZXhjZXB0IHRoZSBmb2xsb3dp
bmc6PC9wPgorICoKKyAqIFxjb2RlCisgKiAgICAnXCcgPGJhY2tzbGFzaD4KKyAqICAgICdbJyA8
bGVmdCBicmFja2V0PgorICogICAgJ10nIDxyaWdodCBicmFja2V0PgorICogICAgJ3snIDxsZWZ0
IGJyYWNlPgorICogICAgJ30nIDxyaWdodCBicmFjZT4KKyAqICAgICdeJyA8Y2lyY3VtZmxleD4K
KyAqICAgICd+JyA8dGlsZGU+CisgKiAgICAnIScgPGV4Y2xhbWF0aW9uIG1hcms+CisgKiAgICAn
IycgPG51bWJlciBzaWduPgorICogICAgJ3wnIDx2ZXJ0aWNhbCBsaW5lPgorICogICAgJyQnIDxk
b2xsYXIgc2lnbj4KKyAqICAgICdAJyA8Y29tbWVyY2lhbCBhdD4KKyAqICAgICdgJyA8Z3JhdmUg
YWNjZW50PgorICogXGVuZGNvZGUKKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisKKyNpZm5kZWYg
VV9DSEFSU0VUX0ZBTUlMWQorIyAgIGRlZmluZSBVX0NIQVJTRVRfRkFNSUxZIDAKKyNlbmRpZgor
CisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PSovCisvKiBJQ1VEQVRBIG5hbWluZyBzY2hlbWUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PSovCisKKy8qKgorICogXGRlZiBVX0lDVURBVEFfVFlQRV9MRVRURVIKKyAq
CisgKiBUaGlzIGlzIGEgcGxhdGZvcm0tZGVwZW5kZW50IHN0cmluZyBjb250YWluaW5nIG9uZSBs
ZXR0ZXI6CisgKiAtIGIgZm9yIGJpZy1lbmRpYW4sIEFTQ0lJLWZhbWlseSBwbGF0Zm9ybXMKKyAq
IC0gbCBmb3IgbGl0dGxlLWVuZGlhbiwgQVNDSUktZmFtaWx5IHBsYXRmb3JtcworICogLSBlIGZv
ciBiaWctZW5kaWFuLCBFQkNESUMtZmFtaWx5IHBsYXRmb3JtcworICogVGhpcyBsZXR0ZXIgaXMg
cGFydCBvZiB0aGUgY29tbW9uIGRhdGEgZmlsZSBuYW1lLgorICogQHN0YWJsZSBJQ1UgMi4wCisg
Ki8KKworLyoqCisgKiBcZGVmIFVfSUNVREFUQV9UWVBFX0xJVExFVFRFUgorICogVGhlIG5vbi1z
dHJpbmcgZm9ybSBvZiBVX0lDVURBVEFfVFlQRV9MRVRURVIKKyAqIEBzdGFibGUgSUNVIDIuMAor
ICovCisjaWYgVV9DSEFSU0VUX0ZBTUlMWQorIyAgIGlmIFVfSVNfQklHX0VORElBTgorICAgLyog
RUJDRElDIC0gc2hvdWxkIGFsd2F5cyBiZSBCRSAqLworIyAgICAgZGVmaW5lIFVfSUNVREFUQV9U
WVBFX0xFVFRFUiAiZSIKKyMgICAgIGRlZmluZSBVX0lDVURBVEFfVFlQRV9MSVRMRVRURVIgZQor
IyAgIGVsc2UKKyMgICAgIGVycm9yICJEb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCBsaXR0bGUg
ZW5kaWFuIEVCQ0RJQyEiCisjICAgICBkZWZpbmUgVV9JQ1VEQVRBX1RZUEVfTEVUVEVSICJ4Igor
IyAgICAgZGVmaW5lIFVfSUNVREFUQV9UWVBFX0xJVExFVFRFUiB4CisjICAgZW5kaWYKKyNlbHNl
CisjICAgaWYgVV9JU19CSUdfRU5ESUFOCisgICAgICAvKiBCaWctZW5kaWFuIEFTQ0lJICovCisj
ICAgICBkZWZpbmUgVV9JQ1VEQVRBX1RZUEVfTEVUVEVSICJiIgorIyAgICAgZGVmaW5lIFVfSUNV
REFUQV9UWVBFX0xJVExFVFRFUiBiCisjICAgZWxzZQorICAgICAgLyogTGl0dGxlLWVuZGlhbiBB
U0NJSSAqLworIyAgICAgZGVmaW5lIFVfSUNVREFUQV9UWVBFX0xFVFRFUiAibCIKKyMgICAgIGRl
ZmluZSBVX0lDVURBVEFfVFlQRV9MSVRMRVRURVIgbAorIyAgIGVuZGlmCisjZW5kaWYKKworLyoq
CisgKiBBIHNpbmdsZSBzdHJpbmcgbGl0ZXJhbCBjb250YWluaW5nIHRoZSBpY3VkYXRhIHN0dWIg
bmFtZS4gaS5lLiAnaWN1ZHQxOGUnIGZvcgorICogSUNVIDEuOC54IG9uIEVCQ0RJQywgZXRjLi4K
KyAqIEBzdGFibGUgSUNVIDIuMAorICovCisjZGVmaW5lIFVfSUNVREFUQV9OQU1FICAgICJpY3Vk
dCIgVV9JQ1VfVkVSU0lPTl9TSE9SVCBVX0lDVURBVEFfVFlQRV9MRVRURVIKKworCisvKioKKyAq
ICBVX0lDVV9FTlRSWV9QT0lOVCBpcyB0aGUgbmFtZSBvZiB0aGUgRExMIGVudHJ5IHBvaW50IHRv
IHRoZSBJQ1UgZGF0YSBsaWJyYXJ5LgorICogICAgRGVmaW5lZCBhcyBhIGxpdGVyYWwsIG5vdCBh
IHN0cmluZy4KKyAqICAgIFRyaWNreSBQcmVwcm9jZXNzb3IgdXNlIC0gIyMgb3BlcmF0b3IgcmVw
bGFjZXMgbWFjcm8gcGFyYW10ZXJzIHdpdGggdGhlIGxpdGVyYWwgc3RyaW5nCisgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgbWFjcm8gaW52b2Nh
dGlvbiwgX2JlZm9yZV8gb3RoZXIgbWFjcm8gc3Vic3RpdHV0aW9ucy4KKyAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmVlZCBhIG5lc3RlZCAjZGVmaW5lcyB0byBnZXQgdGhlIGFjdHVh
bCB2ZXJzaW9uIG51bWJlcnMgcmF0aGVyIHRoYW4KKyAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhlIGxpdGVyYWwgdGV4dCBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSBpbnRvIHRoZSBu
YW1lLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbmV0IHJlc3VsdCB3aWxs
IGJlIHNvbWV0aGluZyBvZiB0aGUgZm9ybQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgI2RlZmluZSBVX0lDVV9FTlRSWV9QT0lOVCBpY3VkdDE5X2RhdAorICogQHN0YWJsZSBJ
Q1UgMi40CisgKi8KKyNkZWZpbmUgVV9JQ1VEQVRBX0VOVFJZX1BPSU5UICBVX0RFRjJfSUNVREFU
QV9FTlRSWV9QT0lOVChVX0lDVV9WRVJTSU9OX01BSk9SX05VTSwgVV9JQ1VfVkVSU0lPTl9NSU5P
Ul9OVU0pCisvKioKKyAqIEBpbnRlcm5hbAorICovCisjZGVmaW5lIFVfREVGMl9JQ1VEQVRBX0VO
VFJZX1BPSU5UKG1ham9yLCBtaW5vcikgVV9ERUZfSUNVREFUQV9FTlRSWV9QT0lOVChtYWpvciwg
bWlub3IpCisvKioKKyAqIEBpbnRlcm5hbAorICovCisjZGVmaW5lIFVfREVGX0lDVURBVEFfRU5U
UllfUE9JTlQobWFqb3IsIG1pbm9yKSBpY3VkdCMjbWFqb3IjI21pbm9yIyNfZGF0CisKKy8qKgor
ICogXGRlZiBVX0NBTExDT05WCisgKiBTaW1pbGFyIHRvIFVfQ0RFQ0xfQkVHSU4vVV9DREVDTF9F
TkQsIHRoaXMgcXVhbGlmaWVyIGlzIG5lY2Vzc2FyeQorICogaW4gY2FsbGJhY2sgZnVuY3Rpb24g
dHlwZWRlZnMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNhbGxpbmcgY29udmVudGlvbgorICogaXMg
Y29tcGF0aWJsZS4KKyAqCisgKiBUaGlzIGlzIG9ubHkgdXNlZCBmb3Igbm9uLUlDVS1BUEkgZnVu
Y3Rpb25zLgorICogV2hlbiBhIGZ1bmN0aW9uIGlzIGEgcHVibGljIElDVSBBUEksCisgKiB5b3Ug
bXVzdCB1c2UgdGhlIFVfQ0FQSSBhbmQgVV9FWFBPUlQyIHF1YWxpZmllcnMuCisgKiBAc3RhYmxl
IElDVSAyLjAKKyAqLworI2lmIGRlZmluZWQoT1MzOTApICYmIChfX0NPTVBJTEVSX1ZFUl9fIDwg
MHg0MTAyMDAwMCkgJiYgZGVmaW5lZChYUF9DUExVU1BMVVMpCisjICAgIGRlZmluZSBVX0NBTExD
T05WIF9fY2RlY2wKKyNlbHNlCisjICAgIGRlZmluZSBVX0NBTExDT05WIFVfRVhQT1JUMgorI2Vu
ZGlmCisKKy8qKgorICogXGRlZiBOVUxMCisgKiBEZWZpbmUgTlVMTCBpZiBuZWNlc3NhcnksIHRv
IDAgZm9yIEMrKyBhbmQgdG8gKCh2b2lkICopMCkgZm9yIEMuCisgKiBAc3RhYmxlIElDVSAyLjAK
KyAqLworI2lmbmRlZiBOVUxMCisjaWZkZWYgWFBfQ1BMVVNQTFVTCisjZGVmaW5lIE5VTEwgICAg
MAorI2Vsc2UKKyNkZWZpbmUgTlVMTCAgICAoKHZvaWQgKikwKQorI2VuZGlmCisjZW5kaWYKKwor
Lyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0qLworLyogQ2FsZW5kYXIvVGltZVpvbmUgZGF0YSB0eXBlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0qLworCisvKioKKyAqIERhdGUgYW5kIFRpbWUgZGF0YSB0eXBlLgorICogVGhp
cyBpcyBhIHByaW1pdGl2ZSBkYXRhIHR5cGUgdGhhdCBob2xkcyB0aGUgZGF0ZSBhbmQgdGltZQor
ICogYXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UgMTk3MC1qYW4tMDEsIDAwOjAw
IFVUQy4KKyAqIFVUQyBsZWFwIHNlY29uZHMgYXJlIGlnbm9yZWQuCisgKiBAc3RhYmxlIElDVSAy
LjAKKyAqLwordHlwZWRlZiBkb3VibGUgVURhdGU7CisKKy8qKiBUaGUgbnVtYmVyIG9mIG1pbGxp
c2Vjb25kcyBwZXIgc2Vjb25kIEBzdGFibGUgSUNVIDIuMCAqLworI2RlZmluZSBVX01JTExJU19Q
RVJfU0VDT05EICAgICAgICAoMTAwMCkKKy8qKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBw
ZXIgbWludXRlIEBzdGFibGUgSUNVIDIuMCAqLworI2RlZmluZSBVX01JTExJU19QRVJfTUlOVVRF
ICAgICAgICg2MDAwMCkKKy8qKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBwZXIgaG91ciBA
c3RhYmxlIElDVSAyLjAgKi8KKyNkZWZpbmUgVV9NSUxMSVNfUEVSX0hPVVIgICAgICAgKDM2MDAw
MDApCisvKiogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgcGVyIGRheSBAc3RhYmxlIElDVSAy
LjAgKi8KKyNkZWZpbmUgVV9NSUxMSVNfUEVSX0RBWSAgICAgICAoODY0MDAwMDApCisKKworLyo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0qLworLyogVUNsYXNzSUQtYmFzZWQgUlRUSSAqLworLyo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0qLworCisvKioKKyAqIFVDbGFzc0lEIGlzIHVzZWQgdG8gaWRlbnRpZnkgY2xh
c3NlcyB3aXRob3V0IHVzaW5nIFJUVEksIHNpbmNlIFJUVEkKKyAqIGlzIG5vdCB5ZXQgc3VwcG9y
dGVkIGJ5IGFsbCBDKysgY29tcGlsZXJzLiAgRWFjaCBjbGFzcyBoaWVyYXJjaHkgd2hpY2ggbmVl
ZHMKKyAqIHRvIGltcGxlbWVudCBwb2x5bW9ycGhpYyBjbG9uZSgpIG9yIG9wZXJhdG9yPT0oKSBk
ZWZpbmVzIHR3byBtZXRob2RzLAorICogZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy4gIFVDbGFz
c0lEIHZhbHVlcyBjYW4gYmUgY29tcGFyZWQgdXNpbmcKKyAqIG9wZXJhdG9yPT0oKS4gTm90aGlu
ZyBlbHNlIHNob3VsZCBiZSBkb25lIHdpdGggdGhlbS4KKyAqCisgKiBccGFyCisgKiBnZXREeW5h
bWljQ2xhc3NJRCgpIGlzIGRlY2xhcmVkIGluIHRoZSBiYXNlIGNsYXNzIG9mIHRoZSBoaWVyYXJj
aHkgYXMKKyAqIGEgcHVyZSB2aXJ0dWFsLiAgRWFjaCBjb25jcmV0ZSBzdWJjbGFzcyBpbXBsZW1l
bnRzIGl0IGluIHRoZSBzYW1lIHdheToKKyAqCisgKiBcY29kZQorICogICAgICBjbGFzcyBCYXNl
IHsKKyAqICAgICAgcHVibGljOgorICogICAgICAgICAgdmlydHVhbCBVQ2xhc3NJRCBnZXREeW5h
bWljQ2xhc3NJRCgpIGNvbnN0ID0gMDsKKyAqICAgICAgfQorICoKKyAqICAgICAgY2xhc3MgRGVy
aXZlZCB7CisgKiAgICAgIHB1YmxpYzoKKyAqICAgICAgICAgIHZpcnR1YWwgVUNsYXNzSUQgZ2V0
RHluYW1pY0NsYXNzSUQoKSBjb25zdAorICogICAgICAgICAgICB7IHJldHVybiBEZXJpdmVkOjpn
ZXRTdGF0aWNDbGFzc0lEKCk7IH0KKyAqICAgICAgfQorICogXGVuZGNvZGUKKyAqCisgKiBFYWNo
IGNvbmNyZXRlIGNsYXNzIGltcGxlbWVudHMgZ2V0U3RhdGljQ2xhc3NJRCgpIGFzIHdlbGwsIHdo
aWNoIGFsbG93cworICogY2xpZW50cyB0byB0ZXN0IGZvciBhIHNwZWNpZmljIHR5cGUuCisgKgor
ICogXGNvZGUKKyAqICAgICAgY2xhc3MgRGVyaXZlZCB7CisgKiAgICAgIHB1YmxpYzoKKyAqICAg
ICAgICAgIHN0YXRpYyBVQ2xhc3NJRCBVX0VYUE9SVDIgZ2V0U3RhdGljQ2xhc3NJRCgpOworICog
ICAgICBwcml2YXRlOgorICogICAgICAgICAgc3RhdGljIGNoYXIgZmdDbGFzc0lEOworICogICAg
ICB9CisgKgorICogICAgICAvLyBJbiBEZXJpdmVkLmNwcDoKKyAqICAgICAgVUNsYXNzSUQgRGVy
aXZlZDo6Z2V0U3RhdGljQ2xhc3NJRCgpCisgKiAgICAgICAgeyByZXR1cm4gKFVDbGFzc0lEKSZE
ZXJpdmVkOjpmZ0NsYXNzSUQ7IH0KKyAqICAgICAgY2hhciBEZXJpdmVkOjpmZ0NsYXNzSUQgPSAw
OyAvLyBWYWx1ZSBpcyBpcnJlbGV2YW50CisgKiBcZW5kY29kZQorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KK3R5cGVkZWYgdm9pZCogVUNsYXNzSUQ7CisKKy8qPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K
Ky8qIFNoYXJlZCBsaWJyYXJ5L0RMTCBpbXBvcnQtZXhwb3J0IEFQSSBjb250cm9sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKi8KKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyoKKyAq
IENvbnRyb2wgb2Ygc3ltYm9sIGltcG9ydC9leHBvcnQuCisgKiBJQ1UgaXMgc2VwYXJhdGVkIGlu
dG8gdGhyZWUgbGlicmFyaWVzLgorICovCisKKy8qCisgKiBcZGVmIFVfQ09NQklORURfSU1QTEVN
RU5UQVRJT04KKyAqIFNldCB0byBleHBvcnQgbGlicmFyeSBzeW1ib2xzIGZyb20gaW5zaWRlIHRo
ZSBJQ1UgbGlicmFyeQorICogd2hlbiBhbGwgb2YgSUNVIGlzIGluIGEgc2luZ2xlIGxpYnJhcnku
CisgKiBUaGlzIGNhbiBiZSBzZXQgYXMgYSBjb21waWxlciBvcHRpb24gd2hpbGUgYnVpbGRpbmcg
SUNVLCBhbmQgaXQKKyAqIG5lZWRzIHRvIGJlIHRoZSBmaXJzdCBvbmUgdGVzdGVkIHRvIG92ZXJy
aWRlIFVfQ09NTU9OX0FQSSwgVV9JMThOX0FQSSwgZXRjLgorICogQHN0YWJsZSBJQ1UgMi4wCisg
Ki8KKworLyoqCisgKiBcZGVmIFVfREFUQV9BUEkKKyAqIFNldCB0byBleHBvcnQgbGlicmFyeSBz
eW1ib2xzIGZyb20gaW5zaWRlIHRoZSBzdHViZGF0YSBsaWJyYXJ5LAorICogYW5kIHRvIGltcG9y
dCB0aGVtIGZyb20gb3V0c2lkZS4KKyAqIEBkcmFmdCBJQ1UgMy4wCisgKi8KKworLyoqCisgKiBc
ZGVmIFVfQ09NTU9OX0FQSQorICogU2V0IHRvIGV4cG9ydCBsaWJyYXJ5IHN5bWJvbHMgZnJvbSBp
bnNpZGUgdGhlIGNvbW1vbiBsaWJyYXJ5LAorICogYW5kIHRvIGltcG9ydCB0aGVtIGZyb20gb3V0
c2lkZS4KKyAqIEBzdGFibGUgSUNVIDIuMAorICovCisKKy8qKgorICogXGRlZiBVX0kxOE5fQVBJ
CisgKiBTZXQgdG8gZXhwb3J0IGxpYnJhcnkgc3ltYm9scyBmcm9tIGluc2lkZSB0aGUgaTE4biBs
aWJyYXJ5LAorICogYW5kIHRvIGltcG9ydCB0aGVtIGZyb20gb3V0c2lkZS4KKyAqIEBzdGFibGUg
SUNVIDIuMAorICovCisKKy8qKgorICogXGRlZiBVX0xBWU9VVF9BUEkKKyAqIFNldCB0byBleHBv
cnQgbGlicmFyeSBzeW1ib2xzIGZyb20gaW5zaWRlIHRoZSBsYXlvdXQgZW5naW5lIGxpYnJhcnks
CisgKiBhbmQgdG8gaW1wb3J0IHRoZW0gZnJvbSBvdXRzaWRlLgorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KKworLyoqCisgKiBcZGVmIFVfTEFZT1VURVhfQVBJCisgKiBTZXQgdG8gZXhwb3J0IGxp
YnJhcnkgc3ltYm9scyBmcm9tIGluc2lkZSB0aGUgbGF5b3V0IGV4dGVuc2lvbnMgbGlicmFyeSwK
KyAqIGFuZCB0byBpbXBvcnQgdGhlbSBmcm9tIG91dHNpZGUuCisgKiBAc3RhYmxlIElDVSAyLjYK
KyAqLworCisvKioKKyAqIFxkZWYgVV9JT19BUEkKKyAqIFNldCB0byBleHBvcnQgbGlicmFyeSBz
eW1ib2xzIGZyb20gaW5zaWRlIHRoZSB1c3RkaW8gbGlicmFyeSwKKyAqIGFuZCB0byBpbXBvcnQg
dGhlbSBmcm9tIG91dHNpZGUuCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworCisjaWYgZGVmaW5l
ZChVX0NPTUJJTkVEX0lNUExFTUVOVEFUSU9OKQorI2RlZmluZSBVX0RBVEFfQVBJICAgICBVX0VY
UE9SVAorI2RlZmluZSBVX0NPTU1PTl9BUEkgICBVX0VYUE9SVAorI2RlZmluZSBVX0kxOE5fQVBJ
ICAgICBVX0VYUE9SVAorI2RlZmluZSBVX0xBWU9VVF9BUEkgICBVX0VYUE9SVAorI2RlZmluZSBV
X0xBWU9VVEVYX0FQSSBVX0VYUE9SVAorI2RlZmluZSBVX0lPX0FQSSAgICAgICBVX0VYUE9SVAor
I2VsaWYgZGVmaW5lZChVX1NUQVRJQ19JTVBMRU1FTlRBVElPTikKKyNkZWZpbmUgVV9EQVRBX0FQ
SQorI2RlZmluZSBVX0NPTU1PTl9BUEkKKyNkZWZpbmUgVV9JMThOX0FQSQorI2RlZmluZSBVX0xB
WU9VVF9BUEkKKyNkZWZpbmUgVV9MQVlPVVRFWF9BUEkKKyNkZWZpbmUgVV9JT19BUEkKKyNlbGlm
IGRlZmluZWQoVV9DT01NT05fSU1QTEVNRU5UQVRJT04pCisjZGVmaW5lIFVfREFUQV9BUEkgICAg
IFVfSU1QT1JUCisjZGVmaW5lIFVfQ09NTU9OX0FQSSAgIFVfRVhQT1JUCisjZGVmaW5lIFVfSTE4
Tl9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfTEFZT1VUX0FQSSAgIFVfSU1QT1JUCisjZGVm
aW5lIFVfTEFZT1VURVhfQVBJIFVfSU1QT1JUCisjZGVmaW5lIFVfSU9fQVBJICAgICAgIFVfSU1Q
T1JUCisjZWxpZiBkZWZpbmVkKFVfSTE4Tl9JTVBMRU1FTlRBVElPTikKKyNkZWZpbmUgVV9EQVRB
X0FQSSAgICAgVV9JTVBPUlQKKyNkZWZpbmUgVV9DT01NT05fQVBJICAgVV9JTVBPUlQKKyNkZWZp
bmUgVV9JMThOX0FQSSAgICAgVV9FWFBPUlQKKyNkZWZpbmUgVV9MQVlPVVRfQVBJICAgVV9JTVBP
UlQKKyNkZWZpbmUgVV9MQVlPVVRFWF9BUEkgVV9JTVBPUlQKKyNkZWZpbmUgVV9JT19BUEkgICAg
ICAgVV9JTVBPUlQKKyNlbGlmIGRlZmluZWQoVV9MQVlPVVRfSU1QTEVNRU5UQVRJT04pCisjZGVm
aW5lIFVfREFUQV9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfQ09NTU9OX0FQSSAgIFVfSU1Q
T1JUCisjZGVmaW5lIFVfSTE4Tl9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfTEFZT1VUX0FQ
SSAgIFVfRVhQT1JUCisjZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVfSU1QT1JUCisjZGVmaW5lIFVf
SU9fQVBJICAgICAgIFVfSU1QT1JUCisjZWxpZiBkZWZpbmVkKFVfTEFZT1VURVhfSU1QTEVNRU5U
QVRJT04pCisjZGVmaW5lIFVfREFUQV9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVfQ09NTU9O
X0FQSSAgIFVfSU1QT1JUCisjZGVmaW5lIFVfSTE4Tl9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5l
IFVfTEFZT1VUX0FQSSAgIFVfSU1QT1JUCisjZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVfRVhQT1JU
CisjZGVmaW5lIFVfSU9fQVBJICAgICAgIFVfSU1QT1JUCisjZWxpZiBkZWZpbmVkKFVfSU9fSU1Q
TEVNRU5UQVRJT04pCisjZGVmaW5lIFVfREFUQV9BUEkgICAgIFVfSU1QT1JUCisjZGVmaW5lIFVf
Q09NTU9OX0FQSSAgIFVfSU1QT1JUCisjZGVmaW5lIFVfSTE4Tl9BUEkgICAgIFVfSU1QT1JUCisj
ZGVmaW5lIFVfTEFZT1VUX0FQSSAgIFVfSU1QT1JUCisjZGVmaW5lIFVfTEFZT1VURVhfQVBJIFVf
SU1QT1JUCisjZGVmaW5lIFVfSU9fQVBJICAgICAgIFVfRVhQT1JUCisjZWxzZQorI2RlZmluZSBV
X0RBVEFfQVBJICAgICBVX0lNUE9SVAorI2RlZmluZSBVX0NPTU1PTl9BUEkgICBVX0lNUE9SVAor
I2RlZmluZSBVX0kxOE5fQVBJICAgICBVX0lNUE9SVAorI2RlZmluZSBVX0xBWU9VVF9BUEkgICBV
X0lNUE9SVAorI2RlZmluZSBVX0xBWU9VVEVYX0FQSSBVX0lNUE9SVAorI2RlZmluZSBVX0lPX0FQ
SSAgICAgICBVX0lNUE9SVAorI2VuZGlmCisKKy8qKgorICogXGRlZiBVX1NUQU5EQVJEX0NQUF9O
QU1FU1BBQ0UKKyAqIENvbnRyb2wgb2YgQysrIE5hbWVzcGFjZQorICogQHN0YWJsZSBJQ1UgMi4w
CisgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBVX1NUQU5EQVJEX0NQUF9OQU1FU1BB
Q0UgICAgICAgIDo6CisjZWxzZQorI2RlZmluZSBVX1NUQU5EQVJEX0NQUF9OQU1FU1BBQ0UKKyNl
bmRpZgorCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKy8qIEdsb2JhbCBkZWxldGUgb3BlcmF0
b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8K
Ky8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ki8KKworLyoKKyAqIFRoZSBJQ1U0QyBsaWJyYXJ5IG11c3Qg
bm90IHVzZSB0aGUgZ2xvYmFsIG5ldyBhbmQgZGVsZXRlIG9wZXJhdG9ycy4KKyAqIFRoZXNlIG9w
ZXJhdG9ycyBoZXJlIGFyZSBkZWZpbmVkIHRvIGVuYWJsZSB0ZXN0aW5nIGZvciB0aGlzLgorICog
U2VlIEppdHRlcmJ1ZyAyNTgxIGZvciBkZXRhaWxzIG9mIHdoeSB0aGlzIGlzIG5lY2Vzc2FyeS4K
KyAqCisgKiBWZXJpZmljYXRpb24gdGhhdCBJQ1U0QydzIG1lbW9yeSB1c2FnZSBpcyBjb3JyZWN0
LCBpLmUuLAorICogdGhhdCBnbG9iYWwgbmV3L2RlbGV0ZSBhcmUgbm90IHVzZWQ6CisgKgorICog
YSkgQ2hlY2sgZm9yIGltcG9ydHMgb2YgZ2xvYmFsIG5ldy9kZWxldGUgKHNlZSB1b2JqZWN0LmNw
cCBmb3IgZGV0YWlscykKKyAqIGIpIFZlcmlmeSB0aGF0IG5ldyBpcyBuZXZlciBpbXBvcnRlZC4K
KyAqIGMpIFZlcmlmeSB0aGF0IGRlbGV0ZSBpcyBvbmx5IGltcG9ydGVkIGZyb20gb2JqZWN0IGNv
ZGUgZm9yIGludGVyZmFjZS9taXhpbiBjbGFzc2VzLgorICogZCkgQWRkIGdsb2JhbCBkZWxldGUg
YW5kIGRlbGV0ZVtdIG9ubHkgZm9yIHRoZSBJQ1U0QyBsaWJyYXJ5IGl0c2VsZgorICogICAgYW5k
IGRlZmluZSB0aGVtIGluIGEgd2F5IHRoYXQgY3Jhc2hlcyBvciBvdGhlcndpc2UgZWFzaWx5IHNo
b3dzIGEgcHJvYmxlbS4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgZCkuCisgKiBU
aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb25zIGNyYXNoOyB0aGlzIGlzIGludGVudGlvbmFsIGFu
ZCB1c2VkIGZvciBsaWJyYXJ5IGRlYnVnZ2luZy4KKyAqCisgKiBOb3RlOiBUaGlzIGlzIGN1cnJl
bnRseSBvbmx5IGRvbmUgb24gV2luZG93cyBiZWNhdXNlCisgKiBzb21lIExpbnV4L1VuaXggY29t
cGlsZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBkZWZpbmluZyBnbG9iYWwgbmV3L2RlbGV0ZS4KKyAq
IE9uIFdpbmRvd3MsIFdJTjMyIGlzIGRlZmluZWQsIGFuZCBpdCBpcyBfTVNDX1Zlcj49MTIwMCBm
b3IgTVNWQyA2LjAgYW5kIGhpZ2hlci4KKyAqLworI2lmIGRlZmluZWQoWFBfQ1BMVVNQTFVTKSAm
JiBkZWZpbmVkKFdJTjMyKSAmJiAoX01TQ19WZXI+PTEyMDApICYmIChkZWZpbmVkKFVfQ09NTU9O
X0lNUExFTUVOVEFUSU9OKSB8fCBkZWZpbmVkKFVfSTE4Tl9JTVBMRU1FTlRBVElPTikgfHwgZGVm
aW5lZChVX0xBWU9VVF9JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChVX1VTVERJT19JTVBMRU1F
TlRBVElPTikpCisKKy8qKgorICogR2xvYmFsIG9wZXJhdG9yIG5ldywgZGVmaW5lZCBvbmx5IGlu
c2lkZSBJQ1U0QywgbXVzdCBub3QgYmUgdXNlZC4KKyAqIENyYXNoZXMgaW50ZW50aW9uYWxseS4K
KyAqIEBpbnRlcm5hbAorICovCitpbmxpbmUgdm9pZCAqCitvcGVyYXRvciBuZXcoc2l6ZV90IC8q
c2l6ZSovKSB7CisgICAgY2hhciAqcT1OVUxMOworICAgICpxPTU7IC8qIGJyZWFrIGl0ICovCisg
ICAgcmV0dXJuIHE7Cit9CisKKy8qKgorICogR2xvYmFsIG9wZXJhdG9yIG5ld1tdLCBkZWZpbmVk
IG9ubHkgaW5zaWRlIElDVTRDLCBtdXN0IG5vdCBiZSB1c2VkLgorICogQ3Jhc2hlcyBpbnRlbnRp
b25hbGx5LgorICogQGludGVybmFsCisgKi8KK2lubGluZSB2b2lkICoKK29wZXJhdG9yIG5ld1td
KHNpemVfdCAvKnNpemUqLykgeworICAgIGNoYXIgKnE9TlVMTDsKKyAgICAqcT01OyAvKiBicmVh
ayBpdCAqLworICAgIHJldHVybiBxOworfQorCisvKioKKyAqIEdsb2JhbCBvcGVyYXRvciBkZWxl
dGUsIGRlZmluZWQgb25seSBpbnNpZGUgSUNVNEMsIG11c3Qgbm90IGJlIHVzZWQuCisgKiBDcmFz
aGVzIGludGVudGlvbmFsbHkuCisgKiBAaW50ZXJuYWwKKyAqLworaW5saW5lIHZvaWQKK29wZXJh
dG9yIGRlbGV0ZSh2b2lkICogLypwKi8pIHsKKyAgICBjaGFyICpxPU5VTEw7CisgICAgKnE9NTsg
LyogYnJlYWsgaXQgKi8KK30KKworLyoqCisgKiBHbG9iYWwgb3BlcmF0b3IgZGVsZXRlW10sIGRl
ZmluZWQgb25seSBpbnNpZGUgSUNVNEMsIG11c3Qgbm90IGJlIHVzZWQuCisgKiBDcmFzaGVzIGlu
dGVudGlvbmFsbHkuCisgKiBAaW50ZXJuYWwKKyAqLworaW5saW5lIHZvaWQKK29wZXJhdG9yIGRl
bGV0ZVtdKHZvaWQgKiAvKnAqLykgeworICAgIGNoYXIgKnE9TlVMTDsKKyAgICAqcT01OyAvKiBi
cmVhayBpdCAqLworfQorCisjZW5kaWYKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogVUVy
cm9yQ29kZSAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKioKKyAqIEVycm9yIGNvZGUg
dG8gcmVwbGFjZSBleGNlcHRpb24gaGFuZGxpbmcsIHNvIHRoYXQgdGhlIGNvZGUgaXMgY29tcGF0
aWJsZSB3aXRoIGFsbCBDKysgY29tcGlsZXJzLAorICogYW5kIHRvIHVzZSB0aGUgc2FtZSBtZWNo
YW5pc20gZm9yIEMgYW5kIEMrKy4KKyAqCisgKiBccGFyCisgKiBJQ1UgZnVuY3Rpb25zIHRoYXQg
dGFrZSBhIHJlZmVyZW5jZSAoQysrKSBvciBhIHBvaW50ZXIgKEMpIHRvIGEgVUVycm9yQ29kZQor
ICogZmlyc3QgdGVzdCBpZihVX0ZBSUxVUkUoZXJyb3JDb2RlKSkgeyByZXR1cm4gaW1tZWRpYXRl
bHk7IH0KKyAqIHNvIHRoYXQgaW4gYSBjaGFpbiBvZiBzdWNoIGZ1bmN0aW9ucyB0aGUgZmlyc3Qg
b25lIHRoYXQgc2V0cyBhbiBlcnJvciBjb2RlCisgKiBjYXVzZXMgdGhlIGZvbGxvd2luZyBvbmVz
IHRvIG5vdCBwZXJmb3JtIGFueSBvcGVyYXRpb25zLgorICoKKyAqIFxwYXIKKyAqIEVycm9yIGNv
ZGVzIHNob3VsZCBiZSB0ZXN0ZWQgdXNpbmcgVV9GQUlMVVJFKCkgYW5kIFVfU1VDQ0VTUygpLgor
ICogQHN0YWJsZSBJQ1UgMi4wCisgKi8KK3R5cGVkZWYgZW51bSBVRXJyb3JDb2RlIHsKKyAgICAv
KiBUaGUgb3JkZXJpbmcgb2YgVV9FUlJPUl9JTkZPX1NUQVJUIFZzIFVfVVNJTkdfRkFMTEJBQ0tf
V0FSTklORyBsb29rcyB3ZWlyZAorICAgICAqIGFuZCBpcyB0aGF0IHdheSBiZWNhdXNlIFZDKysg
ZGVidWdnZXIgZGlzcGxheXMgZmlyc3QgZW5jb3VudGVyZWQgY29uc3RhbnQsCisgICAgICogd2hp
Y2ggaXMgbm90IHRoZSB3aGF0IHRoZSBjb2RlIGlzIHVzZWQgZm9yCisgICAgICovCisKKyAgICBV
X1VTSU5HX0ZBTExCQUNLX1dBUk5JTkcgID0gLTEyOCwgICAvKio8IEEgcmVzb3VyY2UgYnVuZGxl
IGxvb2t1cCByZXR1cm5lZCBhIGZhbGxiYWNrIHJlc3VsdCAobm90IGFuIGVycm9yKSAqLworCisg
ICAgVV9FUlJPUl9XQVJOSU5HX1NUQVJUICAgICA9IC0xMjgsICAgLyoqPCBTdGFydCBvZiBpbmZv
cm1hdGlvbiByZXN1bHRzIChzZW1hbnRpY2FsbHkgc3VjY2Vzc2Z1bCkgKi8KKworICAgIFVfVVNJ
TkdfREVGQVVMVF9XQVJOSU5HICAgPSAtMTI3LCAgIC8qKjwgQSByZXNvdXJjZSBidW5kbGUgbG9v
a3VwIHJldHVybmVkIGEgcmVzdWx0IGZyb20gdGhlIHJvb3QgbG9jYWxlIChub3QgYW4gZXJyb3Ip
ICovCisKKyAgICBVX1NBRkVDTE9ORV9BTExPQ0FURURfV0FSTklORyA9IC0xMjYsIC8qKjwgQSBT
YWZlQ2xvbmUgb3BlcmF0aW9uIHJlcXVpcmVkIGFsbG9jYXRpbmcgbWVtb3J5IChpbmZvcm1hdGlv
bmFsIG9ubHkpICovCisKKyAgICBVX1NUQVRFX09MRF9XQVJOSU5HICAgICAgID0gLTEyNSwgICAv
Kio8IElDVSBoYXMgdG8gdXNlIGNvbXBhdGliaWxpdHkgbGF5ZXIgdG8gY29uc3RydWN0IHRoZSBz
ZXJ2aWNlLiBFeHBlY3QgcGVyZm9ybWFuY2UvbWVtb3J5IHVzYWdlIGRlZ3JhZGF0aW9uLiBDb25z
aWRlciB1cGdyYWRpbmcgKi8KKworICAgIFVfU1RSSU5HX05PVF9URVJNSU5BVEVEX1dBUk5JTkcg
PSAtMTI0LC8qKjwgQW4gb3V0cHV0IHN0cmluZyBjb3VsZCBub3QgYmUgTlVMLXRlcm1pbmF0ZWQg
YmVjYXVzZSBvdXRwdXQgbGVuZ3RoPT1kZXN0Q2FwYWNpdHkuICovCisKKyAgICBVX1NPUlRfS0VZ
X1RPT19TSE9SVF9XQVJOSU5HID0gLTEyMywgLyoqPCBOdW1iZXIgb2YgbGV2ZWxzIHJlcXVlc3Rl
ZCBpbiBnZXRCb3VuZCBpcyBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGxldmVscyBpbiB0aGUg
c29ydCBrZXkgKi8KKworICAgIFVfQU1CSUdVT1VTX0FMSUFTX1dBUk5JTkcgPSAtMTIyLCAgIC8q
KjwgVGhpcyBjb252ZXJ0ZXIgYWxpYXMgY2FuIGdvIHRvIGRpZmZlcmVudCBjb252ZXJ0ZXIgaW1w
bGVtZW50YXRpb25zICovCisKKyAgICBVX0RJRkZFUkVOVF9VQ0FfVkVSU0lPTiA9IC0xMjEsICAg
ICAvKio8IHVjb2xfb3BlbiBlbmNvdW50ZXJlZCBhIG1pc21hdGNoIGJldHdlZW4gVUNBIHZlcnNp
b24gYW5kIGNvbGxhdG9yIGltYWdlIHZlcnNpb24sIHNvIHRoZSBjb2xsYXRvciB3YXMgY29uc3Ry
dWN0ZWQgZnJvbSBydWxlcy4gTm8gaW1wYWN0IHRvIGZ1cnRoZXIgZnVuY3Rpb24gKi8KKworICAg
IFVfRVJST1JfV0FSTklOR19MSU1JVCwgICAgICAgICAgICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5
cyBiZSB0aGUgbGFzdCB3YXJuaW5nIHZhbHVlIHRvIGluZGljYXRlIHRoZSBsaW1pdCBmb3IgVUVy
cm9yQ29kZSB3YXJuaW5ncyAobGFzdCB3YXJuaW5nIGNvZGUgKzEpICovCisKKworICAgIFVfWkVS
T19FUlJPUiAgICAgICAgICAgICAgPSAgMCwgICAgIC8qKjwgTm8gZXJyb3IsIG5vIHdhcm5pbmcu
ICovCisKKyAgICBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IgID0gIDEsICAgICAvKio8IFN0YXJ0
IG9mIGNvZGVzIGluZGljYXRpbmcgZmFpbHVyZSAqLworICAgIFVfTUlTU0lOR19SRVNPVVJDRV9F
UlJPUiAgPSAgMiwgICAgIC8qKjwgVGhlIHJlcXVlc3RlZCByZXNvdXJjZSBjYW5ub3QgYmUgZm91
bmQgKi8KKyAgICBVX0lOVkFMSURfRk9STUFUX0VSUk9SICAgID0gIDMsICAgICAvKio8IERhdGEg
Zm9ybWF0IGlzIG5vdCB3aGF0IGlzIGV4cGVjdGVkICovCisgICAgVV9GSUxFX0FDQ0VTU19FUlJP
UiAgICAgICA9ICA0LCAgICAgLyoqPCBUaGUgcmVxdWVzdGVkIGZpbGUgY2Fubm90IGJlIGZvdW5k
ICovCisgICAgVV9JTlRFUk5BTF9QUk9HUkFNX0VSUk9SICA9ICA1LCAgICAgLyoqPCBJbmRpY2F0
ZXMgYSBidWcgaW4gdGhlIGxpYnJhcnkgY29kZSAqLworICAgIFVfTUVTU0FHRV9QQVJTRV9FUlJP
UiAgICAgPSAgNiwgICAgIC8qKjwgVW5hYmxlIHRvIHBhcnNlIGEgbWVzc2FnZSAobWVzc2FnZSBm
b3JtYXQpICovCisgICAgVV9NRU1PUllfQUxMT0NBVElPTl9FUlJPUiA9ICA3LCAgICAgLyoqPCBN
ZW1vcnkgYWxsb2NhdGlvbiBlcnJvciAqLworICAgIFVfSU5ERVhfT1VUT0ZCT1VORFNfRVJST1Ig
PSAgOCwgICAgIC8qKjwgVHJ5aW5nIHRvIGFjY2VzcyB0aGUgaW5kZXggdGhhdCBpcyBvdXQgb2Yg
Ym91bmRzICovCisgICAgVV9QQVJTRV9FUlJPUiAgICAgICAgICAgICA9ICA5LCAgICAgLyoqPCBF
cXVpdmFsZW50IHRvIEphdmEgUGFyc2VFeGNlcHRpb24gKi8KKyAgICBVX0lOVkFMSURfQ0hBUl9G
T1VORCAgICAgID0gMTAsICAgICAvKio8IENoYXJhY3RlciBjb252ZXJzaW9uOiBVbm1hcHBhYmxl
IGlucHV0IHNlcXVlbmNlLiBJbiBvdGhlciBBUElzOiBJbnZhbGlkIGNoYXJhY3Rlci4gKi8KKyAg
ICBVX1RSVU5DQVRFRF9DSEFSX0ZPVU5EICAgID0gMTEsICAgICAvKio8IENoYXJhY3RlciBjb252
ZXJzaW9uOiBJbmNvbXBsZXRlIGlucHV0IHNlcXVlbmNlLiAqLworICAgIFVfSUxMRUdBTF9DSEFS
X0ZPVU5EICAgICAgPSAxMiwgICAgIC8qKjwgQ2hhcmFjdGVyIGNvbnZlcnNpb246IElsbGVnYWwg
aW5wdXQgc2VxdWVuY2UvY29tYmluYXRpb24gb2YgaW5wdXQgdW5pdHMuLiAqLworICAgIFVfSU5W
QUxJRF9UQUJMRV9GT1JNQVQgICAgPSAxMywgICAgIC8qKjwgQ29udmVyc2lvbiB0YWJsZSBmaWxl
IGZvdW5kLCBidXQgY29ycnVwdGVkICovCisgICAgVV9JTlZBTElEX1RBQkxFX0ZJTEUgICAgICA9
IDE0LCAgICAgLyoqPCBDb252ZXJzaW9uIHRhYmxlIGZpbGUgbm90IGZvdW5kICovCisgICAgVV9C
VUZGRVJfT1ZFUkZMT1dfRVJST1IgICA9IDE1LCAgICAgLyoqPCBBIHJlc3VsdCB3b3VsZCBub3Qg
Zml0IGluIHRoZSBzdXBwbGllZCBidWZmZXIgKi8KKyAgICBVX1VOU1VQUE9SVEVEX0VSUk9SICAg
ICAgID0gMTYsICAgICAvKio8IFJlcXVlc3RlZCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBpbiBj
dXJyZW50IGNvbnRleHQgKi8KKyAgICBVX1JFU09VUkNFX1RZUEVfTUlTTUFUQ0ggID0gMTcsICAg
ICAvKio8IGFuIG9wZXJhdGlvbiBpcyByZXF1ZXN0ZWQgb3ZlciBhIHJlc291cmNlIHRoYXQgZG9l
cyBub3Qgc3VwcG9ydCBpdCAqLworICAgIFVfSUxMRUdBTF9FU0NBUEVfU0VRVUVOQ0UgPSAxOCwg
ICAgIC8qKjwgSVNPLTIwMjIgaWxsbGVnYWwgZXNjYXBlIHNlcXVlbmNlICovCisgICAgVV9VTlNV
UFBPUlRFRF9FU0NBUEVfU0VRVUVOQ0UgPSAxOSwgLyoqPCBJU08tMjAyMiB1bnN1cHBvcnRlZCBl
c2NhcGUgc2VxdWVuY2UgKi8KKyAgICBVX05PX1NQQUNFX0FWQUlMQUJMRSAgICAgID0gMjAsICAg
ICAvKio8IE5vIHNwYWNlIGF2YWlsYWJsZSBmb3IgaW4tYnVmZmVyIGV4cGFuc2lvbiBmb3IgQXJh
YmljIHNoYXBpbmcgKi8KKyAgICBVX0NFX05PVF9GT1VORF9FUlJPUiAgICAgID0gMjEsICAgICAv
Kio8IEN1cnJlbnRseSB1c2VkIG9ubHkgd2hpbGUgc2V0dGluZyB2YXJpYWJsZSB0b3AsIGJ1dCBj
YW4gYmUgdXNlZCBnZW5lcmFsbHkgKi8KKyAgICBVX1BSSU1BUllfVE9PX0xPTkdfRVJST1IgID0g
MjIsICAgICAvKio8IFVzZXIgdHJpZWQgdG8gc2V0IHZhcmlhYmxlIHRvcCB0byBhIHByaW1hcnkg
dGhhdCBpcyBsb25nZXIgdGhhbiB0d28gYnl0ZXMgKi8KKyAgICBVX1NUQVRFX1RPT19PTERfRVJS
T1IgICAgID0gMjMsICAgICAvKio8IElDVSBjYW5ub3QgY29uc3RydWN0IGEgc2VydmljZSBmcm9t
IHRoaXMgc3RhdGUsIGFzIGl0IGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgKi8KKyAgICBVX1RPT19N
QU5ZX0FMSUFTRVNfRVJST1IgID0gMjQsICAgICAvKio8IFRoZXJlIGFyZSB0b28gbWFueSBhbGlh
c2VzIGluIHRoZSBwYXRoIHRvIHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2UuCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyB2ZXJ5IHBvc3NpYmxlIHRoYXQg
YSBjaXJjdWxhciBhbGlhcyBkZWZpbml0aW9uIGhhcyBvY2N1cmVkICovCisgICAgVV9FTlVNX09V
VF9PRl9TWU5DX0VSUk9SICA9IDI1LCAgICAgLyoqPCBVRW51bWVyYXRpb24gb3V0IG9mIHN5bmMg
d2l0aCB1bmRlcmx5aW5nIGNvbGxlY3Rpb24gKi8KKyAgICBVX0lOVkFSSUFOVF9DT05WRVJTSU9O
X0VSUk9SID0gMjYsICAvKio8IFVuYWJsZSB0byBjb252ZXJ0IGEgVUNoYXIqIHN0cmluZyB0byBj
aGFyKiB3aXRoIHRoZSBpbnZhcmlhbnQgY29udmVydGVyLiAqLworICAgIFVfSU5WQUxJRF9TVEFU
RV9FUlJPUiAgICAgPSAyNywgICAgIC8qKjwgUmVxdWVzdGVkIG9wZXJhdGlvbiBjYW4gbm90IGJl
IGNvbXBsZXRlZCB3aXRoIElDVSBpbiBpdHMgY3VycmVudCBzdGF0ZSAqLworICAgIFVfQ09MTEFU
T1JfVkVSU0lPTl9NSVNNQVRDSCA9IDI4LCAgIC8qKjwgQ29sbGF0b3IgdmVyc2lvbiBpcyBub3Qg
Y29tcGF0aWJsZSB3aXRoIHRoZSBiYXNlIHZlcnNpb24gKi8KKyAgICBVX1VTRUxFU1NfQ09MTEFU
T1JfRVJST1IgID0gMjksICAgICAvKio8IENvbGxhdG9yIGlzIG9wdGlvbnMgb25seSBhbmQgbm8g
YmFzZSBpcyBzcGVjaWZpZWQgKi8KKworICAgIFVfU1RBTkRBUkRfRVJST1JfTElNSVQsICAgICAg
ICAgICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCB2YWx1ZSB0byBpbmRpY2F0
ZSB0aGUgbGltaXQgZm9yIHN0YW5kYXJkIGVycm9ycyAqLworICAgIC8qCisgICAgICogdGhlIGVy
cm9yIGNvZGUgcmFuZ2UgMHgxMDAwMCAweDEwMTAwIGFyZSByZXNlcnZlZCBmb3IgVHJhbnNsaXRl
cmF0b3IKKyAgICAgKi8KKyAgICBVX0JBRF9WQVJJQUJMRV9ERUZJTklUSU9OPTB4MTAwMDAsLyoq
PCBNaXNzaW5nICckJyBvciBkdXBsaWNhdGUgdmFyaWFibGUgbmFtZSAqLworICAgIFVfUEFSU0Vf
RVJST1JfU1RBUlQgPSAweDEwMDAwLCAgICAvKio8IFN0YXJ0IG9mIFRyYW5zbGl0ZXJhdG9yIGVy
cm9ycyAqLworICAgIFVfTUFMRk9STUVEX1JVTEUsICAgICAgICAgICAgICAgICAvKio8IEVsZW1l
bnRzIG9mIGEgcnVsZSBhcmUgbWlzcGxhY2VkICovCisgICAgVV9NQUxGT1JNRURfU0VULCAgICAg
ICAgICAgICAgICAgIC8qKjwgQSBVbmljb2RlU2V0IHBhdHRlcm4gaXMgaW52YWxpZCovCisgICAg
VV9NQUxGT1JNRURfU1lNQk9MX1JFRkVSRU5DRSwgICAgIC8qKjwgVU5VU0VEIGFzIG9mIElDVSAy
LjQgKi8KKyAgICBVX01BTEZPUk1FRF9VTklDT0RFX0VTQ0FQRSwgICAgICAgLyoqPCBBIFVuaWNv
ZGUgZXNjYXBlIHBhdHRlcm4gaXMgaW52YWxpZCovCisgICAgVV9NQUxGT1JNRURfVkFSSUFCTEVf
REVGSU5JVElPTiwgIC8qKjwgQSB2YXJpYWJsZSBkZWZpbml0aW9uIGlzIGludmFsaWQgKi8KKyAg
ICBVX01BTEZPUk1FRF9WQVJJQUJMRV9SRUZFUkVOQ0UsICAgLyoqPCBBIHZhcmlhYmxlIHJlZmVy
ZW5jZSBpcyBpbnZhbGlkICovCisgICAgVV9NSVNNQVRDSEVEX1NFR01FTlRfREVMSU1JVEVSUywg
IC8qKjwgVU5VU0VEIGFzIG9mIElDVSAyLjQgKi8KKyAgICBVX01JU1BMQUNFRF9BTkNIT1JfU1RB
UlQsICAgICAgICAgLyoqPCBBIHN0YXJ0IGFuY2hvciBhcHBlYXJzIGF0IGFuIGlsbGVnYWwgcG9z
aXRpb24gKi8KKyAgICBVX01JU1BMQUNFRF9DVVJTT1JfT0ZGU0VULCAgICAgICAgLyoqPCBBIGN1
cnNvciBvZmZzZXQgb2NjdXJzIGF0IGFuIGlsbGVnYWwgcG9zaXRpb24gKi8KKyAgICBVX01JU1BM
QUNFRF9RVUFOVElGSUVSLCAgICAgICAgICAgLyoqPCBBIHF1YW50aWZpZXIgYXBwZWFycyBhZnRl
ciBhIHNlZ21lbnQgY2xvc2UgZGVsaW1pdGVyICovCisgICAgVV9NSVNTSU5HX09QRVJBVE9SLCAg
ICAgICAgICAgICAgIC8qKjwgQSBydWxlIGNvbnRhaW5zIG5vIG9wZXJhdG9yICovCisgICAgVV9N
SVNTSU5HX1NFR01FTlRfQ0xPU0UsICAgICAgICAgIC8qKjwgVU5VU0VEIGFzIG9mIElDVSAyLjQg
Ki8KKyAgICBVX01VTFRJUExFX0FOVEVfQ09OVEVYVFMsICAgICAgICAgLyoqPCBNb3JlIHRoYW4g
b25lIGFudGUgY29udGV4dCAqLworICAgIFVfTVVMVElQTEVfQ1VSU09SUywgICAgICAgICAgICAg
ICAvKio8IE1vcmUgdGhhbiBvbmUgY3Vyc29yICovCisgICAgVV9NVUxUSVBMRV9QT1NUX0NPTlRF
WFRTLCAgICAgICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBwb3N0IGNvbnRleHQgKi8KKyAgICBVX1RS
QUlMSU5HX0JBQ0tTTEFTSCwgICAgICAgICAgICAgLyoqPCBBIGRhbmdsaW5nIGJhY2tzbGFzaCAq
LworICAgIFVfVU5ERUZJTkVEX1NFR01FTlRfUkVGRVJFTkNFLCAgICAvKio8IEEgc2VnbWVudCBy
ZWZlcmVuY2UgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGRlZmluZWQgc2VnbWVudCAqLworICAg
IFVfVU5ERUZJTkVEX1ZBUklBQkxFLCAgICAgICAgICAgICAvKio8IEEgdmFyaWFibGUgcmVmZXJl
bmNlIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBkZWZpbmVkIHZhcmlhYmxlICovCisgICAgVV9V
TlFVT1RFRF9TUEVDSUFMLCAgICAgICAgICAgICAgIC8qKjwgQSBzcGVjaWFsIGNoYXJhY3RlciB3
YXMgbm90IHF1b3RlZCBvciBlc2NhcGVkICovCisgICAgVV9VTlRFUk1JTkFURURfUVVPVEUsICAg
ICAgICAgICAgIC8qKjwgQSBjbG9zaW5nIHNpbmdsZSBxdW90ZSBpcyBtaXNzaW5nICovCisgICAg
VV9SVUxFX01BU0tfRVJST1IsICAgICAgICAgICAgICAgIC8qKjwgQSBydWxlIGlzIGhpZGRlbiBi
eSBhbiBlYXJsaWVyIG1vcmUgZ2VuZXJhbCBydWxlICovCisgICAgVV9NSVNQTEFDRURfQ09NUE9V
TkRfRklMVEVSLCAgICAgIC8qKjwgQSBjb21wb3VuZCBmaWx0ZXIgaXMgaW4gYW4gaW52YWxpZCBs
b2NhdGlvbiAqLworICAgIFVfTVVMVElQTEVfQ09NUE9VTkRfRklMVEVSUywgICAgICAvKio8IE1v
cmUgdGhhbiBvbmUgY29tcG91bmQgZmlsdGVyICovCisgICAgVV9JTlZBTElEX1JCVF9TWU5UQVgs
ICAgICAgICAgICAgIC8qKjwgQSAiOjppZCIgcnVsZSB3YXMgcGFzc2VkIHRvIHRoZSBSdWxlQmFz
ZWRUcmFuc2xpdGVyYXRvciBwYXJzZXIgKi8KKyAgICBVX0lOVkFMSURfUFJPUEVSVFlfUEFUVEVS
TiwgICAgICAgLyoqPCBVTlVTRUQgYXMgb2YgSUNVIDIuNCAqLworICAgIFVfTUFMRk9STUVEX1BS
QUdNQSwgICAgICAgICAgICAgICAvKio8IEEgJ3VzZScgcHJhZ21hIGlzIGludmxhbGlkICovCisg
ICAgVV9VTkNMT1NFRF9TRUdNRU5ULCAgICAgICAgICAgICAgIC8qKjwgQSBjbG9zaW5nICcpJyBp
cyBtaXNzaW5nICovCisgICAgVV9JTExFR0FMX0NIQVJfSU5fU0VHTUVOVCwgICAgICAgIC8qKjwg
VU5VU0VEIGFzIG9mIElDVSAyLjQgKi8KKyAgICBVX1ZBUklBQkxFX1JBTkdFX0VYSEFVU1RFRCwg
ICAgICAgLyoqPCBUb28gbWFueSBzdGFuZC1pbnMgZ2VuZXJhdGVkIGZvciB0aGUgZ2l2ZW4gdmFy
aWFibGUgcmFuZ2UgKi8KKyAgICBVX1ZBUklBQkxFX1JBTkdFX09WRVJMQVAsICAgICAgICAgLyoq
PCBUaGUgdmFyaWFibGUgcmFuZ2Ugb3ZlcmxhcHMgY2hhcmFjdGVycyB1c2VkIGluIHJ1bGVzICov
CisgICAgVV9JTExFR0FMX0NIQVJBQ1RFUiwgICAgICAgICAgICAgIC8qKjwgQSBzcGVjaWFsIGNo
YXJhY3RlciBpcyBvdXRzaWRlIGl0cyBhbGxvd2VkIGNvbnRleHQgKi8KKyAgICBVX0lOVEVSTkFM
X1RSQU5TTElURVJBVE9SX0VSUk9SLCAgLyoqPCBJbnRlcm5hbCB0cmFuc2xpdGVyYXRvciBzeXN0
ZW0gZXJyb3IgKi8KKyAgICBVX0lOVkFMSURfSUQsICAgICAgICAgICAgICAgICAgICAgLyoqPCBB
ICI6OmlkIiBydWxlIHNwZWNpZmllcyBhbiB1bmtub3duIHRyYW5zbGl0ZXJhdG9yICovCisgICAg
VV9JTlZBTElEX0ZVTkNUSU9OLCAgICAgICAgICAgICAgIC8qKjwgQSAiJmZuKCkiIHJ1bGUgc3Bl
Y2lmaWVzIGFuIHVua25vd24gdHJhbnNsaXRlcmF0b3IgKi8KKyAgICBVX1BBUlNFX0VSUk9SX0xJ
TUlULCAgICAgICAgICAgICAgLyoqPCBUaGUgbGltaXQgZm9yIFRyYW5zbGl0ZXJhdG9yIGVycm9y
cyAqLworCisgICAgLyoKKyAgICAgKiB0aGUgZXJyb3IgY29kZSByYW5nZSAweDEwMTAwIDB4MTAy
MDAgYXJlIHJlc2VydmVkIGZvciBmb3JtYXR0aW5nIEFQSSBwYXJzaW5nIGVycm9yCisgICAgICov
CisgICAgVV9VTkVYUEVDVEVEX1RPS0VOPTB4MTAxMDAsICAgICAgIC8qKjwgU3ludGF4IGVycm9y
IGluIGZvcm1hdCBwYXR0ZXJuICovCisgICAgVV9GTVRfUEFSU0VfRVJST1JfU1RBUlQ9MHgxMDEw
MCwgIC8qKjwgU3RhcnQgb2YgZm9ybWF0IGxpYnJhcnkgZXJyb3JzICovCisgICAgVV9NVUxUSVBM
RV9ERUNJTUFMX1NFUEFSQVRPUlMsICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBkZWNpbWFsIHNlcGFy
YXRvciBpbiBudW1iZXIgcGF0dGVybiAqLworICAgIFVfTVVMVElQTEVfREVDSU1BTF9TRVBFUkFU
T1JTID0gVV9NVUxUSVBMRV9ERUNJTUFMX1NFUEFSQVRPUlMsIC8qKjwgVHlwbzoga2VwdCBmb3Ig
YmFja3dhcmQgY29tcGF0aWJpbGl0eS4gVXNlIFVfTVVMVElQTEVfREVDSU1BTF9TRVBBUkFUT1JT
ICovCisgICAgVV9NVUxUSVBMRV9FWFBPTkVOVElBTF9TWU1CT0xTLCAgIC8qKjwgTW9yZSB0aGFu
IG9uZSBleHBvbmVudCBzeW1ib2wgaW4gbnVtYmVyIHBhdHRlcm4gKi8KKyAgICBVX01BTEZPUk1F
RF9FWFBPTkVOVElBTF9QQVRURVJOLCAgLyoqPCBHcm91cGluZyBzeW1ib2wgaW4gZXhwb25lbnQg
cGF0dGVybiAqLworICAgIFVfTVVMVElQTEVfUEVSQ0VOVF9TWU1CT0xTLCAgICAgICAvKio8IE1v
cmUgdGhhbiBvbmUgcGVyY2VudCBzeW1ib2wgaW4gbnVtYmVyIHBhdHRlcm4gKi8KKyAgICBVX01V
TFRJUExFX1BFUk1JTExfU1lNQk9MUywgICAgICAgLyoqPCBNb3JlIHRoYW4gb25lIHBlcm1pbGwg
c3ltYm9sIGluIG51bWJlciBwYXR0ZXJuICovCisgICAgVV9NVUxUSVBMRV9QQURfU1BFQ0lGSUVS
UywgICAgICAgIC8qKjwgTW9yZSB0aGFuIG9uZSBwYWQgc3ltYm9sIGluIG51bWJlciBwYXR0ZXJu
ICovCisgICAgVV9QQVRURVJOX1NZTlRBWF9FUlJPUiwgICAgICAgICAgIC8qKjwgU3ludGF4IGVy
cm9yIGluIGZvcm1hdCBwYXR0ZXJuICovCisgICAgVV9JTExFR0FMX1BBRF9QT1NJVElPTiwgICAg
ICAgICAgIC8qKjwgUGFkIHN5bWJvbCBtaXNwbGFjZWQgaW4gbnVtYmVyIHBhdHRlcm4gKi8KKyAg
ICBVX1VOTUFUQ0hFRF9CUkFDRVMsICAgICAgICAgICAgICAgLyoqPCBCcmFjZXMgZG8gbm90IG1h
dGNoIGluIG1lc3NhZ2UgcGF0dGVybiAqLworICAgIFVfVU5TVVBQT1JURURfUFJPUEVSVFksICAg
ICAgICAgICAvKio8IFVOVVNFRCBhcyBvZiBJQ1UgMi40ICovCisgICAgVV9VTlNVUFBPUlRFRF9B
VFRSSUJVVEUsICAgICAgICAgIC8qKjwgVU5VU0VEIGFzIG9mIElDVSAyLjQgKi8KKyAgICBVX0ZN
VF9QQVJTRV9FUlJPUl9MSU1JVCwgICAgICAgICAgLyoqPCBUaGUgbGltaXQgZm9yIGZvcm1hdCBs
aWJyYXJ5IGVycm9ycyAqLworCisgICAgLyoKKyAgICAgKiB0aGUgZXJyb3IgY29kZSByYW5nZSAw
eDEwMjAwIDB4MTAyZmYgYXJlIHJlc2VydmVkIGZvciBCcmVhayBJdGVyYXRvciByZWxhdGVkIGVy
cm9yCisgICAgICovCisgICAgVV9CUktfRVJST1JfU1RBUlQ9MHgxMDIwMCwgICAgICAgICAgICAg
LyoqPCBTdGFydCBvZiBjb2RlcyBpbmRpY2F0aW5nIEJyZWFrIEl0ZXJhdG9yIGZhaWx1cmVzICov
CisgICAgVV9CUktfSU5URVJOQUxfRVJST1IsICAgICAgICAgICAgICAgICAgLyoqPCBBbiBpbnRl
cm5hbCBlcnJvciAoYnVnKSB3YXMgZGV0ZWN0ZWQuICAgICAgICAgICAgICovCisgICAgVV9CUktf
SEVYX0RJR0lUU19FWFBFQ1RFRCwgICAgICAgICAgICAgLyoqPCBIZXggZGlnaXRzIGV4cGVjdGVk
IGFzIHBhcnQgb2YgYSBlc2NhcGVkIGNoYXIgaW4gYSBydWxlLiAqLworICAgIFVfQlJLX1NFTUlD
T0xPTl9FWFBFQ1RFRCwgICAgICAgICAgICAgIC8qKjwgTWlzc2luZyAnOycgYXQgdGhlIGVuZCBv
ZiBhIFJCQkkgcnVsZS4gICAgICAgICAgICAqLworICAgIFVfQlJLX1JVTEVfU1lOVEFYLCAgICAg
ICAgICAgICAgICAgICAgIC8qKjwgU3ludGF4IGVycm9yIGluIFJCQkkgcnVsZS4gICAgICAgICAg
ICAgICAgICAgICAgICAqLworICAgIFVfQlJLX1VOQ0xPU0VEX1NFVCwgICAgICAgICAgICAgICAg
ICAgIC8qKjwgVW5pY29kZVNldCB3aXRpbmcgYW4gUkJCSSBydWxlIG1pc3NpbmcgYSBjbG9zaW5n
ICddJy4gICovCisgICAgVV9CUktfQVNTSUdOX0VSUk9SLCAgICAgICAgICAgICAgICAgICAgLyoq
PCBTeW50YXggZXJyb3IgaW4gUkJCSSBydWxlIGFzc2lnbm1lbnQgc3RhdGVtZW50LiAgICovCisg
ICAgVV9CUktfVkFSSUFCTEVfUkVERklOSVRJT04sICAgICAgICAgICAgLyoqPCBSQkJJIHJ1bGUg
JFZhcmlhYmxlIHJlZGVmaW5lZC4gICAgICAgICAgICAgICAgICAgICovCisgICAgVV9CUktfTUlT
TUFUQ0hFRF9QQVJFTiwgICAgICAgICAgICAgICAgLyoqPCBNaXMtbWF0Y2hlZCBwYXJlbnRoZXNl
cyBpbiBhbiBSQkJJIHJ1bGUuICAgICAgICAgICovCisgICAgVV9CUktfTkVXX0xJTkVfSU5fUVVP
VEVEX1NUUklORywgICAgICAgLyoqPCBNaXNzaW5nIGNsb3NpbmcgcXVvdGUgaW4gYW4gUkJCSSBy
dWxlLiAgICAgICAgICAgICovCisgICAgVV9CUktfVU5ERUZJTkVEX1ZBUklBQkxFLCAgICAgICAg
ICAgICAgLyoqPCBVc2Ugb2YgYW4gdW5kZWZpbmVkICRWYXJpYWJsZSBpbiBhbiBSQkJJIHJ1bGUu
ICAgICovCisgICAgVV9CUktfSU5JVF9FUlJPUiwgICAgICAgICAgICAgICAgICAgICAgLyoqPCBJ
bml0aWFsaXphdGlvbiBmYWlsdXJlLiAgUHJvYmFibGUgbWlzc2luZyBJQ1UgRGF0YS4gKi8KKyAg
ICBVX0JSS19SVUxFX0VNUFRZX1NFVCwgICAgICAgICAgICAgICAgICAvKio8IFJ1bGUgY29udGFp
bnMgYW4gZW1wdHkgVW5pY29kZSBTZXQuICAgICAgICAgICAgICAgKi8KKyAgICBVX0JSS19VTlJF
Q09HTklaRURfT1BUSU9OLCAgICAgICAgICAgICAvKio8ICEhb3B0aW9uIGluIFJCQkkgcnVsZXMg
bm90IHJlY29nbml6ZWQuICAgICAgICAgICAgKi8KKyAgICBVX0JSS19NQUxGT1JNRURfUlVMRV9U
QUcsICAgICAgICAgICAgICAvKio8IFRoZSB7bm5ufSB0YWcgb24gYSBydWxlIGlzIG1hbCBmb3Jt
ZWQgICAgICAgICAgICAgKi8KKyAgICBVX0JSS19FUlJPUl9MSU1JVCwgICAgICAgICAgICAgICAg
ICAgICAvKio8IFRoaXMgbXVzdCBhbHdheXMgYmUgdGhlIGxhc3QgdmFsdWUgdG8gaW5kaWNhdGUg
dGhlIGxpbWl0IGZvciBCcmVhayBJdGVyYXRvciBmYWlsdXJlcyAqLworCisgICAgLyoKKyAgICAg
KiBUaGUgZXJyb3IgY29kZXMgaW4gdGhlIHJhbmdlIDB4MTAzMDAtMHgxMDNmZiBhcmUgcmVzZXJ2
ZWQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbiByZWxhdGVkIGVycnJzCisgICAgICovCisgICAgVV9S
RUdFWF9FUlJPUl9TVEFSVD0weDEwMzAwLCAgICAgICAgICAvKio8IFN0YXJ0IG9mIGNvZGVzIGlu
ZGljYXRpbmcgUmVnZXhwIGZhaWx1cmVzICAgICAgICAgICovCisgICAgVV9SRUdFWF9JTlRFUk5B
TF9FUlJPUiwgICAgICAgICAgICAgICAvKio8IEFuIGludGVybmFsIGVycm9yIChidWcpIHdhcyBk
ZXRlY3RlZC4gICAgICAgICAgICAgICovCisgICAgVV9SRUdFWF9SVUxFX1NZTlRBWCwgICAgICAg
ICAgICAgICAgICAvKio8IFN5bnRheCBlcnJvciBpbiByZWdleHAgcGF0dGVybi4gICAgICAgICAg
ICAgICAgICAgICovCisgICAgVV9SRUdFWF9JTlZBTElEX1NUQVRFLCAgICAgICAgICAgICAgICAv
Kio8IFJlZ2V4TWF0Y2hlciBpbiBpbnZhbGlkIHN0YXRlIGZvciByZXF1ZXN0ZWQgb3BlcmF0aW9u
ICovCisgICAgVV9SRUdFWF9CQURfRVNDQVBFX1NFUVVFTkNFLCAgICAgICAgICAvKio8IFVucmVj
b2duaXplZCBiYWNrc2xhc2ggZXNjYXBlIHNlcXVlbmNlIGluIHBhdHRlcm4gICovCisgICAgVV9S
RUdFWF9QUk9QRVJUWV9TWU5UQVgsICAgICAgICAgICAgICAvKio8IEluY29ycmVjdCBVbmljb2Rl
IHByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgVV9SRUdFWF9VTklNUExF
TUVOVEVELCAgICAgICAgICAgICAgICAvKio8IFVzZSBvZiByZWdleHAgZmVhdHVyZSB0aGF0IGlz
IG5vdCB5ZXQgaW1wbGVtZW50ZWQuICovCisgICAgVV9SRUdFWF9NSVNNQVRDSEVEX1BBUkVOLCAg
ICAgICAgICAgICAvKio8IEluY29ycmVjdGx5IG5lc3RlZCBwYXJlbnRoZXNlcyBpbiByZWdleHAg
cGF0dGVybi4gICovCisgICAgVV9SRUdFWF9OVU1CRVJfVE9PX0JJRywgICAgICAgICAgICAgICAv
Kio8IERlY2ltYWwgbnVtYmVyIGlzIHRvbyBsYXJnZS4gICAgICAgICAgICAgICAgICAgICAgICov
CisgICAgVV9SRUdFWF9CQURfSU5URVJWQUwsICAgICAgICAgICAgICAgICAvKio8IEVycm9yIGlu
IHttaW4sbWF4fSBpbnRlcnZhbCAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgVV9SRUdF
WF9NQVhfTFRfTUlOLCAgICAgICAgICAgICAgICAgICAvKio8IEluIHttaW4sbWF4fSwgbWF4IGlz
IGxlc3MgdGhhbiBtaW4uICAgICAgICAgICAgICAgICovCisgICAgVV9SRUdFWF9JTlZBTElEX0JB
Q0tfUkVGLCAgICAgICAgICAgICAvKio8IEJhY2stcmVmZXJlbmNlIHRvIGEgbm9uLWV4aXN0ZW50
IGNhcHR1cmUgZ3JvdXAuICAgICovCisgICAgVV9SRUdFWF9JTlZBTElEX0ZMQUcsICAgICAgICAg
ICAgICAgICAvKio8IEludmFsaWQgdmFsdWUgZm9yIG1hdGNoIG1vZGUgZmxhZ3MuICAgICAgICAg
ICAgICAgICovCisgICAgVV9SRUdFWF9MT09LX0JFSElORF9MSU1JVCwgICAgICAgICAgICAvKio8
IExvb2stQmVoaW5kIHBhdHRlcm4gbWF0Y2hlcyBtdXN0IGhhdmUgYSBib3VuZGVkIG1heGltdW0g
bGVuZ3RoLiAgICAqLworICAgIFVfUkVHRVhfU0VUX0NPTlRBSU5TX1NUUklORywgICAgICAgICAg
LyoqPCBSZWdleHBzIGNhbm5vdCBoYXZlIFVuaWNvZGVTZXRzIGNvbnRhaW5pbmcgc3RyaW5ncy4q
LworICAgIFVfUkVHRVhfRVJST1JfTElNSVQsICAgICAgICAgICAgICAgICAgLyoqPCBUaGlzIG11
c3QgYWx3YXlzIGJlIHRoZSBsYXN0IHZhbHVlIHRvIGluZGljYXRlIHRoZSBsaW1pdCBmb3IgcmVn
ZXhwIGVycm9ycyAqLworCisgICAgLyoKKyAgICAgKiBUaGUgZXJyb3IgY29kZSBpbiB0aGUgcmFu
Z2UgMHgxMDQwMC0weDEwNGZmIGFyZSByZXNlcnZlZCBmb3IgSUROQSByZWxhdGVkIGVycm9yIGNv
ZGVzCisgICAgICovCisgICAgVV9JRE5BX0VSUk9SX1NUQVJUPTB4MTA0MDAsCisgICAgVV9JRE5B
X1BST0hJQklURURfRVJST1IsCisgICAgVV9JRE5BX1VOQVNTSUdORURfRVJST1IsCisgICAgVV9J
RE5BX0NIRUNLX0JJRElfRVJST1IsCisgICAgVV9JRE5BX1NURDNfQVNDSUlfUlVMRVNfRVJST1Is
CisgICAgVV9JRE5BX0FDRV9QUkVGSVhfRVJST1IsCisgICAgVV9JRE5BX1ZFUklGSUNBVElPTl9F
UlJPUiwKKyAgICBVX0lETkFfTEFCRUxfVE9PX0xPTkdfRVJST1IsCisgICAgVV9JRE5BX0VSUk9S
X0xJTUlULAorICAgIC8qCisgICAgICogQWxpYXNlcyBmb3IgU3RyaW5nUHJlcAorICAgICAqLwor
ICAgIFVfU1RSSU5HUFJFUF9QUk9ISUJJVEVEX0VSUk9SID0gVV9JRE5BX1BST0hJQklURURfRVJS
T1IsCisgICAgVV9TVFJJTkdQUkVQX1VOQVNTSUdORURfRVJST1IgPSBVX0lETkFfVU5BU1NJR05F
RF9FUlJPUiwKKyAgICBVX1NUUklOR1BSRVBfQ0hFQ0tfQklESV9FUlJPUiA9IFVfSUROQV9DSEVD
S19CSURJX0VSUk9SLAorCisKKyAgICBVX0VSUk9SX0xJTUlUPVVfSUROQV9FUlJPUl9MSU1JVCAg
ICAgIC8qKjwgVGhpcyBtdXN0IGFsd2F5cyBiZSB0aGUgbGFzdCB2YWx1ZSB0byBpbmRpY2F0ZSB0
aGUgbGltaXQgZm9yIFVFcnJvckNvZGUgKGxhc3QgZXJyb3IgY29kZSArMSkgKi8KK30gVUVycm9y
Q29kZTsKKworLyogVXNlIHRoZSBmb2xsb3dpbmcgdG8gZGV0ZXJtaW5lIGlmIGFuIFVFcnJvckNv
ZGUgcmVwcmVzZW50cyAqLworLyogb3BlcmF0aW9uYWwgc3VjY2VzcyBvciBmYWlsdXJlLiAqLwor
CisjaWZkZWYgWFBfQ1BMVVNQTFVTCisgICAgLyoqCisgICAgICogRG9lcyB0aGUgZXJyb3IgY29k
ZSBpbmRpY2F0ZSBzdWNjZXNzPworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworICAg
IHN0YXRpYworICAgIGlubGluZSBVQm9vbCBVX1NVQ0NFU1MoVUVycm9yQ29kZSBjb2RlKSB7IHJl
dHVybiAoVUJvb2wpKGNvZGU8PVVfWkVST19FUlJPUik7IH0KKyAgICAvKioKKyAgICAgKiBEb2Vz
IHRoZSBlcnJvciBjb2RlIGluZGljYXRlIGEgZmFpbHVyZT8KKyAgICAgKiBAc3RhYmxlIElDVSAy
LjAKKyAgICAgKi8KKyAgICBzdGF0aWMKKyAgICBpbmxpbmUgVUJvb2wgVV9GQUlMVVJFKFVFcnJv
ckNvZGUgY29kZSkgeyByZXR1cm4gKFVCb29sKShjb2RlPlVfWkVST19FUlJPUik7IH0KKyNlbHNl
CisgICAgLyoqCisgICAgICogRG9lcyB0aGUgZXJyb3IgY29kZSBpbmRpY2F0ZSBzdWNjZXNzPwor
ICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworIyAgIGRlZmluZSBVX1NVQ0NFU1MoeCkg
KCh4KTw9VV9aRVJPX0VSUk9SKQorICAgIC8qKgorICAgICAqIERvZXMgdGhlIGVycm9yIGNvZGUg
aW5kaWNhdGUgYSBmYWlsdXJlPworICAgICAqIEBzdGFibGUgSUNVIDIuMAorICAgICAqLworIyAg
IGRlZmluZSBVX0ZBSUxVUkUoeCkgKCh4KT5VX1pFUk9fRVJST1IpCisjZW5kaWYKKworLyoqCisg
KiBSZXR1cm4gYSBzdHJpbmcgZm9yIGEgVUVycm9yQ29kZSB2YWx1ZS4KKyAqIFRoZSBzdHJpbmcg
d2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgbmFtZSBvZiB0aGUgZXJyb3IgY29kZSBjb25zdGFudAor
ICogaW4gdGhlIFVFcnJvckNvZGUgZW51bSBhYm92ZS4KKyAqIEBzdGFibGUgSUNVIDIuMAorICov
CitVX1NUQUJMRSBjb25zdCBjaGFyICogVV9FWFBPUlQyCit1X2Vycm9yTmFtZShVRXJyb3JDb2Rl
IGNvZGUpOworCisKKyNlbmRpZiAvKiBfVVRZUEVTICovCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
R2x1ZS9pY3UvdW5pY29kZS91dmVyc2lvbi5oIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUv
dXZlcnNpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWE3NzU1Ci0t
LSAvZGV2L251bGwKKysrIGIvSmF2YVNjcmlwdEdsdWUvaWN1L3VuaWNvZGUvdXZlcnNpb24uaApA
QCAtMCwwICsxLDIxNiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmln
aHQgKEMpIDIwMDAtMjAwNCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENv
cnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgorKgorKiAgIGZpbGUgbmFtZTogIHV2ZXJzaW9uLmgKKyogICBlbmNvZGluZzog
ICBVUy1BU0NJSQorKiAgIHRhYiBzaXplOiAgIDggKG5vdCB1c2VkKQorKiAgIGluZGVudGF0aW9u
OjQKKyoKKyogICBDcmVhdGVkIGJ5OiBWbGFkaW1pciBXZWluc3RlaW4KKyoKKyogIENvbnRhaW5z
IGFsbCB0aGUgaW1wb3J0YW50IHZlcnNpb24gbnVtYmVycyBmb3IgSUNVLiAKKyogIEdldHMgaW5j
bHVkZWQgYnkgdXR5cGVzLmggYW5kIFdpbmRvd3MgLnJjIGZpbGVzCisqLworCisvKj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PSovCisvKiBNYWluIElDVSB2ZXJzaW9uIGluZm9ybWF0aW9uICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PSovCisKKyNpZm5kZWYgVVZFUlNJT05fSAorI2RlZmluZSBVVkVSU0lPTl9ICisKKy8qKiBJTVBP
UlRBTlQ6IFdoZW4gdXBkYXRpbmcgdmVyc2lvbiwgdGhlIGZvbGxvd2luZyB0aGluZ3MgbmVlZCB0
byBiZSBkb25lOiAgICovCisvKiogc291cmNlL2NvbW1vbi91bmljb2RlL3V2ZXJzaW9uLmggLSB0
aGlzIGZpbGU6IHVwZGF0ZSBtYWpvciwgbWlub3IsICAgICAgICAqLworLyoqICAgICAgICBwYXRj
aGxldmVsLCBzdWZmaXgsIHZlcnNpb24sIHNob3J0IHZlcnNpb24gY29uc3RhbnRzLCBuYW1lc3Bh
Y2UsICAgKi8KKy8qKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmQgY29weXJpZ2h0ICovCisvKiogc291cmNlL2NvbW1vbi9jb21t
b24uZHNwIC0gdXBkYXRlICdPdXRwdXQgZmlsZSBuYW1lJyBvbiB0aGUgbGluayB0YWIgc28gICAq
LworLyoqICAgICAgICAgICAgICAgICAgIHRoYXQgaXQgY29udGFpbnMgdGhlIG5ldyBtYWpvci9t
aW5vciBjb21iaW5hdGlvbiAgICAgICAgKi8KKy8qKiBzb3VyY2UvaTE4bi9pMThuLmRzcCAtIHNh
bWUgYXMgZm9yIHRoZSBjb21tb24uZHNwICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiog
c291cmNlL2xheW91dC9sYXlvdXQuZHNwIC0gc2FtZSBhcyBmb3IgdGhlIGNvbW1vbi5kc3AgICAg
ICAgICAgICAgICAgICAgICAqLworLyoqIHNvdXJjZS9zdHViZGF0YS9zdHViZGF0YS5kc3AgLSBz
YW1lIGFzIGZvciB0aGUgY29tbW9uLmRzcCAgICAgICAgICAgICAgICAgKi8KKy8qKiBzb3VyY2Uv
ZXh0cmEvdXN0ZGlvL3VzdGRpby5kc3AgLSBzYW1lIGFzIGZvciB0aGUgY29tbW9uLmRzcCAgICAg
ICAgICAgICAgICovCisvKiogc291cmNlL2RhdGEvbWFrZWRhdGEubWFrIC0gY2hhbmdlIFVfSUNV
REFUQV9OQU1FIHNvIHRoYXQgaXQgY29udGFpbnMgICAgICAqLworLyoqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZSBuZXcgbWFqb3IvbWlub3IgY29tYmluYXRpb24gICAgICAgICAgICAg
ICAgKi8KKy8qKiBzb3VyY2UvdG9vbHMvZ2VucmVuL2dlbnJlbi5wbCAtIHVzZSB0aGlzIHNjcmlw
dCBhY2NvcmRpbmcgdG8gdGhlIFJFQURNRSAgICovCisvKiogICAgICAgICAgICAgICAgICAgIGlu
IHRoYXQgZm9sZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwor
CisjaW5jbHVkZSAidW5pY29kZS91bWFjaGluZS5oIgorCisvKiogVGhlIHN0YW5kYXJkIGNvcHly
aWdodCBub3RpY2UgdGhhdCBnZXRzIGNvbXBpbGVkIGludG8gZWFjaCBsaWJyYXJ5LiAKKyAqICBU
aGlzIHZhbHVlIHdpbGwgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQor
ICogIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFVfQ09QWVJJR0hUX1NUUklORyBcCisg
ICIgQ29weXJpZ2h0IChDKSAyMDA0LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENv
cnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICIKKworLyoqIE1heGlt
dW0gbGVuZ3RoIG9mIHRoZSBjb3B5cmlnaHQgc3RyaW5nLgorICogIEBzdGFibGUgSUNVIDIuNAor
ICovCisjZGVmaW5lIFVfQ09QWVJJR0hUX1NUUklOR19MRU5HVEggIDEyOAorCisvKiogVGhlIGN1
cnJlbnQgSUNVIG1ham9yIHZlcnNpb24gYXMgYW4gaW50ZWdlci4gCisgKiAgVGhpcyB2YWx1ZSB3
aWxsIGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqICBAc3RhYmxl
IElDVSAyLjQKKyAqLworI2RlZmluZSBVX0lDVV9WRVJTSU9OX01BSk9SX05VTSAzCisKKy8qKiBU
aGUgY3VycmVudCBJQ1UgbWlub3IgdmVyc2lvbiBhcyBhbiBpbnRlZ2VyLiAKKyAqICBUaGlzIHZh
bHVlIHdpbGwgY2hhbmdlIGluIHRoZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQorICogIEBz
dGFibGUgSUNVIDIuNgorICovCisjZGVmaW5lIFVfSUNVX1ZFUlNJT05fTUlOT1JfTlVNIDIKKwor
LyoqIFRoZSBjdXJyZW50IElDVSBwYXRjaGxldmVsIHZlcnNpb24gYXMgYW4gaW50ZWdlci4gIAor
ICogIFRoaXMgdmFsdWUgd2lsbCBjaGFuZ2UgaW4gdGhlIHN1YnNlcXVlbnQgcmVsZWFzZXMgb2Yg
SUNVCisgKiAgQHN0YWJsZSBJQ1UgMi40CisgKi8KKyNkZWZpbmUgVV9JQ1VfVkVSU0lPTl9QQVRD
SExFVkVMX05VTSAwCisKKy8qKiBHbHVlZCB2ZXJzaW9uIHN1ZmZpeCBmb3IgcmVuYW1lcnMgCisg
KiAgVGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJ
Q1UKKyAqICBAc3RhYmxlIElDVSAyLjYKKyAqLworI2RlZmluZSBVX0lDVV9WRVJTSU9OX1NVRkZJ
WCBfM18yCisKKy8qKiBUaGUgY3VycmVudCBJQ1UgbGlicmFyeSB2ZXJzaW9uIGFzIGEgZG90dGVk
LWRlY2ltYWwgc3RyaW5nLiBUaGUgcGF0Y2hsZXZlbAorICogIG9ubHkgYXBwZWFycyBpbiB0aGlz
IHN0cmluZyBpZiBpdCBub24temVyby4gCisgKiAgVGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSBpbiB0
aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqICBAc3RhYmxlIElDVSAyLjQKKyAqLwor
I2RlZmluZSBVX0lDVV9WRVJTSU9OICIzLjIiCisKKy8qKiBUaGUgY3VycmVudCBJQ1UgbGlicmFy
eSBtYWpvci9taW5vciB2ZXJzaW9uIGFzIGEgc3RyaW5nIHdpdGhvdXQgZG90cywgZm9yIGxpYnJh
cnkgbmFtZSBzdWZmaXhlcy4gCisgKiAgVGhpcyB2YWx1ZSB3aWxsIGNoYW5nZSBpbiB0aGUgc3Vi
c2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqICBAc3RhYmxlIElDVSAyLjYKKyAqLworI2RlZmlu
ZSBVX0lDVV9WRVJTSU9OX1NIT1JUICIzMiIKKworLyoqIEFuIElDVSB2ZXJzaW9uIGNvbnNpc3Rz
IG9mIHVwIHRvIDQgbnVtYmVycyBmcm9tIDAuLjI1NS4KKyAqICBAc3RhYmxlIElDVSAyLjQKKyAq
LworI2RlZmluZSBVX01BWF9WRVJTSU9OX0xFTkdUSCA0CisKKy8qKiBJbiBhIHN0cmluZywgSUNV
IHZlcnNpb24gZmllbGRzIGFyZSBkZWxpbWl0ZWQgYnkgZG90cy4KKyAqICBAc3RhYmxlIElDVSAy
LjQKKyAqLworI2RlZmluZSBVX1ZFUlNJT05fREVMSU1JVEVSICcuJworCisvKiogVGhlIG1heGlt
dW0gbGVuZ3RoIG9mIGFuIElDVSB2ZXJzaW9uIHN0cmluZy4KKyAqICBAc3RhYmxlIElDVSAyLjQK
KyAqLworI2RlZmluZSBVX01BWF9WRVJTSU9OX1NUUklOR19MRU5HVEggMjAKKworLyoqIFRoZSBi
aW5hcnkgZm9ybSBvZiBhIHZlcnNpb24gb24gSUNVIEFQSXMgaXMgYW4gYXJyYXkgb2YgNCB1aW50
OF90LgorICogIEBzdGFibGUgSUNVIDIuNAorICovCit0eXBlZGVmIHVpbnQ4X3QgVVZlcnNpb25J
bmZvW1VfTUFYX1ZFUlNJT05fTEVOR1RIXTsKKworI2lmIFVfSEFWRV9OQU1FU1BBQ0UgJiYgZGVm
aW5lZChYUF9DUExVU1BMVVMpCisjaWYgVV9ESVNBQkxFX1JFTkFNSU5HCisjZGVmaW5lIFVfSUNV
X05BTUVTUEFDRSBpY3UKK25hbWVzcGFjZSBVX0lDVV9OQU1FU1BBQ0UgeyB9CisjZWxzZQorI2Rl
ZmluZSBVX0lDVV9OQU1FU1BBQ0UgaWN1XzNfMgorbmFtZXNwYWNlIFVfSUNVX05BTUVTUEFDRSB7
IH0KK25hbWVzcGFjZSBpY3UgPSBVX0lDVV9OQU1FU1BBQ0U7CisjZW5kaWYKK1VfTkFNRVNQQUNF
X1VTRQorI2VuZGlmCisKKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworLyogR2VuZXJhbCB2ZXJz
aW9uIGhlbHBlciBmdW5jdGlvbnMuIERlZmluaXRpb25zIGluIHB1dGlsLmMgICAgICAgICAgICAg
ICAgICAqLworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKioKKyAqIFBhcnNlIGEgc3RyaW5n
IHdpdGggZG90dGVkLWRlY2ltYWwgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQKKyAqIGZpbGwgaW4g
YSBVVmVyc2lvbkluZm8gc3RydWN0dXJlIHdpdGggdGhlIHJlc3VsdC4KKyAqIERlZmluaXRpb24g
b2YgdGhpcyBmdW5jdGlvbiBsaXZlcyBpbiBwdXRpbC5jCisgKgorICogQHBhcmFtIHZlcnNpb25B
cnJheSBUaGUgZGVzdGluYXRpb24gc3RydWN0dXJlIGZvciB0aGUgdmVyc2lvbiBpbmZvcm1hdGlv
bi4KKyAqIEBwYXJhbSB2ZXJzaW9uU3RyaW5nIEEgc3RyaW5nIHdpdGggZG90dGVkLWRlY2ltYWwg
dmVyc2lvbiBpbmZvcm1hdGlvbiwKKyAqICAgICAgICAgICAgICAgICAgICAgIHdpdGggdXAgdG8g
Zm91ciBub24tbmVnYXRpdmUgbnVtYmVyIGZpZWxkcyB3aXRoCisgKiAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXMgb2YgdXAgdG8gMjU1IGVhY2guCisgKiBAc3RhYmxlIElDVSAyLjQKKyAqLwor
VV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VfdmVyc2lvbkZyb21TdHJpbmcoVVZlcnNpb25JbmZv
IHZlcnNpb25BcnJheSwgY29uc3QgY2hhciAqdmVyc2lvblN0cmluZyk7CisKKy8qKgorICogV3Jp
dGUgYSBzdHJpbmcgd2l0aCBkb3R0ZWQtZGVjaW1hbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFjY29y
ZGluZworICogdG8gdGhlIGlucHV0IFVWZXJzaW9uSW5mby4KKyAqIERlZmluaXRpb24gb2YgdGhp
cyBmdW5jdGlvbiBsaXZlcyBpbiBwdXRpbC5jCisgKgorICogQHBhcmFtIHZlcnNpb25BcnJheSBU
aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiB0byBiZSB3cml0dGVuIGFzIGEgc3RyaW5nLgorICogQHBh
cmFtIHZlcnNpb25TdHJpbmcgQSBzdHJpbmcgYnVmZmVyIHRoYXQgd2lsbCBiZSBmaWxsZWQgaW4g
d2l0aAorICogICAgICAgICAgICAgICAgICAgICAgYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0
aGUgbnVtZXJpYyB2ZXJzaW9uCisgKiAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBp
biB2ZXJzaW9uQXJyYXkuCisgKiAgICAgICAgICAgICAgICAgICAgICBUaGUgYnVmZmVyIHNpemUg
bXVzdCBiZSBhdCBsZWFzdCBVX01BWF9WRVJTSU9OX1NUUklOR19MRU5HVEguCisgKiBAc3RhYmxl
IElDVSAyLjQKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VYUE9SVDIKK3VfdmVyc2lvblRvU3RyaW5n
KFVWZXJzaW9uSW5mbyB2ZXJzaW9uQXJyYXksIGNoYXIgKnZlcnNpb25TdHJpbmcpOworCisvKioK
KyAqIEdldHMgdGhlIElDVSByZWxlYXNlIHZlcnNpb24uICBUaGUgdmVyc2lvbiBhcnJheSBzdG9y
ZXMgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24KKyAqIGZvciBJQ1UuICBGb3IgZXhhbXBsZSwgcmVs
ZWFzZSAiMS4zLjMxLjIiIGlzIHRoZW4gcmVwcmVzZW50ZWQgYXMgMHgwMTAzMUYwMi4KKyAqIERl
ZmluaXRpb24gb2YgdGhpcyBmdW5jdGlvbiBsaXZlcyBpbiBwdXRpbC5jCisgKgorICogQHBhcmFt
IHZlcnNpb25BcnJheSB0aGUgdmVyc2lvbiAjIGluZm9ybWF0aW9uLCB0aGUgcmVzdWx0IHdpbGwg
YmUgZmlsbGVkIGluCisgKiBAc3RhYmxlIElDVSAyLjAKKyAqLworVV9TVEFCTEUgdm9pZCBVX0VY
UE9SVDIKK3VfZ2V0VmVyc2lvbihVVmVyc2lvbkluZm8gdmVyc2lvbkFycmF5KTsKKworCisvKj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorICogSUNVIGNvbGxhdGlvbiBmcmFtZXdvcmsgdmVyc2lvbiBpbmZv
cm1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAqIFZlcnNpb24gaW5mbyB0
aGF0IGNhbiBiZSBvYnRhaW5lZCBmcm9tIGEgY29sbGF0b3IgaXMgYWZmZWN0ZWQgYnkgdGhlc2Ug
ICAgCisgKiBudW1iZXJzIGluIGEgc2VjcmV0IGFuZCBtYWdpYyB3YXkuIFBsZWFzZSB1c2UgY29s
bGF0b3IgdmVyc2lvbiBhcyB3aG9sZQorICo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworCisvKiog
Q29sbGF0aW9uIHJ1bnRpbWUgdmVyc2lvbiAoc29ydCBrZXkgZ2VuZXJhdG9yLCBzdHJjb2xsKS4g
CisgKiBJZiB0aGUgdmVyc2lvbiBpcyBkaWZmZXJlbnQsIHNvcnRrZXlzIGZvciB0aGUgc2FtZSBz
dHJpbmcgY291bGQgYmUgZGlmZmVyZW50IAorICogdmVyc2lvbiAyIHdhcyBpbiBJQ1UgMS44LjEu
IGNoYW5nZWQgaXM6IGNvbXByZXNzaW9uIGludGVydmFscywgRnJlbmNoIHNlY29uZGFyeSAKKyAq
IGNvbXByZXNzaW9uLCBnZW5lcmF0aW5nIHF1YWQgbGV2ZWwgYWx3YXlzIHdoZW4gc3RyZW5ndGgg
aXMgcXVhZCBvciBtb3JlIAorICogdmVyc2lvbiA0IC0gSUNVIDIuMiAtIHRyYWNraW5nIFVDQSBj
aGFuZ2VzLCBpZ25vcmUgY29tcGxldGVseSBpZ25vcmFibGVzIAorICogaW4gY29udHJhY3Rpb25z
LCBpZ25vcmUgcHJpbWFyeSBpZ25vcmFibGVzIGFmdGVyIHNoaWZ0ZWQgCisgKiB2ZXJzaW9uIDUg
LSBJQ1UgMi44IC0gY2hhbmdlZCBpbXBsaWNpdCBnZW5lcmF0aW9uIGNvZGUKKyAqIFRoaXMgdmFs
dWUgbWF5IGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqIEBzdGFi
bGUgSUNVIDIuNAorICovCisjZGVmaW5lIFVDT0xfUlVOVElNRV9WRVJTSU9OIDUKKworLyoqIEJ1
aWxkZXIgY29kZSB2ZXJzaW9uLiBXaGVuIHRoaXMgaXMgZGlmZmVyZW50LCBzYW1lIHRhaWxvcmlu
ZyBtaWdodCByZXN1bHQKKyAqIGluIGFzc2lnbmluZyBkaWZmZXJlbnQgY29sbGF0aW9uIGVsZW1l
bnRzIHRvIGNvZGUgcG9pbnRzICAgICAgICAgICAgICAgICAgCisgKiB2ZXJzaW9uIDIgd2FzIGlu
IElDVSAxLjguMS4gYWRkZWQgc3VwcG9ydCBmb3IgcHJlZml4ZXMsIHR3ZWFrZWQgY2Fub25pY2Fs
IAorICogY2xvc3VyZS4gSG93ZXZlciwgdGhlIHRhaWxvcmluZ3Mgc2hvdWxkIHByb2JhYmx5IGdl
dCBzYW1lIENFcyBhc3NpZ25lZCAgICAKKyAqIHZlcnNpb24gNSAtIElDVSAyLjIgLSBmaXhlZCBz
b21lIGJ1Z3MsIHJlbmFtZWQgc29tZSBpbmRpcmVjdCB2YWx1ZXMuICAgICAgCisgKiB2ZXJzaW9u
IDYgLSBJQ1UgMi44IC0gZml4ZWQgYnVnIGluIGJ1aWxkZXIgdGhhdCBhbGxvd2VkIDB4RkYgaW4g
cHJpbWFyeSB2YWx1ZXMKKyAqIEJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCB0aGUgb2xkIHJ1bGVz
LiAKKyAqIFRoaXMgdmFsdWUgbWF5IGNoYW5nZSBpbiB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBv
ZiBJQ1UKKyAqIEBzdGFibGUgSUNVIDIuNAorICovCisjZGVmaW5lIFVDT0xfQlVJTERFUl9WRVJT
SU9OIDYKKworLyoqICoqKiBSZW1vdmVkICoqKiBJbnN0ZWFkIHdlIHVzZSB0aGUgZGF0YSB3ZSBy
ZWFkIGZyb20gRnJhY3Rpb25hbFVDQS50eHQKKyAqIFRoaXMgaXMgdGhlIHZlcnNpb24gb2YgRnJh
Y3Rpb25hbFVDQS50eHQgdGFpbG9yaW5nIHJ1bGVzCisgKiBWZXJzaW9uIDEgd2FzIGluIElDVSAx
LjguMS4gVmVyc2lvbiB0d28gY29udGFpbnMgY2Fub25pY2FsIGNsb3N1cmUgZm9yCisgKiBzdXBw
bGVtZW50YXJ5IGNvZGUgcG9pbnRzIAorICogVmVyc2lvbiA0IGluIElDVSAyLjIsIGZvbGxvd2lu
ZyBVQ0E9My4xLjFkNiwgVUNEPTMuMi4wIAorICogVGhpcyB2YWx1ZSBtYXkgY2hhbmdlIGluIHRo
ZSBzdWJzZXF1ZW50IHJlbGVhc2VzIG9mIElDVQorICogQHN0YWJsZSBJQ1UgMi40CisgKi8KKy8q
I2RlZmluZSBVQ09MX0ZSQUNUSU9OQUxfVUNBX1ZFUlNJT04gNCovCisKKy8qKiBUaGlzIGlzIHRo
ZSB2ZXJzaW9uIG9mIHRoZSB0YWlsb3JpbmdzIAorICogIFRoaXMgdmFsdWUgbWF5IGNoYW5nZSBp
biB0aGUgc3Vic2VxdWVudCByZWxlYXNlcyBvZiBJQ1UKKyAqICBAc3RhYmxlIElDVSAyLjQKKyAq
LworI2RlZmluZSBVQ09MX1RBSUxPUklOR1NfVkVSU0lPTiAxCisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18705</attachid>
            <date>2008-01-26 03:26:27 -0800</date>
            <delta_ts>2008-01-26 08:18:28 -0800</delta_ts>
            <desc>send KJS::UChar out to pasture (minus ICU headers)</desc>
            <filename>send-KJS-UChar-out-to-pasture-minus-ICU-headers-.patch</filename>
            <type>text/plain</type>
            <size>26707</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YjI3MjgxNGQ4ZDY1ZGM2OWI4YzE0ZTRmMzEzNzc4YTg5NThjNWJkNApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcCBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0
cmluZ1JlZi5jcHAKaW5kZXggOWEzMDdkMC4uNjRhMGRlMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJp
bmdSZWYuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7
CiBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGNvbnN0IEpTQ2hhciog
Y2hhcnMsIHNpemVfdCBudW1DaGFycykKIHsKICAgICBKU0xvY2sgbG9jazsKLSAgICByZXR1cm4g
dG9SZWYoVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6VUNoYXIqPihjaGFycyks
IHN0YXRpY19jYXN0PGludD4obnVtQ2hhcnMpKS5yZXAoKS0+cmVmKCkpOworICAgIHJldHVybiB0
b1JlZihVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihjaGFycyksIHN0YXRp
Y19jYXN0PGludD4obnVtQ2hhcnMpKS5yZXAoKS0+cmVmKCkpOwogfQogCiBKU1N0cmluZ1JlZiBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCkBAIC01Nyw3
ICs1Nyw3IEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0
IGNoYXIqIHN0cmluZykKICAgICBpZiAoY29udmVyc2lvbk9LICE9IGNvbnZlcnRVVEY4VG9VVEYx
Nigmc3RyaW5nLCBzdHJpbmcgKyBsZW5ndGgsICZwLCBwICsgbGVuZ3RoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gdG9SZWYoVVN0cmluZyhyZWludGVycHJldF9jYXN0PEtKUzo6
VUNoYXIqPihidWZmZXIuZGF0YSgpKSwgcCAtIGJ1ZmZlci5kYXRhKCkpLnJlcCgpLT5yZWYoKSk7
CisgICAgcmV0dXJuIHRvUmVmKFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZl
ci5kYXRhKCkpLCBwIC0gYnVmZmVyLmRhdGEoKSkucmVwKCktPnJlZigpKTsKIH0KIAogSlNTdHJp
bmdSZWYgSlNTdHJpbmdSZXRhaW4oSlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCmluZGV4IGU3ZDVkNWYuLjAwNTI0YzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAKQEAgLTEwNywxNSArMTA3LDE1IEBAIF9fWjE1anNSZWdFeHBFeGVjdXRlUEs4SlNSZWdF
eHBQS3RpaVBpaQogX19aMjNfTlBOX0NyZWF0ZVNjcmlwdE9iamVjdFA0X05QUFBOM0tKUzhKU09i
amVjdEVOM1dURjEwUGFzc1JlZlB0cklOUzFfOEJpbmRpbmdzMTBSb290T2JqZWN0RUVFCiBfX1oy
NV9OUE5fQ3JlYXRlTm9TY3JpcHRPYmplY3R2CiBfX1pOM0tKUzEwSWRlbnRpZmllcjExYWRkU2xv
d0Nhc2VFUE5TXzdVU3RyaW5nM1JlcEUKLV9fWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQS05TXzVV
Q2hhckVpCitfX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEt0aQogX19aTjNLSlMxMElkZW50aWZp
ZXIzYWRkRVBLYwogX19aTjNLSlMxMElkZW50aWZpZXI1ZXF1YWxFUEtOU183VVN0cmluZzNSZXBF
UEtjCiBfX1pOM0tKUzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU185RXJyb3JUeXBlRQog
X19aTjNLSlMxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUVQS2MKLV9f
Wk4zS0pTMTFJbnRlcnByZXRlcjExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0
cmluZ0VpUEtOU181VUNoYXJFaQorX19aTjNLSlMxMUludGVycHJldGVyMTFjaGVja1N5bnRheEVQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRWlQS3RpCiBfX1pOM0tKUzExSW50ZXJwcmV0ZXIy
MXNob3VsZFByaW50RXhjZXB0aW9uc0V2CiBfX1pOM0tKUzExSW50ZXJwcmV0ZXIyNHNldFNob3Vs
ZFByaW50RXhjZXB0aW9uc0ViCi1fX1pOM0tKUzExSW50ZXJwcmV0ZXI4ZXZhbHVhdGVFUE5TXzlF
eGVjU3RhdGVFUktOU183VVN0cmluZ0VpUEtOU181VUNoYXJFaVBOU183SlNWYWx1ZUUKK19fWk4z
S0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdVU3RyaW5nRWlQ
S3RpUE5TXzdKU1ZhbHVlRQogX19aTjNLSlMxMUludGVycHJldGVyOGV2YWx1YXRlRVBOU185RXhl
Y1N0YXRlRVJLTlNfN1VTdHJpbmdFaVM1X1BOU183SlNWYWx1ZUUKIF9fWk4zS0pTMTFKU0ltbWVk
aWF0ZTR0eXBlRVBLTlNfN0pTVmFsdWVFCiBfX1pOM0tKUzExSlNJbW1lZGlhdGU4dG9PYmplY3RF
UEtOU183SlNWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUUKQEAgLTE3MywxMyArMTczLDEzIEBAIF9fWk4z
S0pTNkpTTG9jazRsb2NrRXYKIF9fWk4zS0pTNkpTTG9jazZ1bmxvY2tFdgogX19aTjNLSlM2SlNM
b2NrOWxvY2tDb3VudEV2CiBfX1pOM0tKUzZMb29rdXA5ZmluZEVudHJ5RVBLTlNfOUhhc2hUYWJs
ZUVSS05TXzEwSWRlbnRpZmllckUKLV9fWk4zS0pTNlBhcnNlcjVwYXJzZUVpUEtOU181VUNoYXJF
alBpUzRfUE5TXzdVU3RyaW5nRQorX19aTjNLSlM2UGFyc2VyNXBhcnNlRWlQS3RqUGlTM19QTlNf
N1VTdHJpbmdFCiBfX1pOM0tKUzZwYXJzZXJFdgogX19aTjNLSlM3Q1N0cmluZ0QxRXYKIF9fWk4z
S0pTN1VTdHJpbmczUmVwNG51bGxFCiBfX1pOM0tKUzdVU3RyaW5nM1JlcDdkZXN0cm95RXYKIF9f
Wk4zS0pTN1VTdHJpbmc2YXBwZW5kRVJLUzBfCi1fX1pOM0tKUzdVU3RyaW5nQzFFUEtOU181VUNo
YXJFaQorX19aTjNLSlM3VVN0cmluZ0MxRVBLdGkKIF9fWk4zS0pTN1VTdHJpbmdDMUVQS2MKIF9f
Wk4zS0pTN1VTdHJpbmdDMUVSS1MwX1MyXwogX19aTjNLSlM3VVN0cmluZ2FTRVBLYwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwIGIvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCmluZGV4IDdlMmExOWYuLjZjZTRjMTkgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5jcHAKQEAgLTE3NSw3ICsxNzUsNyBA
QCBJZGVudGlmaWVyIGlkZW50aWZpZXJGcm9tTlBJZGVudGlmaWVyKGNvbnN0IE5QVVRGOCogbmFt
ZSkKICAgICBOUFVURjE2ICptZXRob2ROYW1lOwogICAgIHVuc2lnbmVkIFVURjE2TGVuZ3RoOwog
ICAgIGNvbnZlcnRVVEY4VG9VVEYxNldpdGhMYXRpbjFGYWxsYmFjayhuYW1lLCAtMSwgJm1ldGhv
ZE5hbWUsICZVVEYxNkxlbmd0aCk7IC8vIHJlcXVpcmVzIGZyZWUoKSBvZiByZXR1cm5lZCBtZW1v
cnkuCi0gICAgSWRlbnRpZmllciBpZGVudGlmaWVyKChjb25zdCBLSlM6OlVDaGFyKiltZXRob2RO
YW1lLCBVVEYxNkxlbmd0aCk7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKChjb25zdCBVQ2hh
ciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOwogICAgIGZyZWUobWV0aG9kTmFtZSk7CiAgICAg
cmV0dXJuIGlkZW50aWZpZXI7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvUGFy
c2VyLmggYi9KYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgKaW5kZXggOTI1NDhmZS4uMGNhZmM4
YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL2tqcy9QYXJzZXIuaApAQCAtMzcsOCArMzcsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBjbGFzcyBQcm9ncmFtTm9kZTsKICAgICBjbGFzcyBVU3RyaW5nOwogCi0gICAgc3RydWN0IFVD
aGFyOwotCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJzZXJSZWZDb3VudGVk
RGF0YSA6IFBhcnNlclJlZkNvdW50ZWQgewogICAgICAgICBUIGRhdGE7CiAgICAgfTsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAgYi9KYXZhU2NyaXB0Q29yZS9r
anMvZnVuY3Rpb24uY3BwCmluZGV4IDkyYjJmMmYuLmU0NDMxMTkgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0
aW9uLmNwcApAQCAtNTA0LDggKzUwNCw4IEBAIHN0YXRpYyBKU1ZhbHVlKiBkZWNvZGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzLCBjb25zdCBjaGFyKiBkb19ub3RfdW5lCiAgICAg
VUNoYXIgYyA9ICpwOwogICAgIGlmIChjID09ICclJykgewogICAgICAgaW50IGNoYXJMZW4gPSAw
OwotICAgICAgaWYgKGsgPD0gbGVuIC0gMyAmJiBpc0FTQ0lJSGV4RGlnaXQocFsxXS51YykgJiYg
aXNBU0NJSUhleERpZ2l0KHBbMl0udWMpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgYjAgPSBMZXhl
cjo6Y29udmVydEhleChwWzFdLnVjLCBwWzJdLnVjKTsKKyAgICAgIGlmIChrIDw9IGxlbiAtIDMg
JiYgaXNBU0NJSUhleERpZ2l0KHBbMV0pICYmIGlzQVNDSUlIZXhEaWdpdChwWzJdKSkgeworICAg
ICAgICBjb25zdCBjaGFyIGIwID0gTGV4ZXI6OmNvbnZlcnRIZXgocFsxXSwgcFsyXSk7CiAgICAg
ICAgIGNvbnN0IGludCBzZXF1ZW5jZUxlbiA9IFVURjhTZXF1ZW5jZUxlbmd0aChiMCk7CiAgICAg
ICAgIGlmIChzZXF1ZW5jZUxlbiAhPSAwICYmIGsgPD0gbGVuIC0gc2VxdWVuY2VMZW4gKiAzKSB7
CiAgICAgICAgICAgY2hhckxlbiA9IHNlcXVlbmNlTGVuICogMzsKQEAgLTUxMyw4ICs1MTMsOCBA
QCBzdGF0aWMgSlNWYWx1ZSogZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJn
cywgY29uc3QgY2hhciogZG9fbm90X3VuZQogICAgICAgICAgIHNlcXVlbmNlWzBdID0gYjA7CiAg
ICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzZXF1ZW5jZUxlbjsgKytpKSB7CiAgICAgICAg
ICAgICBjb25zdCBVQ2hhciogcSA9IHAgKyBpICogMzsKLSAgICAgICAgICAgIGlmIChxWzBdID09
ICclJyAmJiBpc0FTQ0lJSGV4RGlnaXQocVsxXS51YykgJiYgaXNBU0NJSUhleERpZ2l0KHFbMl0u
dWMpKQotICAgICAgICAgICAgICBzZXF1ZW5jZVtpXSA9IExleGVyOjpjb252ZXJ0SGV4KHFbMV0u
dWMsIHFbMl0udWMpOworICAgICAgICAgICAgaWYgKHFbMF0gPT0gJyUnICYmIGlzQVNDSUlIZXhE
aWdpdChxWzFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQocVsyXSkpCisgICAgICAgICAgICAgIHNlcXVl
bmNlW2ldID0gTGV4ZXI6OmNvbnZlcnRIZXgocVsxXSwgcVsyXSk7CiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgY2hhckxlbiA9IDA7CiAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
NTQxLDEzICs1NDEsMTMgQEAgc3RhdGljIEpTVmFsdWUqIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IExpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGRvX25vdF91bmUKICAgICAgICAgLy8gVGhl
IG9ubHkgY2FzZSB3aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBpcyB0aGUgInVuZXNj
YXBlIiBmdW5jdGlvbi4KICAgICAgICAgLy8gRm9yIHRoYXQsIGl0J3MgZ29vZCB0byBzdXBwb3J0
IHRoZSB3b25reSAiJXUiIHN5bnRheCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFdpbklFLgogICAg
ICAgICBpZiAoayA8PSBsZW4gLSA2ICYmIHBbMV0gPT0gJ3UnCi0gICAgICAgICAgICAmJiBpc0FT
Q0lJSGV4RGlnaXQocFsyXS51YykgJiYgaXNBU0NJSUhleERpZ2l0KHBbM10udWMpCi0gICAgICAg
ICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQocFs0XS51YykgJiYgaXNBU0NJSUhleERpZ2l0KHBbNV0u
dWMpKSB7CisgICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQocFsyXSkgJiYgaXNBU0NJSUhl
eERpZ2l0KHBbM10pCisgICAgICAgICAgICAmJiBpc0FTQ0lJSGV4RGlnaXQocFs0XSkgJiYgaXNB
U0NJSUhleERpZ2l0KHBbNV0pKSB7CiAgICAgICAgICAgY2hhckxlbiA9IDY7Ci0gICAgICAgICAg
dSA9IExleGVyOjpjb252ZXJ0VW5pY29kZShwWzJdLnVjLCBwWzNdLnVjLCBwWzRdLnVjLCBwWzVd
LnVjKTsKKyAgICAgICAgICB1ID0gTGV4ZXI6OmNvbnZlcnRVbmljb2RlKHBbMl0sIHBbM10sIHBb
NF0sIHBbNV0pOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBpZiAoY2hhckxlbiAmJiAodS51
YyA9PSAwIHx8IHUudWMgPj0gMTI4IHx8ICFzdHJjaHIoZG9fbm90X3VuZXNjYXBlLCB1Lmxvdygp
KSkpIHsKKyAgICAgIGlmIChjaGFyTGVuICYmICh1ID09IDAgfHwgdSA+PSAxMjggfHwgIXN0cmNo
cihkb19ub3RfdW5lc2NhcGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHUpKSkpIHsKICAg
ICAgICAgYyA9IHU7CiAgICAgICAgIGsgKz0gY2hhckxlbiAtIDE7CiAgICAgICB9CkBAIC02MjAs
NyArNjIwLDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBpbnQg
cmFkaXgpCiAgICAgaW50IGxlbmd0aCA9IHMuc2l6ZSgpOwogICAgIGludCBwID0gMDsKIAotICAg
IHdoaWxlIChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShzW3BdLnVjKSkgeworICAgIHdo
aWxlIChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShzW3BdKSkgewogICAgICAgICArK3A7
CiAgICAgfQogCkBAIC02NTEsNyArNjUxLDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUludChjb25z
dCBVU3RyaW5nJiBzLCBpbnQgcmFkaXgpCiAgICAgYm9vbCBzYXdEaWdpdCA9IGZhbHNlOwogICAg
IGRvdWJsZSBudW1iZXIgPSAwOwogICAgIHdoaWxlIChwIDwgbGVuZ3RoKSB7Ci0gICAgICAgIGlu
dCBkaWdpdCA9IHBhcnNlRGlnaXQoc1twXS51YywgcmFkaXgpOworICAgICAgICBpbnQgZGlnaXQg
PSBwYXJzZURpZ2l0KHNbcF0sIHJhZGl4KTsKICAgICAgICAgaWYgKGRpZ2l0ID09IC0xKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIHNhd0RpZ2l0ID0gdHJ1ZTsKQEAgLTY3OSw3ICs2Nzks
NyBAQCBzdGF0aWMgZG91YmxlIHBhcnNlRmxvYXQoY29uc3QgVVN0cmluZyYgcykKICAgICAvLyBO
ZWVkIHRvIHNraXAgYW55IHdoaXRlc3BhY2UgYW5kIHRoZW4gb25lICsgb3IgLSBzaWduLgogICAg
IGludCBsZW5ndGggPSBzLnNpemUoKTsKICAgICBpbnQgcCA9IDA7Ci0gICAgd2hpbGUgKHAgPCBs
ZW5ndGggJiYgaXNTdHJXaGl0ZVNwYWNlKHNbcF0udWMpKSB7CisgICAgd2hpbGUgKHAgPCBsZW5n
dGggJiYgaXNTdHJXaGl0ZVNwYWNlKHNbcF0pKSB7CiAgICAgICAgICsrcDsKICAgICB9CiAgICAg
aWYgKHAgPCBsZW5ndGggJiYgKHNbcF0gPT0gJysnIHx8IHNbcF0gPT0gJy0nKSkgewpAQCAtODA2
LDcgKzgwNiw3IEBAIEpTVmFsdWUqIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCosIGNvbnN0IExpc3QmIGFyZ3MpCiAgICAgVVN0cmluZyByID0gIiIsIHMsIHN0ciA9
IGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpOwogICAgIGNvbnN0IFVDaGFyKiBjID0gc3RyLmRhdGEo
KTsKICAgICBmb3IgKGludCBrID0gMDsgayA8IHN0ci5zaXplKCk7IGsrKywgYysrKSB7Ci0gICAg
ICAgIGludCB1ID0gYy0+dWM7CisgICAgICAgIGludCB1ID0gY1swXTsKICAgICAgICAgaWYgKHUg
PiAyNTUpIHsKICAgICAgICAgICAgIGNoYXIgdG1wWzddOwogICAgICAgICAgICAgc3ByaW50Zih0
bXAsICIlJXUlMDRYIiwgdSk7CkBAIC04MzIsMTMgKzgzMiwxMyBAQCBKU1ZhbHVlKiBnbG9iYWxG
dW5jVW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IExpc3QmIGFyZ3Mp
CiAgICAgICAgIGNvbnN0IFVDaGFyKiBjID0gc3RyLmRhdGEoKSArIGs7CiAgICAgICAgIFVDaGFy
IHU7CiAgICAgICAgIGlmICgqYyA9PSBVQ2hhcignJScpICYmIGsgPD0gbGVuIC0gNiAmJiAqKGMg
KyAxKSA9PSBVQ2hhcigndScpKSB7Ci0gICAgICAgICAgICBpZiAoTGV4ZXI6OmlzSGV4RGlnaXQo
KGMgKyAyKS0+dWMpICYmIExleGVyOjppc0hleERpZ2l0KChjICsgMyktPnVjKSAmJiBMZXhlcjo6
aXNIZXhEaWdpdCgoYyArIDQpLT51YykgJiYgTGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyA1KS0+dWMp
KSB7Ci0gICAgICAgICAgICAgICAgdSA9IExleGVyOjpjb252ZXJ0VW5pY29kZSgoYyArIDIpLT51
YywgKGMgKyAzKS0+dWMsIChjICsgNCktPnVjLCAoYyArIDUpLT51Yyk7CisgICAgICAgICAgICBp
ZiAoTGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyAyKVswXSkgJiYgTGV4ZXI6OmlzSGV4RGlnaXQoKGMg
KyAzKVswXSkgJiYgTGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyA0KVswXSkgJiYgTGV4ZXI6OmlzSGV4
RGlnaXQoKGMgKyA1KVswXSkpIHsKKyAgICAgICAgICAgICAgICB1ID0gTGV4ZXI6OmNvbnZlcnRV
bmljb2RlKChjICsgMilbMF0sIChjICsgMylbMF0sIChjICsgNClbMF0sIChjICsgNSlbMF0pOwog
ICAgICAgICAgICAgICAgIGMgPSAmdTsKICAgICAgICAgICAgICAgICBrICs9IDU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gVUNoYXIoJyUnKSAmJiBrIDw9IGxlbiAt
IDMgJiYgTGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyAxKS0+dWMpICYmIExleGVyOjppc0hleERpZ2l0
KChjICsgMiktPnVjKSkgewotICAgICAgICAgICAgdSA9IFVDaGFyKExleGVyOjpjb252ZXJ0SGV4
KChjKzEpLT51YywgKGMrMiktPnVjKSk7CisgICAgICAgIH0gZWxzZSBpZiAoKmMgPT0gVUNoYXIo
JyUnKSAmJiBrIDw9IGxlbiAtIDMgJiYgTGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyAxKVswXSkgJiYg
TGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyAyKVswXSkpIHsKKyAgICAgICAgICAgIHUgPSBVQ2hhcihM
ZXhlcjo6Y29udmVydEhleCgoYysxKVswXSwgKGMrMilbMF0pKTsKICAgICAgICAgICAgIGMgPSAm
dTsKICAgICAgICAgICAgIGsgKz0gMjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rp
b25fb2JqZWN0LmNwcAppbmRleCBhNjFkYjg1Li4xMmE2Y2QwIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMv
ZnVuY3Rpb25fb2JqZWN0LmNwcApAQCAtMjAyLDEwICsyMDIsMTAgQEAgSlNPYmplY3QqIEZ1bmN0
aW9uT2JqZWN0SW1wOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdz
LCBjb25zdAogICAgIHdoaWxlIChpIDwgbGVuKSB7CiAgICAgICAgIHdoaWxlICgqYyA9PSAnICcg
JiYgaSA8IGxlbikKICAgICAgICAgICAgIGMrKywgaSsrOwotICAgICAgICBpZiAoTGV4ZXI6Omlz
SWRlbnRTdGFydChjLT51YykpIHsgIC8vIGVsc2UgZXJyb3IKKyAgICAgICAgaWYgKExleGVyOjpp
c0lkZW50U3RhcnQoY1swXSkpIHsgIC8vIGVsc2UgZXJyb3IKICAgICAgICAgICAgIHBhcmFtID0g
VVN0cmluZyhjLCAxKTsKICAgICAgICAgICAgIGMrKywgaSsrOwotICAgICAgICAgICAgd2hpbGUg
KGkgPCBsZW4gJiYgKExleGVyOjppc0lkZW50UGFydChjLT51YykpKSB7CisgICAgICAgICAgICB3
aGlsZSAoaSA8IGxlbiAmJiAoTGV4ZXI6OmlzSWRlbnRQYXJ0KGNbMF0pKSkgewogICAgICAgICAg
ICAgICAgIHBhcmFtICs9IFVTdHJpbmcoYywgMSk7CiAgICAgICAgICAgICAgICAgYysrLCBpKys7
CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmll
ci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5jcHAKaW5kZXggM2ZhMDFhZC4u
MmU4MmRlOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIuY3BwCisr
KyBiL0phdmFTY3JpcHRDb3JlL2tqcy9pZGVudGlmaWVyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBi
b29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCAqciwgY29uc3QgY2hhciAq
cykKICAgICBpbnQgbGVuZ3RoID0gci0+bGVuOwogICAgIGNvbnN0IFVDaGFyICpkID0gci0+ZGF0
YSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKQotICAgICAgICBpZiAo
ZFtpXS51YyAhPSAodW5zaWduZWQgY2hhcilzW2ldKQorICAgICAgICBpZiAoZFtpXSAhPSAodW5z
aWduZWQgY2hhcilzW2ldKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBz
W2xlbmd0aF0gPT0gMDsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBJZGVudGlmaWVyOjplcXVh
bChjb25zdCBVU3RyaW5nOjpSZXAgKnIsIGNvbnN0IFVDaGFyICpzLCBpbnQgbGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgY29uc3QgVUNoYXIgKmQgPSByLT5kYXRhKCk7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChkW2ldLnVjICE9
IHNbaV0udWMpCisgICAgICAgIGlmIChkW2ldICE9IHNbaV0pCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgSWRlbnRp
Zmllcjo6ZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwICpyLCBjb25zdCBVU3RyaW5nOjpSZXAgKmIp
CiAgICAgY29uc3QgVUNoYXIgKmQgPSByLT5kYXRhKCk7CiAgICAgY29uc3QgVUNoYXIgKnMgPSBi
LT5kYXRhKCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpCi0gICAgICAg
IGlmIChkW2ldLnVjICE9IHNbaV0udWMpCisgICAgICAgIGlmIChkW2ldICE9IHNbaV0pCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuaCBiL0phdmFTY3JpcHRDb3JlL2tqcy9pbnRl
cnByZXRlci5oCmluZGV4IDc5YjkzOTguLjlhODA2ZTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2tqcy9pbnRlcnByZXRlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRl
ci5oCkBAIC0yOSw4ICsyOSw2IEBAIG5hbWVzcGFjZSBLSlMgewogICBjbGFzcyBFeGVjU3RhdGU7
CiAgIGNsYXNzIEpTVmFsdWU7CiAgIGNsYXNzIFVTdHJpbmc7Ci0KLSAgc3RydWN0IFVDaGFyOwog
ICAKICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICBwdWJsaWM6CmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ranMvbGV4ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcAppbmRl
eCBjNGQzMjdmLi5lMTA2OGE5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAg
TGV4ZXI6OkxleGVyKCkKICAgICBtX2lkZW50aWZpZXJzLnJlc2VydmVDYXBhY2l0eShpbml0aWFs
U3RyaW5nVGFibGVDYXBhY2l0eSk7CiB9CiAKLXZvaWQgTGV4ZXI6OnNldENvZGUoaW50IHN0YXJ0
aW5nTGluZU51bWJlciwgY29uc3QgS0pTOjpVQ2hhciAqYywgdW5zaWduZWQgaW50IGxlbikKK3Zv
aWQgTGV4ZXI6OnNldENvZGUoaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgVUNoYXIgKmMs
IHVuc2lnbmVkIGludCBsZW4pCiB7CiAgIHl5bGluZW5vID0gMSArIHN0YXJ0aW5nTGluZU51bWJl
cjsKICAgcmVzdHJLZXl3b3JkID0gZmFsc2U7CkBAIC0xMTEsMTAgKzExMSwxMCBAQCB2b2lkIExl
eGVyOjpzZXRDb2RlKGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IEtKUzo6VUNoYXIgKmMs
IHVuc2lnbmVkIGludCBsZQogICBhdExpbmVTdGFydCA9IHRydWU7CiAKICAgLy8gcmVhZCBmaXJz
dCBjaGFyYWN0ZXJzCi0gIGN1cnJlbnQgPSAobGVuZ3RoID4gMCkgPyBjb2RlWzBdLnVjIDogLTE7
Ci0gIG5leHQxID0gKGxlbmd0aCA+IDEpID8gY29kZVsxXS51YyA6IC0xOwotICBuZXh0MiA9IChs
ZW5ndGggPiAyKSA/IGNvZGVbMl0udWMgOiAtMTsKLSAgbmV4dDMgPSAobGVuZ3RoID4gMykgPyBj
b2RlWzNdLnVjIDogLTE7CisgIGN1cnJlbnQgPSAobGVuZ3RoID4gMCkgPyBjb2RlWzBdIDogLTE7
CisgIG5leHQxID0gKGxlbmd0aCA+IDEpID8gY29kZVsxXSA6IC0xOworICBuZXh0MiA9IChsZW5n
dGggPiAyKSA/IGNvZGVbMl0gOiAtMTsKKyAgbmV4dDMgPSAobGVuZ3RoID4gMykgPyBjb2RlWzNd
IDogLTE7CiB9CiAKIHZvaWQgTGV4ZXI6OnNoaWZ0KHVuc2lnbmVkIGludCBwKQpAQCAtMTI2LDcg
KzEyNiw3IEBAIHZvaWQgTGV4ZXI6OnNoaWZ0KHVuc2lnbmVkIGludCBwKQogICAgIGN1cnJlbnQg
PSBuZXh0MTsKICAgICBuZXh0MSA9IG5leHQyOwogICAgIG5leHQyID0gbmV4dDM7Ci0gICAgbmV4
dDMgPSAocG9zICsgMyA8IGxlbmd0aCkgPyBjb2RlW3BvcyArIDNdLnVjIDogLTE7CisgICAgbmV4
dDMgPSAocG9zICsgMyA8IGxlbmd0aCkgPyBjb2RlW3BvcyArIDNdIDogLTE7CiAgIH0KIH0KIApA
QCAtNDI3LDcgKzQyNyw3IEBAIGludCBMZXhlcjo6bGV4KCkKICAgICAgICAgc2V0RG9uZShCYWQp
OwogICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgIHRva2VuID0gY29udmVydFVuaWNvZGUo
Y3VycmVudCwgbmV4dDEsIG5leHQyLCBuZXh0MykudWM7CisgICAgICB0b2tlbiA9IGNvbnZlcnRV
bmljb2RlKGN1cnJlbnQsIG5leHQxLCBuZXh0MiwgbmV4dDMpOwogICAgICAgc2hpZnQoMyk7CiAg
ICAgICBpZiAoIWlzSWRlbnRTdGFydCh0b2tlbikpIHsKICAgICAgICAgc2V0RG9uZShCYWQpOwpA
QCAtNDQxLDcgKzQ0MSw3IEBAIGludCBMZXhlcjo6bGV4KCkKICAgICAgICAgc2V0RG9uZShCYWQp
OwogICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgIHRva2VuID0gY29udmVydFVuaWNvZGUo
Y3VycmVudCwgbmV4dDEsIG5leHQyLCBuZXh0MykudWM7CisgICAgICB0b2tlbiA9IGNvbnZlcnRV
bmljb2RlKGN1cnJlbnQsIG5leHQxLCBuZXh0MiwgbmV4dDMpOwogICAgICAgc2hpZnQoMyk7CiAg
ICAgICBpZiAoIWlzSWRlbnRQYXJ0KHRva2VuKSkgewogICAgICAgICBzZXREb25lKEJhZCk7CkBA
IC03OTIsMTAgKzc5MiwxMSBAQCB1bnNpZ25lZCBjaGFyIExleGVyOjpjb252ZXJ0SGV4KGludCBj
MSwgaW50IGMyKQogICByZXR1cm4gKChjb252ZXJ0SGV4KGMxKSA8PCA0KSArIGNvbnZlcnRIZXgo
YzIpKTsKIH0KIAotS0pTOjpVQ2hhciBMZXhlcjo6Y29udmVydFVuaWNvZGUoaW50IGMxLCBpbnQg
YzIsIGludCBjMywgaW50IGM0KQorVUNoYXIgTGV4ZXI6OmNvbnZlcnRVbmljb2RlKGludCBjMSwg
aW50IGMyLCBpbnQgYzMsIGludCBjNCkKIHsKLSAgcmV0dXJuIEtKUzo6VUNoYXIoKGNvbnZlcnRI
ZXgoYzEpIDw8IDQpICsgY29udmVydEhleChjMiksCi0gICAgICAgICAgICAgICAoY29udmVydEhl
eChjMykgPDwgNCkgKyBjb252ZXJ0SGV4KGM0KSk7CisgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0
ZSA9IChjb252ZXJ0SGV4KGMxKSA8PCA0KSArIGNvbnZlcnRIZXgoYzIpOworICAgIHVuc2lnbmVk
IGNoYXIgbG93Qnl0ZSA9IChjb252ZXJ0SGV4KGMzKSA8PCA0KSArIGNvbnZlcnRIZXgoYzQpOwor
ICAgIHJldHVybiAoaGlnaEJ5dGUgPDwgOCB8IGxvd0J5dGUpOwogfQogCiB2b2lkIExleGVyOjpy
ZWNvcmQ4KGludCBjKQpAQCAtODEyLDcgKzgxMyw3IEBAIHZvaWQgTGV4ZXI6OnJlY29yZDE2KGlu
dCBjKQogICAgIHJlY29yZDE2KFVDaGFyKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihjKSkp
OwogfQogCi12b2lkIExleGVyOjpyZWNvcmQxNihLSlM6OlVDaGFyIGMpCit2b2lkIExleGVyOjpy
ZWNvcmQxNihVQ2hhciBjKQogewogICAgIG1fYnVmZmVyMTYuYXBwZW5kKGMpOwogfQpAQCAtODgw
LDE0ICs4ODEsMTQgQEAgdm9pZCBMZXhlcjo6Y2xlYXIoKQogICAgIG1fZmxhZ3MgPSAwOwogfQog
Ci1JZGVudGlmaWVyKiBMZXhlcjo6bWFrZUlkZW50aWZpZXIoY29uc3QgVmVjdG9yPEtKUzo6VUNo
YXI+JiBidWZmZXIpCitJZGVudGlmaWVyKiBMZXhlcjo6bWFrZUlkZW50aWZpZXIoY29uc3QgVmVj
dG9yPFVDaGFyPiYgYnVmZmVyKQogewogICAgIEtKUzo6SWRlbnRpZmllciogaWRlbnRpZmllciA9
IG5ldyBLSlM6OklkZW50aWZpZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAg
bV9pZGVudGlmaWVycy5hcHBlbmQoaWRlbnRpZmllcik7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7
CiB9CiAgCi1VU3RyaW5nKiBMZXhlcjo6bWFrZVVTdHJpbmcoY29uc3QgVmVjdG9yPEtKUzo6VUNo
YXI+JiBidWZmZXIpCitVU3RyaW5nKiBMZXhlcjo6bWFrZVVTdHJpbmcoY29uc3QgVmVjdG9yPFVD
aGFyPiYgYnVmZmVyKQogewogICAgIFVTdHJpbmcqIHN0cmluZyA9IG5ldyBVU3RyaW5nKGJ1ZmZl
cik7CiAgICAgbV9zdHJpbmdzLmFwcGVuZChzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUva2pzL2xvb2t1cC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmNwcAppbmRl
eCA5NWRjNWNiLi4wNThmNThmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbG9va3Vw
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmNwcApAQCAtMzEsNyArMzEsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wga2V5c01hdGNoKGNvbnN0IFVDaGFyKiBjLCB1bnNpZ25lZCBs
ZW4sIGNvbnN0IGNoYXIqIHMpCiAgIC8vIEZJWE1FOiBUaGlzIGNhbiBydW4gb2ZmIHRoZSBlbmQg
b2YgfHN8IGlmIHxjfCBoYXMgYSBVKzAwMDAgY2hhcmFjdGVyIGluIGl0LgogICBjb25zdCBjaGFy
KiBlbmQgPSBzICsgbGVuOwogICBmb3IgKDsgcyAhPSBlbmQ7IGMrKywgcysrKQotICAgIGlmIChj
LT51YyAhPSAqcykKKyAgICBpZiAoKmMgIT0gKnMpCiAgICAgICByZXR1cm4gZmFsc2U7CiAgIHJl
dHVybiAqcyA9PSAwOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0
cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3RyaW5nLmNwcAppbmRleCAwNDMy
YjdmLi45M2RjMzAyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3RyaW5n
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3RyaW5nLmNwcApAQCAtNzEsNyAr
NzEsNyBAQCBzdGF0aWMgVVN0cmluZyBlc2NhcGVTdHJpbmdGb3JQcmV0dHlQcmludGluZyhjb25z
dCBVU3RyaW5nJiBzKQogICAgIFVTdHJpbmcgZXNjYXBlZFN0cmluZzsKIAogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgcy5zaXplKCk7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBzaG9ydCBjID0g
cy5kYXRhKClbaV0udW5pY29kZSgpOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBjID0gcy5kYXRh
KClbaV07CiAgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICAgICAgY2FzZSAnXCInOgogICAg
ICAgICAgICAgICAgIGVzY2FwZWRTdHJpbmcgKz0gIlxcXCIiOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUva2pzL3N0cmluZ19vYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL3N0cmlu
Z19vYmplY3QuY3BwCmluZGV4IDQzYzI0NWUuLmZiZDQ4NTMgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvc3Ry
aW5nX29iamVjdC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgaW5saW5lIFVTdHJpbmcg
c3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFVTdHJpbmcgJnJlcGxhY2VtZW50LCBjb25z
dAogICAgIGlmIChpKzEgPT0gc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5zaXplKCkpCiAgICAgICAg
IGJyZWFrOwogCi0gICAgdW5zaWduZWQgc2hvcnQgcmVmID0gc3Vic3RpdHV0ZWRSZXBsYWNlbWVu
dFtpKzFdLnVuaWNvZGUoKTsKKyAgICB1bnNpZ25lZCBzaG9ydCByZWYgPSBzdWJzdGl0dXRlZFJl
cGxhY2VtZW50W2krMV07CiAgICAgaW50IGJhY2tyZWZTdGFydCA9IDA7CiAgICAgaW50IGJhY2ty
ZWZMZW5ndGggPSAwOwogICAgIGludCBhZHZhbmNlID0gMDsKQEAgLTI3NCw3ICsyNzQsNyBAQCBz
dGF0aWMgaW5saW5lIFVTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFVTdHJp
bmcgJnJlcGxhY2VtZW50LCBjb25zdAogICAgICAgICBpZiAoYmFja3JlZkluZGV4ID4gcmVnLT5u
dW1TdWJwYXR0ZXJucygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChzdWJz
dGl0dXRlZFJlcGxhY2VtZW50LnNpemUoKSA+IGkgKyAyKSB7Ci0gICAgICAgICAgICByZWYgPSBz
dWJzdGl0dXRlZFJlcGxhY2VtZW50W2krMl0udW5pY29kZSgpOworICAgICAgICAgICAgcmVmID0g
c3Vic3RpdHV0ZWRSZXBsYWNlbWVudFtpKzJdOwogICAgICAgICAgICAgaWYgKHJlZiA+PSAnMCcg
JiYgcmVmIDw9ICc5JykgewogICAgICAgICAgICAgICAgIGJhY2tyZWZJbmRleCA9IDEwICogYmFj
a3JlZkluZGV4ICsgcmVmIC0gJzAnOwogICAgICAgICAgICAgICAgIGlmIChiYWNrcmVmSW5kZXgg
PiByZWctPm51bVN1YnBhdHRlcm5zKCkpCkBAIC00NzIsNyArNDcyLDcgQEAgSlNWYWx1ZSogc3Ry
aW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2Jq
LCBjb25zdCBMaXMKICAgICBKU1ZhbHVlKiBhMCA9IGFyZ3NbMF07CiAgICAgZG91YmxlIGRwb3Mg
PSBhMC0+dG9JbnRlZ2VyKGV4ZWMpOwogICAgIGlmIChkcG9zID49IDAgJiYgZHBvcyA8IGxlbikK
LSAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKHNbc3RhdGljX2Nhc3Q8aW50PihkcG9zKV0udW5pY29k
ZSgpKTsKKyAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKHNbc3RhdGljX2Nhc3Q8aW50PihkcG9zKV0p
OwogICAgIGVsc2UKICAgICAgIHJlc3VsdCA9IGpzTmFOKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmNwcCBiL0phdmFTY3JpcHRD
b3JlL2tqcy91c3RyaW5nLmNwcAppbmRleCBiNjU4YThkLi5mNGMxYTg3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL3Vz
dHJpbmcuY3BwCkBAIC0yNjQsOCArMjY0LDggQEAgdW5zaWduZWQgVVN0cmluZzo6UmVwOjpjb21w
dXRlSGFzaChjb25zdCBVQ2hhciAqcywgaW50IGxlbikKIAogICAvLyBNYWluIGxvb3AKICAgZm9y
ICg7IGwgPiAwOyBsLS0pIHsKLSAgICBoYXNoICs9IHNbMF0udWM7Ci0gICAgdG1wID0gKHNbMV0u
dWMgPDwgMTEpIF4gaGFzaDsKKyAgICBoYXNoICs9IHNbMF07CisgICAgdG1wID0gKHNbMV0gPDwg
MTEpIF4gaGFzaDsKICAgICBoYXNoID0gKGhhc2ggPDwgMTYpIF4gdG1wOwogICAgIHMgKz0gMjsK
ICAgICBoYXNoICs9IGhhc2ggPj4gMTE7CkBAIC0yNzMsNyArMjczLDcgQEAgdW5zaWduZWQgVVN0
cmluZzo6UmVwOjpjb21wdXRlSGFzaChjb25zdCBVQ2hhciAqcywgaW50IGxlbikKIAogICAvLyBI
YW5kbGUgZW5kIGNhc2UKICAgaWYgKHJlbSkgewotICAgIGhhc2ggKz0gc1swXS51YzsKKyAgICBo
YXNoICs9IHNbMF07CiAgICAgaGFzaCBePSBoYXNoIDw8IDExOwogICAgIGhhc2ggKz0gaGFzaCA+
PiAxNzsKICAgfQpAQCAtNDI5LDcgKzQyOSw3IEBAIFVTdHJpbmc6OlVTdHJpbmcoY29uc3QgY2hh
ciAqYykKICAgICAgIG1fcmVwID0gJlJlcDo6bnVsbDsKICAgZWxzZSB7CiAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQotICAgICAgICAgIGRbaV0udWMgPSBjW2ldOwor
ICAgICAgICAgIGRbaV0gPSBjW2ldOwogICAgICAgbV9yZXAgPSBSZXA6OmNyZWF0ZShkLCBzdGF0
aWNfY2FzdDxpbnQ+KGxlbmd0aCkpOwogICB9CiB9CkBAIC04NzksNyArODc5LDcgQEAgY2hhciAq
VVN0cmluZzo6YXNjaWkoKSBjb25zdAogICBjaGFyICpxID0gc3RhdEJ1ZmZlcjsKICAgY29uc3Qg
VUNoYXIgKmxpbWl0ID0gcCArIGxlbmd0aDsKICAgd2hpbGUgKHAgIT0gbGltaXQpIHsKLSAgICAq
cSA9IHN0YXRpY19jYXN0PGNoYXI+KHAtPnVjKTsKKyAgICAqcSA9IHN0YXRpY19jYXN0PGNoYXI+
KHBbMF0pOwogICAgICsrcDsKICAgICArK3E7CiAgIH0KQEAgLTkxNSw3ICs5MTUsNyBAQCBVU3Ry
aW5nICZVU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgY2hhciAqYykKICAgICBtX3JlcCA9IFJlcDo6
Y3JlYXRlKGQsIGwpOwogICB9CiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbDsgaSsrKQotICAgIGRb
aV0udWMgPSBjW2ldOworICAgIGRbaV0gPSBjW2ldOwogCiAgIHJldHVybiAqdGhpczsKIH0KQEAg
LTkyNSw3ICs5MjUsNyBAQCBib29sIFVTdHJpbmc6OmlzOEJpdCgpIGNvbnN0CiAgIGNvbnN0IFVD
aGFyICp1ID0gZGF0YSgpOwogICBjb25zdCBVQ2hhciAqbGltaXQgPSB1ICsgc2l6ZSgpOwogICB3
aGlsZSAodSA8IGxpbWl0KSB7Ci0gICAgaWYgKHUtPnVjID4gMHhGRikKKyAgICBpZiAodVswXSA+
IDB4RkYpCiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgKyt1OwogICB9CkBAIC0xMDY4LDcgKzEw
NjgsNyBAQCB1aW50MzJfdCBVU3RyaW5nOjp0b1N0cmljdFVJbnQzMihib29sICpvaykgY29uc3QK
ICAgaWYgKGxlbiA9PSAwKQogICAgIHJldHVybiAwOwogICBjb25zdCBVQ2hhciAqcCA9IG1fcmVw
LT5kYXRhKCk7Ci0gIHVuc2lnbmVkIHNob3J0IGMgPSBwLT51bmljb2RlKCk7CisgIHVuc2lnbmVk
IHNob3J0IGMgPSBwWzBdOwogCiAgIC8vIElmIHRoZSBmaXJzdCBkaWdpdCBpcyAwLCBvbmx5IDAg
aXRzZWxmIGlzIE9LLgogICBpZiAoYyA9PSAnMCcpIHsKQEAgLTExMDQsNyArMTEwNCw3IEBAIHVp
bnQzMl90IFVTdHJpbmc6OnRvU3RyaWN0VUludDMyKGJvb2wgKm9rKSBjb25zdAogICAgIH0KICAg
ICAKICAgICAvLyBHZXQgbmV4dCBjaGFyYWN0ZXIuCi0gICAgYyA9ICgrK3ApLT51bmljb2RlKCk7
CisgICAgYyA9ICooKytwKTsKICAgfQogfQogCkBAIC0xMTIxLDEwICsxMTIxLDEwIEBAIGludCBV
U3RyaW5nOjpmaW5kKGNvbnN0IFVTdHJpbmcgJmYsIGludCBwb3MpIGNvbnN0CiAgIGNvbnN0IFVD
aGFyICplbmQgPSBkYXRhKCkgKyBzeiAtIGZzejsKICAgaW50IGZzaXplbWludXNvbmUgPSAoZnN6
IC0gMSkgKiBzaXplb2YoVUNoYXIpOwogICBjb25zdCBVQ2hhciAqZmRhdGEgPSBmLmRhdGEoKTsK
LSAgdW5zaWduZWQgc2hvcnQgZmNoYXIgPSBmZGF0YS0+dWM7CisgIHVuc2lnbmVkIHNob3J0IGZj
aGFyID0gZmRhdGFbMF07CiAgICsrZmRhdGE7CiAgIGZvciAoY29uc3QgVUNoYXIgKmMgPSBkYXRh
KCkgKyBwb3M7IGMgPD0gZW5kOyBjKyspCi0gICAgaWYgKGMtPnVjID09IGZjaGFyICYmICFtZW1j
bXAoYyArIDEsIGZkYXRhLCBmc2l6ZW1pbnVzb25lKSkKKyAgICBpZiAoY1swXSA9PSBmY2hhciAm
JiAhbWVtY21wKGMgKyAxLCBmZGF0YSwgZnNpemVtaW51c29uZSkpCiAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8aW50PihjIC0gZGF0YSgpKTsKIAogICByZXR1cm4gLTE7CkBAIC0xMjE1LDcgKzEy
MTUsNyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IGNoYXIgKnMy
KQogICBjb25zdCBVQ2hhciAqdSA9IHMxLmRhdGEoKTsKICAgY29uc3QgVUNoYXIgKnVlbmQgPSB1
ICsgczEuc2l6ZSgpOwogICB3aGlsZSAodSAhPSB1ZW5kICYmICpzMikgewotICAgIGlmICh1LT51
YyAhPSAodW5zaWduZWQgY2hhcikqczIpCisgICAgaWYgKHVbMF0gIT0gKHVuc2lnbmVkIGNoYXIp
KnMyKQogICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHMyKys7CiAgICAgdSsrOwpAQCAtMTIzOCw3
ICsxMjM4LDcgQEAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJp
bmcmIHMyKQogICAgIGwrKzsKICAgfQogICBpZiAobCA8IGxtaW4pCi0gICAgcmV0dXJuIChjMS0+
dWMgPCBjMi0+dWMpOworICAgIHJldHVybiAoYzFbMF0gPCBjMlswXSk7CiAKICAgcmV0dXJuIChs
MSA8IGwyKTsKIH0KQEAgLTEyNTgsNyArMTI1OCw3IEBAIGludCBjb21wYXJlKGNvbnN0IFVTdHJp
bmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKICAgfQogCiAgIGlmIChsIDwgbG1pbikKLSAgICBy
ZXR1cm4gKGMxLT51YyA+IGMyLT51YykgPyAxIDogLTE7CisgICAgcmV0dXJuIChjMVswXSA+IGMy
WzBdKSA/IDEgOiAtMTsKIAogICBpZiAobDEgPT0gbDIpCiAgICAgcmV0dXJuIDA7CkBAIC0xMjc0
LDcgKzEyNzQsNyBAQCBDU3RyaW5nIFVTdHJpbmc6OlVURjhTdHJpbmcoYm9vbCBzdHJpY3QpIGNv
bnN0CiAKICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJhY3RlcnMuCiAgIGNoYXIq
IHAgPSBidWZmZXIuZGF0YSgpOwotICBjb25zdCA6OlVDaGFyKiBkID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCA6OlVDaGFyKj4oJmRhdGEoKS0+dWMpOworICBjb25zdCA6OlVDaGFyKiBkID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4oJmRhdGEoKVswXSk7CiAgIENvbnZlcnNpb25S
ZXN1bHQgcmVzdWx0ID0gY29udmVydFVURjE2VG9VVEY4KCZkLCBkICsgbGVuZ3RoLCAmcCwgcCAr
IGJ1ZmZlci5zaXplKCksIHN0cmljdCk7CiAgIGlmIChyZXN1bHQgIT0gY29udmVyc2lvbk9LKQog
ICAgIHJldHVybiBDU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvdXN0
cmluZy5oIGIvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaAppbmRleCA3ZmFhODZhLi5iY2E5
OTQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL2tqcy91c3RyaW5nLmgKQEAgLTMwLDE2ICszMCw5IEBACiAjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCi0vKiBPbiBzb21lIEFSTSBwbGF0Zm9ybXMgR0NDIHdvbid0IHBhY2sg
c3RydWN0dXJlcyBieSBkZWZhdWx0IHNvIHNpemVvZihVQ2hhcikKLSAgIHdpbGwgZW5kIHVwIGJl
aW5nICE9IDIgd2hpY2ggY2F1c2VzIGNyYXNoZXMgc2luY2UgdGhlIGNvZGUgZGVwZW5kcyBvbiB0
aGF0LiAqLwotI2lmIENPTVBJTEVSKEdDQykgJiYgUExBVEZPUk0oRk9SQ0VfUEFDSykKLSNkZWZp
bmUgUEFDS19TVFJVQ1QgX19hdHRyaWJ1dGVfXygocGFja2VkKSkKLSNlbHNlCi0jZGVmaW5lIFBB
Q0tfU1RSVUNUCi0jZW5kaWYKLQogLyoqCiAgKiBAaW50ZXJuYWwKICAqLwpAQCAtNTUsNTQgKzQ4
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIHVzaW5nIFdURjo6UGxhY2VtZW50TmV3QWRvcHQ7CiAK
ICAgY2xhc3MgVVN0cmluZzsKLQotICAvKioKLSAgICogQHNob3J0IFVuaWNvZGUgY2hhcmFjdGVy
LgotICAgKgotICAgKiBVQ2hhciByZXByZXNlbnRzIGEgMTYgYml0IFVuaWNvZGUgY2hhcmFjdGVy
LiBJdCdzIGludGVybmFsIGRhdGEKLSAgICogcmVwcmVzZW50YXRpb24gaXMgY29tcGF0aWJsZSB0
byBYQ2hhcjJiIGFuZCBRQ2hhci4gSXQncyB0aGVyZWZvcmUKLSAgICogcG9zc2libGUgdG8gZXhj
aGFuZ2UgZGF0YSB3aXRoIFggYW5kIFF0IHdpdGggc2hhbGxvdyBjb3BpZXMuCi0gICAqLwotICBz
dHJ1Y3QgVUNoYXIgewotICAgIC8qKgotICAgICAqIENvbnN0cnVjdCBhIGNoYXJhY3RlciB3aXRo
IHVuaW5pdGlhbGl6ZWQgdmFsdWUuICAgIAotICAgICAqLwotICAgIFVDaGFyKCk7Ci0gICAgLyoq
Ci0gICAgICogQ29uc3RydWN0IGEgY2hhcmFjdGVyIHdpdGggdGhlIHZhbHVlIGRlbm90ZWQgYnkg
dGhlIGFyZ3VtZW50cy4KLSAgICAgKiBAcGFyYW0gaCBoaWdoZXIgYnl0ZQotICAgICAqIEBwYXJh
bSBsIGxvd2VyIGJ5dGUKLSAgICAgKi8KLSAgICBVQ2hhcih1bnNpZ25lZCBjaGFyIGggLCB1bnNp
Z25lZCBjaGFyIGwpOwotICAgIC8qKgotICAgICAqIENvbnN0cnVjdCBhIGNoYXJhY3RlciB3aXRo
IHRoZSBnaXZlbiB2YWx1ZS4KLSAgICAgKiBAcGFyYW0gdSAxNiBiaXQgVW5pY29kZSB2YWx1ZQot
ICAgICAqLwotICAgIFVDaGFyKGNoYXIgdSk7Ci0gICAgVUNoYXIodW5zaWduZWQgY2hhciB1KTsK
LSAgICBVQ2hhcih1bnNpZ25lZCBzaG9ydCB1KTsKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFRo
ZSBoaWdoZXIgYnl0ZSBvZiB0aGUgY2hhcmFjdGVyLgotICAgICAqLwotICAgIHVuc2lnbmVkIGNo
YXIgaGlnaCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHVjID4+
IDgpOyB9Ci0gICAgLyoqCi0gICAgICogQHJldHVybiBUaGUgbG93ZXIgYnl0ZSBvZiB0aGUgY2hh
cmFjdGVyLgotICAgICAqLwotICAgIHVuc2lnbmVkIGNoYXIgbG93KCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odWMpOyB9Ci0gICAgLyoqCi0gICAgICogQHJldHVy
biB0aGUgMTYgYml0IFVuaWNvZGUgdmFsdWUgb2YgdGhlIGNoYXJhY3RlcgotICAgICAqLwotICAg
IHVuc2lnbmVkIHNob3J0IHVuaWNvZGUoKSBjb25zdCB7IHJldHVybiB1YzsgfQotCi0gICAgdW5z
aWduZWQgc2hvcnQgdWM7Ci0gIH0gUEFDS19TVFJVQ1Q7Ci0KLSAgaW5saW5lIFVDaGFyOjpVQ2hh
cigpIHsgfQotICBpbmxpbmUgVUNoYXI6OlVDaGFyKHVuc2lnbmVkIGNoYXIgaCAsIHVuc2lnbmVk
IGNoYXIgbCkgOiB1YyhoIDw8IDggfCBsKSB7IH0KLSAgaW5saW5lIFVDaGFyOjpVQ2hhcihjaGFy
IHUpIDogdWMoKHVuc2lnbmVkIGNoYXIpdSkgeyB9Ci0gIGlubGluZSBVQ2hhcjo6VUNoYXIodW5z
aWduZWQgY2hhciB1KSA6IHVjKHUpIHsgfQotICBpbmxpbmUgVUNoYXI6OlVDaGFyKHVuc2lnbmVk
IHNob3J0IHUpIDogdWModSkgeyB9Ci0KKyAgCiAgIC8qKgogICAgKiBAc2hvcnQgOCBiaXQgY2hh
ciBiYXNlZCBzdHJpbmcgY2xhc3MKICAgICovCkBAIC0yNjYsNyArMjEyLDYgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgVVN0cmluZyAmYXBwZW5kKGNvbnN0IGNoYXIgKik7CiAgICAgVVN0cmluZyAm
YXBwZW5kKHVuc2lnbmVkIHNob3J0KTsKICAgICBVU3RyaW5nICZhcHBlbmQoY2hhciBjKSB7IHJl
dHVybiBhcHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KGMpKSk7IH0KLSAgICBVU3RyaW5nICZhcHBlbmQoVUNoYXIgYykgeyByZXR1cm4g
YXBwZW5kKGMudWMpOyB9CiAKICAgICAvKioKICAgICAgKiBAcmV0dXJuIFRoZSBzdHJpbmcgY29u
dmVydGVkIHRvIHRoZSA4LWJpdCBzdHJpbmcgdHlwZSBDU3RyaW5nKCkuCkBAIC00MDMsOSArMzQ4
LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUmVmUHRyPFJlcD4gbV9yZXA7CiAgIH07CiAKLSAg
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVQ2hhciAmYzEsIGNvbnN0IFVDaGFyICZjMikg
ewotICAgIHJldHVybiAoYzEudWMgPT0gYzIudWMpOwotICB9CiAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIpOwogICBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikgewogICAgIHJldHVy
biAhS0pTOjpvcGVyYXRvcj09KHMxLCBzMik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL2tqc19wcm94eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAKaW5k
ZXggNjkyNWUxOC4uZTZhM2YwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
cHJveHkuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNwcApAQCAtODQs
NyArODQsNyBAQCBKU1ZhbHVlKiBLSlNQcm94eTo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgaW50IGJhc2VMaW5lLCBjb25zdCBTdHJpbmcmCiAgICAgSlNWYWx1ZSogdGhpc05vZGUg
PSBXaW5kb3c6OnJldHJpZXZlKG1fZnJhbWUpOwogICAKICAgICBtX2dsb2JhbE9iamVjdC0+c3Rh
cnRUaW1lb3V0Q2hlY2soKTsKLSAgICBDb21wbGV0aW9uIGNvbXAgPSBJbnRlcnByZXRlcjo6ZXZh
bHVhdGUoZXhlYywgZmlsZW5hbWUsIGJhc2VMaW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0IEtK
Uzo6VUNoYXIqPihzdHIuY2hhcmFjdGVycygpKSwgc3RyLmxlbmd0aCgpLCB0aGlzTm9kZSk7Cisg
ICAgQ29tcGxldGlvbiBjb21wID0gSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGV4ZWMsIGZpbGVuYW1l
LCBiYXNlTGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ci5jaGFyYWN0ZXJz
KCkpLCBzdHIubGVuZ3RoKCksIHRoaXNOb2RlKTsKICAgICBtX2dsb2JhbE9iamVjdC0+c3RvcFRp
bWVvdXRDaGVjaygpOwogICAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwgfHwg
Y29tcC5jb21wbFR5cGUoKSA9PSBSZXR1cm5WYWx1ZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ranNfd2luZG93LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRv
dy5jcHAKaW5kZXggMTNmYjNiZi4uMjZlNjIyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfd2luZG93LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cu
Y3BwCkBAIC0xMDA2LDcgKzEwMDYsNyBAQCBKU1ZhbHVlKiB3aW5kb3dQcm90b0Z1bmNBVG9CKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QmIGFyZwogCiAgICAg
VmVjdG9yPGNoYXI+IGluKHMuc2l6ZSgpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGluW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4ocy5kYXRhKClbaV0u
dW5pY29kZSgpKTsKKyAgICAgICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzLmRhdGEoKVtp
XSk7CiAgICAgVmVjdG9yPGNoYXI+IG91dDsKIAogICAgIGlmICghYmFzZTY0RGVjb2RlKGluLCBv
dXQpKQpAQCAtMTAzNSw3ICsxMDM1LDcgQEAgSlNWYWx1ZSogd2luZG93UHJvdG9GdW5jQlRvQShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0JiBhcmcKIAogICAg
IFZlY3RvcjxjaGFyPiBpbihzLnNpemUoKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLnNp
emUoKTsgKytpKQotICAgICAgICBpbltpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHMuZGF0YSgpW2ld
LnVuaWNvZGUoKSk7CisgICAgICAgIGluW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4ocy5kYXRhKClb
aV0pOwogICAgIFZlY3RvcjxjaGFyPiBvdXQ7CiAKICAgICBiYXNlNjRFbmNvZGUoaW4sIG91dCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9EZXByZWNhdGVkU3RyaW5nLmNwcAppbmRleCAzNjU2MjI0Li5jOTkzMWYx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHAKQEAgLTI2NDYsMTQgKzI2NDYs
MTQgQEAgRGVwcmVjYXRlZFN0cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcigpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzTnVsbCgpKQogICAgICAgICByZXR1cm4gSWRlbnRpZmllcigpOwotICAgIHJldHVy
biBJZGVudGlmaWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgS0pTOjpVQ2hhcio+KHVuaWNvZGUo
KSksIGxlbmd0aCgpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNv
bnN0IFVDaGFyKj4odW5pY29kZSgpKSwgbGVuZ3RoKCkpOwogfQogCiBEZXByZWNhdGVkU3RyaW5n
OjpvcGVyYXRvciBVU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBVU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBLSlM6OlVDaGFyKj4odW5pY29kZSgpKSwgbGVuZ3RoKCkpOworICAgIHJldHVybiBVU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPih1bmljb2RlKCkpLCBsZW5ndGgoKSk7
CiB9CiAKIGJvb2wgZXF1YWxJZ25vcmluZ0Nhc2UoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgYSwg
Y29uc3QgRGVwcmVjYXRlZFN0cmluZyYgYikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TdHJpbmcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKaW5kZXgg
OTY3ZTdjOC4uZmJhNGY2ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Zy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKQEAgLTU2MSwxNCAr
NTYxLDE0IEBAIFN0cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ltcGwpCiAgICAgICAgIHJldHVybiBJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJuIElkZW50
aWZpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBLSlM6OlVDaGFyKj4obV9pbXBsLT5jaGFyYWN0
ZXJzKCkpLCBtX2ltcGwtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllcihyZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4obV9pbXBsLT5jaGFyYWN0ZXJzKCkpLCBtX2ltcGwtPmxl
bmd0aCgpKTsKIH0KIAogU3RyaW5nOjpvcGVyYXRvciBVU3RyaW5nKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1faW1wbCkKICAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKLSAgICByZXR1cm4gVVN0cmlu
ZyhyZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6VUNoYXIqPihtX2ltcGwtPmNoYXJhY3RlcnMo
KSksIG1faW1wbC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBVU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUNoYXIqPihtX2ltcGwtPmNoYXJhY3RlcnMoKSksIG1faW1wbC0+bGVuZ3RoKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="8167"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18753</attachid>
            <date>2008-01-28 18:58:03 -0800</date>
            <delta_ts>2008-01-29 12:56:29 -0800</delta_ts>
            <desc>Corrections for darin</desc>
            <filename>Corrections-for-darin.patch</filename>
            <type>text/plain</type>
            <size>13633</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YWQ1ZDI4NjhhZjc3ZTBkY2I0ZmFiZTc2Nzk4MTljNjc1Y2UxY2Q1NwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcCBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0
cmluZ1JlZi5jcHAKaW5kZXggNjRhMGRlMC4uOWU5ZjA2ZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJp
bmdSZWYuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7
CiBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGNvbnN0IEpTQ2hhciog
Y2hhcnMsIHNpemVfdCBudW1DaGFycykKIHsKICAgICBKU0xvY2sgbG9jazsKLSAgICByZXR1cm4g
dG9SZWYoVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oY2hhcnMpLCBzdGF0
aWNfY2FzdDxpbnQ+KG51bUNoYXJzKSkucmVwKCktPnJlZigpKTsKKyAgICByZXR1cm4gdG9SZWYo
VVN0cmluZyhjaGFycywgc3RhdGljX2Nhc3Q8aW50PihudW1DaGFycykpLnJlcCgpLT5yZWYoKSk7
CiB9CiAKIEpTU3RyaW5nUmVmIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNo
YXIqIHN0cmluZykKQEAgLTUyLDEyICs1MiwxMiBAQCBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCiAgICAgSlNMb2NrIGxvY2s7CiAK
ICAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKHN0cmluZyk7Ci0gICAgVmVjdG9yPCA6OlVDaGFy
LCAxMDI0PiBidWZmZXIobGVuZ3RoKTsKLSAgICA6OlVDaGFyKiBwID0gYnVmZmVyLmRhdGEoKTsK
KyAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IGJ1ZmZlcihsZW5ndGgpOworICAgIFVDaGFyKiBwID0g
YnVmZmVyLmRhdGEoKTsKICAgICBpZiAoY29udmVyc2lvbk9LICE9IGNvbnZlcnRVVEY4VG9VVEYx
Nigmc3RyaW5nLCBzdHJpbmcgKyBsZW5ndGgsICZwLCBwICsgbGVuZ3RoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gdG9SZWYoVVN0cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFy
Kj4oYnVmZmVyLmRhdGEoKSksIHAgLSBidWZmZXIuZGF0YSgpKS5yZXAoKS0+cmVmKCkpOworICAg
IHJldHVybiB0b1JlZihVU3RyaW5nKGJ1ZmZlci5kYXRhKCksIHAgLSBidWZmZXIuZGF0YSgpKS5y
ZXAoKS0+cmVmKCkpOwogfQogCiBKU1N0cmluZ1JlZiBKU1N0cmluZ1JldGFpbihKU1N0cmluZ1Jl
ZiBzdHJpbmcpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKaW5kZXggNzBhNWFhNy4u
MWZjMzAxYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZyhDRlN0cmluZ1JlZiBz
dHJpbmcpCiAgICAgZWxzZSB7CiAgICAgICAgIFVuaUNoYXIqIGJ1ZmZlciA9IHN0YXRpY19jYXN0
PFVuaUNoYXIqPihmYXN0TWFsbG9jKHNpemVvZihVbmlDaGFyKSAqIGxlbmd0aCkpOwogICAgICAg
ICBDRlN0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBsZW5ndGgpLCBi
dWZmZXIpOwotICAgICAgICByZXAgPSBVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihi
dWZmZXIpLCBsZW5ndGgsIGZhbHNlKS5yZXAoKS0+cmVmKCk7CisgICAgICAgIHJlcCA9IFVTdHJp
bmcoYnVmZmVyLCBsZW5ndGgsIGZhbHNlKS5yZXAoKS0+cmVmKCk7CiAgICAgfQogICAgIHJldHVy
biB0b1JlZihyZXApOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvb2Jq
Yy9vYmpjX3V0aWxpdHkubW0gYi9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfdXRp
bGl0eS5tbQppbmRleCA2MmEwYWQwLi5iZDE0YzhlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9iaW5kaW5ncy9vYmpjL29iamNfdXRpbGl0eS5tbQorKysgYi9KYXZhU2NyaXB0Q29yZS9iaW5k
aW5ncy9vYmpjL29iamNfdXRpbGl0eS5tbQpAQCAtMzYzLDcgKzM2Myw3IEBAIEpTT2JqZWN0ICp0
aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqZXhlYywgRXJyb3JUeXBlIHR5cGUsIE5TU3RyaW5nICptZXNz
YWdlKQogICAgIHNpemVfdCBsZW5ndGggPSBbbWVzc2FnZSBsZW5ndGhdOwogICAgIHVuaWNoYXIg
KmJ1ZmZlciA9IG5ldyB1bmljaGFyW2xlbmd0aF07CiAgICAgW21lc3NhZ2UgZ2V0Q2hhcmFjdGVy
czpidWZmZXJdOwotICAgIEpTT2JqZWN0ICplcnJvciA9IHRocm93RXJyb3IoZXhlYywgdHlwZSwg
VVN0cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFyICo+KGJ1ZmZlciksIGxlbmd0aCkpOworICAg
IEpTT2JqZWN0ICplcnJvciA9IHRocm93RXJyb3IoZXhlYywgdHlwZSwgVVN0cmluZyhidWZmZXIs
IGxlbmd0aCkpOwogICAgIGRlbGV0ZSBbXSBidWZmZXI7CiAgICAgcmV0dXJuIGVycm9yOwogfQpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIuY3BwIGIvSmF2YVNjcmlw
dENvcmUva2pzL2lkZW50aWZpZXIuY3BwCmluZGV4IDJlODJkZTguLjE5YzVhODIgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL2tqcy9pZGVudGlmaWVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ranMvaWRlbnRpZmllci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdHJ1Y3QgQ1N0cmluZ1Ry
YW5zbGF0b3IKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihjKTsKICAgICAgICAgVUNo
YXIgKmQgPSBzdGF0aWNfY2FzdDxVQ2hhciAqPihmYXN0TWFsbG9jKHNpemVvZihVQ2hhcikgKiBs
ZW5ndGgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgIT0gbGVuZ3RoOyBpKyspCi0g
ICAgICAgICAgICBkW2ldID0gY1tpXTsKKyAgICAgICAgICAgIGRbaV0gPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPihjW2ldKTsgLy8gc3RhdGljX2Nhc3QgdG8gdW5zaWduZWQgY2hhciB0byBh
dm9pZCBlcnJvbmVvdXMgc2lnbi1leHRlbmQKICAgICAgICAgCiAgICAgICAgIFVTdHJpbmc6OlJl
cCAqciA9IFVTdHJpbmc6OlJlcDo6Y3JlYXRlKGQsIHN0YXRpY19jYXN0PGludD4obGVuZ3RoKSku
cmVsZWFzZVJlZigpOwogICAgICAgICByLT5pc0lkZW50aWZpZXIgPSAxOwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMv
bm9kZXMyc3RyaW5nLmNwcAppbmRleCBhZDhkYjM0Li41YTgzNzc1IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ranMvbm9kZXMyc3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMv
bm9kZXMyc3RyaW5nLmNwcApAQCAtMTU5LDcgKzE1OSw4IEBAIFNvdXJjZVN0cmVhbSYgU291cmNl
U3RyZWFtOjpvcGVyYXRvcjw8KGNoYXIgYykKIHsKICAgICBtX251bWJlck5lZWRzUGFyZW5zID0g
ZmFsc2U7CiAgICAgbV9hdFN0YXJ0T2ZTdGF0ZW1lbnQgPSBmYWxzZTsKLSAgICBVQ2hhciBjaChj
KTsKKyAgICAvLyBzdGF0aWNfY2FzdCB0byB1bnNpZ25lZCBjaGFyIHRvIGF2b2lkIGVycm9uZW91
cyBzaWduLWV4dGVuZAorICAgIFVDaGFyIGNoKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMp
KTsKICAgICBtX3N0cmluZy5hcHBlbmQoY2gpOwogICAgIHJldHVybiAqdGhpczsKIH0KZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcCBiL0phdmFTY3JpcHRD
b3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcAppbmRleCAyYTM1MTkxLi5lNjI2NTU1IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVjdC5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUva2pzL3N0cmluZ19vYmplY3QuY3BwCkBAIC04MDAsNyArODAwLDcgQEAgSlNWYWx1ZSog
c3RyaW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhp
c09iaiwgY29uc3QgTGkKICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSBzc2l6ZSAmJiBtZW1jbXAo
YnVmZmVyLmRhdGEoKSwgcy5kYXRhKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpID09IDApCiAg
ICAgICAgIHJldHVybiBzVmFsOwotICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIucmVsZWFzZUJ1ZmZlcigpKSwgbGVuZ3RoLCBmYWxzZSkp
OworICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKGJ1ZmZlci5yZWxlYXNlQnVmZmVyKCksIGxl
bmd0aCwgZmFsc2UpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2Uo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYpCkBAIC04MjUs
NyArODI1LDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGkKICAgICB9CiAgICAgaWYgKGxlbmd0
aCA9PSBzc2l6ZSAmJiBtZW1jbXAoYnVmZmVyLmRhdGEoKSwgcy5kYXRhKCksIGxlbmd0aCAqIHNp
emVvZihVQ2hhcikpID09IDApCiAgICAgICAgIHJldHVybiBzVmFsOwotICAgIHJldHVybiBqc1N0
cmluZyhVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIucmVsZWFzZUJ1ZmZl
cigpKSwgbGVuZ3RoLCBmYWxzZSkpOworICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKGJ1ZmZl
ci5yZWxlYXNlQnVmZmVyKCksIGxlbmd0aCwgZmFsc2UpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5n
UHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhp
c09iaiwgY29uc3QgTGlzdCYpCkBAIC04NTEsNyArODUxLDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJv
dG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09i
aiwgY28KICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSBzc2l6ZSAmJiBtZW1jbXAoYnVmZmVyLmRh
dGEoKSwgcy5kYXRhKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpID09IDApCiAgICAgICAgIHJl
dHVybiBzVmFsOwotICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
VUNoYXIqPihidWZmZXIucmVsZWFzZUJ1ZmZlcigpKSwgbGVuZ3RoLCBmYWxzZSkpOworICAgIHJl
dHVybiBqc1N0cmluZyhVU3RyaW5nKGJ1ZmZlci5yZWxlYXNlQnVmZmVyKCksIGxlbmd0aCwgZmFs
c2UpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYpCkBAIC04NzYsNyAr
ODc2LDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY28KICAgICB9CiAgICAgaWYgKGxlbmd0aCA9
PSBzc2l6ZSAmJiBtZW1jbXAoYnVmZmVyLmRhdGEoKSwgcy5kYXRhKCksIGxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpID09IDApCiAgICAgICAgIHJldHVybiBzVmFsOwotICAgIHJldHVybiBqc1N0cmlu
ZyhVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIucmVsZWFzZUJ1ZmZlcigp
KSwgbGVuZ3RoLCBmYWxzZSkpOworICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKGJ1ZmZlci5y
ZWxlYXNlQnVmZmVyKCksIGxlbmd0aCwgZmFsc2UpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJv
dG9GdW5jTG9jYWxlQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBj
b25zdCBMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcu
Y3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCmluZGV4IGY0YzFhODcuLmUxYjZm
YmIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAKQEAgLTE2Myw5ICsxNjMsOSBAQCBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ1N0cmluZyYgYzEsIGNvbnN0IENTdHJpbmcmIGMyKQogfQogCiAvLyBIYWNr
IGhlcmUgdG8gYXZvaWQgYSBnbG9iYWwgd2l0aCBhIGNvbnN0cnVjdG9yOyBwb2ludCB0byBhbiB1
bnNpZ25lZCBzaG9ydCBpbnN0ZWFkIG9mIGEgVUNoYXIuCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQg
YWxtb3N0VUNoYXI7CitzdGF0aWMgVUNoYXIgc2hhcmVkRW1wdHlDaGFyOwogVVN0cmluZzo6UmVw
IFVTdHJpbmc6OlJlcDo6bnVsbCA9IHsgMCwgMCwgMSwgMCwgMCwgJlVTdHJpbmc6OlJlcDo6bnVs
bCwgMCwgMCwgMCwgMCwgMCwgMCB9OwotVVN0cmluZzo6UmVwIFVTdHJpbmc6OlJlcDo6ZW1wdHkg
PSB7IDAsIDAsIDEsIDAsIDAsICZVU3RyaW5nOjpSZXA6OmVtcHR5LCAwLCByZWludGVycHJldF9j
YXN0PFVDaGFyKj4oJmFsbW9zdFVDaGFyKSwgMCwgMCwgMCwgMCB9OworVVN0cmluZzo6UmVwIFVT
dHJpbmc6OlJlcDo6ZW1wdHkgPSB7IDAsIDAsIDEsIDAsIDAsICZVU3RyaW5nOjpSZXA6OmVtcHR5
LCAwLCAmc2hhcmVkRW1wdHlDaGFyLCAwLCAwLCAwLCAwIH07CiBjb25zdCBpbnQgbm9ybWFsU3Rh
dEJ1ZmZlclNpemUgPSA0MDk2Owogc3RhdGljIGNoYXIgKnN0YXRCdWZmZXIgPSAwOyAvLyBGSVhN
RTogVGhpcyBidWZmZXIgaXMgbmV2ZXIgZGVhbGxvY2F0ZWQuCiBzdGF0aWMgaW50IHN0YXRCdWZm
ZXJTaXplID0gMDsKQEAgLTQyOSw3ICs0MjksNyBAQCBVU3RyaW5nOjpVU3RyaW5nKGNvbnN0IGNo
YXIgKmMpCiAgICAgICBtX3JlcCA9ICZSZXA6Om51bGw7CiAgIGVsc2UgewogICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICBkW2ldID0gY1tpXTsKKyAg
ICAgICAgICBkW2ldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY1tpXSk7IC8vIHN0YXRp
Y19jYXN0IHRvIHVuc2lnbmVkIGNoYXIgdG8gYXZvaWQgZXJyb25lb3VzIHNpZ24tZXh0ZW5kCiAg
ICAgICBtX3JlcCA9IFJlcDo6Y3JlYXRlKGQsIHN0YXRpY19jYXN0PGludD4obGVuZ3RoKSk7CiAg
IH0KIH0KQEAgLTc3Myw3ICs3NzMsNyBAQCBVU3RyaW5nICZVU3RyaW5nOjphcHBlbmQoY29uc3Qg
Y2hhciAqdCkKICAgICBVQ2hhciAqZCA9IGNvbnN0X2Nhc3Q8VUNoYXIgKj4oZGF0YSgpKTsKICAg
ICBpZiAoZCkgewogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRTaXplOyArK2kpCi0gICAg
ICAgICAgICBkW3RoaXNTaXplICsgaV0gPSB0W2ldOworICAgICAgICAgICAgZFt0aGlzU2l6ZSAr
IGldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odFtpXSk7IC8vIHN0YXRpY19jYXN0IHRv
IHVuc2lnbmVkIGNoYXIgdG8gYXZvaWQgZXJyb25lb3VzIHNpZ24tZXh0ZW5kCiAgICAgICAgIG1f
cmVwLT5sZW4gPSBsZW5ndGg7CiAgICAgICAgIG1fcmVwLT5faGFzaCA9IDA7CiAgICAgfQpAQCAt
NzgzLDcgKzc4Myw3IEBAIFVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFyICp0KQog
ICAgIFVDaGFyICpkID0gY29uc3RfY2FzdDxVQ2hhciAqPihkYXRhKCkpOwogICAgIGlmIChkKSB7
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdFNpemU7ICsraSkKLSAgICAgICAgICAgIGRb
dGhpc1NpemUgKyBpXSA9IHRbaV07CisgICAgICAgICAgICBkW3RoaXNTaXplICsgaV0gPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0W2ldKTsgLy8gc3RhdGljX2Nhc3QgdG8gdW5zaWduZWQg
Y2hhciB0byBhdm9pZCBlcnJvbmVvdXMgc2lnbi1leHRlbmQKICAgICAgICAgbV9yZXAgPSBSZXA6
OmNyZWF0ZShtX3JlcCwgMCwgbGVuZ3RoKTsKICAgICB9CiAgIH0gZWxzZSB7CkBAIC03OTUsNyAr
Nzk1LDcgQEAgVVN0cmluZyAmVVN0cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIgKnQpCiAgICAgZWxz
ZSB7CiAgICAgICAgIG1lbWNweShkLCBkYXRhKCksIHRoaXNTaXplICogc2l6ZW9mKFVDaGFyKSk7
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdFNpemU7ICsraSkKLSAgICAgICAgICAgIGRb
dGhpc1NpemUgKyBpXSA9IHRbaV07CisgICAgICAgICAgICBkW3RoaXNTaXplICsgaV0gPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0W2ldKTsgLy8gc3RhdGljX2Nhc3QgdG8gdW5zaWduZWQg
Y2hhciB0byBhdm9pZCBlcnJvbmVvdXMgc2lnbi1leHRlbmQKICAgICAgICAgbV9yZXAgPSBSZXA6
OmNyZWF0ZShkLCBsZW5ndGgpOwogICAgICAgICBtX3JlcC0+Y2FwYWNpdHkgPSBuZXdDYXBhY2l0
eTsKICAgICB9CkBAIC05MTUsNyArOTE1LDcgQEAgVVN0cmluZyAmVVN0cmluZzo6b3BlcmF0b3I9
KGNvbnN0IGNoYXIgKmMpCiAgICAgbV9yZXAgPSBSZXA6OmNyZWF0ZShkLCBsKTsKICAgfQogICBm
b3IgKGludCBpID0gMDsgaSA8IGw7IGkrKykKLSAgICBkW2ldID0gY1tpXTsKKyAgICBkW2ldID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY1tpXSk7IC8vIHN0YXRpY19jYXN0IHRvIHVuc2ln
bmVkIGNoYXIgdG8gYXZvaWQgZXJyb25lb3VzIHNpZ24tZXh0ZW5kCiAKICAgcmV0dXJuICp0aGlz
OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfcHJveHkuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ranNfcHJveHkuY3BwCmluZGV4IGU2YTNmMGQuLmJiOWY3NTMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNwcAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL2tqc19wcm94eS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgSlNWYWx1ZSogS0pT
UHJveHk6OmV2YWx1YXRlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludCBiYXNlTGluZSwgY29u
c3QgU3RyaW5nJgogICAgIEpTVmFsdWUqIHRoaXNOb2RlID0gV2luZG93OjpyZXRyaWV2ZShtX2Zy
YW1lKTsKICAgCiAgICAgbV9nbG9iYWxPYmplY3QtPnN0YXJ0VGltZW91dENoZWNrKCk7Ci0gICAg
Q29tcGxldGlvbiBjb21wID0gSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGV4ZWMsIGZpbGVuYW1lLCBi
YXNlTGluZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ci5jaGFyYWN0ZXJzKCkp
LCBzdHIubGVuZ3RoKCksIHRoaXNOb2RlKTsKKyAgICBDb21wbGV0aW9uIGNvbXAgPSBJbnRlcnBy
ZXRlcjo6ZXZhbHVhdGUoZXhlYywgZmlsZW5hbWUsIGJhc2VMaW5lLCBzdHIuY2hhcmFjdGVycygp
LCBzdHIubGVuZ3RoKCksIHRoaXNOb2RlKTsKICAgICBtX2dsb2JhbE9iamVjdC0+c3RvcFRpbWVv
dXRDaGVjaygpOwogICAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwgfHwgY29t
cC5jb21wbFR5cGUoKSA9PSBSZXR1cm5WYWx1ZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDAxNTYwYTMuLmVj
MjI2MzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI2NzUsNyArMjY3NSw3IEBAIFN0cmluZyBEb2N1bWVudDo6
bGFzdE1vZGlmaWVkKCkgY29uc3QKIAogYm9vbCBEb2N1bWVudDo6aXNWYWxpZE5hbWUoY29uc3Qg
U3RyaW5nICZuYW1lKQogewotICAgIGNvbnN0IFVDaGFyKiBzID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVQ2hhcio+KG5hbWUuY2hhcmFjdGVycygpKTsKKyAgICBjb25zdCBVQ2hhciogcyA9IG5h
bWUuY2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUubGVuZ3RoKCk7CiAK
ICAgICBpZiAobGVuZ3RoID09IDApCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBib29sIERvY3VtZW50
OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nICZxdWFsaWZpZWROYW1lLCBTdHJpbmcg
JnByZWZpeCwgUwogICAgIGJvb2wgc2F3Q29sb24gPSBmYWxzZTsKICAgICBpbnQgY29sb25Qb3Mg
PSAwOwogCi0gICAgY29uc3QgVUNoYXIqIHMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFy
Kj4ocXVhbGlmaWVkTmFtZS5jaGFyYWN0ZXJzKCkpOworICAgIGNvbnN0IFVDaGFyKiBzID0gcXVh
bGlmaWVkTmFtZS5jaGFyYWN0ZXJzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDspIHsKICAgICAgICAgVUNoYXIzMiBjOwogICAgICAgICBVMTZfTkVYVChzLCBpLCBsZW5n
dGgsIGMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGUzNDZmNWIuLjcyNDk3YzkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gSFRNTEZvcm1FbGVtZW50Ojpmb3JtRGF0YShjb25zdCBjaGFyKiBib3VuZGFyeSkg
Y29uc3QKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaW5ncyBpZiB0aGUgZmlsZW5hbWUg
aW5jbHVkZXMgY2hhcmFjdGVycyB5b3UgY2FuJ3QgZW5jb2RlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBpbiB0aGUgd2Vic2l0ZSdzIGNoYXJhY3RlciBzZXQuCiAgICAgICAgICAgICAgICAg
ICAgICAgICBoc3RyICs9ICI7IGZpbGVuYW1lPVwiIjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGhzdHIgKz0gZW5jb2RpbmcuZW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihm
aWxlbmFtZS5jaGFyYWN0ZXJzKCkpLCBmaWxlbmFtZS5sZW5ndGgoKSwgdHJ1ZSkuZGF0YSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaHN0ciArPSBlbmNvZGluZy5lbmNvZGUoZmlsZW5hbWUu
Y2hhcmFjdGVycygpLCBmaWxlbmFtZS5sZW5ndGgoKSwgdHJ1ZSkuZGF0YSgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaHN0ciArPSAiXCIiOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIXN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihjdXJyZW50KS0+dmFsdWUoKS5pc0Vt
cHR5KCkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggYzU4NGU2
Yy4uYjVkZTMxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmlu
Zy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTE4
NCwxMiArMTg0LDEyIEBAIHZvaWQgQXRvbWljU3RyaW5nOjpyZW1vdmUoU3RyaW5nSW1wbCogcikK
IAogU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjphZGQoY29uc3QgS0pTOjpJZGVudGlmaWVyJiBz
dHIpCiB7Ci0gICAgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3Ry
LmRhdGEoKSksIHN0ci5zaXplKCkpOworICAgIHJldHVybiBhZGQoc3RyLmRhdGEoKSwgc3RyLnNp
emUoKSk7CiB9CiAKIFN0cmluZ0ltcGwqIEF0b21pY1N0cmluZzo6YWRkKGNvbnN0IEtKUzo6VVN0
cmluZyYgc3RyKQogewotICAgIHJldHVybiBhZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hh
cio+KHN0ci5kYXRhKCkpLCBzdHIuc2l6ZSgpKTsKKyAgICByZXR1cm4gYWRkKHN0ci5kYXRhKCks
IHN0ci5zaXplKCkpOwogfQogCiBBdG9taWNTdHJpbmc6Om9wZXJhdG9yIElkZW50aWZpZXIoKSBj
b25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nLmNwcAppbmRleCBmYmE0ZjZlLi4xZjRmNTg5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvU3RyaW5nLmNwcApAQCAtNTQ3LDI4ICs1NDcsMjggQEAgU3RyaW5nOjpTdHJp
bmcoY29uc3QgSWRlbnRpZmllciYgc3RyKQogewogICAgIGlmIChzdHIuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVQ2hhcio+KHN0ci5kYXRhKCkpLCBzdHIuc2l6ZSgpKTsKKyAgICBtX2ltcGwg
PSBTdHJpbmdJbXBsOjpjcmVhdGUoc3RyLmRhdGEoKSwgc3RyLnNpemUoKSk7CiB9CiAKIFN0cmlu
Zzo6U3RyaW5nKGNvbnN0IFVTdHJpbmcmIHN0cikKIHsKICAgICBpZiAoc3RyLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdHIuZGF0YSgpKSwgc3RyLnNpemUoKSk7CisgICAgbV9p
bXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHN0ci5kYXRhKCksIHN0ci5zaXplKCkpOwogfQogCiBT
dHJpbmc6Om9wZXJhdG9yIElkZW50aWZpZXIoKSBjb25zdAogewogICAgIGlmICghbV9pbXBsKQog
ICAgICAgICByZXR1cm4gSWRlbnRpZmllcigpOwotICAgIHJldHVybiBJZGVudGlmaWVyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihtX2ltcGwtPmNoYXJhY3RlcnMoKSksIG1faW1wbC0+
bGVuZ3RoKCkpOworICAgIHJldHVybiBJZGVudGlmaWVyKG1faW1wbC0+Y2hhcmFjdGVycygpLCBt
X2ltcGwtPmxlbmd0aCgpKTsKIH0KIAogU3RyaW5nOjpvcGVyYXRvciBVU3RyaW5nKCkgY29uc3QK
IHsKICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKLSAgICByZXR1
cm4gVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4obV9pbXBsLT5jaGFyYWN0
ZXJzKCkpLCBtX2ltcGwtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gVVN0cmluZyhtX2ltcGwtPmNo
YXJhY3RlcnMoKSwgbV9pbXBsLT5sZW5ndGgoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKaW5kZXggN2UyOWZjMy4uN2I2
ODNlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAKQEAgLTIzNSw3ICsy
MzUsNyBAQCBTdHJpbmcgVGV4dENvZGVjSUNVOjpkZWNvZGUoY29uc3QgY2hhciogYnl0ZXMsIHNp
emVfdCBsZW5ndGgsIGJvb2wgZmx1c2gpCiAgICAgICAgIGVyciA9IFVfWkVST19FUlJPUjsKICAg
ICAgICAgdWNudl90b1VuaWNvZGUobV9jb252ZXJ0ZXJJQ1UsICZ0YXJnZXQsIHRhcmdldExpbWl0
LCAmc291cmNlLCBzb3VyY2VMaW1pdCwgb2Zmc2V0cywgZmx1c2gsICZlcnIpOwogICAgICAgICBp
bnQgY291bnQgPSB0YXJnZXQgLSBidWZmZXI7Ci0gICAgICAgIGFwcGVuZE9taXR0aW5nQk9NKHJl
c3VsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGJ1ZmZlciksIGNvdW50KTsKKyAg
ICAgICAgYXBwZW5kT21pdHRpbmdCT00ocmVzdWx0LCBidWZmZXIsIGNvdW50KTsKICAgICB9IHdo
aWxlIChlcnIgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpOwogCiAgICAgaWYgKFVfRkFJTFVS
RShlcnIpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18754</attachid>
            <date>2008-01-28 19:01:13 -0800</date>
            <delta_ts>2008-01-29 12:56:05 -0800</delta_ts>
            <desc>Combined patch for darin</desc>
            <filename>Combined-patch-for-darin.patch</filename>
            <type>text/plain</type>
            <size>36420</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YzExNGJhODE0MTIxYzI4MjVmOWU2Yzk5MjMzZjU2MDE1OWIxMDA3YQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcCBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0
cmluZ1JlZi5jcHAKaW5kZXggOWEzMDdkMC4uOWU5ZjA2ZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJp
bmdSZWYuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7
CiBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGNvbnN0IEpTQ2hhciog
Y2hhcnMsIHNpemVfdCBudW1DaGFycykKIHsKICAgICBKU0xvY2sgbG9jazsKLSAgICByZXR1cm4g
dG9SZWYoVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6VUNoYXIqPihjaGFycyks
IHN0YXRpY19jYXN0PGludD4obnVtQ2hhcnMpKS5yZXAoKS0+cmVmKCkpOworICAgIHJldHVybiB0
b1JlZihVU3RyaW5nKGNoYXJzLCBzdGF0aWNfY2FzdDxpbnQ+KG51bUNoYXJzKSkucmVwKCktPnJl
ZigpKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29u
c3QgY2hhciogc3RyaW5nKQpAQCAtNTIsMTIgKzUyLDEyIEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKICAgICBKU0xvY2sgbG9j
azsKIAogICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKLSAgICBWZWN0b3I8IDo6
VUNoYXIsIDEwMjQ+IGJ1ZmZlcihsZW5ndGgpOwotICAgIDo6VUNoYXIqIHAgPSBidWZmZXIuZGF0
YSgpOworICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gYnVmZmVyKGxlbmd0aCk7CisgICAgVUNoYXIq
IHAgPSBidWZmZXIuZGF0YSgpOwogICAgIGlmIChjb252ZXJzaW9uT0sgIT0gY29udmVydFVURjhU
b1VURjE2KCZzdHJpbmcsIHN0cmluZyArIGxlbmd0aCwgJnAsIHAgKyBsZW5ndGgpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b1JlZihVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
S0pTOjpVQ2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBwIC0gYnVmZmVyLmRhdGEoKSkucmVwKCktPnJl
ZigpKTsKKyAgICByZXR1cm4gdG9SZWYoVVN0cmluZyhidWZmZXIuZGF0YSgpLCBwIC0gYnVmZmVy
LmRhdGEoKSkucmVwKCktPnJlZigpKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdSZXRhaW4o
SlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3Ry
aW5nUmVmQ0YuY3BwIGIvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4
IDcwYTVhYTcuLjFmYzMwMWEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmlu
Z1JlZkNGLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZT
dHJpbmdSZWYgc3RyaW5nKQogICAgIGVsc2UgewogICAgICAgICBVbmlDaGFyKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxVbmlDaGFyKj4oZmFzdE1hbGxvYyhzaXplb2YoVW5pQ2hhcikgKiBsZW5ndGgp
KTsKICAgICAgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwg
bGVuZ3RoKSwgYnVmZmVyKTsKLSAgICAgICAgcmVwID0gVVN0cmluZyhyZWludGVycHJldF9jYXN0
PFVDaGFyKj4oYnVmZmVyKSwgbGVuZ3RoLCBmYWxzZSkucmVwKCktPnJlZigpOworICAgICAgICBy
ZXAgPSBVU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoLCBmYWxzZSkucmVwKCktPnJlZigpOwogICAgIH0K
ICAgICByZXR1cm4gdG9SZWYocmVwKTsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRl
eCA2M2NlNGEyLi4xNzcxN2Y0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xMDcs
MTUgKzEwNywxNSBAQCBfX1oxNWpzUmVnRXhwRXhlY3V0ZVBLOEpTUmVnRXhwUEt0aWlQaWkKIF9f
WjIzX05QTl9DcmVhdGVTY3JpcHRPYmplY3RQNF9OUFBQTjNLSlM4SlNPYmplY3RFTjNXVEYxMFBh
c3NSZWZQdHJJTlMxXzhCaW5kaW5nczEwUm9vdE9iamVjdEVFRQogX19aMjVfTlBOX0NyZWF0ZU5v
U2NyaXB0T2JqZWN0dgogX19aTjNLSlMxMElkZW50aWZpZXIxMWFkZFNsb3dDYXNlRVBOU183VVN0
cmluZzNSZXBFCi1fX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEtOU181VUNoYXJFaQorX19aTjNL
SlMxMElkZW50aWZpZXIzYWRkRVBLdGkKIF9fWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQS2MKIF9f
Wk4zS0pTMTBJZGVudGlmaWVyNWVxdWFsRVBLTlNfN1VTdHJpbmczUmVwRVBLYwogX19aTjNLSlMx
MHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUUKIF9fWk4zS0pTMTB0aHJv
d0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFUEtjCi1fX1pOM0tKUzExSW50ZXJw
cmV0ZXIxMWNoZWNrU3ludGF4RVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFaVBLTlNfNVVD
aGFyRWkKK19fWk4zS0pTMTFJbnRlcnByZXRlcjExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVF
UktOU183VVN0cmluZ0VpUEt0aQogX19aTjNLSlMxMUludGVycHJldGVyMjFzaG91bGRQcmludEV4
Y2VwdGlvbnNFdgogX19aTjNLSlMxMUludGVycHJldGVyMjRzZXRTaG91bGRQcmludEV4Y2VwdGlv
bnNFYgotX19aTjNLSlMxMUludGVycHJldGVyOGV2YWx1YXRlRVBOU185RXhlY1N0YXRlRVJLTlNf
N1VTdHJpbmdFaVBLTlNfNVVDaGFyRWlQTlNfN0pTVmFsdWVFCitfX1pOM0tKUzExSW50ZXJwcmV0
ZXI4ZXZhbHVhdGVFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0VpUEt0aVBOU183SlNWYWx1
ZUUKIF9fWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdV
U3RyaW5nRWlTNV9QTlNfN0pTVmFsdWVFCiBfX1pOM0tKUzExSlNJbW1lZGlhdGU0dHlwZUVQS05T
XzdKU1ZhbHVlRQogX19aTjNLSlMxMUpTSW1tZWRpYXRlOHRvT2JqZWN0RVBLTlNfN0pTVmFsdWVF
UE5TXzlFeGVjU3RhdGVFCkBAIC0xNzQsMTMgKzE3NCwxMyBAQCBfX1pOM0tKUzZKU0xvY2s0bG9j
a0V2CiBfX1pOM0tKUzZKU0xvY2s2dW5sb2NrRXYKIF9fWk4zS0pTNkpTTG9jazlsb2NrQ291bnRF
dgogX19aTjNLSlM2TG9va3VwOWZpbmRFbnRyeUVQS05TXzlIYXNoVGFibGVFUktOU18xMElkZW50
aWZpZXJFCi1fX1pOM0tKUzZQYXJzZXI1cGFyc2VFaVBLTlNfNVVDaGFyRWpQaVM0X1BOU183VVN0
cmluZ0UKK19fWk4zS0pTNlBhcnNlcjVwYXJzZUVpUEt0alBpUzNfUE5TXzdVU3RyaW5nRQogX19a
TjNLSlM2cGFyc2VyRXYKIF9fWk4zS0pTN0NTdHJpbmdEMUV2CiBfX1pOM0tKUzdVU3RyaW5nM1Jl
cDRudWxsRQogX19aTjNLSlM3VVN0cmluZzNSZXA3ZGVzdHJveUV2CiBfX1pOM0tKUzdVU3RyaW5n
NmFwcGVuZEVSS1MwXwotX19aTjNLSlM3VVN0cmluZ0MxRVBLTlNfNVVDaGFyRWkKK19fWk4zS0pT
N1VTdHJpbmdDMUVQS3RpCiBfX1pOM0tKUzdVU3RyaW5nQzFFUEtjCiBfX1pOM0tKUzdVU3RyaW5n
QzFFUktTMF9TMl8KIF9fWk4zS0pTN1VTdHJpbmdhU0VQS2MKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcCBiL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdz
L2MvY191dGlsaXR5LmNwcAppbmRleCA3ZTJhMTlmLi42Y2U0YzE5IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUv
YmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgSWRlbnRpZmllciBp
ZGVudGlmaWVyRnJvbU5QSWRlbnRpZmllcihjb25zdCBOUFVURjgqIG5hbWUpCiAgICAgTlBVVEYx
NiAqbWV0aG9kTmFtZTsKICAgICB1bnNpZ25lZCBVVEYxNkxlbmd0aDsKICAgICBjb252ZXJ0VVRG
OFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2sobmFtZSwgLTEsICZtZXRob2ROYW1lLCAmVVRGMTZM
ZW5ndGgpOyAvLyByZXF1aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5LgotICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigoY29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5n
dGgpOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigoY29uc3QgVUNoYXIqKW1ldGhvZE5hbWUs
IFVURjE2TGVuZ3RoKTsKICAgICBmcmVlKG1ldGhvZE5hbWUpOwogICAgIHJldHVybiBpZGVudGlm
aWVyOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvb2JqYy9vYmpjX3V0
aWxpdHkubW0gYi9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfdXRpbGl0eS5tbQpp
bmRleCA2MmEwYWQwLi5iZDE0YzhlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5n
cy9vYmpjL29iamNfdXRpbGl0eS5tbQorKysgYi9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpj
L29iamNfdXRpbGl0eS5tbQpAQCAtMzYzLDcgKzM2Myw3IEBAIEpTT2JqZWN0ICp0aHJvd0Vycm9y
KEV4ZWNTdGF0ZSAqZXhlYywgRXJyb3JUeXBlIHR5cGUsIE5TU3RyaW5nICptZXNzYWdlKQogICAg
IHNpemVfdCBsZW5ndGggPSBbbWVzc2FnZSBsZW5ndGhdOwogICAgIHVuaWNoYXIgKmJ1ZmZlciA9
IG5ldyB1bmljaGFyW2xlbmd0aF07CiAgICAgW21lc3NhZ2UgZ2V0Q2hhcmFjdGVyczpidWZmZXJd
OwotICAgIEpTT2JqZWN0ICplcnJvciA9IHRocm93RXJyb3IoZXhlYywgdHlwZSwgVVN0cmluZyhy
ZWludGVycHJldF9jYXN0PFVDaGFyICo+KGJ1ZmZlciksIGxlbmd0aCkpOworICAgIEpTT2JqZWN0
ICplcnJvciA9IHRocm93RXJyb3IoZXhlYywgdHlwZSwgVVN0cmluZyhidWZmZXIsIGxlbmd0aCkp
OwogICAgIGRlbGV0ZSBbXSBidWZmZXI7CiAgICAgcmV0dXJuIGVycm9yOwogfQpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUva2pzL1BhcnNl
ci5oCmluZGV4IDkyNTQ4ZmUuLjBjYWZjOGEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tq
cy9QYXJzZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgKQEAgLTM3LDggKzM3
LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGU7CiAgICAgY2xhc3Mg
VVN0cmluZzsKIAotICAgIHN0cnVjdCBVQ2hhcjsKLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdHJ1Y3QgUGFyc2VyUmVmQ291bnRlZERhdGEgOiBQYXJzZXJSZWZDb3VudGVkIHsKICAgICAg
ICAgVCBkYXRhOwogICAgIH07CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rp
b24uY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcAppbmRleCBmNWIwMzkxLi42
M2U1ZDNiIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5jcHAKQEAgLTUwNiw4ICs1MDYsOCBAQCBzdGF0
aWMgSlNWYWx1ZSogZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgY29u
c3QgY2hhciogZG9fbm90X3VuZQogICAgIFVDaGFyIGMgPSAqcDsKICAgICBpZiAoYyA9PSAnJScp
IHsKICAgICAgIGludCBjaGFyTGVuID0gMDsKLSAgICAgIGlmIChrIDw9IGxlbiAtIDMgJiYgaXNB
U0NJSUhleERpZ2l0KHBbMV0udWMpICYmIGlzQVNDSUlIZXhEaWdpdChwWzJdLnVjKSkgewotICAg
ICAgICBjb25zdCBjaGFyIGIwID0gTGV4ZXI6OmNvbnZlcnRIZXgocFsxXS51YywgcFsyXS51Yyk7
CisgICAgICBpZiAoayA8PSBsZW4gLSAzICYmIGlzQVNDSUlIZXhEaWdpdChwWzFdKSAmJiBpc0FT
Q0lJSGV4RGlnaXQocFsyXSkpIHsKKyAgICAgICAgY29uc3QgY2hhciBiMCA9IExleGVyOjpjb252
ZXJ0SGV4KHBbMV0sIHBbMl0pOwogICAgICAgICBjb25zdCBpbnQgc2VxdWVuY2VMZW4gPSBVVEY4
U2VxdWVuY2VMZW5ndGgoYjApOwogICAgICAgICBpZiAoc2VxdWVuY2VMZW4gIT0gMCAmJiBrIDw9
IGxlbiAtIHNlcXVlbmNlTGVuICogMykgewogICAgICAgICAgIGNoYXJMZW4gPSBzZXF1ZW5jZUxl
biAqIDM7CkBAIC01MTUsOCArNTE1LDggQEAgc3RhdGljIEpTVmFsdWUqIGRlY29kZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGRvX25vdF91bmUKICAgICAg
ICAgICBzZXF1ZW5jZVswXSA9IGIwOwogICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc2Vx
dWVuY2VMZW47ICsraSkgewogICAgICAgICAgICAgY29uc3QgVUNoYXIqIHEgPSBwICsgaSAqIDM7
Ci0gICAgICAgICAgICBpZiAocVswXSA9PSAnJScgJiYgaXNBU0NJSUhleERpZ2l0KHFbMV0udWMp
ICYmIGlzQVNDSUlIZXhEaWdpdChxWzJdLnVjKSkKLSAgICAgICAgICAgICAgc2VxdWVuY2VbaV0g
PSBMZXhlcjo6Y29udmVydEhleChxWzFdLnVjLCBxWzJdLnVjKTsKKyAgICAgICAgICAgIGlmIChx
WzBdID09ICclJyAmJiBpc0FTQ0lJSGV4RGlnaXQocVsxXSkgJiYgaXNBU0NJSUhleERpZ2l0KHFb
Ml0pKQorICAgICAgICAgICAgICBzZXF1ZW5jZVtpXSA9IExleGVyOjpjb252ZXJ0SGV4KHFbMV0s
IHFbMl0pOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgIGNoYXJMZW4gPSAwOwog
ICAgICAgICAgICAgICBicmVhazsKQEAgLTU0MywxMyArNTQzLDEzIEBAIHN0YXRpYyBKU1ZhbHVl
KiBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzLCBjb25zdCBjaGFyKiBk
b19ub3RfdW5lCiAgICAgICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJz
dHJpY3QiIG1vZGUgaXMgdGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgIC8vIEZvciB0
aGF0LCBpdCdzIGdvb2QgdG8gc3VwcG9ydCB0aGUgd29ua3kgIiV1IiBzeW50YXggZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBXaW5JRS4KICAgICAgICAgaWYgKGsgPD0gbGVuIC0gNiAmJiBwWzFdID09
ICd1JwotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KHBbMl0udWMpICYmIGlzQVNDSUlI
ZXhEaWdpdChwWzNdLnVjKQotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KHBbNF0udWMp
ICYmIGlzQVNDSUlIZXhEaWdpdChwWzVdLnVjKSkgeworICAgICAgICAgICAgJiYgaXNBU0NJSUhl
eERpZ2l0KHBbMl0pICYmIGlzQVNDSUlIZXhEaWdpdChwWzNdKQorICAgICAgICAgICAgJiYgaXNB
U0NJSUhleERpZ2l0KHBbNF0pICYmIGlzQVNDSUlIZXhEaWdpdChwWzVdKSkgewogICAgICAgICAg
IGNoYXJMZW4gPSA2OwotICAgICAgICAgIHUgPSBMZXhlcjo6Y29udmVydFVuaWNvZGUocFsyXS51
YywgcFszXS51YywgcFs0XS51YywgcFs1XS51Yyk7CisgICAgICAgICAgdSA9IExleGVyOjpjb252
ZXJ0VW5pY29kZShwWzJdLCBwWzNdLCBwWzRdLCBwWzVdKTsKICAgICAgICAgfQogICAgICAgfQot
ICAgICAgaWYgKGNoYXJMZW4gJiYgKHUudWMgPT0gMCB8fCB1LnVjID49IDEyOCB8fCAhc3RyY2hy
KGRvX25vdF91bmVzY2FwZSwgdS5sb3coKSkpKSB7CisgICAgICBpZiAoY2hhckxlbiAmJiAodSA9
PSAwIHx8IHUgPj0gMTI4IHx8ICFzdHJjaHIoZG9fbm90X3VuZXNjYXBlLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBjaGFyPih1KSkpKSB7CiAgICAgICAgIGMgPSB1OwogICAgICAgICBrICs9IGNoYXJM
ZW4gLSAxOwogICAgICAgfQpAQCAtNjIyLDcgKzYyMiw3IEBAIHN0YXRpYyBkb3VibGUgcGFyc2VJ
bnQoY29uc3QgVVN0cmluZyYgcywgaW50IHJhZGl4KQogICAgIGludCBsZW5ndGggPSBzLnNpemUo
KTsKICAgICBpbnQgcCA9IDA7CiAKLSAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRl
U3BhY2Uoc1twXS51YykpIHsKKyAgICB3aGlsZSAocCA8IGxlbmd0aCAmJiBpc1N0cldoaXRlU3Bh
Y2Uoc1twXSkpIHsKICAgICAgICAgKytwOwogICAgIH0KIApAQCAtNjUzLDcgKzY1Myw3IEBAIHN0
YXRpYyBkb3VibGUgcGFyc2VJbnQoY29uc3QgVVN0cmluZyYgcywgaW50IHJhZGl4KQogICAgIGJv
b2wgc2F3RGlnaXQgPSBmYWxzZTsKICAgICBkb3VibGUgbnVtYmVyID0gMDsKICAgICB3aGlsZSAo
cCA8IGxlbmd0aCkgewotICAgICAgICBpbnQgZGlnaXQgPSBwYXJzZURpZ2l0KHNbcF0udWMsIHJh
ZGl4KTsKKyAgICAgICAgaW50IGRpZ2l0ID0gcGFyc2VEaWdpdChzW3BdLCByYWRpeCk7CiAgICAg
ICAgIGlmIChkaWdpdCA9PSAtMSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBzYXdEaWdp
dCA9IHRydWU7CkBAIC02ODEsNyArNjgxLDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUZsb2F0KGNv
bnN0IFVTdHJpbmcmIHMpCiAgICAgLy8gTmVlZCB0byBza2lwIGFueSB3aGl0ZXNwYWNlIGFuZCB0
aGVuIG9uZSArIG9yIC0gc2lnbi4KICAgICBpbnQgbGVuZ3RoID0gcy5zaXplKCk7CiAgICAgaW50
IHAgPSAwOwotICAgIHdoaWxlIChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShzW3BdLnVj
KSkgeworICAgIHdoaWxlIChwIDwgbGVuZ3RoICYmIGlzU3RyV2hpdGVTcGFjZShzW3BdKSkgewog
ICAgICAgICArK3A7CiAgICAgfQogICAgIGlmIChwIDwgbGVuZ3RoICYmIChzW3BdID09ICcrJyB8
fCBzW3BdID09ICctJykpIHsKQEAgLTgwOCw3ICs4MDgsNyBAQCBKU1ZhbHVlKiBnbG9iYWxGdW5j
RXNjYXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBMaXN0JiBhcmdzKQogICAg
IFVTdHJpbmcgciA9ICIiLCBzLCBzdHIgPSBhcmdzWzBdLT50b1N0cmluZyhleGVjKTsKICAgICBj
b25zdCBVQ2hhciogYyA9IHN0ci5kYXRhKCk7CiAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBzdHIu
c2l6ZSgpOyBrKyssIGMrKykgewotICAgICAgICBpbnQgdSA9IGMtPnVjOworICAgICAgICBpbnQg
dSA9IGNbMF07CiAgICAgICAgIGlmICh1ID4gMjU1KSB7CiAgICAgICAgICAgICBjaGFyIHRtcFs3
XTsKICAgICAgICAgICAgIHNwcmludGYodG1wLCAiJSV1JTA0WCIsIHUpOwpAQCAtODM0LDEzICs4
MzQsMTMgQEAgSlNWYWx1ZSogZ2xvYmFsRnVuY1VuZXNjYXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqLCBjb25zdCBMaXN0JiBhcmdzKQogICAgICAgICBjb25zdCBVQ2hhciogYyA9IHN0ci5k
YXRhKCkgKyBrOwogICAgICAgICBVQ2hhciB1OwogICAgICAgICBpZiAoKmMgPT0gVUNoYXIoJyUn
KSAmJiBrIDw9IGxlbiAtIDYgJiYgKihjICsgMSkgPT0gVUNoYXIoJ3UnKSkgewotICAgICAgICAg
ICAgaWYgKExleGVyOjppc0hleERpZ2l0KChjICsgMiktPnVjKSAmJiBMZXhlcjo6aXNIZXhEaWdp
dCgoYyArIDMpLT51YykgJiYgTGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyA0KS0+dWMpICYmIExleGVy
Ojppc0hleERpZ2l0KChjICsgNSktPnVjKSkgewotICAgICAgICAgICAgICAgIHUgPSBMZXhlcjo6
Y29udmVydFVuaWNvZGUoKGMgKyAyKS0+dWMsIChjICsgMyktPnVjLCAoYyArIDQpLT51YywgKGMg
KyA1KS0+dWMpOworICAgICAgICAgICAgaWYgKExleGVyOjppc0hleERpZ2l0KChjICsgMilbMF0p
ICYmIExleGVyOjppc0hleERpZ2l0KChjICsgMylbMF0pICYmIExleGVyOjppc0hleERpZ2l0KChj
ICsgNClbMF0pICYmIExleGVyOjppc0hleERpZ2l0KChjICsgNSlbMF0pKSB7CisgICAgICAgICAg
ICAgICAgdSA9IExleGVyOjpjb252ZXJ0VW5pY29kZSgoYyArIDIpWzBdLCAoYyArIDMpWzBdLCAo
YyArIDQpWzBdLCAoYyArIDUpWzBdKTsKICAgICAgICAgICAgICAgICBjID0gJnU7CiAgICAgICAg
ICAgICAgICAgayArPSA1OwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKCpjID09
IFVDaGFyKCclJykgJiYgayA8PSBsZW4gLSAzICYmIExleGVyOjppc0hleERpZ2l0KChjICsgMSkt
PnVjKSAmJiBMZXhlcjo6aXNIZXhEaWdpdCgoYyArIDIpLT51YykpIHsKLSAgICAgICAgICAgIHUg
PSBVQ2hhcihMZXhlcjo6Y29udmVydEhleCgoYysxKS0+dWMsIChjKzIpLT51YykpOworICAgICAg
ICB9IGVsc2UgaWYgKCpjID09IFVDaGFyKCclJykgJiYgayA8PSBsZW4gLSAzICYmIExleGVyOjpp
c0hleERpZ2l0KChjICsgMSlbMF0pICYmIExleGVyOjppc0hleERpZ2l0KChjICsgMilbMF0pKSB7
CisgICAgICAgICAgICB1ID0gVUNoYXIoTGV4ZXI6OmNvbnZlcnRIZXgoKGMrMSlbMF0sIChjKzIp
WzBdKSk7CiAgICAgICAgICAgICBjID0gJnU7CiAgICAgICAgICAgICBrICs9IDI7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbl9vYmplY3QuY3BwIGIv
SmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAKaW5kZXggZGMyMGU3MC4uZjU4
ZjJkMiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uX29iamVjdC5jcHAKQEAgLTE5NywxMCAr
MTk3LDEwIEBAIEpTT2JqZWN0KiBGdW5jdGlvbk9iamVjdEltcDo6Y29uc3RydWN0KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgY29uc3QKICAgICB3aGlsZSAoaSA8IGxlbikgewog
ICAgICAgICB3aGlsZSAoKmMgPT0gJyAnICYmIGkgPCBsZW4pCiAgICAgICAgICAgICBjKyssIGkr
KzsKLSAgICAgICAgaWYgKExleGVyOjppc0lkZW50U3RhcnQoYy0+dWMpKSB7ICAvLyBlbHNlIGVy
cm9yCisgICAgICAgIGlmIChMZXhlcjo6aXNJZGVudFN0YXJ0KGNbMF0pKSB7ICAvLyBlbHNlIGVy
cm9yCiAgICAgICAgICAgICBwYXJhbSA9IFVTdHJpbmcoYywgMSk7CiAgICAgICAgICAgICBjKyss
IGkrKzsKLSAgICAgICAgICAgIHdoaWxlIChpIDwgbGVuICYmIChMZXhlcjo6aXNJZGVudFBhcnQo
Yy0+dWMpKSkgeworICAgICAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgKExleGVyOjppc0lkZW50
UGFydChjWzBdKSkpIHsKICAgICAgICAgICAgICAgICBwYXJhbSArPSBVU3RyaW5nKGMsIDEpOwog
ICAgICAgICAgICAgICAgIGMrKywgaSsrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2lkZW50
aWZpZXIuY3BwCmluZGV4IDNmYTAxYWQuLjE5YzVhODIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2tqcy9pZGVudGlmaWVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmll
ci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgYm9vbCBJZGVudGlmaWVyOjplcXVhbChjb25zdCBVU3Ry
aW5nOjpSZXAgKnIsIGNvbnN0IGNoYXIgKnMpCiAgICAgaW50IGxlbmd0aCA9IHItPmxlbjsKICAg
ICBjb25zdCBVQ2hhciAqZCA9IHItPmRhdGEoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBs
ZW5ndGg7ICsraSkKLSAgICAgICAgaWYgKGRbaV0udWMgIT0gKHVuc2lnbmVkIGNoYXIpc1tpXSkK
KyAgICAgICAgaWYgKGRbaV0gIT0gKHVuc2lnbmVkIGNoYXIpc1tpXSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICByZXR1cm4gc1tsZW5ndGhdID09IDA7CiB9CkBAIC03OCw3ICs3OCw3
IEBAIGJvb2wgSWRlbnRpZmllcjo6ZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwICpyLCBjb25zdCBV
Q2hhciAqcywgaW50IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNvbnN0IFVD
aGFyICpkID0gci0+ZGF0YSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGxlbmd0aDsgKytp
KQotICAgICAgICBpZiAoZFtpXS51YyAhPSBzW2ldLnVjKQorICAgICAgICBpZiAoZFtpXSAhPSBz
W2ldKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
OTEsNyArOTEsNyBAQCBib29sIElkZW50aWZpZXI6OmVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCAq
ciwgY29uc3QgVVN0cmluZzo6UmVwICpiKQogICAgIGNvbnN0IFVDaGFyICpkID0gci0+ZGF0YSgp
OwogICAgIGNvbnN0IFVDaGFyICpzID0gYi0+ZGF0YSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBp
ICE9IGxlbmd0aDsgKytpKQotICAgICAgICBpZiAoZFtpXS51YyAhPSBzW2ldLnVjKQorICAgICAg
ICBpZiAoZFtpXSAhPSBzW2ldKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTEzLDcgKzExMyw3IEBAIHN0cnVjdCBDU3RyaW5nVHJhbnNsYXRvcgog
ICAgICAgICBzaXplX3QgbGVuZ3RoID0gc3RybGVuKGMpOwogICAgICAgICBVQ2hhciAqZCA9IHN0
YXRpY19jYXN0PFVDaGFyICo+KGZhc3RNYWxsb2Moc2l6ZW9mKFVDaGFyKSAqIGxlbmd0aCkpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBsZW5ndGg7IGkrKykKLSAgICAgICAgICAg
IGRbaV0gPSBjW2ldOworICAgICAgICAgICAgZFtpXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGNbaV0pOyAvLyBzdGF0aWNfY2FzdCB0byB1bnNpZ25lZCBjaGFyIHRvIGF2b2lkIGVycm9u
ZW91cyBzaWduLWV4dGVuZAogICAgICAgICAKICAgICAgICAgVVN0cmluZzo6UmVwICpyID0gVVN0
cmluZzo6UmVwOjpjcmVhdGUoZCwgc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgpKS5yZWxlYXNlUmVm
KCk7CiAgICAgICAgIHItPmlzSWRlbnRpZmllciA9IDE7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ranMvaW50ZXJwcmV0ZXIuaCBiL0phdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5o
CmluZGV4IDc5YjkzOTguLjlhODA2ZTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9p
bnRlcnByZXRlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5oCkBAIC0y
OSw4ICsyOSw2IEBAIG5hbWVzcGFjZSBLSlMgewogICBjbGFzcyBFeGVjU3RhdGU7CiAgIGNsYXNz
IEpTVmFsdWU7CiAgIGNsYXNzIFVTdHJpbmc7Ci0KLSAgc3RydWN0IFVDaGFyOwogICAKICAgY2xh
c3MgSW50ZXJwcmV0ZXIgewogICBwdWJsaWM6CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9r
anMvbGV4ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcAppbmRleCBjNGQzMjdm
Li5lMTA2OGE5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgTGV4ZXI6Okxl
eGVyKCkKICAgICBtX2lkZW50aWZpZXJzLnJlc2VydmVDYXBhY2l0eShpbml0aWFsU3RyaW5nVGFi
bGVDYXBhY2l0eSk7CiB9CiAKLXZvaWQgTGV4ZXI6OnNldENvZGUoaW50IHN0YXJ0aW5nTGluZU51
bWJlciwgY29uc3QgS0pTOjpVQ2hhciAqYywgdW5zaWduZWQgaW50IGxlbikKK3ZvaWQgTGV4ZXI6
OnNldENvZGUoaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3QgVUNoYXIgKmMsIHVuc2lnbmVk
IGludCBsZW4pCiB7CiAgIHl5bGluZW5vID0gMSArIHN0YXJ0aW5nTGluZU51bWJlcjsKICAgcmVz
dHJLZXl3b3JkID0gZmFsc2U7CkBAIC0xMTEsMTAgKzExMSwxMCBAQCB2b2lkIExleGVyOjpzZXRD
b2RlKGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IEtKUzo6VUNoYXIgKmMsIHVuc2lnbmVk
IGludCBsZQogICBhdExpbmVTdGFydCA9IHRydWU7CiAKICAgLy8gcmVhZCBmaXJzdCBjaGFyYWN0
ZXJzCi0gIGN1cnJlbnQgPSAobGVuZ3RoID4gMCkgPyBjb2RlWzBdLnVjIDogLTE7Ci0gIG5leHQx
ID0gKGxlbmd0aCA+IDEpID8gY29kZVsxXS51YyA6IC0xOwotICBuZXh0MiA9IChsZW5ndGggPiAy
KSA/IGNvZGVbMl0udWMgOiAtMTsKLSAgbmV4dDMgPSAobGVuZ3RoID4gMykgPyBjb2RlWzNdLnVj
IDogLTE7CisgIGN1cnJlbnQgPSAobGVuZ3RoID4gMCkgPyBjb2RlWzBdIDogLTE7CisgIG5leHQx
ID0gKGxlbmd0aCA+IDEpID8gY29kZVsxXSA6IC0xOworICBuZXh0MiA9IChsZW5ndGggPiAyKSA/
IGNvZGVbMl0gOiAtMTsKKyAgbmV4dDMgPSAobGVuZ3RoID4gMykgPyBjb2RlWzNdIDogLTE7CiB9
CiAKIHZvaWQgTGV4ZXI6OnNoaWZ0KHVuc2lnbmVkIGludCBwKQpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgTGV4ZXI6OnNoaWZ0KHVuc2lnbmVkIGludCBwKQogICAgIGN1cnJlbnQgPSBuZXh0MTsK
ICAgICBuZXh0MSA9IG5leHQyOwogICAgIG5leHQyID0gbmV4dDM7Ci0gICAgbmV4dDMgPSAocG9z
ICsgMyA8IGxlbmd0aCkgPyBjb2RlW3BvcyArIDNdLnVjIDogLTE7CisgICAgbmV4dDMgPSAocG9z
ICsgMyA8IGxlbmd0aCkgPyBjb2RlW3BvcyArIDNdIDogLTE7CiAgIH0KIH0KIApAQCAtNDI3LDcg
KzQyNyw3IEBAIGludCBMZXhlcjo6bGV4KCkKICAgICAgICAgc2V0RG9uZShCYWQpOwogICAgICAg
ICBicmVhazsKICAgICAgIH0KLSAgICAgIHRva2VuID0gY29udmVydFVuaWNvZGUoY3VycmVudCwg
bmV4dDEsIG5leHQyLCBuZXh0MykudWM7CisgICAgICB0b2tlbiA9IGNvbnZlcnRVbmljb2RlKGN1
cnJlbnQsIG5leHQxLCBuZXh0MiwgbmV4dDMpOwogICAgICAgc2hpZnQoMyk7CiAgICAgICBpZiAo
IWlzSWRlbnRTdGFydCh0b2tlbikpIHsKICAgICAgICAgc2V0RG9uZShCYWQpOwpAQCAtNDQxLDcg
KzQ0MSw3IEBAIGludCBMZXhlcjo6bGV4KCkKICAgICAgICAgc2V0RG9uZShCYWQpOwogICAgICAg
ICBicmVhazsKICAgICAgIH0KLSAgICAgIHRva2VuID0gY29udmVydFVuaWNvZGUoY3VycmVudCwg
bmV4dDEsIG5leHQyLCBuZXh0MykudWM7CisgICAgICB0b2tlbiA9IGNvbnZlcnRVbmljb2RlKGN1
cnJlbnQsIG5leHQxLCBuZXh0MiwgbmV4dDMpOwogICAgICAgc2hpZnQoMyk7CiAgICAgICBpZiAo
IWlzSWRlbnRQYXJ0KHRva2VuKSkgewogICAgICAgICBzZXREb25lKEJhZCk7CkBAIC03OTIsMTAg
Kzc5MiwxMSBAQCB1bnNpZ25lZCBjaGFyIExleGVyOjpjb252ZXJ0SGV4KGludCBjMSwgaW50IGMy
KQogICByZXR1cm4gKChjb252ZXJ0SGV4KGMxKSA8PCA0KSArIGNvbnZlcnRIZXgoYzIpKTsKIH0K
IAotS0pTOjpVQ2hhciBMZXhlcjo6Y29udmVydFVuaWNvZGUoaW50IGMxLCBpbnQgYzIsIGludCBj
MywgaW50IGM0KQorVUNoYXIgTGV4ZXI6OmNvbnZlcnRVbmljb2RlKGludCBjMSwgaW50IGMyLCBp
bnQgYzMsIGludCBjNCkKIHsKLSAgcmV0dXJuIEtKUzo6VUNoYXIoKGNvbnZlcnRIZXgoYzEpIDw8
IDQpICsgY29udmVydEhleChjMiksCi0gICAgICAgICAgICAgICAoY29udmVydEhleChjMykgPDwg
NCkgKyBjb252ZXJ0SGV4KGM0KSk7CisgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9IChjb252
ZXJ0SGV4KGMxKSA8PCA0KSArIGNvbnZlcnRIZXgoYzIpOworICAgIHVuc2lnbmVkIGNoYXIgbG93
Qnl0ZSA9IChjb252ZXJ0SGV4KGMzKSA8PCA0KSArIGNvbnZlcnRIZXgoYzQpOworICAgIHJldHVy
biAoaGlnaEJ5dGUgPDwgOCB8IGxvd0J5dGUpOwogfQogCiB2b2lkIExleGVyOjpyZWNvcmQ4KGlu
dCBjKQpAQCAtODEyLDcgKzgxMyw3IEBAIHZvaWQgTGV4ZXI6OnJlY29yZDE2KGludCBjKQogICAg
IHJlY29yZDE2KFVDaGFyKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0PihjKSkpOwogfQogCi12
b2lkIExleGVyOjpyZWNvcmQxNihLSlM6OlVDaGFyIGMpCit2b2lkIExleGVyOjpyZWNvcmQxNihV
Q2hhciBjKQogewogICAgIG1fYnVmZmVyMTYuYXBwZW5kKGMpOwogfQpAQCAtODgwLDE0ICs4ODEs
MTQgQEAgdm9pZCBMZXhlcjo6Y2xlYXIoKQogICAgIG1fZmxhZ3MgPSAwOwogfQogCi1JZGVudGlm
aWVyKiBMZXhlcjo6bWFrZUlkZW50aWZpZXIoY29uc3QgVmVjdG9yPEtKUzo6VUNoYXI+JiBidWZm
ZXIpCitJZGVudGlmaWVyKiBMZXhlcjo6bWFrZUlkZW50aWZpZXIoY29uc3QgVmVjdG9yPFVDaGFy
PiYgYnVmZmVyKQogewogICAgIEtKUzo6SWRlbnRpZmllciogaWRlbnRpZmllciA9IG5ldyBLSlM6
OklkZW50aWZpZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAgICAgbV9pZGVudGlm
aWVycy5hcHBlbmQoaWRlbnRpZmllcik7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAgCi1V
U3RyaW5nKiBMZXhlcjo6bWFrZVVTdHJpbmcoY29uc3QgVmVjdG9yPEtKUzo6VUNoYXI+JiBidWZm
ZXIpCitVU3RyaW5nKiBMZXhlcjo6bWFrZVVTdHJpbmcoY29uc3QgVmVjdG9yPFVDaGFyPiYgYnVm
ZmVyKQogewogICAgIFVTdHJpbmcqIHN0cmluZyA9IG5ldyBVU3RyaW5nKGJ1ZmZlcik7CiAgICAg
bV9zdHJpbmdzLmFwcGVuZChzdHJpbmcpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pz
L2xvb2t1cC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmNwcAppbmRleCA5NWRjNWNi
Li4wNThmNThmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmNwcApAQCAtMzEsNyArMzEsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wga2V5c01hdGNoKGNvbnN0IFVDaGFyKiBjLCB1bnNpZ25lZCBsZW4sIGNvbnN0
IGNoYXIqIHMpCiAgIC8vIEZJWE1FOiBUaGlzIGNhbiBydW4gb2ZmIHRoZSBlbmQgb2YgfHN8IGlm
IHxjfCBoYXMgYSBVKzAwMDAgY2hhcmFjdGVyIGluIGl0LgogICBjb25zdCBjaGFyKiBlbmQgPSBz
ICsgbGVuOwogICBmb3IgKDsgcyAhPSBlbmQ7IGMrKywgcysrKQotICAgIGlmIChjLT51YyAhPSAq
cykKKyAgICBpZiAoKmMgIT0gKnMpCiAgICAgICByZXR1cm4gZmFsc2U7CiAgIHJldHVybiAqcyA9
PSAwOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAg
Yi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3RyaW5nLmNwcAppbmRleCBiMTBlMTgwLi41YTgz
Nzc1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3RyaW5nLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMyc3RyaW5nLmNwcApAQCAtNzgsNyArNzgsNyBAQCBz
dGF0aWMgVVN0cmluZyBlc2NhcGVTdHJpbmdGb3JQcmV0dHlQcmludGluZyhjb25zdCBVU3RyaW5n
JiBzKQogICAgIFVTdHJpbmcgZXNjYXBlZFN0cmluZzsKIAogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcy5zaXplKCk7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBzaG9ydCBjID0gcy5kYXRhKClb
aV0udW5pY29kZSgpOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBjID0gcy5kYXRhKClbaV07CiAg
ICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICAgICAgY2FzZSAnXCInOgogICAgICAgICAgICAg
ICAgIGVzY2FwZWRTdHJpbmcgKz0gIlxcXCIiOwpAQCAtMTU5LDcgKzE1OSw4IEBAIFNvdXJjZVN0
cmVhbSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KGNoYXIgYykKIHsKICAgICBtX251bWJlck5l
ZWRzUGFyZW5zID0gZmFsc2U7CiAgICAgbV9hdFN0YXJ0T2ZTdGF0ZW1lbnQgPSBmYWxzZTsKLSAg
ICBVQ2hhciBjaChjKTsKKyAgICAvLyBzdGF0aWNfY2FzdCB0byB1bnNpZ25lZCBjaGFyIHRvIGF2
b2lkIGVycm9uZW91cyBzaWduLWV4dGVuZAorICAgIFVDaGFyIGNoKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KGMpKTsKICAgICBtX3N0cmluZy5hcHBlbmQoY2gpOwogICAgIHJldHVybiAqdGhp
czsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcCBi
L0phdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcAppbmRleCAzNDc4ZjVlLi5lNjI2
NTU1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVjdC5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3QuY3BwCkBAIC0yNTEsNyArMjUxLDcg
QEAgc3RhdGljIGlubGluZSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNrcmVmZXJlbmNlcyhjb25zdCBV
U3RyaW5nICZyZXBsYWNlbWVudCwgY29uc3QKICAgICBpZiAoaSsxID09IHN1YnN0aXR1dGVkUmVw
bGFjZW1lbnQuc2l6ZSgpKQogICAgICAgICBicmVhazsKIAotICAgIHVuc2lnbmVkIHNob3J0IHJl
ZiA9IHN1YnN0aXR1dGVkUmVwbGFjZW1lbnRbaSsxXS51bmljb2RlKCk7CisgICAgdW5zaWduZWQg
c2hvcnQgcmVmID0gc3Vic3RpdHV0ZWRSZXBsYWNlbWVudFtpKzFdOwogICAgIGludCBiYWNrcmVm
U3RhcnQgPSAwOwogICAgIGludCBiYWNrcmVmTGVuZ3RoID0gMDsKICAgICBpbnQgYWR2YW5jZSA9
IDA7CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIGlubGluZSBVU3RyaW5nIHN1YnN0aXR1dGVC
YWNrcmVmZXJlbmNlcyhjb25zdCBVU3RyaW5nICZyZXBsYWNlbWVudCwgY29uc3QKICAgICAgICAg
aWYgKGJhY2tyZWZJbmRleCA+IHJlZy0+bnVtU3VicGF0dGVybnMoKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICBpZiAoc3Vic3RpdHV0ZWRSZXBsYWNlbWVudC5zaXplKCkgPiBpICsg
MikgewotICAgICAgICAgICAgcmVmID0gc3Vic3RpdHV0ZWRSZXBsYWNlbWVudFtpKzJdLnVuaWNv
ZGUoKTsKKyAgICAgICAgICAgIHJlZiA9IHN1YnN0aXR1dGVkUmVwbGFjZW1lbnRbaSsyXTsKICAg
ICAgICAgICAgIGlmIChyZWYgPj0gJzAnICYmIHJlZiA8PSAnOScpIHsKICAgICAgICAgICAgICAg
ICBiYWNrcmVmSW5kZXggPSAxMCAqIGJhY2tyZWZJbmRleCArIHJlZiAtICcwJzsKICAgICAgICAg
ICAgICAgICBpZiAoYmFja3JlZkluZGV4ID4gcmVnLT5udW1TdWJwYXR0ZXJucygpKQpAQCAtNDcy
LDcgKzQ3Miw3IEBAIEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzCiAgICAgSlNWYWx1ZSogYTAgPSBh
cmdzWzBdOwogICAgIGRvdWJsZSBkcG9zID0gYTAtPnRvSW50ZWdlcihleGVjKTsKICAgICBpZiAo
ZHBvcyA+PSAwICYmIGRwb3MgPCBsZW4pCi0gICAgICByZXN1bHQgPSBqc051bWJlcihzW3N0YXRp
Y19jYXN0PGludD4oZHBvcyldLnVuaWNvZGUoKSk7CisgICAgICByZXN1bHQgPSBqc051bWJlcihz
W3N0YXRpY19jYXN0PGludD4oZHBvcyldKTsKICAgICBlbHNlCiAgICAgICByZXN1bHQgPSBqc05h
TigpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC04MDAsNyArODAwLDcgQEAgSlNWYWx1ZSogc3Ry
aW5nUHJvdG9GdW5jVG9Mb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09i
aiwgY29uc3QgTGkKICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSBzc2l6ZSAmJiBtZW1jbXAoYnVm
ZmVyLmRhdGEoKSwgcy5kYXRhKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpID09IDApCiAgICAg
ICAgIHJldHVybiBzVmFsOwotICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8VUNoYXIqPihidWZmZXIucmVsZWFzZUJ1ZmZlcigpKSwgbGVuZ3RoLCBmYWxzZSkpOwor
ICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKGJ1ZmZlci5yZWxlYXNlQnVmZmVyKCksIGxlbmd0
aCwgZmFsc2UpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYpCkBAIC04MjUsNyAr
ODI1LDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGkKICAgICB9CiAgICAgaWYgKGxlbmd0aCA9
PSBzc2l6ZSAmJiBtZW1jbXAoYnVmZmVyLmRhdGEoKSwgcy5kYXRhKCksIGxlbmd0aCAqIHNpemVv
ZihVQ2hhcikpID09IDApCiAgICAgICAgIHJldHVybiBzVmFsOwotICAgIHJldHVybiBqc1N0cmlu
ZyhVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIucmVsZWFzZUJ1ZmZlcigp
KSwgbGVuZ3RoLCBmYWxzZSkpOworICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKGJ1ZmZlci5y
ZWxlYXNlQnVmZmVyKCksIGxlbmd0aCwgZmFsc2UpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJv
dG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09i
aiwgY29uc3QgTGlzdCYpCkBAIC04NTEsNyArODUxLDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9G
dW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwg
Y28KICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSBzc2l6ZSAmJiBtZW1jbXAoYnVmZmVyLmRhdGEo
KSwgcy5kYXRhKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpID09IDApCiAgICAgICAgIHJldHVy
biBzVmFsOwotICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNo
YXIqPihidWZmZXIucmVsZWFzZUJ1ZmZlcigpKSwgbGVuZ3RoLCBmYWxzZSkpOworICAgIHJldHVy
biBqc1N0cmluZyhVU3RyaW5nKGJ1ZmZlci5yZWxlYXNlQnVmZmVyKCksIGxlbmd0aCwgZmFsc2Up
KTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY29uc3QgTGlzdCYpCkBAIC04NzYsNyArODc2
LDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVVcHBlckNhc2UoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgY28KICAgICB9CiAgICAgaWYgKGxlbmd0aCA9PSBz
c2l6ZSAmJiBtZW1jbXAoYnVmZmVyLmRhdGEoKSwgcy5kYXRhKCksIGxlbmd0aCAqIHNpemVvZihV
Q2hhcikpID09IDApCiAgICAgICAgIHJldHVybiBzVmFsOwotICAgIHJldHVybiBqc1N0cmluZyhV
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIucmVsZWFzZUJ1ZmZlcigpKSwg
bGVuZ3RoLCBmYWxzZSkpOworICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKGJ1ZmZlci5yZWxl
YXNlQnVmZmVyKCksIGxlbmd0aCwgZmFsc2UpKTsKIH0KIAogSlNWYWx1ZSogc3RyaW5nUHJvdG9G
dW5jTG9jYWxlQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25z
dCBMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3Bw
IGIvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwCmluZGV4IGI2NThhOGQuLmUxYjZmYmIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9ranMvdXN0cmluZy5jcHAKQEAgLTE2Myw5ICsxNjMsOSBAQCBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ1N0cmluZyYgYzEsIGNvbnN0IENTdHJpbmcmIGMyKQogfQogCiAvLyBIYWNrIGhl
cmUgdG8gYXZvaWQgYSBnbG9iYWwgd2l0aCBhIGNvbnN0cnVjdG9yOyBwb2ludCB0byBhbiB1bnNp
Z25lZCBzaG9ydCBpbnN0ZWFkIG9mIGEgVUNoYXIuCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgYWxt
b3N0VUNoYXI7CitzdGF0aWMgVUNoYXIgc2hhcmVkRW1wdHlDaGFyOwogVVN0cmluZzo6UmVwIFVT
dHJpbmc6OlJlcDo6bnVsbCA9IHsgMCwgMCwgMSwgMCwgMCwgJlVTdHJpbmc6OlJlcDo6bnVsbCwg
MCwgMCwgMCwgMCwgMCwgMCB9OwotVVN0cmluZzo6UmVwIFVTdHJpbmc6OlJlcDo6ZW1wdHkgPSB7
IDAsIDAsIDEsIDAsIDAsICZVU3RyaW5nOjpSZXA6OmVtcHR5LCAwLCByZWludGVycHJldF9jYXN0
PFVDaGFyKj4oJmFsbW9zdFVDaGFyKSwgMCwgMCwgMCwgMCB9OworVVN0cmluZzo6UmVwIFVTdHJp
bmc6OlJlcDo6ZW1wdHkgPSB7IDAsIDAsIDEsIDAsIDAsICZVU3RyaW5nOjpSZXA6OmVtcHR5LCAw
LCAmc2hhcmVkRW1wdHlDaGFyLCAwLCAwLCAwLCAwIH07CiBjb25zdCBpbnQgbm9ybWFsU3RhdEJ1
ZmZlclNpemUgPSA0MDk2Owogc3RhdGljIGNoYXIgKnN0YXRCdWZmZXIgPSAwOyAvLyBGSVhNRTog
VGhpcyBidWZmZXIgaXMgbmV2ZXIgZGVhbGxvY2F0ZWQuCiBzdGF0aWMgaW50IHN0YXRCdWZmZXJT
aXplID0gMDsKQEAgLTI2NCw4ICsyNjQsOCBAQCB1bnNpZ25lZCBVU3RyaW5nOjpSZXA6OmNvbXB1
dGVIYXNoKGNvbnN0IFVDaGFyICpzLCBpbnQgbGVuKQogCiAgIC8vIE1haW4gbG9vcAogICBmb3Ig
KDsgbCA+IDA7IGwtLSkgewotICAgIGhhc2ggKz0gc1swXS51YzsKLSAgICB0bXAgPSAoc1sxXS51
YyA8PCAxMSkgXiBoYXNoOworICAgIGhhc2ggKz0gc1swXTsKKyAgICB0bXAgPSAoc1sxXSA8PCAx
MSkgXiBoYXNoOwogICAgIGhhc2ggPSAoaGFzaCA8PCAxNikgXiB0bXA7CiAgICAgcyArPSAyOwog
ICAgIGhhc2ggKz0gaGFzaCA+PiAxMTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB1bnNpZ25lZCBVU3Ry
aW5nOjpSZXA6OmNvbXB1dGVIYXNoKGNvbnN0IFVDaGFyICpzLCBpbnQgbGVuKQogCiAgIC8vIEhh
bmRsZSBlbmQgY2FzZQogICBpZiAocmVtKSB7Ci0gICAgaGFzaCArPSBzWzBdLnVjOworICAgIGhh
c2ggKz0gc1swXTsKICAgICBoYXNoIF49IGhhc2ggPDwgMTE7CiAgICAgaGFzaCArPSBoYXNoID4+
IDE3OwogICB9CkBAIC00MjksNyArNDI5LDcgQEAgVVN0cmluZzo6VVN0cmluZyhjb25zdCBjaGFy
ICpjKQogICAgICAgbV9yZXAgPSAmUmVwOjpudWxsOwogICBlbHNlIHsKICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgICAgICAgZFtpXS51YyA9IGNbaV07Cisg
ICAgICAgICAgZFtpXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNbaV0pOyAvLyBzdGF0
aWNfY2FzdCB0byB1bnNpZ25lZCBjaGFyIHRvIGF2b2lkIGVycm9uZW91cyBzaWduLWV4dGVuZAog
ICAgICAgbV9yZXAgPSBSZXA6OmNyZWF0ZShkLCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCkpOwog
ICB9CiB9CkBAIC03NzMsNyArNzczLDcgQEAgVVN0cmluZyAmVVN0cmluZzo6YXBwZW5kKGNvbnN0
IGNoYXIgKnQpCiAgICAgVUNoYXIgKmQgPSBjb25zdF9jYXN0PFVDaGFyICo+KGRhdGEoKSk7CiAg
ICAgaWYgKGQpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0U2l6ZTsgKytpKQotICAg
ICAgICAgICAgZFt0aGlzU2l6ZSArIGldID0gdFtpXTsKKyAgICAgICAgICAgIGRbdGhpc1NpemUg
KyBpXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRbaV0pOyAvLyBzdGF0aWNfY2FzdCB0
byB1bnNpZ25lZCBjaGFyIHRvIGF2b2lkIGVycm9uZW91cyBzaWduLWV4dGVuZAogICAgICAgICBt
X3JlcC0+bGVuID0gbGVuZ3RoOwogICAgICAgICBtX3JlcC0+X2hhc2ggPSAwOwogICAgIH0KQEAg
LTc4Myw3ICs3ODMsNyBAQCBVU3RyaW5nICZVU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciAqdCkK
ICAgICBVQ2hhciAqZCA9IGNvbnN0X2Nhc3Q8VUNoYXIgKj4oZGF0YSgpKTsKICAgICBpZiAoZCkg
ewogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRTaXplOyArK2kpCi0gICAgICAgICAgICBk
W3RoaXNTaXplICsgaV0gPSB0W2ldOworICAgICAgICAgICAgZFt0aGlzU2l6ZSArIGldID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odFtpXSk7IC8vIHN0YXRpY19jYXN0IHRvIHVuc2lnbmVk
IGNoYXIgdG8gYXZvaWQgZXJyb25lb3VzIHNpZ24tZXh0ZW5kCiAgICAgICAgIG1fcmVwID0gUmVw
OjpjcmVhdGUobV9yZXAsIDAsIGxlbmd0aCk7CiAgICAgfQogICB9IGVsc2UgewpAQCAtNzk1LDcg
Kzc5NSw3IEBAIFVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFyICp0KQogICAgIGVs
c2UgewogICAgICAgICBtZW1jcHkoZCwgZGF0YSgpLCB0aGlzU2l6ZSAqIHNpemVvZihVQ2hhcikp
OwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRTaXplOyArK2kpCi0gICAgICAgICAgICBk
W3RoaXNTaXplICsgaV0gPSB0W2ldOworICAgICAgICAgICAgZFt0aGlzU2l6ZSArIGldID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odFtpXSk7IC8vIHN0YXRpY19jYXN0IHRvIHVuc2lnbmVk
IGNoYXIgdG8gYXZvaWQgZXJyb25lb3VzIHNpZ24tZXh0ZW5kCiAgICAgICAgIG1fcmVwID0gUmVw
OjpjcmVhdGUoZCwgbGVuZ3RoKTsKICAgICAgICAgbV9yZXAtPmNhcGFjaXR5ID0gbmV3Q2FwYWNp
dHk7CiAgICAgfQpAQCAtODc5LDcgKzg3OSw3IEBAIGNoYXIgKlVTdHJpbmc6OmFzY2lpKCkgY29u
c3QKICAgY2hhciAqcSA9IHN0YXRCdWZmZXI7CiAgIGNvbnN0IFVDaGFyICpsaW1pdCA9IHAgKyBs
ZW5ndGg7CiAgIHdoaWxlIChwICE9IGxpbWl0KSB7Ci0gICAgKnEgPSBzdGF0aWNfY2FzdDxjaGFy
PihwLT51Yyk7CisgICAgKnEgPSBzdGF0aWNfY2FzdDxjaGFyPihwWzBdKTsKICAgICArK3A7CiAg
ICAgKytxOwogICB9CkBAIC05MTUsNyArOTE1LDcgQEAgVVN0cmluZyAmVVN0cmluZzo6b3BlcmF0
b3I9KGNvbnN0IGNoYXIgKmMpCiAgICAgbV9yZXAgPSBSZXA6OmNyZWF0ZShkLCBsKTsKICAgfQog
ICBmb3IgKGludCBpID0gMDsgaSA8IGw7IGkrKykKLSAgICBkW2ldLnVjID0gY1tpXTsKKyAgICBk
W2ldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY1tpXSk7IC8vIHN0YXRpY19jYXN0IHRv
IHVuc2lnbmVkIGNoYXIgdG8gYXZvaWQgZXJyb25lb3VzIHNpZ24tZXh0ZW5kCiAKICAgcmV0dXJu
ICp0aGlzOwogfQpAQCAtOTI1LDcgKzkyNSw3IEBAIGJvb2wgVVN0cmluZzo6aXM4Qml0KCkgY29u
c3QKICAgY29uc3QgVUNoYXIgKnUgPSBkYXRhKCk7CiAgIGNvbnN0IFVDaGFyICpsaW1pdCA9IHUg
KyBzaXplKCk7CiAgIHdoaWxlICh1IDwgbGltaXQpIHsKLSAgICBpZiAodS0+dWMgPiAweEZGKQor
ICAgIGlmICh1WzBdID4gMHhGRikKICAgICAgIHJldHVybiBmYWxzZTsKICAgICArK3U7CiAgIH0K
QEAgLTEwNjgsNyArMTA2OCw3IEBAIHVpbnQzMl90IFVTdHJpbmc6OnRvU3RyaWN0VUludDMyKGJv
b2wgKm9rKSBjb25zdAogICBpZiAobGVuID09IDApCiAgICAgcmV0dXJuIDA7CiAgIGNvbnN0IFVD
aGFyICpwID0gbV9yZXAtPmRhdGEoKTsKLSAgdW5zaWduZWQgc2hvcnQgYyA9IHAtPnVuaWNvZGUo
KTsKKyAgdW5zaWduZWQgc2hvcnQgYyA9IHBbMF07CiAKICAgLy8gSWYgdGhlIGZpcnN0IGRpZ2l0
IGlzIDAsIG9ubHkgMCBpdHNlbGYgaXMgT0suCiAgIGlmIChjID09ICcwJykgewpAQCAtMTEwNCw3
ICsxMTA0LDcgQEAgdWludDMyX3QgVVN0cmluZzo6dG9TdHJpY3RVSW50MzIoYm9vbCAqb2spIGNv
bnN0CiAgICAgfQogICAgIAogICAgIC8vIEdldCBuZXh0IGNoYXJhY3Rlci4KLSAgICBjID0gKCsr
cCktPnVuaWNvZGUoKTsKKyAgICBjID0gKigrK3ApOwogICB9CiB9CiAKQEAgLTExMjEsMTAgKzEx
MjEsMTAgQEAgaW50IFVTdHJpbmc6OmZpbmQoY29uc3QgVVN0cmluZyAmZiwgaW50IHBvcykgY29u
c3QKICAgY29uc3QgVUNoYXIgKmVuZCA9IGRhdGEoKSArIHN6IC0gZnN6OwogICBpbnQgZnNpemVt
aW51c29uZSA9IChmc3ogLSAxKSAqIHNpemVvZihVQ2hhcik7CiAgIGNvbnN0IFVDaGFyICpmZGF0
YSA9IGYuZGF0YSgpOwotICB1bnNpZ25lZCBzaG9ydCBmY2hhciA9IGZkYXRhLT51YzsKKyAgdW5z
aWduZWQgc2hvcnQgZmNoYXIgPSBmZGF0YVswXTsKICAgKytmZGF0YTsKICAgZm9yIChjb25zdCBV
Q2hhciAqYyA9IGRhdGEoKSArIHBvczsgYyA8PSBlbmQ7IGMrKykKLSAgICBpZiAoYy0+dWMgPT0g
ZmNoYXIgJiYgIW1lbWNtcChjICsgMSwgZmRhdGEsIGZzaXplbWludXNvbmUpKQorICAgIGlmIChj
WzBdID09IGZjaGFyICYmICFtZW1jbXAoYyArIDEsIGZkYXRhLCBmc2l6ZW1pbnVzb25lKSkKICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGMgLSBkYXRhKCkpOwogCiAgIHJldHVybiAtMTsK
QEAgLTEyMTUsNyArMTIxNSw3IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVU3RyaW5nJiBzMSwg
Y29uc3QgY2hhciAqczIpCiAgIGNvbnN0IFVDaGFyICp1ID0gczEuZGF0YSgpOwogICBjb25zdCBV
Q2hhciAqdWVuZCA9IHUgKyBzMS5zaXplKCk7CiAgIHdoaWxlICh1ICE9IHVlbmQgJiYgKnMyKSB7
Ci0gICAgaWYgKHUtPnVjICE9ICh1bnNpZ25lZCBjaGFyKSpzMikKKyAgICBpZiAodVswXSAhPSAo
dW5zaWduZWQgY2hhcikqczIpCiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgczIrKzsKICAgICB1
Kys7CkBAIC0xMjM4LDcgKzEyMzgsNyBAQCBib29sIG9wZXJhdG9yPChjb25zdCBVU3RyaW5nJiBz
MSwgY29uc3QgVVN0cmluZyYgczIpCiAgICAgbCsrOwogICB9CiAgIGlmIChsIDwgbG1pbikKLSAg
ICByZXR1cm4gKGMxLT51YyA8IGMyLT51Yyk7CisgICAgcmV0dXJuIChjMVswXSA8IGMyWzBdKTsK
IAogICByZXR1cm4gKGwxIDwgbDIpOwogfQpAQCAtMTI1OCw3ICsxMjU4LDcgQEAgaW50IGNvbXBh
cmUoY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMyKQogICB9CiAKICAgaWYgKGwg
PCBsbWluKQotICAgIHJldHVybiAoYzEtPnVjID4gYzItPnVjKSA/IDEgOiAtMTsKKyAgICByZXR1
cm4gKGMxWzBdID4gYzJbMF0pID8gMSA6IC0xOwogCiAgIGlmIChsMSA9PSBsMikKICAgICByZXR1
cm4gMDsKQEAgLTEyNzQsNyArMTI3NCw3IEBAIENTdHJpbmcgVVN0cmluZzo6VVRGOFN0cmluZyhi
b29sIHN0cmljdCkgY29uc3QKIAogICAvLyBDb252ZXJ0IHRvIHJ1bnMgb2YgOC1iaXQgY2hhcmFj
dGVycy4KICAgY2hhciogcCA9IGJ1ZmZlci5kYXRhKCk7Ci0gIGNvbnN0IDo6VUNoYXIqIGQgPSBy
ZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPigmZGF0YSgpLT51Yyk7CisgIGNvbnN0IDo6
VUNoYXIqIGQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPigmZGF0YSgpWzBdKTsK
ICAgQ29udmVyc2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0VVRGMTZUb1VURjgoJmQsIGQgKyBs
ZW5ndGgsICZwLCBwICsgYnVmZmVyLnNpemUoKSwgc3RyaWN0KTsKICAgaWYgKHJlc3VsdCAhPSBj
b252ZXJzaW9uT0spCiAgICAgcmV0dXJuIENTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2tqcy91c3RyaW5nLmggYi9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCmluZGV4
IDdmYWE4NmEuLmJjYTk5NDggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5n
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaApAQCAtMzAsMTYgKzMwLDkgQEAK
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLS8qIE9uIHNvbWUgQVJNIHBsYXRmb3JtcyBH
Q0Mgd29uJ3QgcGFjayBzdHJ1Y3R1cmVzIGJ5IGRlZmF1bHQgc28gc2l6ZW9mKFVDaGFyKQotICAg
d2lsbCBlbmQgdXAgYmVpbmcgIT0gMiB3aGljaCBjYXVzZXMgY3Jhc2hlcyBzaW5jZSB0aGUgY29k
ZSBkZXBlbmRzIG9uIHRoYXQuICovCi0jaWYgQ09NUElMRVIoR0NDKSAmJiBQTEFURk9STShGT1JD
RV9QQUNLKQotI2RlZmluZSBQQUNLX1NUUlVDVCBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQotI2Vs
c2UKLSNkZWZpbmUgUEFDS19TVFJVQ1QKLSNlbmRpZgotCiAvKioKICAqIEBpbnRlcm5hbAogICov
CkBAIC01NSw1NCArNDgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgdXNpbmcgV1RGOjpQbGFjZW1l
bnROZXdBZG9wdDsKIAogICBjbGFzcyBVU3RyaW5nOwotCi0gIC8qKgotICAgKiBAc2hvcnQgVW5p
Y29kZSBjaGFyYWN0ZXIuCi0gICAqCi0gICAqIFVDaGFyIHJlcHJlc2VudHMgYSAxNiBiaXQgVW5p
Y29kZSBjaGFyYWN0ZXIuIEl0J3MgaW50ZXJuYWwgZGF0YQotICAgKiByZXByZXNlbnRhdGlvbiBp
cyBjb21wYXRpYmxlIHRvIFhDaGFyMmIgYW5kIFFDaGFyLiBJdCdzIHRoZXJlZm9yZQotICAgKiBw
b3NzaWJsZSB0byBleGNoYW5nZSBkYXRhIHdpdGggWCBhbmQgUXQgd2l0aCBzaGFsbG93IGNvcGll
cy4KLSAgICovCi0gIHN0cnVjdCBVQ2hhciB7Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0IGEg
Y2hhcmFjdGVyIHdpdGggdW5pbml0aWFsaXplZCB2YWx1ZS4gICAgCi0gICAgICovCi0gICAgVUNo
YXIoKTsKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3QgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgdmFs
dWUgZGVub3RlZCBieSB0aGUgYXJndW1lbnRzLgotICAgICAqIEBwYXJhbSBoIGhpZ2hlciBieXRl
Ci0gICAgICogQHBhcmFtIGwgbG93ZXIgYnl0ZQotICAgICAqLwotICAgIFVDaGFyKHVuc2lnbmVk
IGNoYXIgaCAsIHVuc2lnbmVkIGNoYXIgbCk7Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0IGEg
Y2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLgotICAgICAqIEBwYXJhbSB1IDE2IGJpdCBV
bmljb2RlIHZhbHVlCi0gICAgICovCi0gICAgVUNoYXIoY2hhciB1KTsKLSAgICBVQ2hhcih1bnNp
Z25lZCBjaGFyIHUpOwotICAgIFVDaGFyKHVuc2lnbmVkIHNob3J0IHUpOwotICAgIC8qKgotICAg
ICAqIEByZXR1cm4gVGhlIGhpZ2hlciBieXRlIG9mIHRoZSBjaGFyYWN0ZXIuCi0gICAgICovCi0g
ICAgdW5zaWduZWQgY2hhciBoaWdoKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4odWMgPj4gOCk7IH0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFRoZSBsb3dlciBi
eXRlIG9mIHRoZSBjaGFyYWN0ZXIuCi0gICAgICovCi0gICAgdW5zaWduZWQgY2hhciBsb3coKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih1Yyk7IH0KLSAgICAvKioK
LSAgICAgKiBAcmV0dXJuIHRoZSAxNiBiaXQgVW5pY29kZSB2YWx1ZSBvZiB0aGUgY2hhcmFjdGVy
Ci0gICAgICovCi0gICAgdW5zaWduZWQgc2hvcnQgdW5pY29kZSgpIGNvbnN0IHsgcmV0dXJuIHVj
OyB9Ci0KLSAgICB1bnNpZ25lZCBzaG9ydCB1YzsKLSAgfSBQQUNLX1NUUlVDVDsKLQotICBpbmxp
bmUgVUNoYXI6OlVDaGFyKCkgeyB9Ci0gIGlubGluZSBVQ2hhcjo6VUNoYXIodW5zaWduZWQgY2hh
ciBoICwgdW5zaWduZWQgY2hhciBsKSA6IHVjKGggPDwgOCB8IGwpIHsgfQotICBpbmxpbmUgVUNo
YXI6OlVDaGFyKGNoYXIgdSkgOiB1YygodW5zaWduZWQgY2hhcil1KSB7IH0KLSAgaW5saW5lIFVD
aGFyOjpVQ2hhcih1bnNpZ25lZCBjaGFyIHUpIDogdWModSkgeyB9Ci0gIGlubGluZSBVQ2hhcjo6
VUNoYXIodW5zaWduZWQgc2hvcnQgdSkgOiB1Yyh1KSB7IH0KLQorICAKICAgLyoqCiAgICAqIEBz
aG9ydCA4IGJpdCBjaGFyIGJhc2VkIHN0cmluZyBjbGFzcwogICAgKi8KQEAgLTI2Niw3ICsyMTIs
NiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBVU3RyaW5nICZhcHBlbmQoY29uc3QgY2hhciAqKTsK
ICAgICBVU3RyaW5nICZhcHBlbmQodW5zaWduZWQgc2hvcnQpOwogICAgIFVTdHJpbmcgJmFwcGVu
ZChjaGFyIGMpIHsgcmV0dXJuIGFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYykpKTsgfQotICAgIFVTdHJpbmcgJmFwcGVuZChVQ2hh
ciBjKSB7IHJldHVybiBhcHBlbmQoYy51Yyk7IH0KIAogICAgIC8qKgogICAgICAqIEByZXR1cm4g
VGhlIHN0cmluZyBjb252ZXJ0ZWQgdG8gdGhlIDgtYml0IHN0cmluZyB0eXBlIENTdHJpbmcoKS4K
QEAgLTQwMyw5ICszNDgsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBSZWZQdHI8UmVwPiBtX3Jl
cDsKICAgfTsKIAotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVDaGFyICZjMSwgY29u
c3QgVUNoYXIgJmMyKSB7Ci0gICAgcmV0dXJuIChjMS51YyA9PSBjMi51Yyk7Ci0gIH0KICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7CiAgIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMy
KSB7CiAgICAgcmV0dXJuICFLSlM6Om9wZXJhdG9yPT0oczEsIHMyKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pz
X3Byb3h5LmNwcAppbmRleCA2OTI1ZTE4Li5iYjlmNzUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19wcm94eS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfcHJv
eHkuY3BwCkBAIC04NCw3ICs4NCw3IEBAIEpTVmFsdWUqIEtKU1Byb3h5OjpldmFsdWF0ZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYKICAgICBKU1Zh
bHVlKiB0aGlzTm9kZSA9IFdpbmRvdzo6cmV0cmlldmUobV9mcmFtZSk7CiAgIAogICAgIG1fZ2xv
YmFsT2JqZWN0LT5zdGFydFRpbWVvdXRDaGVjaygpOwotICAgIENvbXBsZXRpb24gY29tcCA9IElu
dGVycHJldGVyOjpldmFsdWF0ZShleGVjLCBmaWxlbmFtZSwgYmFzZUxpbmUsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgS0pTOjpVQ2hhcio+KHN0ci5jaGFyYWN0ZXJzKCkpLCBzdHIubGVuZ3RoKCks
IHRoaXNOb2RlKTsKKyAgICBDb21wbGV0aW9uIGNvbXAgPSBJbnRlcnByZXRlcjo6ZXZhbHVhdGUo
ZXhlYywgZmlsZW5hbWUsIGJhc2VMaW5lLCBzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCks
IHRoaXNOb2RlKTsKICAgICBtX2dsb2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygpOwogICAK
ICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwgfHwgY29tcC5jb21wbFR5cGUoKSA9
PSBSZXR1cm5WYWx1ZSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2lu
ZG93LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAKaW5kZXggMTNmYjNi
Zi4uMjZlNjIyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCkBAIC0xMDA2LDcgKzEw
MDYsNyBAQCBKU1ZhbHVlKiB3aW5kb3dQcm90b0Z1bmNBVG9CKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QmIGFyZwogCiAgICAgVmVjdG9yPGNoYXI+IGluKHMu
c2l6ZSgpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMuc2l6ZSgpOyArK2kpCi0gICAgICAg
IGluW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4ocy5kYXRhKClbaV0udW5pY29kZSgpKTsKKyAgICAg
ICAgaW5baV0gPSBzdGF0aWNfY2FzdDxjaGFyPihzLmRhdGEoKVtpXSk7CiAgICAgVmVjdG9yPGNo
YXI+IG91dDsKIAogICAgIGlmICghYmFzZTY0RGVjb2RlKGluLCBvdXQpKQpAQCAtMTAzNSw3ICsx
MDM1LDcgQEAgSlNWYWx1ZSogd2luZG93UHJvdG9GdW5jQlRvQShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0JiBhcmcKIAogICAgIFZlY3RvcjxjaGFyPiBpbihz
LnNpemUoKSk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLnNpemUoKTsgKytpKQotICAgICAg
ICBpbltpXSA9IHN0YXRpY19jYXN0PGNoYXI+KHMuZGF0YSgpW2ldLnVuaWNvZGUoKSk7CisgICAg
ICAgIGluW2ldID0gc3RhdGljX2Nhc3Q8Y2hhcj4ocy5kYXRhKClbaV0pOwogICAgIFZlY3Rvcjxj
aGFyPiBvdXQ7CiAKICAgICBiYXNlNjRFbmNvZGUoaW4sIG91dCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDE1
NjBhMy4uZWMyMjYzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjY3NSw3ICsyNjc1LDcgQEAgU3RyaW5nIERv
Y3VtZW50OjpsYXN0TW9kaWZpZWQoKSBjb25zdAogCiBib29sIERvY3VtZW50Ojppc1ZhbGlkTmFt
ZShjb25zdCBTdHJpbmcgJm5hbWUpCiB7Ci0gICAgY29uc3QgVUNoYXIqIHMgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IFVDaGFyKj4obmFtZS5jaGFyYWN0ZXJzKCkpOworICAgIGNvbnN0IFVDaGFy
KiBzID0gbmFtZS5jaGFyYWN0ZXJzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5n
dGgoKTsKIAogICAgIGlmIChsZW5ndGggPT0gMCkKQEAgLTI3MDgsNyArMjcwOCw3IEBAIGJvb2wg
RG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShjb25zdCBTdHJpbmcgJnF1YWxpZmllZE5hbWUs
IFN0cmluZyAmcHJlZml4LCBTCiAgICAgYm9vbCBzYXdDb2xvbiA9IGZhbHNlOwogICAgIGludCBj
b2xvblBvcyA9IDA7CiAKLSAgICBjb25zdCBVQ2hhciogcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUNoYXIqPihxdWFsaWZpZWROYW1lLmNoYXJhY3RlcnMoKSk7CisgICAgY29uc3QgVUNoYXIq
IHMgPSBxdWFsaWZpZWROYW1lLmNoYXJhY3RlcnMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOykgewogICAgICAgICBVQ2hhcjMyIGM7CiAgICAgICAgIFUxNl9ORVhUKHMs
IGksIGxlbmd0aCwgYykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggZTM0NmY1Yi4uNzI0
OTdjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTMwOCw3ICszMDgsNyBAQCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBIVE1MRm9ybUVsZW1lbnQ6OmZvcm1EYXRhKGNvbnN0IGNoYXIqIGJv
dW5kYXJ5KSBjb25zdAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpbmdzIGlmIHRoZSBm
aWxlbmFtZSBpbmNsdWRlcyBjaGFyYWN0ZXJzIHlvdSBjYW4ndCBlbmNvZGUKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGluIHRoZSB3ZWJzaXRlJ3MgY2hhcmFjdGVyIHNldC4KICAgICAgICAg
ICAgICAgICAgICAgICAgIGhzdHIgKz0gIjsgZmlsZW5hbWU9XCIiOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaHN0ciArPSBlbmNvZGluZy5lbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
Q2hhcio+KGZpbGVuYW1lLmNoYXJhY3RlcnMoKSksIGZpbGVuYW1lLmxlbmd0aCgpLCB0cnVlKS5k
YXRhKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBoc3RyICs9IGVuY29kaW5nLmVuY29kZShm
aWxlbmFtZS5jaGFyYWN0ZXJzKCksIGZpbGVuYW1lLmxlbmd0aCgpLCB0cnVlKS5kYXRhKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBoc3RyICs9ICJcIiI7CiAKICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGN1cnJlbnQpLT52YWx1
ZSgpLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVk
U3RyaW5nLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHAKaW5kZXgg
MzY1NjIyNC4uYzk5MzFmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9EZXByZWNhdGVk
U3RyaW5nLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3BwCkBA
IC0yNjQ2LDE0ICsyNjQ2LDE0IEBAIERlcHJlY2F0ZWRTdHJpbmc6Om9wZXJhdG9yIElkZW50aWZp
ZXIoKSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIElkZW50aWZp
ZXIoKTsKLSAgICByZXR1cm4gSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6
VUNoYXIqPih1bmljb2RlKCkpLCBsZW5ndGgoKSk7CisgICAgcmV0dXJuIElkZW50aWZpZXIocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHVuaWNvZGUoKSksIGxlbmd0aCgpKTsKIH0KIAog
RGVwcmVjYXRlZFN0cmluZzo6b3BlcmF0b3IgVVN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gVVN0cmluZygpOwotICAgIHJldHVybiBVU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgS0pTOjpVQ2hhcio+KHVuaWNvZGUoKSksIGxlbmd0aCgpKTsK
KyAgICByZXR1cm4gVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4odW5pY29k
ZSgpKSwgbGVuZ3RoKCkpOwogfQogCiBib29sIGVxdWFsSWdub3JpbmdDYXNlKGNvbnN0IERlcHJl
Y2F0ZWRTdHJpbmcmIGEsIGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIGIpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGM1ODRlNmMuLmI1ZGUzMWEgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC0xODQsMTIgKzE4NCwxMiBAQCB2b2lkIEF0
b21pY1N0cmluZzo6cmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiAKIFN0cmluZ0ltcGwqIEF0b21pY1N0
cmluZzo6YWRkKGNvbnN0IEtKUzo6SWRlbnRpZmllciYgc3RyKQogewotICAgIHJldHVybiBhZGQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ci5kYXRhKCkpLCBzdHIuc2l6ZSgpKTsK
KyAgICByZXR1cm4gYWRkKHN0ci5kYXRhKCksIHN0ci5zaXplKCkpOwogfQogCiBTdHJpbmdJbXBs
KiBBdG9taWNTdHJpbmc6OmFkZChjb25zdCBLSlM6OlVTdHJpbmcmIHN0cikKIHsKLSAgICByZXR1
cm4gYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdHIuZGF0YSgpKSwgc3RyLnNp
emUoKSk7CisgICAgcmV0dXJuIGFkZChzdHIuZGF0YSgpLCBzdHIuc2l6ZSgpKTsKIH0KIAogQXRv
bWljU3RyaW5nOjpvcGVyYXRvciBJZGVudGlmaWVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Zy5jcHAKaW5kZXggOTY3ZTdjOC4uMWY0ZjU4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1N0cmluZy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAK
QEAgLTU0NywyOCArNTQ3LDI4IEBAIFN0cmluZzo6U3RyaW5nKGNvbnN0IElkZW50aWZpZXImIHN0
cikKIHsKICAgICBpZiAoc3RyLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9pbXBs
ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzdHIu
ZGF0YSgpKSwgc3RyLnNpemUoKSk7CisgICAgbV9pbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHN0
ci5kYXRhKCksIHN0ci5zaXplKCkpOwogfQogCiBTdHJpbmc6OlN0cmluZyhjb25zdCBVU3RyaW5n
JiBzdHIpCiB7CiAgICAgaWYgKHN0ci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
aW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
c3RyLmRhdGEoKSksIHN0ci5zaXplKCkpOworICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0
ZShzdHIuZGF0YSgpLCBzdHIuc2l6ZSgpKTsKIH0KIAogU3RyaW5nOjpvcGVyYXRvciBJZGVudGlm
aWVyKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkKICAgICAgICAgcmV0dXJuIElkZW50aWZp
ZXIoKTsKLSAgICByZXR1cm4gSWRlbnRpZmllcihyZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6
VUNoYXIqPihtX2ltcGwtPmNoYXJhY3RlcnMoKSksIG1faW1wbC0+bGVuZ3RoKCkpOworICAgIHJl
dHVybiBJZGVudGlmaWVyKG1faW1wbC0+Y2hhcmFjdGVycygpLCBtX2ltcGwtPmxlbmd0aCgpKTsK
IH0KIAogU3RyaW5nOjpvcGVyYXRvciBVU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1w
bCkKICAgICAgICAgcmV0dXJuIFVTdHJpbmcoKTsKLSAgICByZXR1cm4gVVN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IEtKUzo6VUNoYXIqPihtX2ltcGwtPmNoYXJhY3RlcnMoKSksIG1faW1w
bC0+bGVuZ3RoKCkpOworICAgIHJldHVybiBVU3RyaW5nKG1faW1wbC0+Y2hhcmFjdGVycygpLCBt
X2ltcGwtPmxlbmd0aCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAppbmRleCA3ZTI5ZmMzLi43YjY4M2UwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIFN0cmlu
ZyBUZXh0Q29kZWNJQ1U6OmRlY29kZShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCwg
Ym9vbCBmbHVzaCkKICAgICAgICAgZXJyID0gVV9aRVJPX0VSUk9SOwogICAgICAgICB1Y252X3Rv
VW5pY29kZShtX2NvbnZlcnRlcklDVSwgJnRhcmdldCwgdGFyZ2V0TGltaXQsICZzb3VyY2UsIHNv
dXJjZUxpbWl0LCBvZmZzZXRzLCBmbHVzaCwgJmVycik7CiAgICAgICAgIGludCBjb3VudCA9IHRh
cmdldCAtIGJ1ZmZlcjsKLSAgICAgICAgYXBwZW5kT21pdHRpbmdCT00ocmVzdWx0LCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oYnVmZmVyKSwgY291bnQpOworICAgICAgICBhcHBlbmRP
bWl0dGluZ0JPTShyZXN1bHQsIGJ1ZmZlciwgY291bnQpOwogICAgIH0gd2hpbGUgKGVyciA9PSBV
X0JVRkZFUl9PVkVSRkxPV19FUlJPUik7CiAKICAgICBpZiAoVV9GQUlMVVJFKGVycikpIHsK
</data>
<flag name="review"
          id="8193"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19533</attachid>
            <date>2008-03-04 16:50:02 -0800</date>
            <delta_ts>2008-03-07 12:09:59 -0800</delta_ts>
            <desc>Fix patch to compile on TOT, change ::UChar -&gt; UChar</desc>
            <filename>Fix-patch-to-compile-on-TOT-change-UChar-UChar.patch</filename>
            <type>text/plain</type>
            <size>4509</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YWI5Y2JiNzcyYzgzODEzZTRiYTcyZTJhZTljNjU2NzgxOTljNWRmMgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmggYi9KYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJw
cmV0ZXIuaAppbmRleCA5YTgwNmU1Li41YjUyZDhjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ranMvaW50ZXJwcmV0ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIu
aApAQCAtMjMsNiArMjMsOCBAQAogI2lmbmRlZiBLSlNfSW50ZXJwcmV0ZXJfaAogI2RlZmluZSBL
SlNfSW50ZXJwcmV0ZXJfaAogCisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgorCiBu
YW1lc3BhY2UgS0pTIHsKIAogICBjbGFzcyBDb21wbGV0aW9uOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcGNyZS9wY3JlLmggYi9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaAppbmRleCAx
YmU0NTIzLi41NTA0NGZkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmUuaApAQCAtNTUsMTIgKzU1LDEyIEBAIGNvbnN0
IGludCBKU1JlZ0V4cEVycm9ySGl0TGltaXQgPSAtMjsKIGNvbnN0IGludCBKU1JlZ0V4cEVycm9y
Tm9NZW1vcnkgPSAtMzsKIGNvbnN0IGludCBKU1JlZ0V4cEVycm9ySW50ZXJuYWwgPSAtNDsKIAot
SlNSZWdFeHAqIGpzUmVnRXhwQ29tcGlsZShjb25zdCA6OlVDaGFyKiBwYXR0ZXJuLCBpbnQgcGF0
dGVybkxlbmd0aCwKK0pTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUoY29uc3QgVUNoYXIqIHBhdHRl
cm4sIGludCBwYXR0ZXJuTGVuZ3RoLAogICAgIEpTUmVnRXhwSWdub3JlQ2FzZU9wdGlvbiwgSlNS
ZWdFeHBNdWx0aWxpbmVPcHRpb24sCiAgICAgdW5zaWduZWQqIG51bVN1YnBhdHRlcm5zLCBjb25z
dCBjaGFyKiogZXJyb3JNZXNzYWdlKTsKIAogaW50IGpzUmVnRXhwRXhlY3V0ZShjb25zdCBKU1Jl
Z0V4cCosCi0gICAgY29uc3QgOjpVQ2hhciogc3ViamVjdCwgaW50IHN1YmplY3RMZW5ndGgsIGlu
dCBzdGFydE9mZnNldCwKKyAgICBjb25zdCBVQ2hhciogc3ViamVjdCwgaW50IHN1YmplY3RMZW5n
dGgsIGludCBzdGFydE9mZnNldCwKICAgICBpbnQqIG9mZnNldHNWZWN0b3IsIGludCBvZmZzZXRz
VmVjdG9yTGVuZ3RoKTsKIAogdm9pZCBqc1JlZ0V4cEZyZWUoSlNSZWdFeHAqKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRl
eCAwNzIzNDEwLi5mMDc5N2JiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
U3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgc3RhdGljIGJv
b2wgaGFzQ1NTUHJvcGVydHlOYW1lUHJlZml4KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgY29uc3QgY2hhcioKICAgICB1bnNpZ25lZCBsZW5ndGggPSBwcm9wZXJ0eU5hbWUuc2l6ZSgp
OwogICAgIEFTU0VSVChsZW5ndGgpOwogCi0gICAgaWYgKHRvQVNDSUlMb3dlcihwcm9wZXJ0eU5h
bWUuZGF0YSgpWzBdLnVuaWNvZGUoKSkgIT0gcHJlZml4WzBdKQorICAgIGlmICh0b0FTQ0lJTG93
ZXIocHJvcGVydHlOYW1lLmRhdGEoKVswXSkgIT0gcHJlZml4WzBdKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgaWYgKCFwcmVmaXhbaV0pCi0gICAgICAgICAgICByZXR1cm4gaXNBU0NJSVVwcGVyKHBy
b3BlcnR5TmFtZS5kYXRhKClbaV0udW5pY29kZSgpKTsKLSAgICAgICAgaWYgKHByb3BlcnR5TmFt
ZS5kYXRhKClbMF0udW5pY29kZSgpICE9IHByZWZpeFswXSkKKyAgICAgICAgICAgIHJldHVybiBp
c0FTQ0lJVXBwZXIocHJvcGVydHlOYW1lLmRhdGEoKVtpXSk7CisgICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUuZGF0YSgpWzBdICE9IHByZWZpeFswXSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgU3RyaW5n
IGNzc1Byb3BlcnR5TmFtZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvb2wqIGhh
ZFBpeGVsT3JQbwogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
LSAgICBWZWN0b3I8IDo6VUNoYXI+IG5hbWU7CisgICAgVmVjdG9yPFVDaGFyPiBuYW1lOwogICAg
IG5hbWUucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCk7CiAKICAgICB1bnNpZ25lZCBpID0gMDsKQEAg
LTk2LDEwICs5NiwxMCBAQCBzdGF0aWMgU3RyaW5nIGNzc1Byb3BlcnR5TmFtZShjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJvb2wqIGhhZFBpeGVsT3JQbwogICAgICAgICAgICAgfHwg
aGFzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikpCiAgICAgICAg
IG5hbWUuYXBwZW5kKCctJyk7CiAKLSAgICBuYW1lLmFwcGVuZCh0b0FTQ0lJTG93ZXIocHJvcGVy
dHlOYW1lLmRhdGEoKVtpKytdLnVuaWNvZGUoKSkpOworICAgIG5hbWUuYXBwZW5kKHRvQVNDSUlM
b3dlcihwcm9wZXJ0eU5hbWUuZGF0YSgpW2krK10pKTsKIAogICAgIGZvciAoOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgOjpVQ2hhciBjID0gcHJvcGVydHlOYW1lLmRhdGEoKVtpXS51bmlj
b2RlKCk7CisgICAgICAgIFVDaGFyIGMgPSBwcm9wZXJ0eU5hbWUuZGF0YSgpW2ldOwogICAgICAg
ICBpZiAoIWlzQVNDSUlVcHBlcihjKSkKICAgICAgICAgICAgIG5hbWUuYXBwZW5kKGMpOwogICAg
ICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RUeXBl
V3JhcHBlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVXcmFwcGVyLmgKaW5k
ZXggMTI3NTk1MC4uYjU4MzBmMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NW
R1BPRFR5cGVXcmFwcGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1BPRFR5cGVX
cmFwcGVyLmgKQEAgLTIwMyw3ICsyMDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlLCB0
eXBlbmFtZSBQT0RUeXBlQ3JlYXRvcj4KIHN0cnVjdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm9I
YXNoIHsKICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBQT0RUeXBlUmVhZFdyaXRlSGFz
aEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+JiBpbmZvKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKCg6OlVDaGFyKikgJmluZm8sIHNpemVvZihQT0RU
eXBlUmVhZFdyaXRlSGFzaEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+KSAvIHNpemVvZig6
OlVDaGFyKSk7CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVy
cHJldF9jYXN0PFVDaGFyKj4oJmluZm8pLCBzaXplb2YoUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZv
PFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPikgLyBzaXplb2YoVUNoYXIpKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm88UE9EVHlw
ZSwgUE9EVHlwZUNyZWF0b3I+JiBhLCBjb25zdCBQT0RUeXBlUmVhZFdyaXRlSGFzaEluZm88UE9E
VHlwZSwgUE9EVHlwZUNyZWF0b3I+JiBiKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRUZW1wbGF0ZS5oIGIvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCmluZGV4
IDlmMWI1MGIuLjA1ZWU1MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVt
cGxhdGUuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgKQEAgLTc0LDcg
Kzc0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0cnVjdCBTVkdBbmltYXRlZFR5cGVX
cmFwcGVyS2V5SGFzaCB7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNWR0Fu
aW1hdGVkVHlwZVdyYXBwZXJLZXkmIGtleSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKCg6OlVDaGFyKikgJmtleSwgc2l6ZW9mKFNWR0FuaW1h
dGVkVHlwZVdyYXBwZXJLZXkpIC8gc2l6ZW9mKDo6VUNoYXIpKTsKKyAgICAgICAgICAgIHJldHVy
biBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVDaGFyKj4oJmtleSks
IHNpemVvZihTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KSAvIHNpemVvZihVQ2hhcikpOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU1ZH
QW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgYSwgY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktl
eSYgYikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19534</attachid>
            <date>2008-03-04 16:50:05 -0800</date>
            <delta_ts>2008-03-07 12:10:27 -0800</delta_ts>
            <desc>Fix per darin&apos;s suggestions</desc>
            <filename>Fix-per-darin-s-suggestions.patch</filename>
            <type>text/plain</type>
            <size>16578</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">MzE4YjI5NDYzYzk2YzlhMjIyN2VhZDM4YzBhOWFlNzZlYjE2MTYyYQpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHkuY3BwIGIvSmF2YVNjcmlwdENvcmUvYmlu
ZGluZ3MvYy9jX3V0aWxpdHkuY3BwCmluZGV4IDZjZTRjMTkuLjQ1MDQ4YTcgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5jcHAKQEAgLTYwLDEyICs2MCwxMiBAQCBzdGF0aWMg
dm9pZCBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0aW4xRmFsbGJhY2soY29uc3QgTlBVVEY4KiBV
VEY4Q2hhcnMsIGludCBVVAogICAgIGNvbnN0IGNoYXIqIHNvdXJjZXN0YXJ0ID0gVVRGOENoYXJz
OwogICAgIGNvbnN0IGNoYXIqIHNvdXJjZWVuZCA9IHNvdXJjZXN0YXJ0ICsgVVRGOExlbmd0aDsK
IAotICAgIDo6VUNoYXIqIHRhcmdldHN0YXJ0ID0gcmVpbnRlcnByZXRfY2FzdDwgOjpVQ2hhcio+
KCpVVEYxNkNoYXJzKTsKLSAgICA6OlVDaGFyKiB0YXJnZXRlbmQgPSB0YXJnZXRzdGFydCArIFVU
RjhMZW5ndGg7CisgICAgVUNoYXIqIHRhcmdldHN0YXJ0ID0gcmVpbnRlcnByZXRfY2FzdDxVQ2hh
cio+KCpVVEYxNkNoYXJzKTsKKyAgICBVQ2hhciogdGFyZ2V0ZW5kID0gdGFyZ2V0c3RhcnQgKyBV
VEY4TGVuZ3RoOwogICAgIAogICAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVU
RjhUb1VURjE2KCZzb3VyY2VzdGFydCwgc291cmNlZW5kLCAmdGFyZ2V0c3RhcnQsIHRhcmdldGVu
ZCk7CiAgICAgCi0gICAgKlVURjE2TGVuZ3RoID0gdGFyZ2V0c3RhcnQgLSByZWludGVycHJldF9j
YXN0PCA6OlVDaGFyKj4oKlVURjE2Q2hhcnMpOworICAgICpVVEYxNkxlbmd0aCA9IHRhcmdldHN0
YXJ0IC0gcmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KCpVVEYxNkNoYXJzKTsKIAogICAgIC8vIENo
ZWNrIHRvIHNlZSBpZiB0aGUgY29udmVyc2lvbiB3YXMgc3VjY2Vzc2Z1bAogICAgIC8vIFNvbWUg
cGx1Z2lucyByZXR1cm4gaW52YWxpZCBVVEYtOCBpbiBOUFZhcmlhbnRUeXBlX1N0cmluZywgc2Vl
IDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTYzPgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9m
dW5jdGlvbi5jcHAKaW5kZXggOWM5OGE4MC4uOWM0MDQ5NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUva2pzL2Z1bmN0aW9uLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24u
Y3BwCkBAIC01NTgsNyArNTU4LDcgQEAgc3RhdGljIEpTVmFsdWUqIGRlY29kZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IExpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGRvX25vdF91bmUKICAgICAgICAg
ICB1ID0gTGV4ZXI6OmNvbnZlcnRVbmljb2RlKHBbMl0sIHBbM10sIHBbNF0sIHBbNV0pOwogICAg
ICAgICB9CiAgICAgICB9Ci0gICAgICBpZiAoY2hhckxlbiAmJiAodSA9PSAwIHx8IHUgPj0gMTI4
IHx8ICFzdHJjaHIoZG9fbm90X3VuZXNjYXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih1
KSkpKSB7CisgICAgICBpZiAoY2hhckxlbiAmJiAodSA9PSAwIHx8IHUgPj0gMTI4IHx8ICFzdHJj
aHIoZG9fbm90X3VuZXNjYXBlLCB1KSkpIHsKICAgICAgICAgYyA9IHU7CiAgICAgICAgIGsgKz0g
Y2hhckxlbiAtIDE7CiAgICAgICB9CkBAIC04NDIsMTQgKzg0MiwxNCBAQCBKU1ZhbHVlKiBnbG9i
YWxGdW5jVW5lc2NhcGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IExpc3QmIGFy
Z3MpCiAgICAgd2hpbGUgKGsgPCBsZW4pIHsKICAgICAgICAgY29uc3QgVUNoYXIqIGMgPSBzdHIu
ZGF0YSgpICsgazsKICAgICAgICAgVUNoYXIgdTsKLSAgICAgICAgaWYgKCpjID09IFVDaGFyKCcl
JykgJiYgayA8PSBsZW4gLSA2ICYmICooYyArIDEpID09IFVDaGFyKCd1JykpIHsKLSAgICAgICAg
ICAgIGlmIChMZXhlcjo6aXNIZXhEaWdpdCgoYyArIDIpWzBdKSAmJiBMZXhlcjo6aXNIZXhEaWdp
dCgoYyArIDMpWzBdKSAmJiBMZXhlcjo6aXNIZXhEaWdpdCgoYyArIDQpWzBdKSAmJiBMZXhlcjo6
aXNIZXhEaWdpdCgoYyArIDUpWzBdKSkgewotICAgICAgICAgICAgICAgIHUgPSBMZXhlcjo6Y29u
dmVydFVuaWNvZGUoKGMgKyAyKVswXSwgKGMgKyAzKVswXSwgKGMgKyA0KVswXSwgKGMgKyA1KVsw
XSk7CisgICAgICAgIGlmIChjWzBdID09ICclJyAmJiBrIDw9IGxlbiAtIDYgJiYgY1sxXSA9PSAn
dScpIHsKKyAgICAgICAgICAgIGlmIChMZXhlcjo6aXNIZXhEaWdpdChjWzJdKSAmJiBMZXhlcjo6
aXNIZXhEaWdpdChjWzNdKSAmJiBMZXhlcjo6aXNIZXhEaWdpdChjWzRdKSAmJiBMZXhlcjo6aXNI
ZXhEaWdpdChjWzVdKSkgeworICAgICAgICAgICAgICAgIHUgPSBMZXhlcjo6Y29udmVydFVuaWNv
ZGUoY1syXSwgY1szXSwgY1s0XSwgY1s1XSk7CiAgICAgICAgICAgICAgICAgYyA9ICZ1OwogICAg
ICAgICAgICAgICAgIGsgKz0gNTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmICgq
YyA9PSBVQ2hhcignJScpICYmIGsgPD0gbGVuIC0gMyAmJiBMZXhlcjo6aXNIZXhEaWdpdCgoYyAr
IDEpWzBdKSAmJiBMZXhlcjo6aXNIZXhEaWdpdCgoYyArIDIpWzBdKSkgewotICAgICAgICAgICAg
dSA9IFVDaGFyKExleGVyOjpjb252ZXJ0SGV4KChjKzEpWzBdLCAoYysyKVswXSkpOworICAgICAg
ICB9IGVsc2UgaWYgKGNbMF0gPT0gJyUnICYmIGsgPD0gbGVuIC0gMyAmJiBMZXhlcjo6aXNIZXhE
aWdpdChjWzFdKSAmJiBMZXhlcjo6aXNIZXhEaWdpdChjWzJdKSkgeworICAgICAgICAgICAgdSA9
IFVDaGFyKExleGVyOjpjb252ZXJ0SGV4KGNbMV0sIGNbMl0pKTsKICAgICAgICAgICAgIGMgPSAm
dTsKICAgICAgICAgICAgIGsgKz0gMjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUva2pzL2lkZW50aWZpZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIu
Y3BwCmluZGV4IDE5YzVhODIuLjUyY2UzZTIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tq
cy9pZGVudGlmaWVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5jcHAK
QEAgLTExMyw3ICsxMTMsNyBAQCBzdHJ1Y3QgQ1N0cmluZ1RyYW5zbGF0b3IKICAgICAgICAgc2l6
ZV90IGxlbmd0aCA9IHN0cmxlbihjKTsKICAgICAgICAgVUNoYXIgKmQgPSBzdGF0aWNfY2FzdDxV
Q2hhciAqPihmYXN0TWFsbG9jKHNpemVvZihVQ2hhcikgKiBsZW5ndGgpKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgIT0gbGVuZ3RoOyBpKyspCi0gICAgICAgICAgICBkW2ldID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY1tpXSk7IC8vIHN0YXRpY19jYXN0IHRvIHVuc2lnbmVk
IGNoYXIgdG8gYXZvaWQgZXJyb25lb3VzIHNpZ24tZXh0ZW5kCisgICAgICAgICAgICBkW2ldID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY1tpXSk7IC8vIHVzZSB1bnNpZ25lZCBjaGFyIHRv
IHplcm8tZXh0ZW5kIGluc3RlYWQgb2Ygc2lnbi1leHRlbmQKICAgICAgICAgCiAgICAgICAgIFVT
dHJpbmc6OlJlcCAqciA9IFVTdHJpbmc6OlJlcDo6Y3JlYXRlKGQsIHN0YXRpY19jYXN0PGludD4o
bGVuZ3RoKSkucmVsZWFzZVJlZigpOwogICAgICAgICByLT5pc0lkZW50aWZpZXIgPSAxOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tq
cy9sZXhlci5jcHAKaW5kZXggZTEwNjhhOS4uNzE5YTNlNiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUva2pzL2xleGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvbGV4ZXIuY3BwCkBA
IC05NCw3ICs5NCw3IEBAIExleGVyOjpMZXhlcigpCiAgICAgbV9pZGVudGlmaWVycy5yZXNlcnZl
Q2FwYWNpdHkoaW5pdGlhbFN0cmluZ1RhYmxlQ2FwYWNpdHkpOwogfQogCi12b2lkIExleGVyOjpz
ZXRDb2RlKGludCBzdGFydGluZ0xpbmVOdW1iZXIsIGNvbnN0IFVDaGFyICpjLCB1bnNpZ25lZCBp
bnQgbGVuKQordm9pZCBMZXhlcjo6c2V0Q29kZShpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25z
dCBVQ2hhciogYywgdW5zaWduZWQgaW50IGxlbikKIHsKICAgeXlsaW5lbm8gPSAxICsgc3RhcnRp
bmdMaW5lTnVtYmVyOwogICByZXN0cktleXdvcmQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL0phdmFT
Y3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
MnN0cmluZy5jcHAKaW5kZXggNWE4Mzc3NS4uYzgwN2ZlMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL25vZGVz
MnN0cmluZy5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBTb3VyY2VTdHJlYW0mIFNvdXJjZVN0cmVh
bTo6b3BlcmF0b3I8PChjaGFyIGMpCiB7CiAgICAgbV9udW1iZXJOZWVkc1BhcmVucyA9IGZhbHNl
OwogICAgIG1fYXRTdGFydE9mU3RhdGVtZW50ID0gZmFsc2U7Ci0gICAgLy8gc3RhdGljX2Nhc3Qg
dG8gdW5zaWduZWQgY2hhciB0byBhdm9pZCBlcnJvbmVvdXMgc2lnbi1leHRlbmQKKyAgICAvLyB1
c2UgdW5zaWduZWQgY2hhciB0byB6ZXJvLWV4dGVuZCBpbnN0ZWFkIG9mIHNpZ24tZXh0ZW5kCiAg
ICAgVUNoYXIgY2goc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYykpOwogICAgIG1fc3RyaW5n
LmFwcGVuZChjaCk7CiAgICAgcmV0dXJuICp0aGlzOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUva2pzL3JlZ2V4cC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvcmVnZXhwLmNwcAppbmRleCA0
ZmJjNjQ1Li5lZDQzNmE1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvcmVnZXhwLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvcmVnZXhwLmNwcApAQCAtMzgsNyArMzgsNyBAQCBp
bmxpbmUgUmVnRXhwOjpSZWdFeHAoY29uc3QgVVN0cmluZyYgcGF0dGVybikKICAgLCBtX2NvbnN0
cnVjdGlvbkVycm9yKDApCiAgICwgbV9udW1TdWJwYXR0ZXJucygwKQogewotICAgIG1fcmVnRXhw
ID0ganNSZWdFeHBDb21waWxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KHBhdHRl
cm4uZGF0YSgpKSwgcGF0dGVybi5zaXplKCksCisgICAgbV9yZWdFeHAgPSBqc1JlZ0V4cENvbXBp
bGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHBhdHRlcm4uZGF0YSgpKSwgcGF0dGVy
bi5zaXplKCksCiAgICAgICAgIEpTUmVnRXhwRG9Ob3RJZ25vcmVDYXNlLCBKU1JlZ0V4cFNpbmds
ZUxpbmUsICZtX251bVN1YnBhdHRlcm5zLCAmbV9jb25zdHJ1Y3Rpb25FcnJvcik7CiB9CiAKQEAg
LTcyLDcgKzcyLDcgQEAgaW5saW5lIFJlZ0V4cDo6UmVnRXhwKGNvbnN0IFVTdHJpbmcmIHBhdHRl
cm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKQogICAgICAgICBtdWx0aWxpbmVPcHRpb24gPSBKU1Jl
Z0V4cE11bHRpbGluZTsKICAgICB9CiAgICAgCi0gICAgbV9yZWdFeHAgPSBqc1JlZ0V4cENvbXBp
bGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4ocGF0dGVybi5kYXRhKCkpLCBwYXR0
ZXJuLnNpemUoKSwKKyAgICBtX3JlZ0V4cCA9IGpzUmVnRXhwQ29tcGlsZShyZWludGVycHJldF9j
YXN0PGNvbnN0IFVDaGFyKj4ocGF0dGVybi5kYXRhKCkpLCBwYXR0ZXJuLnNpemUoKSwKICAgICAg
ICAgaWdub3JlQ2FzZU9wdGlvbiwgbXVsdGlsaW5lT3B0aW9uLCAmbV9udW1TdWJwYXR0ZXJucywg
Jm1fY29uc3RydWN0aW9uRXJyb3IpOwogfQogCkBAIC0xMTMsNyArMTEzLDcgQEAgaW50IFJlZ0V4
cDo6bWF0Y2goY29uc3QgVVN0cmluZyYgcywgaW50IGksIE93bkFycmF5UHRyPGludD4qIG92ZWN0
b3IpCiAgICAgb3ZlY3Rvci0+c2V0KG9mZnNldFZlY3Rvcik7CiAgIH0KIAotICBpbnQgbnVtTWF0
Y2hlcyA9IGpzUmVnRXhwRXhlY3V0ZShtX3JlZ0V4cCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCA6
OlVDaGFyKj4ocy5kYXRhKCkpLCBzLnNpemUoKSwgaSwgb2Zmc2V0VmVjdG9yLCBvZmZzZXRWZWN0
b3JTaXplKTsKKyAgaW50IG51bU1hdGNoZXMgPSBqc1JlZ0V4cEV4ZWN1dGUobV9yZWdFeHAsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmRhdGEoKSksIHMuc2l6ZSgpLCBpLCBvZmZz
ZXRWZWN0b3IsIG9mZnNldFZlY3RvclNpemUpOwogCiAgIGlmIChudW1NYXRjaGVzIDwgMCkgewog
I2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2Jq
ZWN0LmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcAppbmRleCA2Y2I4
NTNjLi5iMWNkOTk5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVj
dC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3QuY3BwCkBAIC03ODUs
MTIgKzc4NSwxMiBAQCBKU1ZhbHVlKiBzdHJpbmdQcm90b0Z1bmNUb0xvd2VyQ2FzZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaQogICAgIGludCBzc2l6ZSA9IHMu
c2l6ZSgpOwogICAgIGlmICghc3NpemUpCiAgICAgICAgIHJldHVybiBzVmFsOwotICAgIFZlY3Rv
cjwgOjpVQ2hhcj4gYnVmZmVyKHNzaXplKTsKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihzc2l6
ZSk7CiAgICAgYm9vbCBlcnJvcjsKLSAgICBpbnQgbGVuZ3RoID0gVW5pY29kZTo6dG9Mb3dlcihi
dWZmZXIuZGF0YSgpLCBzc2l6ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4ocy5k
YXRhKCkpLCBzc2l6ZSwgJmVycm9yKTsKKyAgICBpbnQgbGVuZ3RoID0gVW5pY29kZTo6dG9Mb3dl
cihidWZmZXIuZGF0YSgpLCBzc2l6ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMu
ZGF0YSgpKSwgc3NpemUsICZlcnJvcik7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIGJ1ZmZl
ci5yZXNpemUobGVuZ3RoKTsKLSAgICAgICAgbGVuZ3RoID0gVW5pY29kZTo6dG9Mb3dlcihidWZm
ZXIuZGF0YSgpLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KHMuZGF0
YSgpKSwgc3NpemUsICZlcnJvcik7CisgICAgICAgIGxlbmd0aCA9IFVuaWNvZGU6OnRvTG93ZXIo
YnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocy5k
YXRhKCkpLCBzc2l6ZSwgJmVycm9yKTsKICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAg
cmV0dXJuIHNWYWw7CiAgICAgfQpAQCAtODEwLDEyICs4MTAsMTIgQEAgSlNWYWx1ZSogc3RyaW5n
UHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwg
Y29uc3QgTGkKICAgICBpbnQgc3NpemUgPSBzLnNpemUoKTsKICAgICBpZiAoIXNzaXplKQogICAg
ICAgICByZXR1cm4gc1ZhbDsKLSAgICBWZWN0b3I8IDo6VUNoYXI+IGJ1ZmZlcihzc2l6ZSk7Cisg
ICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoc3NpemUpOwogICAgIGJvb2wgZXJyb3I7Ci0gICAgaW50
IGxlbmd0aCA9IFVuaWNvZGU6OnRvVXBwZXIoYnVmZmVyLmRhdGEoKSwgc3NpemUsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KHMuZGF0YSgpKSwgc3NpemUsICZlcnJvcik7CisgICAg
aW50IGxlbmd0aCA9IFVuaWNvZGU6OnRvVXBwZXIoYnVmZmVyLmRhdGEoKSwgc3NpemUsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmRhdGEoKSksIHNzaXplLCAmZXJyb3IpOwogICAg
IGlmIChlcnJvcikgewogICAgICAgICBidWZmZXIucmVzaXplKGxlbmd0aCk7Ci0gICAgICAgIGxl
bmd0aCA9IFVuaWNvZGU6OnRvVXBwZXIoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IDo6VUNoYXIqPihzLmRhdGEoKSksIHNzaXplLCAmZXJyb3IpOworICAgICAg
ICBsZW5ndGggPSBVbmljb2RlOjp0b1VwcGVyKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMuZGF0YSgpKSwgc3NpemUsICZlcnJvcik7CiAgICAg
ICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBzVmFsOwogICAgIH0KQEAgLTgzNiwx
MiArODM2LDEyIEBAIEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNlKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNvCiAgICAgaW50IHNzaXplID0gcy5z
aXplKCk7CiAgICAgaWYgKCFzc2l6ZSkKICAgICAgICAgcmV0dXJuIHNWYWw7Ci0gICAgVmVjdG9y
PCA6OlVDaGFyPiBidWZmZXIoc3NpemUpOworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHNzaXpl
KTsKICAgICBib29sIGVycm9yOwotICAgIGludCBsZW5ndGggPSBVbmljb2RlOjp0b0xvd2VyKGJ1
ZmZlci5kYXRhKCksIHNzaXplLCByZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihzLmRh
dGEoKSksIHNzaXplLCAmZXJyb3IpOworICAgIGludCBsZW5ndGggPSBVbmljb2RlOjp0b0xvd2Vy
KGJ1ZmZlci5kYXRhKCksIHNzaXplLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocy5k
YXRhKCkpLCBzc2l6ZSwgJmVycm9yKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgYnVmZmVy
LnJlc2l6ZShsZW5ndGgpOwotICAgICAgICBsZW5ndGggPSBVbmljb2RlOjp0b0xvd2VyKGJ1ZmZl
ci5kYXRhKCksIGxlbmd0aCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4ocy5kYXRh
KCkpLCBzc2l6ZSwgJmVycm9yKTsKKyAgICAgICAgbGVuZ3RoID0gVW5pY29kZTo6dG9Mb3dlcihi
dWZmZXIuZGF0YSgpLCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmRh
dGEoKSksIHNzaXplLCAmZXJyb3IpOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICBy
ZXR1cm4gc1ZhbDsKICAgICB9CkBAIC04NjEsMTIgKzg2MSwxMiBAQCBKU1ZhbHVlKiBzdHJpbmdQ
cm90b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqLCBjbwogICAgIGludCBzc2l6ZSA9IHMuc2l6ZSgpOwogICAgIGlmICghc3NpemUpCiAgICAg
ICAgIHJldHVybiBzVmFsOwotICAgIFZlY3RvcjwgOjpVQ2hhcj4gYnVmZmVyKHNzaXplKTsKKyAg
ICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihzc2l6ZSk7CiAgICAgYm9vbCBlcnJvcjsKLSAgICBpbnQg
bGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgpLCBzc2l6ZSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4ocy5kYXRhKCkpLCBzc2l6ZSwgJmVycm9yKTsKKyAgICBp
bnQgbGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgpLCBzc2l6ZSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMuZGF0YSgpKSwgc3NpemUsICZlcnJvcik7CiAgICAg
aWYgKGVycm9yKSB7CiAgICAgICAgIGJ1ZmZlci5yZXNpemUobGVuZ3RoKTsKLSAgICAgICAgbGVu
Z3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgpLCBsZW5ndGgsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KHMuZGF0YSgpKSwgc3NpemUsICZlcnJvcik7CisgICAgICAg
IGxlbmd0aCA9IFVuaWNvZGU6OnRvVXBwZXIoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocy5kYXRhKCkpLCBzc2l6ZSwgJmVycm9yKTsKICAgICAg
ICAgaWYgKGVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHNWYWw7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL3Vz
dHJpbmcuY3BwCmluZGV4IGUxYjZmYmIuLjVlNDE4NzUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2tqcy91c3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAK
QEAgLTQyOSw3ICs0MjksNyBAQCBVU3RyaW5nOjpVU3RyaW5nKGNvbnN0IGNoYXIgKmMpCiAgICAg
ICBtX3JlcCA9ICZSZXA6Om51bGw7CiAgIGVsc2UgewogICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICBkW2ldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oY1tpXSk7IC8vIHN0YXRpY19jYXN0IHRvIHVuc2lnbmVkIGNoYXIgdG8gYXZvaWQgZXJy
b25lb3VzIHNpZ24tZXh0ZW5kCisgICAgICAgICAgZFtpXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGNbaV0pOyAvLyB1c2UgdW5zaWduZWQgY2hhciB0byB6ZXJvLWV4dGVuZCBpbnN0ZWFk
IG9mIHNpZ24tZXh0ZW5kCiAgICAgICBtX3JlcCA9IFJlcDo6Y3JlYXRlKGQsIHN0YXRpY19jYXN0
PGludD4obGVuZ3RoKSk7CiAgIH0KIH0KQEAgLTcwOSw3ICs3MDksNyBAQCBVU3RyaW5nIFVTdHJp
bmc6OnNwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhjb25zdCBSYW5nZSogc3Vic3RyaW5n
UmFuZ2VzLCBpbgogICByZXR1cm4gVVN0cmluZzo6UmVwOjpjcmVhdGUoYnVmZmVyLCB0b3RhbExl
bmd0aCk7CiB9CiAKLVVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBVU3RyaW5nICZ0KQor
VVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IFVTdHJpbmcgJnQpCiB7CiAgIGludCB0aGlz
U2l6ZSA9IHNpemUoKTsKICAgaW50IHRoaXNPZmZzZXQgPSBtX3JlcC0+b2Zmc2V0OwpAQCAtNzU0
LDcgKzc1NCw3IEBAIFVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBVU3RyaW5nICZ0KQog
ICByZXR1cm4gKnRoaXM7CiB9CiAKLVVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFy
ICp0KQorVVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIgKnQpCiB7CiAgIGludCB0
aGlzU2l6ZSA9IHNpemUoKTsKICAgaW50IHRoaXNPZmZzZXQgPSBtX3JlcC0+b2Zmc2V0OwpAQCAt
NzczLDcgKzc3Myw3IEBAIFVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFyICp0KQog
ICAgIFVDaGFyICpkID0gY29uc3RfY2FzdDxVQ2hhciAqPihkYXRhKCkpOwogICAgIGlmIChkKSB7
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdFNpemU7ICsraSkKLSAgICAgICAgICAgIGRb
dGhpc1NpemUgKyBpXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRbaV0pOyAvLyBzdGF0
aWNfY2FzdCB0byB1bnNpZ25lZCBjaGFyIHRvIGF2b2lkIGVycm9uZW91cyBzaWduLWV4dGVuZAor
ICAgICAgICAgICAgZFt0aGlzU2l6ZSArIGldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
dFtpXSk7IC8vIHVzZSB1bnNpZ25lZCBjaGFyIHRvIHplcm8tZXh0ZW5kIGluc3RlYWQgb2Ygc2ln
bi1leHRlbmQKICAgICAgICAgbV9yZXAtPmxlbiA9IGxlbmd0aDsKICAgICAgICAgbV9yZXAtPl9o
YXNoID0gMDsKICAgICB9CkBAIC03ODMsNyArNzgzLDcgQEAgVVN0cmluZyAmVVN0cmluZzo6YXBw
ZW5kKGNvbnN0IGNoYXIgKnQpCiAgICAgVUNoYXIgKmQgPSBjb25zdF9jYXN0PFVDaGFyICo+KGRh
dGEoKSk7CiAgICAgaWYgKGQpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0U2l6ZTsg
KytpKQotICAgICAgICAgICAgZFt0aGlzU2l6ZSArIGldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4odFtpXSk7IC8vIHN0YXRpY19jYXN0IHRvIHVuc2lnbmVkIGNoYXIgdG8gYXZvaWQgZXJy
b25lb3VzIHNpZ24tZXh0ZW5kCisgICAgICAgICAgICBkW3RoaXNTaXplICsgaV0gPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPih0W2ldKTsgLy8gdXNlIHVuc2lnbmVkIGNoYXIgdG8gemVyby1l
eHRlbmQgaW5zdGVhZCBvZiBzaWduLWV4dGVuZAogICAgICAgICBtX3JlcCA9IFJlcDo6Y3JlYXRl
KG1fcmVwLCAwLCBsZW5ndGgpOwogICAgIH0KICAgfSBlbHNlIHsKQEAgLTc5NSw3ICs3OTUsNyBA
QCBVU3RyaW5nICZVU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciAqdCkKICAgICBlbHNlIHsKICAg
ICAgICAgbWVtY3B5KGQsIGRhdGEoKSwgdGhpc1NpemUgKiBzaXplb2YoVUNoYXIpKTsKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0U2l6ZTsgKytpKQotICAgICAgICAgICAgZFt0aGlzU2l6
ZSArIGldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odFtpXSk7IC8vIHN0YXRpY19jYXN0
IHRvIHVuc2lnbmVkIGNoYXIgdG8gYXZvaWQgZXJyb25lb3VzIHNpZ24tZXh0ZW5kCisgICAgICAg
ICAgICBkW3RoaXNTaXplICsgaV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0W2ldKTsg
Ly8gdXNlIHVuc2lnbmVkIGNoYXIgdG8gemVyby1leHRlbmQgaW5zdGVhZCBvZiBzaWduLWV4dGVu
ZAogICAgICAgICBtX3JlcCA9IFJlcDo6Y3JlYXRlKGQsIGxlbmd0aCk7CiAgICAgICAgIG1fcmVw
LT5jYXBhY2l0eSA9IG5ld0NhcGFjaXR5OwogICAgIH0KQEAgLTgwNCw3ICs4MDQsNyBAQCBVU3Ry
aW5nICZVU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciAqdCkKICAgcmV0dXJuICp0aGlzOwogfQog
Ci1VU3RyaW5nICZVU3RyaW5nOjphcHBlbmQodW5zaWduZWQgc2hvcnQgYykKK1VTdHJpbmcmIFVT
dHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciBjKQogewogICBpbnQgdGhpc09mZnNldCA9IG1fcmVw
LT5vZmZzZXQ7CiAgIGludCBsZW5ndGggPSBzaXplKCk7CkBAIC04ODgsNyArODg4LDcgQEAgY2hh
ciAqVVN0cmluZzo6YXNjaWkoKSBjb25zdAogICByZXR1cm4gc3RhdEJ1ZmZlcjsKIH0KIAotVVN0
cmluZyAmVVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IGNoYXIgKmMpCitVU3RyaW5nJiBVU3RyaW5n
OjpvcGVyYXRvcj0oY29uc3QgY2hhciAqYykKIHsKICAgICBpZiAoIWMpIHsKICAgICAgICAgbV9y
ZXAgPSAmUmVwOjpudWxsOwpAQCAtOTE1LDcgKzkxNSw3IEBAIFVTdHJpbmcgJlVTdHJpbmc6Om9w
ZXJhdG9yPShjb25zdCBjaGFyICpjKQogICAgIG1fcmVwID0gUmVwOjpjcmVhdGUoZCwgbCk7CiAg
IH0KICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsOyBpKyspCi0gICAgZFtpXSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KGNbaV0pOyAvLyBzdGF0aWNfY2FzdCB0byB1bnNpZ25lZCBjaGFyIHRv
IGF2b2lkIGVycm9uZW91cyBzaWduLWV4dGVuZAorICAgIGRbaV0gPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjW2ldKTsgLy8gdXNlIHVuc2lnbmVkIGNoYXIgdG8gemVyby1leHRlbmQgaW5z
dGVhZCBvZiBzaWduLWV4dGVuZAogCiAgIHJldHVybiAqdGhpczsKIH0KQEAgLTEyNzQsNyArMTI3
NCw3IEBAIENTdHJpbmcgVVN0cmluZzo6VVRGOFN0cmluZyhib29sIHN0cmljdCkgY29uc3QKIAog
ICAvLyBDb252ZXJ0IHRvIHJ1bnMgb2YgOC1iaXQgY2hhcmFjdGVycy4KICAgY2hhciogcCA9IGJ1
ZmZlci5kYXRhKCk7Ci0gIGNvbnN0IDo6VUNoYXIqIGQgPSByZWludGVycHJldF9jYXN0PGNvbnN0
IDo6VUNoYXIqPigmZGF0YSgpWzBdKTsKKyAgY29uc3QgVUNoYXIqIGQgPSByZWludGVycHJldF9j
YXN0PGNvbnN0IFVDaGFyKj4oJmRhdGEoKVswXSk7CiAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0
ID0gY29udmVydFVURjE2VG9VVEY4KCZkLCBkICsgbGVuZ3RoLCAmcCwgcCArIGJ1ZmZlci5zaXpl
KCksIHN0cmljdCk7CiAgIGlmIChyZXN1bHQgIT0gY29udmVyc2lvbk9LKQogICAgIHJldHVybiBD
U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oIGIvSmF2
YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuaAppbmRleCBiY2E5OTQ4Li44NTBlYjJkIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2tq
cy91c3RyaW5nLmgKQEAgLTIwMywxNSArMjAzLDE1IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAg
aW50IGxlbmd0aDsKICAgICB9OwogCi0gICAgVVN0cmluZyBzcGxpY2VTdWJzdHJpbmdzV2l0aFNl
cGFyYXRvcnMoY29uc3QgUmFuZ2UgKnN1YnN0cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQsIGNv
bnN0IFVTdHJpbmcgKnNlcGFyYXRvcnMsIGludCBzZXBhcmF0b3JDb3VudCkgY29uc3Q7CisgICAg
VVN0cmluZyBzcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMoY29uc3QgUmFuZ2UqIHN1YnN0
cmluZ1JhbmdlcywgaW50IHJhbmdlQ291bnQsIGNvbnN0IFVTdHJpbmcqIHNlcGFyYXRvcnMsIGlu
dCBzZXBhcmF0b3JDb3VudCkgY29uc3Q7CiAKICAgICAvKioKICAgICAgKiBBcHBlbmQgYW5vdGhl
ciBzdHJpbmcuCiAgICAgICovCi0gICAgVVN0cmluZyAmYXBwZW5kKGNvbnN0IFVTdHJpbmcgJik7
Ci0gICAgVVN0cmluZyAmYXBwZW5kKGNvbnN0IGNoYXIgKik7Ci0gICAgVVN0cmluZyAmYXBwZW5k
KHVuc2lnbmVkIHNob3J0KTsKLSAgICBVU3RyaW5nICZhcHBlbmQoY2hhciBjKSB7IHJldHVybiBh
cHBlbmQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KGMpKSk7IH0KKyAgICBVU3RyaW5nJiBhcHBlbmQoY29uc3QgVVN0cmluZyYpOworICAgIFVT
dHJpbmcmIGFwcGVuZChjb25zdCBjaGFyKik7CisgICAgVVN0cmluZyYgYXBwZW5kKGNvbnN0IFVD
aGFyKTsKKyAgICBVU3RyaW5nJiBhcHBlbmQoY2hhciBjKSB7IHJldHVybiBhcHBlbmQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpKSk7IH0K
IAogICAgIC8qKgogICAgICAqIEByZXR1cm4gVGhlIHN0cmluZyBjb252ZXJ0ZWQgdG8gdGhlIDgt
Yml0IHN0cmluZyB0eXBlIENTdHJpbmcoKS4KQEAgLTIyNiw3ICsyMjYsNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICAgKiB3YXN0ZSBhbnkgbWVtb3J5IHRoZSBjaGFyIGJ1ZmZlciBpcyBzdGF0aWMg
YW5kICpzaGFyZWQqIGJ5IGFsbCBVU3RyaW5nCiAgICAgICogaW5zdGFuY2VzLgogICAgICAqLwot
ICAgIGNoYXIgKmFzY2lpKCkgY29uc3Q7CisgICAgY2hhciogYXNjaWkoKSBjb25zdDsKIAogICAg
IC8qKgogICAgICAqIENvbnZlcnQgdGhlIHN0cmluZyB0byBVVEYtOCwgYXNzdW1pbmcgaXQgaXMg
VVRGLTE2IGVuY29kZWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHUE9E
VHlwZVdyYXBwZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5o
CmluZGV4IGI1ODMwZjAuLmNiODM4N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTVkdQT0RUeXBlV3JhcHBlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RU
eXBlV3JhcHBlci5oCkBAIC0yMDMsNyArMjAzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlw
ZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+CiBzdHJ1Y3QgUE9EVHlwZVJlYWRXcml0ZUhhc2hJ
bmZvSGFzaCB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUE9EVHlwZVJlYWRXcml0
ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiYgaW5mbykKICAgICB7Ci0gICAgICAg
IHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PFVDaGFyKj4o
JmluZm8pLCBzaXplb2YoUE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVD
cmVhdG9yPikgLyBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNv
bXB1dGVIYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPigmaW5mbyksIHNpemVvZihQ
T0RUeXBlUmVhZFdyaXRlSGFzaEluZm88UE9EVHlwZSwgUE9EVHlwZUNyZWF0b3I+KSAvIHNpemVv
ZihVQ2hhcikpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFBPRFR5cGVS
ZWFkV3JpdGVIYXNoSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4mIGEsIGNvbnN0IFBPRFR5
cGVSZWFkV3JpdGVIYXNoSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4mIGIpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmggYi9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFRlbXBsYXRlLmgKaW5kZXggMDVlZTUyOS4uMjBjNTA4ZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVGVtcGxhdGUuaApAQCAtNzQsNyArNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
c3RydWN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXlIYXNoIHsKICAgICAgICAgc3RhdGljIHVu
c2lnbmVkIGhhc2goY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYga2V5KQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2gocmVpbnRlcnBy
ZXRfY2FzdDxVQ2hhcio+KCZrZXkpLCBzaXplb2YoU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSkg
LyBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRl
SGFzaChyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oJmtleSksIHNpemVvZihTVkdBbmlt
YXRlZFR5cGVXcmFwcGVyS2V5KSAvIHNpemVvZihVQ2hhcikpOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3Jh
cHBlcktleSYgYSwgY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgYikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19535</attachid>
            <date>2008-03-04 16:56:00 -0800</date>
            <delta_ts>2008-03-07 12:03:24 -0800</delta_ts>
            <desc>Updated combined patch for removing KJS::UChar</desc>
            <filename>Updated-combined-patch-for-removing-KJS-UChar.patch</filename>
            <type>text/plain</type>
            <size>46077</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YzkxZTdiZWY2ZmVmMDNkY2NmZTczN2Y2YTI2NTdiNTJlOTczYjc4NApkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcCBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0
cmluZ1JlZi5jcHAKaW5kZXggOWEzMDdkMC4uOWU5ZjA2ZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJp
bmdSZWYuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY6OlVuaWNvZGU7
CiBKU1N0cmluZ1JlZiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGNvbnN0IEpTQ2hhciog
Y2hhcnMsIHNpemVfdCBudW1DaGFycykKIHsKICAgICBKU0xvY2sgbG9jazsKLSAgICByZXR1cm4g
dG9SZWYoVVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IEtKUzo6VUNoYXIqPihjaGFycyks
IHN0YXRpY19jYXN0PGludD4obnVtQ2hhcnMpKS5yZXAoKS0+cmVmKCkpOworICAgIHJldHVybiB0
b1JlZihVU3RyaW5nKGNoYXJzLCBzdGF0aWNfY2FzdDxpbnQ+KG51bUNoYXJzKSkucmVwKCktPnJl
ZigpKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29u
c3QgY2hhciogc3RyaW5nKQpAQCAtNTIsMTIgKzUyLDEyIEBAIEpTU3RyaW5nUmVmIEpTU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKICAgICBKU0xvY2sgbG9j
azsKIAogICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oc3RyaW5nKTsKLSAgICBWZWN0b3I8IDo6
VUNoYXIsIDEwMjQ+IGJ1ZmZlcihsZW5ndGgpOwotICAgIDo6VUNoYXIqIHAgPSBidWZmZXIuZGF0
YSgpOworICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gYnVmZmVyKGxlbmd0aCk7CisgICAgVUNoYXIq
IHAgPSBidWZmZXIuZGF0YSgpOwogICAgIGlmIChjb252ZXJzaW9uT0sgIT0gY29udmVydFVURjhU
b1VURjE2KCZzdHJpbmcsIHN0cmluZyArIGxlbmd0aCwgJnAsIHAgKyBsZW5ndGgpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b1JlZihVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8
S0pTOjpVQ2hhcio+KGJ1ZmZlci5kYXRhKCkpLCBwIC0gYnVmZmVyLmRhdGEoKSkucmVwKCktPnJl
ZigpKTsKKyAgICByZXR1cm4gdG9SZWYoVVN0cmluZyhidWZmZXIuZGF0YSgpLCBwIC0gYnVmZmVy
LmRhdGEoKSkucmVwKCktPnJlZigpKTsKIH0KIAogSlNTdHJpbmdSZWYgSlNTdHJpbmdSZXRhaW4o
SlNTdHJpbmdSZWYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3Ry
aW5nUmVmQ0YuY3BwIGIvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCmluZGV4
IDcwYTVhYTcuLjFmYzMwMWEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmlu
Z1JlZkNGLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcoQ0ZT
dHJpbmdSZWYgc3RyaW5nKQogICAgIGVsc2UgewogICAgICAgICBVbmlDaGFyKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDxVbmlDaGFyKj4oZmFzdE1hbGxvYyhzaXplb2YoVW5pQ2hhcikgKiBsZW5ndGgp
KTsKICAgICAgICAgQ0ZTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwg
bGVuZ3RoKSwgYnVmZmVyKTsKLSAgICAgICAgcmVwID0gVVN0cmluZyhyZWludGVycHJldF9jYXN0
PFVDaGFyKj4oYnVmZmVyKSwgbGVuZ3RoLCBmYWxzZSkucmVwKCktPnJlZigpOworICAgICAgICBy
ZXAgPSBVU3RyaW5nKGJ1ZmZlciwgbGVuZ3RoLCBmYWxzZSkucmVwKCktPnJlZigpOwogICAgIH0K
ICAgICByZXR1cm4gdG9SZWYocmVwKTsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cCBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAppbmRl
eCA2ZTE4YjVkLi4zMGU3YmZkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKKysrIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0xMDcs
MTUgKzEwNywxNSBAQCBfX1oxNWpzUmVnRXhwRXhlY3V0ZVBLOEpTUmVnRXhwUEt0aWlQaWkKIF9f
WjIzX05QTl9DcmVhdGVTY3JpcHRPYmplY3RQNF9OUFBQTjNLSlM4SlNPYmplY3RFTjNXVEYxMFBh
c3NSZWZQdHJJTlMxXzhCaW5kaW5nczEwUm9vdE9iamVjdEVFRQogX19aMjVfTlBOX0NyZWF0ZU5v
U2NyaXB0T2JqZWN0dgogX19aTjNLSlMxMElkZW50aWZpZXIxMWFkZFNsb3dDYXNlRVBOU183VVN0
cmluZzNSZXBFCi1fX1pOM0tKUzEwSWRlbnRpZmllcjNhZGRFUEtOU181VUNoYXJFaQorX19aTjNL
SlMxMElkZW50aWZpZXIzYWRkRVBLdGkKIF9fWk4zS0pTMTBJZGVudGlmaWVyM2FkZEVQS2MKIF9f
Wk4zS0pTMTBJZGVudGlmaWVyNWVxdWFsRVBLTlNfN1VTdHJpbmczUmVwRVBLYwogX19aTjNLSlMx
MHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfOUVycm9yVHlwZUUKIF9fWk4zS0pTMTB0aHJv
d0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzlFcnJvclR5cGVFUEtjCi1fX1pOM0tKUzExSW50ZXJw
cmV0ZXIxMWNoZWNrU3ludGF4RVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFaVBLTlNfNVVD
aGFyRWkKK19fWk4zS0pTMTFJbnRlcnByZXRlcjExY2hlY2tTeW50YXhFUE5TXzlFeGVjU3RhdGVF
UktOU183VVN0cmluZ0VpUEt0aQogX19aTjNLSlMxMUludGVycHJldGVyMjFzaG91bGRQcmludEV4
Y2VwdGlvbnNFdgogX19aTjNLSlMxMUludGVycHJldGVyMjRzZXRTaG91bGRQcmludEV4Y2VwdGlv
bnNFYgotX19aTjNLSlMxMUludGVycHJldGVyOGV2YWx1YXRlRVBOU185RXhlY1N0YXRlRVJLTlNf
N1VTdHJpbmdFaVBLTlNfNVVDaGFyRWlQTlNfN0pTVmFsdWVFCitfX1pOM0tKUzExSW50ZXJwcmV0
ZXI4ZXZhbHVhdGVFUE5TXzlFeGVjU3RhdGVFUktOU183VVN0cmluZ0VpUEt0aVBOU183SlNWYWx1
ZUUKIF9fWk4zS0pTMTFJbnRlcnByZXRlcjhldmFsdWF0ZUVQTlNfOUV4ZWNTdGF0ZUVSS05TXzdV
U3RyaW5nRWlTNV9QTlNfN0pTVmFsdWVFCiBfX1pOM0tKUzExSlNJbW1lZGlhdGU0dHlwZUVQS05T
XzdKU1ZhbHVlRQogX19aTjNLSlMxMUpTSW1tZWRpYXRlOHRvT2JqZWN0RVBLTlNfN0pTVmFsdWVF
UE5TXzlFeGVjU3RhdGVFCkBAIC0xNzgsMTQgKzE3OCwxNCBAQCBfX1pOM0tKUzZKU0xvY2s0bG9j
a0V2CiBfX1pOM0tKUzZKU0xvY2s2dW5sb2NrRXYKIF9fWk4zS0pTNkpTTG9jazlsb2NrQ291bnRF
dgogX19aTjNLSlM2TG9va3VwOWZpbmRFbnRyeUVQS05TXzlIYXNoVGFibGVFUktOU18xMElkZW50
aWZpZXJFCi1fX1pOM0tKUzZQYXJzZXI1cGFyc2VFaVBLTlNfNVVDaGFyRWpQaVM0X1BOU183VVN0
cmluZ0UKK19fWk4zS0pTNlBhcnNlcjVwYXJzZUVpUEt0alBpUzNfUE5TXzdVU3RyaW5nRQogX19a
TjNLSlM2cGFyc2VyRXYKIF9fWk4zS0pTN0NTdHJpbmdEMUV2CiBfX1pOM0tKUzdVU3RyaW5nM1Jl
cDRudWxsRQogX19aTjNLSlM3VVN0cmluZzNSZXA3ZGVzdHJveUV2CiBfX1pOM0tKUzdVU3RyaW5n
NGZyb21FagogX19aTjNLSlM3VVN0cmluZzZhcHBlbmRFUktTMF8KLV9fWk4zS0pTN1VTdHJpbmdD
MUVQS05TXzVVQ2hhckVpCitfX1pOM0tKUzdVU3RyaW5nQzFFUEt0aQogX19aTjNLSlM3VVN0cmlu
Z0MxRVBLYwogX19aTjNLSlM3VVN0cmluZ0MxRVJLUzBfUzJfCiBfX1pOM0tKUzdVU3RyaW5nYVNF
UEtjCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5jcHAg
Yi9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9jL2NfdXRpbGl0eS5jcHAKaW5kZXggN2UyYTE5Zi4u
NDUwNDhhNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvYmluZGluZ3MvYy9jX3V0aWxpdHku
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL2MvY191dGlsaXR5LmNwcApAQCAtNjAs
MTIgKzYwLDEyIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRVVEY4VG9VVEYxNldpdGhMYXRpbjFGYWxs
YmFjayhjb25zdCBOUFVURjgqIFVURjhDaGFycywgaW50IFVUCiAgICAgY29uc3QgY2hhciogc291
cmNlc3RhcnQgPSBVVEY4Q2hhcnM7CiAgICAgY29uc3QgY2hhciogc291cmNlZW5kID0gc291cmNl
c3RhcnQgKyBVVEY4TGVuZ3RoOwogCi0gICAgOjpVQ2hhciogdGFyZ2V0c3RhcnQgPSByZWludGVy
cHJldF9jYXN0PCA6OlVDaGFyKj4oKlVURjE2Q2hhcnMpOwotICAgIDo6VUNoYXIqIHRhcmdldGVu
ZCA9IHRhcmdldHN0YXJ0ICsgVVRGOExlbmd0aDsKKyAgICBVQ2hhciogdGFyZ2V0c3RhcnQgPSBy
ZWludGVycHJldF9jYXN0PFVDaGFyKj4oKlVURjE2Q2hhcnMpOworICAgIFVDaGFyKiB0YXJnZXRl
bmQgPSB0YXJnZXRzdGFydCArIFVURjhMZW5ndGg7CiAgICAgCiAgICAgQ29udmVyc2lvblJlc3Vs
dCByZXN1bHQgPSBjb252ZXJ0VVRGOFRvVVRGMTYoJnNvdXJjZXN0YXJ0LCBzb3VyY2VlbmQsICZ0
YXJnZXRzdGFydCwgdGFyZ2V0ZW5kKTsKICAgICAKLSAgICAqVVRGMTZMZW5ndGggPSB0YXJnZXRz
dGFydCAtIHJlaW50ZXJwcmV0X2Nhc3Q8IDo6VUNoYXIqPigqVVRGMTZDaGFycyk7CisgICAgKlVU
RjE2TGVuZ3RoID0gdGFyZ2V0c3RhcnQgLSByZWludGVycHJldF9jYXN0PFVDaGFyKj4oKlVURjE2
Q2hhcnMpOwogCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBjb252ZXJzaW9uIHdhcyBzdWNj
ZXNzZnVsCiAgICAgLy8gU29tZSBwbHVnaW5zIHJldHVybiBpbnZhbGlkIFVURi04IGluIE5QVmFy
aWFudFR5cGVfU3RyaW5nLCBzZWUgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUxNjM+CkBAIC0xNzUsNyArMTc1LDcgQEAgSWRlbnRpZmllciBpZGVudGlmaWVyRnJvbU5Q
SWRlbnRpZmllcihjb25zdCBOUFVURjgqIG5hbWUpCiAgICAgTlBVVEYxNiAqbWV0aG9kTmFtZTsK
ICAgICB1bnNpZ25lZCBVVEYxNkxlbmd0aDsKICAgICBjb252ZXJ0VVRGOFRvVVRGMTZXaXRoTGF0
aW4xRmFsbGJhY2sobmFtZSwgLTEsICZtZXRob2ROYW1lLCAmVVRGMTZMZW5ndGgpOyAvLyByZXF1
aXJlcyBmcmVlKCkgb2YgcmV0dXJuZWQgbWVtb3J5LgotICAgIElkZW50aWZpZXIgaWRlbnRpZmll
cigoY29uc3QgS0pTOjpVQ2hhciopbWV0aG9kTmFtZSwgVVRGMTZMZW5ndGgpOworICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigoY29uc3QgVUNoYXIqKW1ldGhvZE5hbWUsIFVURjE2TGVuZ3RoKTsK
ICAgICBmcmVlKG1ldGhvZE5hbWUpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mvb2JqYy9vYmpjX3V0aWxpdHkubW0gYi9KYXZh
U2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfdXRpbGl0eS5tbQppbmRleCA2MmEwYWQwLi5i
ZDE0YzhlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfdXRp
bGl0eS5tbQorKysgYi9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9vYmpjL29iamNfdXRpbGl0eS5t
bQpAQCAtMzYzLDcgKzM2Myw3IEBAIEpTT2JqZWN0ICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqZXhl
YywgRXJyb3JUeXBlIHR5cGUsIE5TU3RyaW5nICptZXNzYWdlKQogICAgIHNpemVfdCBsZW5ndGgg
PSBbbWVzc2FnZSBsZW5ndGhdOwogICAgIHVuaWNoYXIgKmJ1ZmZlciA9IG5ldyB1bmljaGFyW2xl
bmd0aF07CiAgICAgW21lc3NhZ2UgZ2V0Q2hhcmFjdGVyczpidWZmZXJdOwotICAgIEpTT2JqZWN0
ICplcnJvciA9IHRocm93RXJyb3IoZXhlYywgdHlwZSwgVVN0cmluZyhyZWludGVycHJldF9jYXN0
PFVDaGFyICo+KGJ1ZmZlciksIGxlbmd0aCkpOworICAgIEpTT2JqZWN0ICplcnJvciA9IHRocm93
RXJyb3IoZXhlYywgdHlwZSwgVVN0cmluZyhidWZmZXIsIGxlbmd0aCkpOwogICAgIGRlbGV0ZSBb
XSBidWZmZXI7CiAgICAgcmV0dXJuIGVycm9yOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUva2pzL1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5oCmluZGV4IDkyNTQ4
ZmUuLjBjYWZjOGEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9QYXJzZXIuaAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgKQEAgLTM3LDggKzM3LDYgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgY2xhc3MgUHJvZ3JhbU5vZGU7CiAgICAgY2xhc3MgVVN0cmluZzsKIAotICAg
IHN0cnVjdCBVQ2hhcjsKLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyc2Vy
UmVmQ291bnRlZERhdGEgOiBQYXJzZXJSZWZDb3VudGVkIHsKICAgICAgICAgVCBkYXRhOwogICAg
IH07CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwIGIvSmF2YVNj
cmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcAppbmRleCBiOTk2MTIyLi45YzQwNDk2IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L2tqcy9mdW5jdGlvbi5jcHAKQEAgLTUxNSw4ICs1MTUsOCBAQCBzdGF0aWMgSlNWYWx1ZSogZGVj
b2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncywgY29uc3QgY2hhciogZG9fbm90
X3VuZQogICAgIFVDaGFyIGMgPSAqcDsKICAgICBpZiAoYyA9PSAnJScpIHsKICAgICAgIGludCBj
aGFyTGVuID0gMDsKLSAgICAgIGlmIChrIDw9IGxlbiAtIDMgJiYgaXNBU0NJSUhleERpZ2l0KHBb
MV0udWMpICYmIGlzQVNDSUlIZXhEaWdpdChwWzJdLnVjKSkgewotICAgICAgICBjb25zdCBjaGFy
IGIwID0gTGV4ZXI6OmNvbnZlcnRIZXgocFsxXS51YywgcFsyXS51Yyk7CisgICAgICBpZiAoayA8
PSBsZW4gLSAzICYmIGlzQVNDSUlIZXhEaWdpdChwWzFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQocFsy
XSkpIHsKKyAgICAgICAgY29uc3QgY2hhciBiMCA9IExleGVyOjpjb252ZXJ0SGV4KHBbMV0sIHBb
Ml0pOwogICAgICAgICBjb25zdCBpbnQgc2VxdWVuY2VMZW4gPSBVVEY4U2VxdWVuY2VMZW5ndGgo
YjApOwogICAgICAgICBpZiAoc2VxdWVuY2VMZW4gIT0gMCAmJiBrIDw9IGxlbiAtIHNlcXVlbmNl
TGVuICogMykgewogICAgICAgICAgIGNoYXJMZW4gPSBzZXF1ZW5jZUxlbiAqIDM7CkBAIC01MjQs
OCArNTI0LDggQEAgc3RhdGljIEpTVmFsdWUqIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IExpc3QmIGFyZ3MsIGNvbnN0IGNoYXIqIGRvX25vdF91bmUKICAgICAgICAgICBzZXF1ZW5jZVsw
XSA9IGIwOwogICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc2VxdWVuY2VMZW47ICsraSkg
ewogICAgICAgICAgICAgY29uc3QgVUNoYXIqIHEgPSBwICsgaSAqIDM7Ci0gICAgICAgICAgICBp
ZiAocVswXSA9PSAnJScgJiYgaXNBU0NJSUhleERpZ2l0KHFbMV0udWMpICYmIGlzQVNDSUlIZXhE
aWdpdChxWzJdLnVjKSkKLSAgICAgICAgICAgICAgc2VxdWVuY2VbaV0gPSBMZXhlcjo6Y29udmVy
dEhleChxWzFdLnVjLCBxWzJdLnVjKTsKKyAgICAgICAgICAgIGlmIChxWzBdID09ICclJyAmJiBp
c0FTQ0lJSGV4RGlnaXQocVsxXSkgJiYgaXNBU0NJSUhleERpZ2l0KHFbMl0pKQorICAgICAgICAg
ICAgICBzZXF1ZW5jZVtpXSA9IExleGVyOjpjb252ZXJ0SGV4KHFbMV0sIHFbMl0pOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgIGNoYXJMZW4gPSAwOwogICAgICAgICAgICAgICBi
cmVhazsKQEAgLTU1MiwxMyArNTUyLDEzIEBAIHN0YXRpYyBKU1ZhbHVlKiBkZWNvZGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzLCBjb25zdCBjaGFyKiBkb19ub3RfdW5lCiAgICAg
ICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJzdHJpY3QiIG1vZGUgaXMg
dGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgIC8vIEZvciB0aGF0LCBpdCdzIGdvb2Qg
dG8gc3VwcG9ydCB0aGUgd29ua3kgIiV1IiBzeW50YXggZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBX
aW5JRS4KICAgICAgICAgaWYgKGsgPD0gbGVuIC0gNiAmJiBwWzFdID09ICd1JwotICAgICAgICAg
ICAgJiYgaXNBU0NJSUhleERpZ2l0KHBbMl0udWMpICYmIGlzQVNDSUlIZXhEaWdpdChwWzNdLnVj
KQotICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KHBbNF0udWMpICYmIGlzQVNDSUlIZXhE
aWdpdChwWzVdLnVjKSkgeworICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KHBbMl0pICYm
IGlzQVNDSUlIZXhEaWdpdChwWzNdKQorICAgICAgICAgICAgJiYgaXNBU0NJSUhleERpZ2l0KHBb
NF0pICYmIGlzQVNDSUlIZXhEaWdpdChwWzVdKSkgewogICAgICAgICAgIGNoYXJMZW4gPSA2Owot
ICAgICAgICAgIHUgPSBMZXhlcjo6Y29udmVydFVuaWNvZGUocFsyXS51YywgcFszXS51YywgcFs0
XS51YywgcFs1XS51Yyk7CisgICAgICAgICAgdSA9IExleGVyOjpjb252ZXJ0VW5pY29kZShwWzJd
LCBwWzNdLCBwWzRdLCBwWzVdKTsKICAgICAgICAgfQogICAgICAgfQotICAgICAgaWYgKGNoYXJM
ZW4gJiYgKHUudWMgPT0gMCB8fCB1LnVjID49IDEyOCB8fCAhc3RyY2hyKGRvX25vdF91bmVzY2Fw
ZSwgdS5sb3coKSkpKSB7CisgICAgICBpZiAoY2hhckxlbiAmJiAodSA9PSAwIHx8IHUgPj0gMTI4
IHx8ICFzdHJjaHIoZG9fbm90X3VuZXNjYXBlLCB1KSkpIHsKICAgICAgICAgYyA9IHU7CiAgICAg
ICAgIGsgKz0gY2hhckxlbiAtIDE7CiAgICAgICB9CkBAIC02MzEsNyArNjMxLDcgQEAgc3RhdGlj
IGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBpbnQgcmFkaXgpCiAgICAgaW50IGxl
bmd0aCA9IHMuc2l6ZSgpOwogICAgIGludCBwID0gMDsKIAotICAgIHdoaWxlIChwIDwgbGVuZ3Ro
ICYmIGlzU3RyV2hpdGVTcGFjZShzW3BdLnVjKSkgeworICAgIHdoaWxlIChwIDwgbGVuZ3RoICYm
IGlzU3RyV2hpdGVTcGFjZShzW3BdKSkgewogICAgICAgICArK3A7CiAgICAgfQogCkBAIC02NjIs
NyArNjYyLDcgQEAgc3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBpbnQg
cmFkaXgpCiAgICAgYm9vbCBzYXdEaWdpdCA9IGZhbHNlOwogICAgIGRvdWJsZSBudW1iZXIgPSAw
OwogICAgIHdoaWxlIChwIDwgbGVuZ3RoKSB7Ci0gICAgICAgIGludCBkaWdpdCA9IHBhcnNlRGln
aXQoc1twXS51YywgcmFkaXgpOworICAgICAgICBpbnQgZGlnaXQgPSBwYXJzZURpZ2l0KHNbcF0s
IHJhZGl4KTsKICAgICAgICAgaWYgKGRpZ2l0ID09IC0xKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIHNhd0RpZ2l0ID0gdHJ1ZTsKQEAgLTY5MCw3ICs2OTAsNyBAQCBzdGF0aWMgZG91Ymxl
IHBhcnNlRmxvYXQoY29uc3QgVVN0cmluZyYgcykKICAgICAvLyBOZWVkIHRvIHNraXAgYW55IHdo
aXRlc3BhY2UgYW5kIHRoZW4gb25lICsgb3IgLSBzaWduLgogICAgIGludCBsZW5ndGggPSBzLnNp
emUoKTsKICAgICBpbnQgcCA9IDA7Ci0gICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0
ZVNwYWNlKHNbcF0udWMpKSB7CisgICAgd2hpbGUgKHAgPCBsZW5ndGggJiYgaXNTdHJXaGl0ZVNw
YWNlKHNbcF0pKSB7CiAgICAgICAgICsrcDsKICAgICB9CiAgICAgaWYgKHAgPCBsZW5ndGggJiYg
KHNbcF0gPT0gJysnIHx8IHNbcF0gPT0gJy0nKSkgewpAQCAtODE3LDcgKzgxNyw3IEBAIEpTVmFs
dWUqIGdsb2JhbEZ1bmNFc2NhcGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IExp
c3QmIGFyZ3MpCiAgICAgVVN0cmluZyByID0gIiIsIHMsIHN0ciA9IGFyZ3NbMF0tPnRvU3RyaW5n
KGV4ZWMpOwogICAgIGNvbnN0IFVDaGFyKiBjID0gc3RyLmRhdGEoKTsKICAgICBmb3IgKGludCBr
ID0gMDsgayA8IHN0ci5zaXplKCk7IGsrKywgYysrKSB7Ci0gICAgICAgIGludCB1ID0gYy0+dWM7
CisgICAgICAgIGludCB1ID0gY1swXTsKICAgICAgICAgaWYgKHUgPiAyNTUpIHsKICAgICAgICAg
ICAgIGNoYXIgdG1wWzddOwogICAgICAgICAgICAgc3ByaW50Zih0bXAsICIlJXUlMDRYIiwgdSk7
CkBAIC04NDIsMTQgKzg0MiwxNCBAQCBKU1ZhbHVlKiBnbG9iYWxGdW5jVW5lc2NhcGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCosIGNvbnN0IExpc3QmIGFyZ3MpCiAgICAgd2hpbGUgKGsgPCBs
ZW4pIHsKICAgICAgICAgY29uc3QgVUNoYXIqIGMgPSBzdHIuZGF0YSgpICsgazsKICAgICAgICAg
VUNoYXIgdTsKLSAgICAgICAgaWYgKCpjID09IFVDaGFyKCclJykgJiYgayA8PSBsZW4gLSA2ICYm
ICooYyArIDEpID09IFVDaGFyKCd1JykpIHsKLSAgICAgICAgICAgIGlmIChMZXhlcjo6aXNIZXhE
aWdpdCgoYyArIDIpLT51YykgJiYgTGV4ZXI6OmlzSGV4RGlnaXQoKGMgKyAzKS0+dWMpICYmIExl
eGVyOjppc0hleERpZ2l0KChjICsgNCktPnVjKSAmJiBMZXhlcjo6aXNIZXhEaWdpdCgoYyArIDUp
LT51YykpIHsKLSAgICAgICAgICAgICAgICB1ID0gTGV4ZXI6OmNvbnZlcnRVbmljb2RlKChjICsg
MiktPnVjLCAoYyArIDMpLT51YywgKGMgKyA0KS0+dWMsIChjICsgNSktPnVjKTsKKyAgICAgICAg
aWYgKGNbMF0gPT0gJyUnICYmIGsgPD0gbGVuIC0gNiAmJiBjWzFdID09ICd1JykgeworICAgICAg
ICAgICAgaWYgKExleGVyOjppc0hleERpZ2l0KGNbMl0pICYmIExleGVyOjppc0hleERpZ2l0KGNb
M10pICYmIExleGVyOjppc0hleERpZ2l0KGNbNF0pICYmIExleGVyOjppc0hleERpZ2l0KGNbNV0p
KSB7CisgICAgICAgICAgICAgICAgdSA9IExleGVyOjpjb252ZXJ0VW5pY29kZShjWzJdLCBjWzNd
LCBjWzRdLCBjWzVdKTsKICAgICAgICAgICAgICAgICBjID0gJnU7CiAgICAgICAgICAgICAgICAg
ayArPSA1OwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKCpjID09IFVDaGFyKCcl
JykgJiYgayA8PSBsZW4gLSAzICYmIExleGVyOjppc0hleERpZ2l0KChjICsgMSktPnVjKSAmJiBM
ZXhlcjo6aXNIZXhEaWdpdCgoYyArIDIpLT51YykpIHsKLSAgICAgICAgICAgIHUgPSBVQ2hhcihM
ZXhlcjo6Y29udmVydEhleCgoYysxKS0+dWMsIChjKzIpLT51YykpOworICAgICAgICB9IGVsc2Ug
aWYgKGNbMF0gPT0gJyUnICYmIGsgPD0gbGVuIC0gMyAmJiBMZXhlcjo6aXNIZXhEaWdpdChjWzFd
KSAmJiBMZXhlcjo6aXNIZXhEaWdpdChjWzJdKSkgeworICAgICAgICAgICAgdSA9IFVDaGFyKExl
eGVyOjpjb252ZXJ0SGV4KGNbMV0sIGNbMl0pKTsKICAgICAgICAgICAgIGMgPSAmdTsKICAgICAg
ICAgICAgIGsgKz0gMjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pz
L2Z1bmN0aW9uX29iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25fb2JqZWN0
LmNwcAppbmRleCAzYzU2NjE2Li43Yzc1ZjYyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9r
anMvZnVuY3Rpb25fb2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb25f
b2JqZWN0LmNwcApAQCAtMTkyLDEwICsxOTIsMTAgQEAgSlNPYmplY3QqIEZ1bmN0aW9uT2JqZWN0
SW1wOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzLCBjb25zdAog
ICAgIHdoaWxlIChpIDwgbGVuKSB7CiAgICAgICAgIHdoaWxlICgqYyA9PSAnICcgJiYgaSA8IGxl
bikKICAgICAgICAgICAgIGMrKywgaSsrOwotICAgICAgICBpZiAoTGV4ZXI6OmlzSWRlbnRTdGFy
dChjLT51YykpIHsgIC8vIGVsc2UgZXJyb3IKKyAgICAgICAgaWYgKExleGVyOjppc0lkZW50U3Rh
cnQoY1swXSkpIHsgIC8vIGVsc2UgZXJyb3IKICAgICAgICAgICAgIHBhcmFtID0gVVN0cmluZyhj
LCAxKTsKICAgICAgICAgICAgIGMrKywgaSsrOwotICAgICAgICAgICAgd2hpbGUgKGkgPCBsZW4g
JiYgKExleGVyOjppc0lkZW50UGFydChjLT51YykpKSB7CisgICAgICAgICAgICB3aGlsZSAoaSA8
IGxlbiAmJiAoTGV4ZXI6OmlzSWRlbnRQYXJ0KGNbMF0pKSkgewogICAgICAgICAgICAgICAgIHBh
cmFtICs9IFVTdHJpbmcoYywgMSk7CiAgICAgICAgICAgICAgICAgYysrLCBpKys7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5jcHAKaW5kZXggM2ZhMDFhZC4uNTJjZTNlMiAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZpZXIuY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL2tqcy9pZGVudGlmaWVyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBib29sIElkZW50
aWZpZXI6OmVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCAqciwgY29uc3QgY2hhciAqcykKICAgICBp
bnQgbGVuZ3RoID0gci0+bGVuOwogICAgIGNvbnN0IFVDaGFyICpkID0gci0+ZGF0YSgpOwogICAg
IGZvciAoaW50IGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKQotICAgICAgICBpZiAoZFtpXS51YyAh
PSAodW5zaWduZWQgY2hhcilzW2ldKQorICAgICAgICBpZiAoZFtpXSAhPSAodW5zaWduZWQgY2hh
cilzW2ldKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBzW2xlbmd0aF0g
PT0gMDsKIH0KQEAgLTc4LDcgKzc4LDcgQEAgYm9vbCBJZGVudGlmaWVyOjplcXVhbChjb25zdCBV
U3RyaW5nOjpSZXAgKnIsIGNvbnN0IFVDaGFyICpzLCBpbnQgbGVuZ3RoKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgY29uc3QgVUNoYXIgKmQgPSByLT5kYXRhKCk7CiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChkW2ldLnVjICE9IHNbaV0udWMp
CisgICAgICAgIGlmIChkW2ldICE9IHNbaV0pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgSWRlbnRpZmllcjo6ZXF1
YWwoY29uc3QgVVN0cmluZzo6UmVwICpyLCBjb25zdCBVU3RyaW5nOjpSZXAgKmIpCiAgICAgY29u
c3QgVUNoYXIgKmQgPSByLT5kYXRhKCk7CiAgICAgY29uc3QgVUNoYXIgKnMgPSBiLT5kYXRhKCk7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gbGVuZ3RoOyArK2kpCi0gICAgICAgIGlmIChkW2ld
LnVjICE9IHNbaV0udWMpCisgICAgICAgIGlmIChkW2ldICE9IHNbaV0pCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMTMsNyArMTEzLDcgQEAgc3Ry
dWN0IENTdHJpbmdUcmFuc2xhdG9yCiAgICAgICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oYyk7
CiAgICAgICAgIFVDaGFyICpkID0gc3RhdGljX2Nhc3Q8VUNoYXIgKj4oZmFzdE1hbGxvYyhzaXpl
b2YoVUNoYXIpICogbGVuZ3RoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGxl
bmd0aDsgaSsrKQotICAgICAgICAgICAgZFtpXSA9IGNbaV07CisgICAgICAgICAgICBkW2ldID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY1tpXSk7IC8vIHVzZSB1bnNpZ25lZCBjaGFyIHRv
IHplcm8tZXh0ZW5kIGluc3RlYWQgb2Ygc2lnbi1leHRlbmQKICAgICAgICAgCiAgICAgICAgIFVT
dHJpbmc6OlJlcCAqciA9IFVTdHJpbmc6OlJlcDo6Y3JlYXRlKGQsIHN0YXRpY19jYXN0PGludD4o
bGVuZ3RoKSkucmVsZWFzZVJlZigpOwogICAgICAgICByLT5pc0lkZW50aWZpZXIgPSAxOwpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmggYi9KYXZhU2NyaXB0Q29y
ZS9ranMvaW50ZXJwcmV0ZXIuaAppbmRleCA3OWI5Mzk4Li41YjUyZDhjIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMv
aW50ZXJwcmV0ZXIuaApAQCAtMjMsMTQgKzIzLDE0IEBACiAjaWZuZGVmIEtKU19JbnRlcnByZXRl
cl9oCiAjZGVmaW5lIEtKU19JbnRlcnByZXRlcl9oCiAKKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9V
bmljb2RlLmg+CisKIG5hbWVzcGFjZSBLSlMgewogCiAgIGNsYXNzIENvbXBsZXRpb247CiAgIGNs
YXNzIEV4ZWNTdGF0ZTsKICAgY2xhc3MgSlNWYWx1ZTsKICAgY2xhc3MgVVN0cmluZzsKLQotICBz
dHJ1Y3QgVUNoYXI7CiAgIAogICBjbGFzcyBJbnRlcnByZXRlciB7CiAgIHB1YmxpYzoKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2tqcy9sZXhlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ranMv
bGV4ZXIuY3BwCmluZGV4IGM0ZDMyN2YuLjcxOWEzZTYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2tqcy9sZXhlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUva2pzL2xleGVyLmNwcApAQCAt
OTQsNyArOTQsNyBAQCBMZXhlcjo6TGV4ZXIoKQogICAgIG1faWRlbnRpZmllcnMucmVzZXJ2ZUNh
cGFjaXR5KGluaXRpYWxTdHJpbmdUYWJsZUNhcGFjaXR5KTsKIH0KIAotdm9pZCBMZXhlcjo6c2V0
Q29kZShpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBLSlM6OlVDaGFyICpjLCB1bnNpZ25l
ZCBpbnQgbGVuKQordm9pZCBMZXhlcjo6c2V0Q29kZShpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBj
b25zdCBVQ2hhciogYywgdW5zaWduZWQgaW50IGxlbikKIHsKICAgeXlsaW5lbm8gPSAxICsgc3Rh
cnRpbmdMaW5lTnVtYmVyOwogICByZXN0cktleXdvcmQgPSBmYWxzZTsKQEAgLTExMSwxMCArMTEx
LDEwIEBAIHZvaWQgTGV4ZXI6OnNldENvZGUoaW50IHN0YXJ0aW5nTGluZU51bWJlciwgY29uc3Qg
S0pTOjpVQ2hhciAqYywgdW5zaWduZWQgaW50IGxlCiAgIGF0TGluZVN0YXJ0ID0gdHJ1ZTsKIAog
ICAvLyByZWFkIGZpcnN0IGNoYXJhY3RlcnMKLSAgY3VycmVudCA9IChsZW5ndGggPiAwKSA/IGNv
ZGVbMF0udWMgOiAtMTsKLSAgbmV4dDEgPSAobGVuZ3RoID4gMSkgPyBjb2RlWzFdLnVjIDogLTE7
Ci0gIG5leHQyID0gKGxlbmd0aCA+IDIpID8gY29kZVsyXS51YyA6IC0xOwotICBuZXh0MyA9IChs
ZW5ndGggPiAzKSA/IGNvZGVbM10udWMgOiAtMTsKKyAgY3VycmVudCA9IChsZW5ndGggPiAwKSA/
IGNvZGVbMF0gOiAtMTsKKyAgbmV4dDEgPSAobGVuZ3RoID4gMSkgPyBjb2RlWzFdIDogLTE7Cisg
IG5leHQyID0gKGxlbmd0aCA+IDIpID8gY29kZVsyXSA6IC0xOworICBuZXh0MyA9IChsZW5ndGgg
PiAzKSA/IGNvZGVbM10gOiAtMTsKIH0KIAogdm9pZCBMZXhlcjo6c2hpZnQodW5zaWduZWQgaW50
IHApCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBMZXhlcjo6c2hpZnQodW5zaWduZWQgaW50IHAp
CiAgICAgY3VycmVudCA9IG5leHQxOwogICAgIG5leHQxID0gbmV4dDI7CiAgICAgbmV4dDIgPSBu
ZXh0MzsKLSAgICBuZXh0MyA9IChwb3MgKyAzIDwgbGVuZ3RoKSA/IGNvZGVbcG9zICsgM10udWMg
OiAtMTsKKyAgICBuZXh0MyA9IChwb3MgKyAzIDwgbGVuZ3RoKSA/IGNvZGVbcG9zICsgM10gOiAt
MTsKICAgfQogfQogCkBAIC00MjcsNyArNDI3LDcgQEAgaW50IExleGVyOjpsZXgoKQogICAgICAg
ICBzZXREb25lKEJhZCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgICAgdG9rZW4gPSBj
b252ZXJ0VW5pY29kZShjdXJyZW50LCBuZXh0MSwgbmV4dDIsIG5leHQzKS51YzsKKyAgICAgIHRv
a2VuID0gY29udmVydFVuaWNvZGUoY3VycmVudCwgbmV4dDEsIG5leHQyLCBuZXh0Myk7CiAgICAg
ICBzaGlmdCgzKTsKICAgICAgIGlmICghaXNJZGVudFN0YXJ0KHRva2VuKSkgewogICAgICAgICBz
ZXREb25lKEJhZCk7CkBAIC00NDEsNyArNDQxLDcgQEAgaW50IExleGVyOjpsZXgoKQogICAgICAg
ICBzZXREb25lKEJhZCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgICAgdG9rZW4gPSBj
b252ZXJ0VW5pY29kZShjdXJyZW50LCBuZXh0MSwgbmV4dDIsIG5leHQzKS51YzsKKyAgICAgIHRv
a2VuID0gY29udmVydFVuaWNvZGUoY3VycmVudCwgbmV4dDEsIG5leHQyLCBuZXh0Myk7CiAgICAg
ICBzaGlmdCgzKTsKICAgICAgIGlmICghaXNJZGVudFBhcnQodG9rZW4pKSB7CiAgICAgICAgIHNl
dERvbmUoQmFkKTsKQEAgLTc5MiwxMCArNzkyLDExIEBAIHVuc2lnbmVkIGNoYXIgTGV4ZXI6OmNv
bnZlcnRIZXgoaW50IGMxLCBpbnQgYzIpCiAgIHJldHVybiAoKGNvbnZlcnRIZXgoYzEpIDw8IDQp
ICsgY29udmVydEhleChjMikpOwogfQogCi1LSlM6OlVDaGFyIExleGVyOjpjb252ZXJ0VW5pY29k
ZShpbnQgYzEsIGludCBjMiwgaW50IGMzLCBpbnQgYzQpCitVQ2hhciBMZXhlcjo6Y29udmVydFVu
aWNvZGUoaW50IGMxLCBpbnQgYzIsIGludCBjMywgaW50IGM0KQogewotICByZXR1cm4gS0pTOjpV
Q2hhcigoY29udmVydEhleChjMSkgPDwgNCkgKyBjb252ZXJ0SGV4KGMyKSwKLSAgICAgICAgICAg
ICAgIChjb252ZXJ0SGV4KGMzKSA8PCA0KSArIGNvbnZlcnRIZXgoYzQpKTsKKyAgICB1bnNpZ25l
ZCBjaGFyIGhpZ2hCeXRlID0gKGNvbnZlcnRIZXgoYzEpIDw8IDQpICsgY29udmVydEhleChjMik7
CisgICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0gKGNvbnZlcnRIZXgoYzMpIDw8IDQpICsgY29u
dmVydEhleChjNCk7CisgICAgcmV0dXJuIChoaWdoQnl0ZSA8PCA4IHwgbG93Qnl0ZSk7CiB9CiAK
IHZvaWQgTGV4ZXI6OnJlY29yZDgoaW50IGMpCkBAIC04MTIsNyArODEzLDcgQEAgdm9pZCBMZXhl
cjo6cmVjb3JkMTYoaW50IGMpCiAgICAgcmVjb3JkMTYoVUNoYXIoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgc2hvcnQ+KGMpKSk7CiB9CiAKLXZvaWQgTGV4ZXI6OnJlY29yZDE2KEtKUzo6VUNoYXIgYykK
K3ZvaWQgTGV4ZXI6OnJlY29yZDE2KFVDaGFyIGMpCiB7CiAgICAgbV9idWZmZXIxNi5hcHBlbmQo
Yyk7CiB9CkBAIC04ODAsMTQgKzg4MSwxNCBAQCB2b2lkIExleGVyOjpjbGVhcigpCiAgICAgbV9m
bGFncyA9IDA7CiB9CiAKLUlkZW50aWZpZXIqIExleGVyOjptYWtlSWRlbnRpZmllcihjb25zdCBW
ZWN0b3I8S0pTOjpVQ2hhcj4mIGJ1ZmZlcikKK0lkZW50aWZpZXIqIExleGVyOjptYWtlSWRlbnRp
Zmllcihjb25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpCiB7CiAgICAgS0pTOjpJZGVudGlmaWVy
KiBpZGVudGlmaWVyID0gbmV3IEtKUzo6SWRlbnRpZmllcihidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKICAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChpZGVudGlmaWVyKTsKICAgICByZXR1
cm4gaWRlbnRpZmllcjsKIH0KICAKLVVTdHJpbmcqIExleGVyOjptYWtlVVN0cmluZyhjb25zdCBW
ZWN0b3I8S0pTOjpVQ2hhcj4mIGJ1ZmZlcikKK1VTdHJpbmcqIExleGVyOjptYWtlVVN0cmluZyhj
b25zdCBWZWN0b3I8VUNoYXI+JiBidWZmZXIpCiB7CiAgICAgVVN0cmluZyogc3RyaW5nID0gbmV3
IFVTdHJpbmcoYnVmZmVyKTsKICAgICBtX3N0cmluZ3MuYXBwZW5kKHN0cmluZyk7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9s
b29rdXAuY3BwCmluZGV4IDk1ZGM1Y2IuLjA1OGY1OGYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL2tqcy9sb29rdXAuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9sb29rdXAuY3BwCkBA
IC0zMSw3ICszMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrZXlzTWF0Y2goY29uc3QgVUNoYXIq
IGMsIHVuc2lnbmVkIGxlbiwgY29uc3QgY2hhciogcykKICAgLy8gRklYTUU6IFRoaXMgY2FuIHJ1
biBvZmYgdGhlIGVuZCBvZiB8c3wgaWYgfGN8IGhhcyBhIFUrMDAwMCBjaGFyYWN0ZXIgaW4gaXQu
CiAgIGNvbnN0IGNoYXIqIGVuZCA9IHMgKyBsZW47CiAgIGZvciAoOyBzICE9IGVuZDsgYysrLCBz
KyspCi0gICAgaWYgKGMtPnVjICE9ICpzKQorICAgIGlmICgqYyAhPSAqcykKICAgICAgIHJldHVy
biBmYWxzZTsKICAgcmV0dXJuICpzID09IDA7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ranMvbm9kZXMyc3RyaW5nLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcu
Y3BwCmluZGV4IGIxMGUxODAuLmM4MDdmZTAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tq
cy9ub2RlczJzdHJpbmcuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcu
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVN0cmluZ0ZvclByZXR0
eVByaW50aW5nKGNvbnN0IFVTdHJpbmcmIHMpCiAgICAgVVN0cmluZyBlc2NhcGVkU3RyaW5nOwog
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHVuc2ln
bmVkIHNob3J0IGMgPSBzLmRhdGEoKVtpXS51bmljb2RlKCk7CisgICAgICAgIHVuc2lnbmVkIHNo
b3J0IGMgPSBzLmRhdGEoKVtpXTsKICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICBj
YXNlICdcIic6CiAgICAgICAgICAgICAgICAgZXNjYXBlZFN0cmluZyArPSAiXFxcIiI7CkBAIC0x
NTksNyArMTU5LDggQEAgU291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoY2hh
ciBjKQogewogICAgIG1fbnVtYmVyTmVlZHNQYXJlbnMgPSBmYWxzZTsKICAgICBtX2F0U3RhcnRP
ZlN0YXRlbWVudCA9IGZhbHNlOwotICAgIFVDaGFyIGNoKGMpOworICAgIC8vIHVzZSB1bnNpZ25l
ZCBjaGFyIHRvIHplcm8tZXh0ZW5kIGluc3RlYWQgb2Ygc2lnbi1leHRlbmQKKyAgICBVQ2hhciBj
aChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSk7CiAgICAgbV9zdHJpbmcuYXBwZW5kKGNo
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ranMv
cmVnZXhwLmNwcCBiL0phdmFTY3JpcHRDb3JlL2tqcy9yZWdleHAuY3BwCmluZGV4IDRmYmM2NDUu
LmVkNDM2YTUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9yZWdleHAuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL2tqcy9yZWdleHAuY3BwCkBAIC0zOCw3ICszOCw3IEBAIGlubGluZSBS
ZWdFeHA6OlJlZ0V4cChjb25zdCBVU3RyaW5nJiBwYXR0ZXJuKQogICAsIG1fY29uc3RydWN0aW9u
RXJyb3IoMCkKICAgLCBtX251bVN1YnBhdHRlcm5zKDApCiB7Ci0gICAgbV9yZWdFeHAgPSBqc1Jl
Z0V4cENvbXBpbGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4ocGF0dGVybi5kYXRh
KCkpLCBwYXR0ZXJuLnNpemUoKSwKKyAgICBtX3JlZ0V4cCA9IGpzUmVnRXhwQ29tcGlsZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocGF0dGVybi5kYXRhKCkpLCBwYXR0ZXJuLnNpemUo
KSwKICAgICAgICAgSlNSZWdFeHBEb05vdElnbm9yZUNhc2UsIEpTUmVnRXhwU2luZ2xlTGluZSwg
Jm1fbnVtU3VicGF0dGVybnMsICZtX2NvbnN0cnVjdGlvbkVycm9yKTsKIH0KIApAQCAtNzIsNyAr
NzIsNyBAQCBpbmxpbmUgUmVnRXhwOjpSZWdFeHAoY29uc3QgVVN0cmluZyYgcGF0dGVybiwgY29u
c3QgVVN0cmluZyYgZmxhZ3MpCiAgICAgICAgIG11bHRpbGluZU9wdGlvbiA9IEpTUmVnRXhwTXVs
dGlsaW5lOwogICAgIH0KICAgICAKLSAgICBtX3JlZ0V4cCA9IGpzUmVnRXhwQ29tcGlsZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihwYXR0ZXJuLmRhdGEoKSksIHBhdHRlcm4uc2l6
ZSgpLAorICAgIG1fcmVnRXhwID0ganNSZWdFeHBDb21waWxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUNoYXIqPihwYXR0ZXJuLmRhdGEoKSksIHBhdHRlcm4uc2l6ZSgpLAogICAgICAgICBpZ25v
cmVDYXNlT3B0aW9uLCBtdWx0aWxpbmVPcHRpb24sICZtX251bVN1YnBhdHRlcm5zLCAmbV9jb25z
dHJ1Y3Rpb25FcnJvcik7CiB9CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBpbnQgUmVnRXhwOjptYXRj
aChjb25zdCBVU3RyaW5nJiBzLCBpbnQgaSwgT3duQXJyYXlQdHI8aW50Piogb3ZlY3RvcikKICAg
ICBvdmVjdG9yLT5zZXQob2Zmc2V0VmVjdG9yKTsKICAgfQogCi0gIGludCBudW1NYXRjaGVzID0g
anNSZWdFeHBFeGVjdXRlKG1fcmVnRXhwLCByZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIq
PihzLmRhdGEoKSksIHMuc2l6ZSgpLCBpLCBvZmZzZXRWZWN0b3IsIG9mZnNldFZlY3RvclNpemUp
OworICBpbnQgbnVtTWF0Y2hlcyA9IGpzUmVnRXhwRXhlY3V0ZShtX3JlZ0V4cCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMuZGF0YSgpKSwgcy5zaXplKCksIGksIG9mZnNldFZlY3Rv
ciwgb2Zmc2V0VmVjdG9yU2l6ZSk7CiAKICAgaWYgKG51bU1hdGNoZXMgPCAwKSB7CiAjaWZuZGVm
IE5ERUJVRwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3QuY3Bw
IGIvSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3QuY3BwCmluZGV4IDA0ZDhlYmIuLmIx
Y2Q5OTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy9zdHJpbmdfb2JqZWN0LmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ranMvc3RyaW5nX29iamVjdC5jcHAKQEAgLTI1MSw3ICsyNTEs
NyBAQCBzdGF0aWMgaW5saW5lIFVTdHJpbmcgc3Vic3RpdHV0ZUJhY2tyZWZlcmVuY2VzKGNvbnN0
IFVTdHJpbmcgJnJlcGxhY2VtZW50LCBjb25zdAogICAgIGlmIChpKzEgPT0gc3Vic3RpdHV0ZWRS
ZXBsYWNlbWVudC5zaXplKCkpCiAgICAgICAgIGJyZWFrOwogCi0gICAgdW5zaWduZWQgc2hvcnQg
cmVmID0gc3Vic3RpdHV0ZWRSZXBsYWNlbWVudFtpKzFdLnVuaWNvZGUoKTsKKyAgICB1bnNpZ25l
ZCBzaG9ydCByZWYgPSBzdWJzdGl0dXRlZFJlcGxhY2VtZW50W2krMV07CiAgICAgaW50IGJhY2ty
ZWZTdGFydCA9IDA7CiAgICAgaW50IGJhY2tyZWZMZW5ndGggPSAwOwogICAgIGludCBhZHZhbmNl
ID0gMDsKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgaW5saW5lIFVTdHJpbmcgc3Vic3RpdHV0
ZUJhY2tyZWZlcmVuY2VzKGNvbnN0IFVTdHJpbmcgJnJlcGxhY2VtZW50LCBjb25zdAogICAgICAg
ICBpZiAoYmFja3JlZkluZGV4ID4gcmVnLT5udW1TdWJwYXR0ZXJucygpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGlmIChzdWJzdGl0dXRlZFJlcGxhY2VtZW50LnNpemUoKSA+IGkg
KyAyKSB7Ci0gICAgICAgICAgICByZWYgPSBzdWJzdGl0dXRlZFJlcGxhY2VtZW50W2krMl0udW5p
Y29kZSgpOworICAgICAgICAgICAgcmVmID0gc3Vic3RpdHV0ZWRSZXBsYWNlbWVudFtpKzJdOwog
ICAgICAgICAgICAgaWYgKHJlZiA+PSAnMCcgJiYgcmVmIDw9ICc5JykgewogICAgICAgICAgICAg
ICAgIGJhY2tyZWZJbmRleCA9IDEwICogYmFja3JlZkluZGV4ICsgcmVmIC0gJzAnOwogICAgICAg
ICAgICAgICAgIGlmIChiYWNrcmVmSW5kZXggPiByZWctPm51bVN1YnBhdHRlcm5zKCkpCkBAIC00
NzIsNyArNDcyLDcgQEAgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXMKICAgICBKU1ZhbHVlKiBhMCA9
IGFyZ3NbMF07CiAgICAgZG91YmxlIGRwb3MgPSBhMC0+dG9JbnRlZ2VyKGV4ZWMpOwogICAgIGlm
IChkcG9zID49IDAgJiYgZHBvcyA8IGxlbikKLSAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKHNbc3Rh
dGljX2Nhc3Q8aW50PihkcG9zKV0udW5pY29kZSgpKTsKKyAgICAgIHJlc3VsdCA9IGpzTnVtYmVy
KHNbc3RhdGljX2Nhc3Q8aW50PihkcG9zKV0pOwogICAgIGVsc2UKICAgICAgIHJlc3VsdCA9IGpz
TmFOKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTc4NSwxOCArNzg1LDE4IEBAIEpTVmFsdWUq
IHN0cmluZ1Byb3RvRnVuY1RvTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRo
aXNPYmosIGNvbnN0IExpCiAgICAgaW50IHNzaXplID0gcy5zaXplKCk7CiAgICAgaWYgKCFzc2l6
ZSkKICAgICAgICAgcmV0dXJuIHNWYWw7Ci0gICAgVmVjdG9yPCA6OlVDaGFyPiBidWZmZXIoc3Np
emUpOworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHNzaXplKTsKICAgICBib29sIGVycm9yOwot
ICAgIGludCBsZW5ndGggPSBVbmljb2RlOjp0b0xvd2VyKGJ1ZmZlci5kYXRhKCksIHNzaXplLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihzLmRhdGEoKSksIHNzaXplLCAmZXJyb3Ip
OworICAgIGludCBsZW5ndGggPSBVbmljb2RlOjp0b0xvd2VyKGJ1ZmZlci5kYXRhKCksIHNzaXpl
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocy5kYXRhKCkpLCBzc2l6ZSwgJmVycm9y
KTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgYnVmZmVyLnJlc2l6ZShsZW5ndGgpOwotICAg
ICAgICBsZW5ndGggPSBVbmljb2RlOjp0b0xvd2VyKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4ocy5kYXRhKCkpLCBzc2l6ZSwgJmVycm9yKTsK
KyAgICAgICAgbGVuZ3RoID0gVW5pY29kZTo6dG9Mb3dlcihidWZmZXIuZGF0YSgpLCBsZW5ndGgs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmRhdGEoKSksIHNzaXplLCAmZXJyb3Ip
OwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gc1ZhbDsKICAgICB9CiAg
ICAgaWYgKGxlbmd0aCA9PSBzc2l6ZSAmJiBtZW1jbXAoYnVmZmVyLmRhdGEoKSwgcy5kYXRhKCks
IGxlbmd0aCAqIHNpemVvZihVQ2hhcikpID09IDApCiAgICAgICAgIHJldHVybiBzVmFsOwotICAg
IHJldHVybiBqc1N0cmluZyhVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIu
cmVsZWFzZUJ1ZmZlcigpKSwgbGVuZ3RoLCBmYWxzZSkpOworICAgIHJldHVybiBqc1N0cmluZyhV
U3RyaW5nKGJ1ZmZlci5yZWxlYXNlQnVmZmVyKCksIGxlbmd0aCwgZmFsc2UpKTsKIH0KIAogSlNW
YWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9VcHBlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogdGhpc09iaiwgY29uc3QgTGlzdCYpCkBAIC04MTAsMTggKzgxMCwxOCBAQCBKU1ZhbHVlKiBz
dHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqLCBjb25zdCBMaQogICAgIGludCBzc2l6ZSA9IHMuc2l6ZSgpOwogICAgIGlmICghc3NpemUp
CiAgICAgICAgIHJldHVybiBzVmFsOwotICAgIFZlY3RvcjwgOjpVQ2hhcj4gYnVmZmVyKHNzaXpl
KTsKKyAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcihzc2l6ZSk7CiAgICAgYm9vbCBlcnJvcjsKLSAg
ICBpbnQgbGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgpLCBzc2l6ZSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4ocy5kYXRhKCkpLCBzc2l6ZSwgJmVycm9yKTsK
KyAgICBpbnQgbGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgpLCBzc2l6ZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMuZGF0YSgpKSwgc3NpemUsICZlcnJvcik7
CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIGJ1ZmZlci5yZXNpemUobGVuZ3RoKTsKLSAgICAg
ICAgbGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgpLCBsZW5ndGgsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KHMuZGF0YSgpKSwgc3NpemUsICZlcnJvcik7Cisg
ICAgICAgIGxlbmd0aCA9IFVuaWNvZGU6OnRvVXBwZXIoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocy5kYXRhKCkpLCBzc2l6ZSwgJmVycm9yKTsK
ICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgcmV0dXJuIHNWYWw7CiAgICAgfQogICAg
IGlmIChsZW5ndGggPT0gc3NpemUgJiYgbWVtY21wKGJ1ZmZlci5kYXRhKCksIHMuZGF0YSgpLCBs
ZW5ndGggKiBzaXplb2YoVUNoYXIpKSA9PSAwKQogICAgICAgICByZXR1cm4gc1ZhbDsKLSAgICBy
ZXR1cm4ganNTdHJpbmcoVVN0cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyLnJl
bGVhc2VCdWZmZXIoKSksIGxlbmd0aCwgZmFsc2UpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoVVN0
cmluZyhidWZmZXIucmVsZWFzZUJ1ZmZlcigpLCBsZW5ndGgsIGZhbHNlKSk7CiB9CiAKIEpTVmFs
dWUqIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlTG93ZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QmKQpAQCAtODM2LDE4ICs4MzYsMTggQEAgSlNWYWx1
ZSogc3RyaW5nUHJvdG9GdW5jVG9Mb2NhbGVMb3dlckNhc2UoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogdGhpc09iaiwgY28KICAgICBpbnQgc3NpemUgPSBzLnNpemUoKTsKICAgICBpZiAoIXNz
aXplKQogICAgICAgICByZXR1cm4gc1ZhbDsKLSAgICBWZWN0b3I8IDo6VUNoYXI+IGJ1ZmZlcihz
c2l6ZSk7CisgICAgVmVjdG9yPFVDaGFyPiBidWZmZXIoc3NpemUpOwogICAgIGJvb2wgZXJyb3I7
Ci0gICAgaW50IGxlbmd0aCA9IFVuaWNvZGU6OnRvTG93ZXIoYnVmZmVyLmRhdGEoKSwgc3NpemUs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KHMuZGF0YSgpKSwgc3NpemUsICZlcnJv
cik7CisgICAgaW50IGxlbmd0aCA9IFVuaWNvZGU6OnRvTG93ZXIoYnVmZmVyLmRhdGEoKSwgc3Np
emUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmRhdGEoKSksIHNzaXplLCAmZXJy
b3IpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBidWZmZXIucmVzaXplKGxlbmd0aCk7Ci0g
ICAgICAgIGxlbmd0aCA9IFVuaWNvZGU6OnRvTG93ZXIoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihzLmRhdGEoKSksIHNzaXplLCAmZXJyb3Ip
OworICAgICAgICBsZW5ndGggPSBVbmljb2RlOjp0b0xvd2VyKGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHMuZGF0YSgpKSwgc3NpemUsICZlcnJv
cik7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybiBzVmFsOwogICAgIH0K
ICAgICBpZiAobGVuZ3RoID09IHNzaXplICYmIG1lbWNtcChidWZmZXIuZGF0YSgpLCBzLmRhdGEo
KSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSkgPT0gMCkKICAgICAgICAgcmV0dXJuIHNWYWw7Ci0g
ICAgcmV0dXJuIGpzU3RyaW5nKFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZl
ci5yZWxlYXNlQnVmZmVyKCkpLCBsZW5ndGgsIGZhbHNlKSk7CisgICAgcmV0dXJuIGpzU3RyaW5n
KFVTdHJpbmcoYnVmZmVyLnJlbGVhc2VCdWZmZXIoKSwgbGVuZ3RoLCBmYWxzZSkpOwogfQogCiBK
U1ZhbHVlKiBzdHJpbmdQcm90b0Z1bmNUb0xvY2FsZVVwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0JikKQEAgLTg2MSwxOCArODYxLDE4IEBAIEpT
VmFsdWUqIHN0cmluZ1Byb3RvRnVuY1RvTG9jYWxlVXBwZXJDYXNlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmosIGNvCiAgICAgaW50IHNzaXplID0gcy5zaXplKCk7CiAgICAgaWYg
KCFzc2l6ZSkKICAgICAgICAgcmV0dXJuIHNWYWw7Ci0gICAgVmVjdG9yPCA6OlVDaGFyPiBidWZm
ZXIoc3NpemUpOworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKHNzaXplKTsKICAgICBib29sIGVy
cm9yOwotICAgIGludCBsZW5ndGggPSBVbmljb2RlOjp0b1VwcGVyKGJ1ZmZlci5kYXRhKCksIHNz
aXplLCByZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihzLmRhdGEoKSksIHNzaXplLCAm
ZXJyb3IpOworICAgIGludCBsZW5ndGggPSBVbmljb2RlOjp0b1VwcGVyKGJ1ZmZlci5kYXRhKCks
IHNzaXplLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4ocy5kYXRhKCkpLCBzc2l6ZSwg
JmVycm9yKTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgYnVmZmVyLnJlc2l6ZShsZW5ndGgp
OwotICAgICAgICBsZW5ndGggPSBVbmljb2RlOjp0b1VwcGVyKGJ1ZmZlci5kYXRhKCksIGxlbmd0
aCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCA6OlVDaGFyKj4ocy5kYXRhKCkpLCBzc2l6ZSwgJmVy
cm9yKTsKKyAgICAgICAgbGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihidWZmZXIuZGF0YSgpLCBs
ZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPihzLmRhdGEoKSksIHNzaXplLCAm
ZXJyb3IpOwogICAgICAgICBpZiAoZXJyb3IpCiAgICAgICAgICAgICByZXR1cm4gc1ZhbDsKICAg
ICB9CiAgICAgaWYgKGxlbmd0aCA9PSBzc2l6ZSAmJiBtZW1jbXAoYnVmZmVyLmRhdGEoKSwgcy5k
YXRhKCksIGxlbmd0aCAqIHNpemVvZihVQ2hhcikpID09IDApCiAgICAgICAgIHJldHVybiBzVmFs
OwotICAgIHJldHVybiBqc1N0cmluZyhVU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihi
dWZmZXIucmVsZWFzZUJ1ZmZlcigpKSwgbGVuZ3RoLCBmYWxzZSkpOworICAgIHJldHVybiBqc1N0
cmluZyhVU3RyaW5nKGJ1ZmZlci5yZWxlYXNlQnVmZmVyKCksIGxlbmd0aCwgZmFsc2UpKTsKIH0K
IAogSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBMaXN0JiBhcmdzKQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUva2pzL3VzdHJpbmcuY3BwIGIvSmF2YVNjcmlwdENvcmUva2pzL3VzdHJpbmcuY3Bw
CmluZGV4IGI2NThhOGQuLjVlNDE4NzUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2tqcy91
c3RyaW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5jcHAKQEAgLTE2Myw5
ICsxNjMsOSBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYzEsIGNvbnN0IENTdHJp
bmcmIGMyKQogfQogCiAvLyBIYWNrIGhlcmUgdG8gYXZvaWQgYSBnbG9iYWwgd2l0aCBhIGNvbnN0
cnVjdG9yOyBwb2ludCB0byBhbiB1bnNpZ25lZCBzaG9ydCBpbnN0ZWFkIG9mIGEgVUNoYXIuCi1z
dGF0aWMgdW5zaWduZWQgc2hvcnQgYWxtb3N0VUNoYXI7CitzdGF0aWMgVUNoYXIgc2hhcmVkRW1w
dHlDaGFyOwogVVN0cmluZzo6UmVwIFVTdHJpbmc6OlJlcDo6bnVsbCA9IHsgMCwgMCwgMSwgMCwg
MCwgJlVTdHJpbmc6OlJlcDo6bnVsbCwgMCwgMCwgMCwgMCwgMCwgMCB9OwotVVN0cmluZzo6UmVw
IFVTdHJpbmc6OlJlcDo6ZW1wdHkgPSB7IDAsIDAsIDEsIDAsIDAsICZVU3RyaW5nOjpSZXA6OmVt
cHR5LCAwLCByZWludGVycHJldF9jYXN0PFVDaGFyKj4oJmFsbW9zdFVDaGFyKSwgMCwgMCwgMCwg
MCB9OworVVN0cmluZzo6UmVwIFVTdHJpbmc6OlJlcDo6ZW1wdHkgPSB7IDAsIDAsIDEsIDAsIDAs
ICZVU3RyaW5nOjpSZXA6OmVtcHR5LCAwLCAmc2hhcmVkRW1wdHlDaGFyLCAwLCAwLCAwLCAwIH07
CiBjb25zdCBpbnQgbm9ybWFsU3RhdEJ1ZmZlclNpemUgPSA0MDk2Owogc3RhdGljIGNoYXIgKnN0
YXRCdWZmZXIgPSAwOyAvLyBGSVhNRTogVGhpcyBidWZmZXIgaXMgbmV2ZXIgZGVhbGxvY2F0ZWQu
CiBzdGF0aWMgaW50IHN0YXRCdWZmZXJTaXplID0gMDsKQEAgLTI2NCw4ICsyNjQsOCBAQCB1bnNp
Z25lZCBVU3RyaW5nOjpSZXA6OmNvbXB1dGVIYXNoKGNvbnN0IFVDaGFyICpzLCBpbnQgbGVuKQog
CiAgIC8vIE1haW4gbG9vcAogICBmb3IgKDsgbCA+IDA7IGwtLSkgewotICAgIGhhc2ggKz0gc1sw
XS51YzsKLSAgICB0bXAgPSAoc1sxXS51YyA8PCAxMSkgXiBoYXNoOworICAgIGhhc2ggKz0gc1sw
XTsKKyAgICB0bXAgPSAoc1sxXSA8PCAxMSkgXiBoYXNoOwogICAgIGhhc2ggPSAoaGFzaCA8PCAx
NikgXiB0bXA7CiAgICAgcyArPSAyOwogICAgIGhhc2ggKz0gaGFzaCA+PiAxMTsKQEAgLTI3Myw3
ICsyNzMsNyBAQCB1bnNpZ25lZCBVU3RyaW5nOjpSZXA6OmNvbXB1dGVIYXNoKGNvbnN0IFVDaGFy
ICpzLCBpbnQgbGVuKQogCiAgIC8vIEhhbmRsZSBlbmQgY2FzZQogICBpZiAocmVtKSB7Ci0gICAg
aGFzaCArPSBzWzBdLnVjOworICAgIGhhc2ggKz0gc1swXTsKICAgICBoYXNoIF49IGhhc2ggPDwg
MTE7CiAgICAgaGFzaCArPSBoYXNoID4+IDE3OwogICB9CkBAIC00MjksNyArNDI5LDcgQEAgVVN0
cmluZzo6VVN0cmluZyhjb25zdCBjaGFyICpjKQogICAgICAgbV9yZXAgPSAmUmVwOjpudWxsOwog
ICBlbHNlIHsKICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAg
ICAgICAgZFtpXS51YyA9IGNbaV07CisgICAgICAgICAgZFtpXSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KGNbaV0pOyAvLyB1c2UgdW5zaWduZWQgY2hhciB0byB6ZXJvLWV4dGVuZCBpbnN0
ZWFkIG9mIHNpZ24tZXh0ZW5kCiAgICAgICBtX3JlcCA9IFJlcDo6Y3JlYXRlKGQsIHN0YXRpY19j
YXN0PGludD4obGVuZ3RoKSk7CiAgIH0KIH0KQEAgLTcwOSw3ICs3MDksNyBAQCBVU3RyaW5nIFVT
dHJpbmc6OnNwbGljZVN1YnN0cmluZ3NXaXRoU2VwYXJhdG9ycyhjb25zdCBSYW5nZSogc3Vic3Ry
aW5nUmFuZ2VzLCBpbgogICByZXR1cm4gVVN0cmluZzo6UmVwOjpjcmVhdGUoYnVmZmVyLCB0b3Rh
bExlbmd0aCk7CiB9CiAKLVVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBVU3RyaW5nICZ0
KQorVVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IFVTdHJpbmcgJnQpCiB7CiAgIGludCB0
aGlzU2l6ZSA9IHNpemUoKTsKICAgaW50IHRoaXNPZmZzZXQgPSBtX3JlcC0+b2Zmc2V0OwpAQCAt
NzU0LDcgKzc1NCw3IEBAIFVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBVU3RyaW5nICZ0
KQogICByZXR1cm4gKnRoaXM7CiB9CiAKLVVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBj
aGFyICp0KQorVVN0cmluZyYgVVN0cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIgKnQpCiB7CiAgIGlu
dCB0aGlzU2l6ZSA9IHNpemUoKTsKICAgaW50IHRoaXNPZmZzZXQgPSBtX3JlcC0+b2Zmc2V0OwpA
QCAtNzczLDcgKzc3Myw3IEBAIFVTdHJpbmcgJlVTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFyICp0
KQogICAgIFVDaGFyICpkID0gY29uc3RfY2FzdDxVQ2hhciAqPihkYXRhKCkpOwogICAgIGlmIChk
KSB7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdFNpemU7ICsraSkKLSAgICAgICAgICAg
IGRbdGhpc1NpemUgKyBpXSA9IHRbaV07CisgICAgICAgICAgICBkW3RoaXNTaXplICsgaV0gPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0W2ldKTsgLy8gdXNlIHVuc2lnbmVkIGNoYXIgdG8g
emVyby1leHRlbmQgaW5zdGVhZCBvZiBzaWduLWV4dGVuZAogICAgICAgICBtX3JlcC0+bGVuID0g
bGVuZ3RoOwogICAgICAgICBtX3JlcC0+X2hhc2ggPSAwOwogICAgIH0KQEAgLTc4Myw3ICs3ODMs
NyBAQCBVU3RyaW5nICZVU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciAqdCkKICAgICBVQ2hhciAq
ZCA9IGNvbnN0X2Nhc3Q8VUNoYXIgKj4oZGF0YSgpKTsKICAgICBpZiAoZCkgewogICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHRTaXplOyArK2kpCi0gICAgICAgICAgICBkW3RoaXNTaXplICsg
aV0gPSB0W2ldOworICAgICAgICAgICAgZFt0aGlzU2l6ZSArIGldID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhcj4odFtpXSk7IC8vIHVzZSB1bnNpZ25lZCBjaGFyIHRvIHplcm8tZXh0ZW5kIGlu
c3RlYWQgb2Ygc2lnbi1leHRlbmQKICAgICAgICAgbV9yZXAgPSBSZXA6OmNyZWF0ZShtX3JlcCwg
MCwgbGVuZ3RoKTsKICAgICB9CiAgIH0gZWxzZSB7CkBAIC03OTUsNyArNzk1LDcgQEAgVVN0cmlu
ZyAmVVN0cmluZzo6YXBwZW5kKGNvbnN0IGNoYXIgKnQpCiAgICAgZWxzZSB7CiAgICAgICAgIG1l
bWNweShkLCBkYXRhKCksIHRoaXNTaXplICogc2l6ZW9mKFVDaGFyKSk7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgdFNpemU7ICsraSkKLSAgICAgICAgICAgIGRbdGhpc1NpemUgKyBpXSA9
IHRbaV07CisgICAgICAgICAgICBkW3RoaXNTaXplICsgaV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPih0W2ldKTsgLy8gdXNlIHVuc2lnbmVkIGNoYXIgdG8gemVyby1leHRlbmQgaW5zdGVh
ZCBvZiBzaWduLWV4dGVuZAogICAgICAgICBtX3JlcCA9IFJlcDo6Y3JlYXRlKGQsIGxlbmd0aCk7
CiAgICAgICAgIG1fcmVwLT5jYXBhY2l0eSA9IG5ld0NhcGFjaXR5OwogICAgIH0KQEAgLTgwNCw3
ICs4MDQsNyBAQCBVU3RyaW5nICZVU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciAqdCkKICAgcmV0
dXJuICp0aGlzOwogfQogCi1VU3RyaW5nICZVU3RyaW5nOjphcHBlbmQodW5zaWduZWQgc2hvcnQg
YykKK1VTdHJpbmcmIFVTdHJpbmc6OmFwcGVuZChjb25zdCBVQ2hhciBjKQogewogICBpbnQgdGhp
c09mZnNldCA9IG1fcmVwLT5vZmZzZXQ7CiAgIGludCBsZW5ndGggPSBzaXplKCk7CkBAIC04Nzks
NyArODc5LDcgQEAgY2hhciAqVVN0cmluZzo6YXNjaWkoKSBjb25zdAogICBjaGFyICpxID0gc3Rh
dEJ1ZmZlcjsKICAgY29uc3QgVUNoYXIgKmxpbWl0ID0gcCArIGxlbmd0aDsKICAgd2hpbGUgKHAg
IT0gbGltaXQpIHsKLSAgICAqcSA9IHN0YXRpY19jYXN0PGNoYXI+KHAtPnVjKTsKKyAgICAqcSA9
IHN0YXRpY19jYXN0PGNoYXI+KHBbMF0pOwogICAgICsrcDsKICAgICArK3E7CiAgIH0KQEAgLTg4
OCw3ICs4ODgsNyBAQCBjaGFyICpVU3RyaW5nOjphc2NpaSgpIGNvbnN0CiAgIHJldHVybiBzdGF0
QnVmZmVyOwogfQogCi1VU3RyaW5nICZVU3RyaW5nOjpvcGVyYXRvcj0oY29uc3QgY2hhciAqYykK
K1VTdHJpbmcmIFVTdHJpbmc6Om9wZXJhdG9yPShjb25zdCBjaGFyICpjKQogewogICAgIGlmICgh
YykgewogICAgICAgICBtX3JlcCA9ICZSZXA6Om51bGw7CkBAIC05MTUsNyArOTE1LDcgQEAgVVN0
cmluZyAmVVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IGNoYXIgKmMpCiAgICAgbV9yZXAgPSBSZXA6
OmNyZWF0ZShkLCBsKTsKICAgfQogICBmb3IgKGludCBpID0gMDsgaSA8IGw7IGkrKykKLSAgICBk
W2ldLnVjID0gY1tpXTsKKyAgICBkW2ldID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY1tp
XSk7IC8vIHVzZSB1bnNpZ25lZCBjaGFyIHRvIHplcm8tZXh0ZW5kIGluc3RlYWQgb2Ygc2lnbi1l
eHRlbmQKIAogICByZXR1cm4gKnRoaXM7CiB9CkBAIC05MjUsNyArOTI1LDcgQEAgYm9vbCBVU3Ry
aW5nOjppczhCaXQoKSBjb25zdAogICBjb25zdCBVQ2hhciAqdSA9IGRhdGEoKTsKICAgY29uc3Qg
VUNoYXIgKmxpbWl0ID0gdSArIHNpemUoKTsKICAgd2hpbGUgKHUgPCBsaW1pdCkgewotICAgIGlm
ICh1LT51YyA+IDB4RkYpCisgICAgaWYgKHVbMF0gPiAweEZGKQogICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICsrdTsKICAgfQpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgdWludDMyX3QgVVN0cmluZzo6
dG9TdHJpY3RVSW50MzIoYm9vbCAqb2spIGNvbnN0CiAgIGlmIChsZW4gPT0gMCkKICAgICByZXR1
cm4gMDsKICAgY29uc3QgVUNoYXIgKnAgPSBtX3JlcC0+ZGF0YSgpOwotICB1bnNpZ25lZCBzaG9y
dCBjID0gcC0+dW5pY29kZSgpOworICB1bnNpZ25lZCBzaG9ydCBjID0gcFswXTsKIAogICAvLyBJ
ZiB0aGUgZmlyc3QgZGlnaXQgaXMgMCwgb25seSAwIGl0c2VsZiBpcyBPSy4KICAgaWYgKGMgPT0g
JzAnKSB7CkBAIC0xMTA0LDcgKzExMDQsNyBAQCB1aW50MzJfdCBVU3RyaW5nOjp0b1N0cmljdFVJ
bnQzMihib29sICpvaykgY29uc3QKICAgICB9CiAgICAgCiAgICAgLy8gR2V0IG5leHQgY2hhcmFj
dGVyLgotICAgIGMgPSAoKytwKS0+dW5pY29kZSgpOworICAgIGMgPSAqKCsrcCk7CiAgIH0KIH0K
IApAQCAtMTEyMSwxMCArMTEyMSwxMCBAQCBpbnQgVVN0cmluZzo6ZmluZChjb25zdCBVU3RyaW5n
ICZmLCBpbnQgcG9zKSBjb25zdAogICBjb25zdCBVQ2hhciAqZW5kID0gZGF0YSgpICsgc3ogLSBm
c3o7CiAgIGludCBmc2l6ZW1pbnVzb25lID0gKGZzeiAtIDEpICogc2l6ZW9mKFVDaGFyKTsKICAg
Y29uc3QgVUNoYXIgKmZkYXRhID0gZi5kYXRhKCk7Ci0gIHVuc2lnbmVkIHNob3J0IGZjaGFyID0g
ZmRhdGEtPnVjOworICB1bnNpZ25lZCBzaG9ydCBmY2hhciA9IGZkYXRhWzBdOwogICArK2ZkYXRh
OwogICBmb3IgKGNvbnN0IFVDaGFyICpjID0gZGF0YSgpICsgcG9zOyBjIDw9IGVuZDsgYysrKQot
ICAgIGlmIChjLT51YyA9PSBmY2hhciAmJiAhbWVtY21wKGMgKyAxLCBmZGF0YSwgZnNpemVtaW51
c29uZSkpCisgICAgaWYgKGNbMF0gPT0gZmNoYXIgJiYgIW1lbWNtcChjICsgMSwgZmRhdGEsIGZz
aXplbWludXNvbmUpKQogICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYyAtIGRhdGEoKSk7
CiAKICAgcmV0dXJuIC0xOwpAQCAtMTIxNSw3ICsxMjE1LDcgQEAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFVTdHJpbmcmIHMxLCBjb25zdCBjaGFyICpzMikKICAgY29uc3QgVUNoYXIgKnUgPSBzMS5k
YXRhKCk7CiAgIGNvbnN0IFVDaGFyICp1ZW5kID0gdSArIHMxLnNpemUoKTsKICAgd2hpbGUgKHUg
IT0gdWVuZCAmJiAqczIpIHsKLSAgICBpZiAodS0+dWMgIT0gKHVuc2lnbmVkIGNoYXIpKnMyKQor
ICAgIGlmICh1WzBdICE9ICh1bnNpZ25lZCBjaGFyKSpzMikKICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBzMisrOwogICAgIHUrKzsKQEAgLTEyMzgsNyArMTIzOCw3IEBAIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMikKICAgICBsKys7CiAgIH0KICAg
aWYgKGwgPCBsbWluKQotICAgIHJldHVybiAoYzEtPnVjIDwgYzItPnVjKTsKKyAgICByZXR1cm4g
KGMxWzBdIDwgYzJbMF0pOwogCiAgIHJldHVybiAobDEgPCBsMik7CiB9CkBAIC0xMjU4LDcgKzEy
NTgsNyBAQCBpbnQgY29tcGFyZShjb25zdCBVU3RyaW5nJiBzMSwgY29uc3QgVVN0cmluZyYgczIp
CiAgIH0KIAogICBpZiAobCA8IGxtaW4pCi0gICAgcmV0dXJuIChjMS0+dWMgPiBjMi0+dWMpID8g
MSA6IC0xOworICAgIHJldHVybiAoYzFbMF0gPiBjMlswXSkgPyAxIDogLTE7CiAKICAgaWYgKGwx
ID09IGwyKQogICAgIHJldHVybiAwOwpAQCAtMTI3NCw3ICsxMjc0LDcgQEAgQ1N0cmluZyBVU3Ry
aW5nOjpVVEY4U3RyaW5nKGJvb2wgc3RyaWN0KSBjb25zdAogCiAgIC8vIENvbnZlcnQgdG8gcnVu
cyBvZiA4LWJpdCBjaGFyYWN0ZXJzLgogICBjaGFyKiBwID0gYnVmZmVyLmRhdGEoKTsKLSAgY29u
c3QgOjpVQ2hhciogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KCZkYXRhKCkt
PnVjKTsKKyAgY29uc3QgVUNoYXIqIGQgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
JmRhdGEoKVswXSk7CiAgIENvbnZlcnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydFVURjE2VG9V
VEY4KCZkLCBkICsgbGVuZ3RoLCAmcCwgcCArIGJ1ZmZlci5zaXplKCksIHN0cmljdCk7CiAgIGlm
IChyZXN1bHQgIT0gY29udmVyc2lvbk9LKQogICAgIHJldHVybiBDU3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9ranMvdXN0cmluZy5oIGIvSmF2YVNjcmlwdENvcmUva2pzL3Vz
dHJpbmcuaAppbmRleCA3ZmFhODZhLi44NTBlYjJkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9ranMvdXN0cmluZy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2tqcy91c3RyaW5nLmgKQEAgLTMw
LDE2ICszMCw5IEBACiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdW5p
Y29kZS9Vbmljb2RlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi0vKiBPbiBzb21lIEFS
TSBwbGF0Zm9ybXMgR0NDIHdvbid0IHBhY2sgc3RydWN0dXJlcyBieSBkZWZhdWx0IHNvIHNpemVv
ZihVQ2hhcikKLSAgIHdpbGwgZW5kIHVwIGJlaW5nICE9IDIgd2hpY2ggY2F1c2VzIGNyYXNoZXMg
c2luY2UgdGhlIGNvZGUgZGVwZW5kcyBvbiB0aGF0LiAqLwotI2lmIENPTVBJTEVSKEdDQykgJiYg
UExBVEZPUk0oRk9SQ0VfUEFDSykKLSNkZWZpbmUgUEFDS19TVFJVQ1QgX19hdHRyaWJ1dGVfXygo
cGFja2VkKSkKLSNlbHNlCi0jZGVmaW5lIFBBQ0tfU1RSVUNUCi0jZW5kaWYKLQogLyoqCiAgKiBA
aW50ZXJuYWwKICAqLwpAQCAtNTUsNTQgKzQ4LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIHVzaW5n
IFdURjo6UGxhY2VtZW50TmV3QWRvcHQ7CiAKICAgY2xhc3MgVVN0cmluZzsKLQotICAvKioKLSAg
ICogQHNob3J0IFVuaWNvZGUgY2hhcmFjdGVyLgotICAgKgotICAgKiBVQ2hhciByZXByZXNlbnRz
IGEgMTYgYml0IFVuaWNvZGUgY2hhcmFjdGVyLiBJdCdzIGludGVybmFsIGRhdGEKLSAgICogcmVw
cmVzZW50YXRpb24gaXMgY29tcGF0aWJsZSB0byBYQ2hhcjJiIGFuZCBRQ2hhci4gSXQncyB0aGVy
ZWZvcmUKLSAgICogcG9zc2libGUgdG8gZXhjaGFuZ2UgZGF0YSB3aXRoIFggYW5kIFF0IHdpdGgg
c2hhbGxvdyBjb3BpZXMuCi0gICAqLwotICBzdHJ1Y3QgVUNoYXIgewotICAgIC8qKgotICAgICAq
IENvbnN0cnVjdCBhIGNoYXJhY3RlciB3aXRoIHVuaW5pdGlhbGl6ZWQgdmFsdWUuICAgIAotICAg
ICAqLwotICAgIFVDaGFyKCk7Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0IGEgY2hhcmFjdGVy
IHdpdGggdGhlIHZhbHVlIGRlbm90ZWQgYnkgdGhlIGFyZ3VtZW50cy4KLSAgICAgKiBAcGFyYW0g
aCBoaWdoZXIgYnl0ZQotICAgICAqIEBwYXJhbSBsIGxvd2VyIGJ5dGUKLSAgICAgKi8KLSAgICBV
Q2hhcih1bnNpZ25lZCBjaGFyIGggLCB1bnNpZ25lZCBjaGFyIGwpOwotICAgIC8qKgotICAgICAq
IENvbnN0cnVjdCBhIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4KLSAgICAgKiBAcGFy
YW0gdSAxNiBiaXQgVW5pY29kZSB2YWx1ZQotICAgICAqLwotICAgIFVDaGFyKGNoYXIgdSk7Ci0g
ICAgVUNoYXIodW5zaWduZWQgY2hhciB1KTsKLSAgICBVQ2hhcih1bnNpZ25lZCBzaG9ydCB1KTsK
LSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFRoZSBoaWdoZXIgYnl0ZSBvZiB0aGUgY2hhcmFjdGVy
LgotICAgICAqLwotICAgIHVuc2lnbmVkIGNoYXIgaGlnaCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KHVjID4+IDgpOyB9Ci0gICAgLyoqCi0gICAgICogQHJldHVy
biBUaGUgbG93ZXIgYnl0ZSBvZiB0aGUgY2hhcmFjdGVyLgotICAgICAqLwotICAgIHVuc2lnbmVk
IGNoYXIgbG93KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odWMp
OyB9Ci0gICAgLyoqCi0gICAgICogQHJldHVybiB0aGUgMTYgYml0IFVuaWNvZGUgdmFsdWUgb2Yg
dGhlIGNoYXJhY3RlcgotICAgICAqLwotICAgIHVuc2lnbmVkIHNob3J0IHVuaWNvZGUoKSBjb25z
dCB7IHJldHVybiB1YzsgfQotCi0gICAgdW5zaWduZWQgc2hvcnQgdWM7Ci0gIH0gUEFDS19TVFJV
Q1Q7Ci0KLSAgaW5saW5lIFVDaGFyOjpVQ2hhcigpIHsgfQotICBpbmxpbmUgVUNoYXI6OlVDaGFy
KHVuc2lnbmVkIGNoYXIgaCAsIHVuc2lnbmVkIGNoYXIgbCkgOiB1YyhoIDw8IDggfCBsKSB7IH0K
LSAgaW5saW5lIFVDaGFyOjpVQ2hhcihjaGFyIHUpIDogdWMoKHVuc2lnbmVkIGNoYXIpdSkgeyB9
Ci0gIGlubGluZSBVQ2hhcjo6VUNoYXIodW5zaWduZWQgY2hhciB1KSA6IHVjKHUpIHsgfQotICBp
bmxpbmUgVUNoYXI6OlVDaGFyKHVuc2lnbmVkIHNob3J0IHUpIDogdWModSkgeyB9Ci0KKyAgCiAg
IC8qKgogICAgKiBAc2hvcnQgOCBiaXQgY2hhciBiYXNlZCBzdHJpbmcgY2xhc3MKICAgICovCkBA
IC0yNTcsMTYgKzIwMywxNSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIGludCBsZW5ndGg7CiAg
ICAgfTsKIAotICAgIFVTdHJpbmcgc3BsaWNlU3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKGNvbnN0
IFJhbmdlICpzdWJzdHJpbmdSYW5nZXMsIGludCByYW5nZUNvdW50LCBjb25zdCBVU3RyaW5nICpz
ZXBhcmF0b3JzLCBpbnQgc2VwYXJhdG9yQ291bnQpIGNvbnN0OworICAgIFVTdHJpbmcgc3BsaWNl
U3Vic3RyaW5nc1dpdGhTZXBhcmF0b3JzKGNvbnN0IFJhbmdlKiBzdWJzdHJpbmdSYW5nZXMsIGlu
dCByYW5nZUNvdW50LCBjb25zdCBVU3RyaW5nKiBzZXBhcmF0b3JzLCBpbnQgc2VwYXJhdG9yQ291
bnQpIGNvbnN0OwogCiAgICAgLyoqCiAgICAgICogQXBwZW5kIGFub3RoZXIgc3RyaW5nLgogICAg
ICAqLwotICAgIFVTdHJpbmcgJmFwcGVuZChjb25zdCBVU3RyaW5nICYpOwotICAgIFVTdHJpbmcg
JmFwcGVuZChjb25zdCBjaGFyICopOwotICAgIFVTdHJpbmcgJmFwcGVuZCh1bnNpZ25lZCBzaG9y
dCk7Ci0gICAgVVN0cmluZyAmYXBwZW5kKGNoYXIgYykgeyByZXR1cm4gYXBwZW5kKHN0YXRpY19j
YXN0PHVuc2lnbmVkIHNob3J0PihzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKSkpOyB9Ci0g
ICAgVVN0cmluZyAmYXBwZW5kKFVDaGFyIGMpIHsgcmV0dXJuIGFwcGVuZChjLnVjKTsgfQorICAg
IFVTdHJpbmcmIGFwcGVuZChjb25zdCBVU3RyaW5nJik7CisgICAgVVN0cmluZyYgYXBwZW5kKGNv
bnN0IGNoYXIqKTsKKyAgICBVU3RyaW5nJiBhcHBlbmQoY29uc3QgVUNoYXIpOworICAgIFVTdHJp
bmcmIGFwcGVuZChjaGFyIGMpIHsgcmV0dXJuIGFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZCBz
aG9ydD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYykpKTsgfQogCiAgICAgLyoqCiAgICAg
ICogQHJldHVybiBUaGUgc3RyaW5nIGNvbnZlcnRlZCB0byB0aGUgOC1iaXQgc3RyaW5nIHR5cGUg
Q1N0cmluZygpLgpAQCAtMjgxLDcgKzIyNiw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAqIHdh
c3RlIGFueSBtZW1vcnkgdGhlIGNoYXIgYnVmZmVyIGlzIHN0YXRpYyBhbmQgKnNoYXJlZCogYnkg
YWxsIFVTdHJpbmcKICAgICAgKiBpbnN0YW5jZXMuCiAgICAgICovCi0gICAgY2hhciAqYXNjaWko
KSBjb25zdDsKKyAgICBjaGFyKiBhc2NpaSgpIGNvbnN0OwogCiAgICAgLyoqCiAgICAgICogQ29u
dmVydCB0aGUgc3RyaW5nIHRvIFVURi04LCBhc3N1bWluZyBpdCBpcyBVVEYtMTYgZW5jb2RlZC4K
QEAgLTQwMyw5ICszNDgsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBSZWZQdHI8UmVwPiBtX3Jl
cDsKICAgfTsKIAotICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVDaGFyICZjMSwgY29u
c3QgVUNoYXIgJmMyKSB7Ci0gICAgcmV0dXJuIChjMS51YyA9PSBjMi51Yyk7Ci0gIH0KICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFVTdHJpbmcmIHMxLCBjb25zdCBVU3RyaW5nJiBzMik7CiAgIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVN0cmluZyYgczEsIGNvbnN0IFVTdHJpbmcmIHMy
KSB7CiAgICAgcmV0dXJuICFLSlM6Om9wZXJhdG9yPT0oczEsIHMyKTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3BjcmUvcGNyZS5oIGIvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgKaW5k
ZXggMWJlNDUyMy4uNTUwNDRmZCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3Jl
LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlLmgKQEAgLTU1LDEyICs1NSwxMiBAQCBj
b25zdCBpbnQgSlNSZWdFeHBFcnJvckhpdExpbWl0ID0gLTI7CiBjb25zdCBpbnQgSlNSZWdFeHBF
cnJvck5vTWVtb3J5ID0gLTM7CiBjb25zdCBpbnQgSlNSZWdFeHBFcnJvckludGVybmFsID0gLTQ7
CiAKLUpTUmVnRXhwKiBqc1JlZ0V4cENvbXBpbGUoY29uc3QgOjpVQ2hhciogcGF0dGVybiwgaW50
IHBhdHRlcm5MZW5ndGgsCitKU1JlZ0V4cCoganNSZWdFeHBDb21waWxlKGNvbnN0IFVDaGFyKiBw
YXR0ZXJuLCBpbnQgcGF0dGVybkxlbmd0aCwKICAgICBKU1JlZ0V4cElnbm9yZUNhc2VPcHRpb24s
IEpTUmVnRXhwTXVsdGlsaW5lT3B0aW9uLAogICAgIHVuc2lnbmVkKiBudW1TdWJwYXR0ZXJucywg
Y29uc3QgY2hhcioqIGVycm9yTWVzc2FnZSk7CiAKIGludCBqc1JlZ0V4cEV4ZWN1dGUoY29uc3Qg
SlNSZWdFeHAqLAotICAgIGNvbnN0IDo6VUNoYXIqIHN1YmplY3QsIGludCBzdWJqZWN0TGVuZ3Ro
LCBpbnQgc3RhcnRPZmZzZXQsCisgICAgY29uc3QgVUNoYXIqIHN1YmplY3QsIGludCBzdWJqZWN0
TGVuZ3RoLCBpbnQgc3RhcnRPZmZzZXQsCiAgICAgaW50KiBvZmZzZXRzVmVjdG9yLCBpbnQgb2Zm
c2V0c1ZlY3Rvckxlbmd0aCk7CiAKIHZvaWQganNSZWdFeHBGcmVlKEpTUmVnRXhwKik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAK
aW5kZXggMDcyMzQxMC4uZjA3OTdiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIHN0YXRp
YyBib29sIGhhc0NTU1Byb3BlcnR5TmFtZVByZWZpeChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IGNoYXIqCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gcHJvcGVydHlOYW1lLnNp
emUoKTsKICAgICBBU1NFUlQobGVuZ3RoKTsKIAotICAgIGlmICh0b0FTQ0lJTG93ZXIocHJvcGVy
dHlOYW1lLmRhdGEoKVswXS51bmljb2RlKCkpICE9IHByZWZpeFswXSkKKyAgICBpZiAodG9BU0NJ
SUxvd2VyKHByb3BlcnR5TmFtZS5kYXRhKClbMF0pICE9IHByZWZpeFswXSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGxlbmd0aDsgKytpKSB7
CiAgICAgICAgIGlmICghcHJlZml4W2ldKQotICAgICAgICAgICAgcmV0dXJuIGlzQVNDSUlVcHBl
cihwcm9wZXJ0eU5hbWUuZGF0YSgpW2ldLnVuaWNvZGUoKSk7Ci0gICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUuZGF0YSgpWzBdLnVuaWNvZGUoKSAhPSBwcmVmaXhbMF0pCisgICAgICAgICAgICByZXR1
cm4gaXNBU0NJSVVwcGVyKHByb3BlcnR5TmFtZS5kYXRhKClbaV0pOworICAgICAgICBpZiAocHJv
cGVydHlOYW1lLmRhdGEoKVswXSAhPSBwcmVmaXhbMF0pCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIFN0
cmluZyBjc3NQcm9wZXJ0eU5hbWUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib29s
KiBoYWRQaXhlbE9yUG8KICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi0gICAgVmVjdG9yPCA6OlVDaGFyPiBuYW1lOworICAgIFZlY3RvcjxVQ2hhcj4gbmFtZTsK
ICAgICBuYW1lLnJlc2VydmVDYXBhY2l0eShsZW5ndGgpOwogCiAgICAgdW5zaWduZWQgaSA9IDA7
CkBAIC05NiwxMCArOTYsMTAgQEAgc3RhdGljIFN0cmluZyBjc3NQcm9wZXJ0eU5hbWUoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib29sKiBoYWRQaXhlbE9yUG8KICAgICAgICAgICAg
IHx8IGhhc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJhcHBsZSIpKQogICAg
ICAgICBuYW1lLmFwcGVuZCgnLScpOwogCi0gICAgbmFtZS5hcHBlbmQodG9BU0NJSUxvd2VyKHBy
b3BlcnR5TmFtZS5kYXRhKClbaSsrXS51bmljb2RlKCkpKTsKKyAgICBuYW1lLmFwcGVuZCh0b0FT
Q0lJTG93ZXIocHJvcGVydHlOYW1lLmRhdGEoKVtpKytdKSk7CiAKICAgICBmb3IgKDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIDo6VUNoYXIgYyA9IHByb3BlcnR5TmFtZS5kYXRhKClbaV0u
dW5pY29kZSgpOworICAgICAgICBVQ2hhciBjID0gcHJvcGVydHlOYW1lLmRhdGEoKVtpXTsKICAg
ICAgICAgaWYgKCFpc0FTQ0lJVXBwZXIoYykpCiAgICAgICAgICAgICBuYW1lLmFwcGVuZChjKTsK
ICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHUE9E
VHlwZVdyYXBwZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5o
CmluZGV4IDEyNzU5NTAuLmNiODM4N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTVkdQT0RUeXBlV3JhcHBlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RU
eXBlV3JhcHBlci5oCkBAIC0yMDMsNyArMjAzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUE9EVHlw
ZSwgdHlwZW5hbWUgUE9EVHlwZUNyZWF0b3I+CiBzdHJ1Y3QgUE9EVHlwZVJlYWRXcml0ZUhhc2hJ
bmZvSGFzaCB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUE9EVHlwZVJlYWRXcml0
ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiYgaW5mbykKICAgICB7Ci0gICAgICAg
IHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaCgoOjpVQ2hhciopICZpbmZvLCBzaXplb2Yo
UE9EVHlwZVJlYWRXcml0ZUhhc2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPikgLyBzaXpl
b2YoOjpVQ2hhcikpOworICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2gocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KCZpbmZvKSwgc2l6ZW9mKFBPRFR5cGVSZWFkV3Jp
dGVIYXNoSW5mbzxQT0RUeXBlLCBQT0RUeXBlQ3JlYXRvcj4pIC8gc2l6ZW9mKFVDaGFyKSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgUE9EVHlwZVJlYWRXcml0ZUhhc2hJ
bmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiYgYSwgY29uc3QgUE9EVHlwZVJlYWRXcml0ZUhh
c2hJbmZvPFBPRFR5cGUsIFBPRFR5cGVDcmVhdG9yPiYgYikKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMva2pzX3Byb3h5LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3Byb3h5
LmNwcAppbmRleCA3YzU4YTVlLi4wOTlmYzA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL2tqc19wcm94eS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfcHJveHkuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIEpTVmFsdWUqIEtKU1Byb3h5OjpldmFsdWF0ZShjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBpbnQgYmFzZUxpbmUsIGNvbnN0IFN0cmluZyYKICAgICBKU1ZhbHVlKiB0
aGlzTm9kZSA9IHRvSlNET01XaW5kb3cobV9mcmFtZSk7CiAKICAgICBtX2dsb2JhbE9iamVjdC0+
c3RhcnRUaW1lb3V0Q2hlY2soKTsKLSAgICBDb21wbGV0aW9uIGNvbXAgPSBJbnRlcnByZXRlcjo6
ZXZhbHVhdGUoZXhlYywgZmlsZW5hbWUsIGJhc2VMaW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0
IEtKUzo6VUNoYXIqPihzdHIuY2hhcmFjdGVycygpKSwgc3RyLmxlbmd0aCgpLCB0aGlzTm9kZSk7
CisgICAgQ29tcGxldGlvbiBjb21wID0gSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGV4ZWMsIGZpbGVu
YW1lLCBiYXNlTGluZSwgc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpLCB0aGlzTm9kZSk7
CiAgICAgbV9nbG9iYWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKICAgCiAgICAgaWYgKGNv
bXAuY29tcGxUeXBlKCkgPT0gTm9ybWFsIHx8IGNvbXAuY29tcGxUeXBlKCkgPT0gUmV0dXJuVmFs
dWUpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCmluZGV4IGVjYWFiOWIuLjk1ODMwNzEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcApAQCAtMTA2NCw3ICsxMDY0LDcgQEAgSlNW
YWx1ZSogd2luZG93UHJvdG9GdW5jQVRvQihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqLCBjb25zdCBMaXN0JiBhcmcKIAogICAgIFZlY3RvcjxjaGFyPiBpbihzLnNpemUoKSk7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLnNpemUoKTsgKytpKQotICAgICAgICBpbltpXSA9IHN0
YXRpY19jYXN0PGNoYXI+KHMuZGF0YSgpW2ldLnVuaWNvZGUoKSk7CisgICAgICAgIGluW2ldID0g
c3RhdGljX2Nhc3Q8Y2hhcj4ocy5kYXRhKClbaV0pOwogICAgIFZlY3RvcjxjaGFyPiBvdXQ7CiAK
ICAgICBpZiAoIWJhc2U2NERlY29kZShpbiwgb3V0KSkKQEAgLTEwOTUsNyArMTA5NSw3IEBAIEpT
VmFsdWUqIHdpbmRvd1Byb3RvRnVuY0JUb0EoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhp
c09iaiwgY29uc3QgTGlzdCYgYXJnCiAKICAgICBWZWN0b3I8Y2hhcj4gaW4ocy5zaXplKCkpOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkKLSAgICAgICAgaW5baV0gPSBz
dGF0aWNfY2FzdDxjaGFyPihzLmRhdGEoKVtpXS51bmljb2RlKCkpOworICAgICAgICBpbltpXSA9
IHN0YXRpY19jYXN0PGNoYXI+KHMuZGF0YSgpW2ldKTsKICAgICBWZWN0b3I8Y2hhcj4gb3V0Owog
CiAgICAgYmFzZTY0RW5jb2RlKGluLCBvdXQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGY2ZGU1ZGUuLmJjOTlm
OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTI2NzgsNyArMjY3OCw3IEBAIFN0cmluZyBEb2N1bWVudDo6bGFz
dE1vZGlmaWVkKCkgY29uc3QKIAogYm9vbCBEb2N1bWVudDo6aXNWYWxpZE5hbWUoY29uc3QgU3Ry
aW5nICZuYW1lKQogewotICAgIGNvbnN0IFVDaGFyKiBzID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVQ2hhcio+KG5hbWUuY2hhcmFjdGVycygpKTsKKyAgICBjb25zdCBVQ2hhciogcyA9IG5hbWUu
Y2hhcmFjdGVycygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUubGVuZ3RoKCk7CiAKICAg
ICBpZiAobGVuZ3RoID09IDApCkBAIC0yNzExLDcgKzI3MTEsNyBAQCBib29sIERvY3VtZW50Ojpw
YXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3RyaW5nICZxdWFsaWZpZWROYW1lLCBTdHJpbmcgJnBy
ZWZpeCwgUwogICAgIGJvb2wgc2F3Q29sb24gPSBmYWxzZTsKICAgICBpbnQgY29sb25Qb3MgPSAw
OwogCi0gICAgY29uc3QgVUNoYXIqIHMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4o
cXVhbGlmaWVkTmFtZS5jaGFyYWN0ZXJzKCkpOworICAgIGNvbnN0IFVDaGFyKiBzID0gcXVhbGlm
aWVkTmFtZS5jaGFyYWN0ZXJzKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDspIHsKICAgICAgICAgVUNoYXIzMiBjOwogICAgICAgICBVMTZfTkVYVChzLCBpLCBsZW5ndGgs
IGMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQXRvbWljU3RyaW5nLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IGY3YjNjOTEuLmYw
YmVlNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9BdG9taWNTdHJpbmcuY3BwCkBAIC0xOTIsMTIg
KzE5MiwxMiBAQCB2b2lkIEF0b21pY1N0cmluZzo6cmVtb3ZlKFN0cmluZ0ltcGwqIHIpCiAKIFBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGQoY29uc3QgS0pTOjpJZGVudGlm
aWVyJiBzdHIpCiB7Ci0gICAgcmV0dXJuIGFkZChyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFy
Kj4oc3RyLmRhdGEoKSksIHN0ci5zaXplKCkpOworICAgIHJldHVybiBhZGQoc3RyLmRhdGEoKSwg
c3RyLnNpemUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjph
ZGQoY29uc3QgS0pTOjpVU3RyaW5nJiBzdHIpCiB7Ci0gICAgcmV0dXJuIGFkZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RyLmRhdGEoKSksIHN0ci5zaXplKCkpOworICAgIHJldHVy
biBhZGQoc3RyLmRhdGEoKSwgc3RyLnNpemUoKSk7CiB9CiAKIEF0b21pY1N0cmluZzo6b3BlcmF0
b3IgSWRlbnRpZmllcigpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
U3RyaW5nLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCmluZGV4IGVlNGNl
ZjQuLjljM2Y0YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwCkBAIC01OTIsMjggKzU5Miwy
OCBAQCBTdHJpbmc6OlN0cmluZyhjb25zdCBJZGVudGlmaWVyJiBzdHIpCiB7CiAgICAgaWYgKHN0
ci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IFVDaGFyKj4oc3RyLmRhdGEoKSksIHN0ci5zaXpl
KCkpOworICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShzdHIuZGF0YSgpLCBzdHIuc2l6
ZSgpKTsKIH0KIAogU3RyaW5nOjpTdHJpbmcoY29uc3QgVVN0cmluZyYgc3RyKQogewogICAgIGlm
IChzdHIuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2ltcGwgPSBTdHJpbmdJbXBs
OjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KHN0ci5kYXRhKCkpLCBzdHIu
c2l6ZSgpKTsKKyAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUoc3RyLmRhdGEoKSwgc3Ry
LnNpemUoKSk7CiB9CiAKIFN0cmluZzo6b3BlcmF0b3IgSWRlbnRpZmllcigpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2ltcGwpCiAgICAgICAgIHJldHVybiBJZGVudGlmaWVyKCk7Ci0gICAgcmV0dXJu
IElkZW50aWZpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCBLSlM6OlVDaGFyKj4obV9pbXBsLT5j
aGFyYWN0ZXJzKCkpLCBtX2ltcGwtPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gSWRlbnRpZmllciht
X2ltcGwtPmNoYXJhY3RlcnMoKSwgbV9pbXBsLT5sZW5ndGgoKSk7CiB9CiAKIFN0cmluZzo6b3Bl
cmF0b3IgVVN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ltcGwpCiAgICAgICAgIHJldHVy
biBVU3RyaW5nKCk7Ci0gICAgcmV0dXJuIFVTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBL
SlM6OlVDaGFyKj4obV9pbXBsLT5jaGFyYWN0ZXJzKCkpLCBtX2ltcGwtPmxlbmd0aCgpKTsKKyAg
ICByZXR1cm4gVVN0cmluZyhtX2ltcGwtPmNoYXJhY3RlcnMoKSwgbV9pbXBsLT5sZW5ndGgoKSk7
CiB9CiAKIC8vIFN0cmluZyBPcGVyYXRpb25zCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvVGV4dENvZGVjSUNVLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJ
Q1UuY3BwCmluZGV4IDAyOTliOGYuLmQ3YTAwYzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q29kZWNJQ1UuY3BwCkBAIC0yMzQsNyArMjM0LDcgQEAgU3RyaW5nIFRleHRDb2RlY0lDVTo6ZGVj
b2RlKGNvbnN0IGNoYXIqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoLCBib29sIGZsdXNoKQogICAgICAg
ICBlcnIgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIHVjbnZfdG9Vbmljb2RlKG1fY29udmVydGVy
SUNVLCAmdGFyZ2V0LCB0YXJnZXRMaW1pdCwgJnNvdXJjZSwgc291cmNlTGltaXQsIG9mZnNldHMs
IGZsdXNoLCAmZXJyKTsKICAgICAgICAgaW50IGNvdW50ID0gdGFyZ2V0IC0gYnVmZmVyOwotICAg
ICAgICBhcHBlbmRPbWl0dGluZ0JPTShyZXN1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNo
YXIqPihidWZmZXIpLCBjb3VudCk7CisgICAgICAgIGFwcGVuZE9taXR0aW5nQk9NKHJlc3VsdCwg
YnVmZmVyLCBjb3VudCk7CiAgICAgfSB3aGlsZSAoZXJyID09IFVfQlVGRkVSX09WRVJGTE9XX0VS
Uk9SKTsKIAogICAgIGlmIChVX0ZBSUxVUkUoZXJyKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oIGIvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0
ZS5oCmluZGV4IDlmMWI1MGIuLjIwYzUwOGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVGVtcGxhdGUuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgK
QEAgLTc0LDcgKzc0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHN0cnVjdCBTVkdBbmlt
YXRlZFR5cGVXcmFwcGVyS2V5SGFzaCB7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkmIGtleSkKICAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKCg6OlVDaGFyKikgJmtleSwgc2l6ZW9m
KFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkpIC8gc2l6ZW9mKDo6VUNoYXIpKTsKKyAgICAgICAg
ICAgIHJldHVybiBTdHJpbmdJbXBsOjpjb21wdXRlSGFzaChyZWludGVycHJldF9jYXN0PGNvbnN0
IFVDaGFyKj4oJmtleSksIHNpemVvZihTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5KSAvIHNpemVv
ZihVQ2hhcikpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSYgYSwgY29uc3QgU1ZHQW5pbWF0
ZWRUeXBlV3JhcHBlcktleSYgYikK
</data>
<flag name="review"
          id="8547"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>