<?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>224968</bug_id>
          
          <creation_ts>2021-04-22 21:28:58 -0700</creation_ts>
          <short_desc>Extend SortedArrayMap further to work on case-folded strings, use in MIMETypeRegistry</short_desc>
          <delta_ts>2021-05-03 10:11:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1753449</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-22 21:28:58 -0700</bug_when>
    <thetext>Extend SortedArrayMap further to work on case-folded strings, use in MIMETypeRegistry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753453</commentid>
    <comment_count>1</comment_count>
      <attachid>426888</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-22 21:53:59 -0700</bug_when>
    <thetext>Created attachment 426888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754854</commentid>
    <comment_count>2</comment_count>
      <attachid>427216</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-27 17:00:16 -0700</bug_when>
    <thetext>Created attachment 427216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754868</commentid>
    <comment_count>3</comment_count>
      <attachid>427221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-27 17:53:24 -0700</bug_when>
    <thetext>Created attachment 427221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754923</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-27 23:13:16 -0700</bug_when>
    <thetext>Yusuke, this is working properly now and when you get a chance I think you should be the one to review it, although I would welcome input from others as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755115</commentid>
    <comment_count>5</comment_count>
      <attachid>427221</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-28 12:12:26 -0700</bug_when>
    <thetext>Comment on attachment 427221
Patch

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

&gt; Source/WTF/wtf/SortedArrayMap.h:117
&gt; +// FIXME: Use std::all_of instead of this and remove it, once we require C++20.
&gt; +template&lt;typename Iterator, typename Predicate&gt; constexpr bool allOfConstExpr(Iterator first, Iterator last, Predicate predicate)
&gt; +{
&gt; +    for (; first != last; ++first) {
&gt; +        if (!predicate(*first))
&gt; +            return false;
&gt; +    }
&gt; +    return true;
&gt; +}

I think putting this in StdLibExtras.h would make more sense. And it gives us fewer places to search when we upgrade to c++20. (There are probably things in there we can remove now actually).

&gt; Source/WTF/wtf/SortedArrayMap.h:202
&gt; +template&lt;typename CharacterType&gt; inline bool lessThanASCIICaseFolding(const CharacterType* characters, unsigned length, const char* literalWithNoUppercase)

Can this be constexpr?

&gt; Source/WTF/wtf/SortedArrayMap.h:218
&gt; +    if (string.is8Bit())
&gt; +        return lessThanASCIICaseFolding(string.characters8(), string.length(), literalWithNoUppercase);
&gt; +    return lessThanASCIICaseFolding(string.characters16(), string.length(), literalWithNoUppercase);

Should we consider a utility on StringView/String that does this for us?

return string.withCharacters([&amp;] (const auto* characters, unsigned length) {
    lessThanASCIICaseFolding(characters, length, literalWithNoUppercase);
});

It&apos;s the same number of lines, so I am not sure.

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:78
&gt; +constexpr ComparableCaseFoldingASCIILiteral supportedImageMIMETypeArray[] = {

With a definition like this, where, e.g. what section, do these values end up getting stored in the final binary? 

My feel for what constexpr on a global, with and without static, means is still not super strong.

&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:243
&gt; +constexpr ComparableLettersLiteral pdfMIMETypeArray[] = {
&gt; +    &quot;application/pdf&quot;,
&gt; +    &quot;text/pdf&quot;,
&gt; +};
&gt; +
&gt; +FixedVector&lt;const char*&gt; MIMETypeRegistry::pdfMIMETypes()

Could this return a SortedArraySet&lt;&gt; to avoid any additional allocation?

&gt; Tools/TestWebKitAPI/Tests/WTF/SortedArrayMap.cpp:97
&gt; +    EXPECT_FALSE(caseFoldingSet.contains(&quot;&quot;));
&gt; +    EXPECT_TRUE(caseFoldingSet.contains(&quot;_&quot;));
&gt; +    EXPECT_TRUE(caseFoldingSet.contains(&quot;c&quot;));
&gt; +    EXPECT_TRUE(caseFoldingSet.contains(&quot;delightful&quot;));
&gt; +    EXPECT_FALSE(caseFoldingSet.contains(&quot;d&quot;));
&gt; +    EXPECT_TRUE(caseFoldingSet.contains(&quot;q_&quot;));
&gt; +    EXPECT_FALSE(caseFoldingSet.contains(&quot;q__&quot;));
&gt; +
&gt; +    EXPECT_FALSE(lettersSet.contains(&quot;&quot;));
&gt; +    EXPECT_FALSE(lettersSet.contains(&quot;_&quot;));
&gt; +    EXPECT_TRUE(lettersSet.contains(&quot;c&quot;));
&gt; +    EXPECT_TRUE(lettersSet.contains(&quot;delightful&quot;));
&gt; +    EXPECT_FALSE(lettersSet.contains(&quot;d&quot;));
&gt; +    EXPECT_FALSE(lettersSet.contains(&quot;q_&quot;));
&gt; +    EXPECT_FALSE(lettersSet.contains(&quot;q__&quot;));
&gt; +
&gt; +    ASSERT_TRUE(scriptTypesSet.contains(&quot;text/javascript&quot;));
&gt; +    ASSERT_TRUE(scriptTypesSet.contains(&quot;TEXT/JAVASCRIPT&quot;));
&gt; +    ASSERT_TRUE(scriptTypesSet.contains(&quot;application/javascript&quot;));
&gt; +    ASSERT_TRUE(scriptTypesSet.contains(&quot;application/ecmascript&quot;));
&gt; +    ASSERT_TRUE(scriptTypesSet.contains(&quot;application/x-javascript&quot;));
&gt; +    ASSERT_TRUE(scriptTypesSet.contains(&quot;application/x-ecmascript&quot;));
&gt; +    ASSERT_FALSE(scriptTypesSet.contains(&quot;text/plain&quot;));
&gt; +    ASSERT_FALSE(scriptTypesSet.contains(&quot;application/json&quot;));
&gt; +    ASSERT_FALSE(scriptTypesSet.contains(&quot;foo/javascript&quot;));

I think having static_assert() variants would be good. Or maybe just switch these all to static_asserts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755142</commentid>
    <comment_count>6</comment_count>
      <attachid>427221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-28 13:26:40 -0700</bug_when>
    <thetext>Comment on attachment 427221
Patch

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

&gt;&gt; Source/WTF/wtf/SortedArrayMap.h:117
&gt;&gt; +}
&gt; 
&gt; I think putting this in StdLibExtras.h would make more sense. And it gives us fewer places to search when we upgrade to c++20. (There are probably things in there we can remove now actually).

I am happy to move them.

&gt;&gt; Source/WTF/wtf/SortedArrayMap.h:202
&gt;&gt; +template&lt;typename CharacterType&gt; inline bool lessThanASCIICaseFolding(const CharacterType* characters, unsigned length, const char* literalWithNoUppercase)
&gt; 
&gt; Can this be constexpr?

It can’t be constexpr because toASCIILower is not constexpr.

toASCIILower is not constexpr because it uses a lookup table, and that lookup table uses external linkage so we don’t replicate it in each executable that calls toASCIILower.

Maybe there is a way to make toASCIILower a hybrid that uses lookup tables when used in non-constexpr constants.

Anyway, none of that is important because this function doesn’t need to be used in constexpr contexts at this time.

&gt;&gt; Source/WTF/wtf/SortedArrayMap.h:218
&gt;&gt; +    return lessThanASCIICaseFolding(string.characters16(), string.length(), literalWithNoUppercase);
&gt; 
&gt; Should we consider a utility on StringView/String that does this for us?
&gt; 
&gt; return string.withCharacters([&amp;] (const auto* characters, unsigned length) {
&gt;     lessThanASCIICaseFolding(characters, length, literalWithNoUppercase);
&gt; });
&gt; 
&gt; It&apos;s the same number of lines, so I am not sure.

I am open to that different idiom.

This follows a long-standing pattern; 11 different functions in StringCommon.h work this way, and even use it as an abstraction across string types (at least across String, StringImpl, and StringView).

The reason *this* function isn’t in StringCommon.h yet is that I was worried about overgeneralizing it. If I moved it there I would be tempted to try to make it work with all sorts of combinations of types and that’s not needed for the current purpose.

I’d like to use types more consistently for the various flavors of ASCII literals. A modern version of equalIgnoringASCIICase or equalLettersIgnoringASCIICase might lean more on the type system rather than the function name. Here in this file, the types serve three different purposes:

1) To record compile-time invariants about the literals.

2) To define what == and &lt; mean, incorporating rules about case folding, so we can use algorithms directly rather than passing in predicates.

3) To define the &quot;parse&quot; function, which is a trick for making the SortedArrayMap/Set templates work efficiently when there is a transformation needed on a passed-in object before doing the search in the sorted array. It’s particularly useful for the special packed versions that Yusuke created where we turn the string into a fixed size integer.

&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:78
&gt;&gt; +constexpr ComparableCaseFoldingASCIILiteral supportedImageMIMETypeArray[] = {
&gt; 
&gt; With a definition like this, where, e.g. what section, do these values end up getting stored in the final binary? 
&gt; 
&gt; My feel for what constexpr on a global, with and without static, means is still not super strong.

I don’t know the answer, but it’s the &quot;best answer&quot;. These are constant data. They get fully computed at compile time and stored in the same section that individual string constants are stored in.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/SortedArrayMap.cpp:97
&gt;&gt; +    ASSERT_FALSE(scriptTypesSet.contains(&quot;foo/javascript&quot;));
&gt; 
&gt; I think having static_assert() variants would be good. Or maybe just switch these all to static_asserts.

These can’t currently be static assertions because the contains function uses the non-constexpr function tryBinarySearch, and the case folding comparisons in the binary search are done with the non-constexpr function lessThanASCIICaseFolding.

Both of those could be rewritten to be constexpr if there was a good reason to do so, but I wouldn’t do it *just* so we could test at compile time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755146</commentid>
    <comment_count>7</comment_count>
      <attachid>427221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-28 13:32:50 -0700</bug_when>
    <thetext>Comment on attachment 427221
Patch

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

&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:243
&gt;&gt; +FixedVector&lt;const char*&gt; MIMETypeRegistry::pdfMIMETypes()
&gt; 
&gt; Could this return a SortedArraySet&lt;&gt; to avoid any additional allocation?

If we really cared about the allocation in this case (and I don’t, this is not the case we want to optimize, since it’s only used in one-time initialization of a method that is mostly not called), we would want to return an array view on ASCII strings that can be converted into NSString. Not sure the best type for exposing that cleanly; just a pointer and a count, but also want the caller to just treat this as const char* without having to expose a ComparableXXX type. Would prefer not to just expose implementation detail in the header by using SortedArraySet directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755147</commentid>
    <comment_count>8</comment_count>
      <attachid>427221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-28 13:32:51 -0700</bug_when>
    <thetext>Comment on attachment 427221
Patch

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

&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:243
&gt;&gt; +FixedVector&lt;const char*&gt; MIMETypeRegistry::pdfMIMETypes()
&gt; 
&gt; Could this return a SortedArraySet&lt;&gt; to avoid any additional allocation?

If we really cared about the allocation in this case (and I don’t, this is not the case we want to optimize, since it’s only used in one-time initialization of a method that is mostly not called), we would want to return an array view on ASCII strings that can be converted into NSString. Not sure the best type for exposing that cleanly; just a pointer and a count, but also want the caller to just treat this as const char* without having to expose a ComparableXXX type. Would prefer not to just expose implementation detail in the header by using SortedArraySet directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755276</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-28 18:16:22 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 427221 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427221&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/SortedArrayMap.h:117
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; I think putting this in StdLibExtras.h would make more sense. And it gives us fewer places to search when we upgrade to c++20. (There are probably things in there we can remove now actually).
&gt; 
&gt; I am happy to move them.
&gt; 
&gt; &gt;&gt; Source/WTF/wtf/SortedArrayMap.h:202
&gt; &gt;&gt; +template&lt;typename CharacterType&gt; inline bool lessThanASCIICaseFolding(const CharacterType* characters, unsigned length, const char* literalWithNoUppercase)
&gt; &gt; 
&gt; &gt; Can this be constexpr?
&gt; 
&gt; It can’t be constexpr because toASCIILower is not constexpr.
&gt; 
&gt; toASCIILower is not constexpr because it uses a lookup table, and that
&gt; lookup table uses external linkage so we don’t replicate it in each
&gt; executable that calls toASCIILower.
&gt; 
&gt; Maybe there is a way to make toASCIILower a hybrid that uses lookup tables
&gt; when used in non-constexpr constants.
&gt; 
&gt; Anyway, none of that is important because this function doesn’t need to be
&gt; used in constexpr contexts at this time.

When we can use std::is_constant_evaluated we can start doing this. https://en.cppreference.com/w/cpp/types/is_constant_evaluated

&gt; 
&gt; &gt;&gt; Source/WTF/wtf/SortedArrayMap.h:218
&gt; &gt;&gt; +    return lessThanASCIICaseFolding(string.characters16(), string.length(), literalWithNoUppercase);
&gt; &gt; 
&gt; &gt; Should we consider a utility on StringView/String that does this for us?
&gt; &gt; 
&gt; &gt; return string.withCharacters([&amp;] (const auto* characters, unsigned length) {
&gt; &gt;     lessThanASCIICaseFolding(characters, length, literalWithNoUppercase);
&gt; &gt; });
&gt; &gt; 
&gt; &gt; It&apos;s the same number of lines, so I am not sure.
&gt; 
&gt; I am open to that different idiom.
&gt; 
&gt; This follows a long-standing pattern; 11 different functions in
&gt; StringCommon.h work this way, and even use it as an abstraction across
&gt; string types (at least across String, StringImpl, and StringView).
&gt; 
&gt; The reason *this* function isn’t in StringCommon.h yet is that I was worried
&gt; about overgeneralizing it. If I moved it there I would be tempted to try to
&gt; make it work with all sorts of combinations of types and that’s not needed
&gt; for the current purpose.
&gt; 
&gt; I’d like to use types more consistently for the various flavors of ASCII
&gt; literals. A modern version of equalIgnoringASCIICase or
&gt; equalLettersIgnoringASCIICase might lean more on the type system rather than
&gt; the function name. Here in this file, the types serve three different
&gt; purposes:
&gt; 
&gt; 1) To record compile-time invariants about the literals.
&gt; 
&gt; 2) To define what == and &lt; mean, incorporating rules about case folding, so
&gt; we can use algorithms directly rather than passing in predicates.
&gt; 
&gt; 3) To define the &quot;parse&quot; function, which is a trick for making the
&gt; SortedArrayMap/Set templates work efficiently when there is a transformation
&gt; needed on a passed-in object before doing the search in the sorted array.
&gt; It’s particularly useful for the special packed versions that Yusuke created
&gt; where we turn the string into a fixed size integer.
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:78
&gt; &gt;&gt; +constexpr ComparableCaseFoldingASCIILiteral supportedImageMIMETypeArray[] = {
&gt; &gt; 
&gt; &gt; With a definition like this, where, e.g. what section, do these values end up getting stored in the final binary? 
&gt; &gt; 
&gt; &gt; My feel for what constexpr on a global, with and without static, means is still not super strong.
&gt; 
&gt; I don’t know the answer, but it’s the &quot;best answer&quot;. These are constant
&gt; data. They get fully computed at compile time and stored in the same section
&gt; that individual string constants are stored in.
&gt; 
&gt; &gt;&gt; Tools/TestWebKitAPI/Tests/WTF/SortedArrayMap.cpp:97
&gt; &gt;&gt; +    ASSERT_FALSE(scriptTypesSet.contains(&quot;foo/javascript&quot;));
&gt; &gt; 
&gt; &gt; I think having static_assert() variants would be good. Or maybe just switch these all to static_asserts.
&gt; 
&gt; These can’t currently be static assertions because the contains function
&gt; uses the non-constexpr function tryBinarySearch, and the case folding
&gt; comparisons in the binary search are done with the non-constexpr function
&gt; lessThanASCIICaseFolding.
&gt; 
&gt; Both of those could be rewritten to be constexpr if there was a good reason
&gt; to do so, but I wouldn’t do it *just* so we could test at compile time.

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755277</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-28 18:20:38 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 427221 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427221&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/MIMETypeRegistry.cpp:243
&gt; &gt;&gt; +FixedVector&lt;const char*&gt; MIMETypeRegistry::pdfMIMETypes()
&gt; &gt; 
&gt; &gt; Could this return a SortedArraySet&lt;&gt; to avoid any additional allocation?
&gt; 
&gt; If we really cared about the allocation in this case (and I don’t, this is
&gt; not the case we want to optimize, since it’s only used in one-time
&gt; initialization of a method that is mostly not called), we would want to
&gt; return an array view on ASCII strings that can be converted into NSString.
&gt; Not sure the best type for exposing that cleanly; just a pointer and a
&gt; count, but also want the caller to just treat this as const char* without
&gt; having to expose a ComparableXXX type. Would prefer not to just expose
&gt; implementation detail in the header by using SortedArraySet directly.

In these cases it is clearly unnecessary, but it&apos;s an intriguing problem. I&apos;ll keep thinking about it for future uses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755418</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-29 09:40:05 -0700</bug_when>
    <thetext>Committed r276780 (237163@main): &lt;https://commits.webkit.org/237163@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755419</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-29 09:41:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/77325848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756098</commentid>
    <comment_count>13</comment_count>
      <attachid>427221</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-05-02 23:34:02 -0700</bug_when>
    <thetext>Comment on attachment 427221
Patch

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

&gt; Source/WTF/wtf/SortedArrayMap.h:80
&gt; +using ComparableASCIILiteral = ComparableASCIISubsetLiteral&lt;ASCIISubset::All&gt;;
&gt; +using ComparableCaseFoldingASCIILiteral = ComparableASCIISubsetLiteral&lt;ASCIISubset::NoUppercaseLetters&gt;;
&gt; +using ComparableLettersLiteral = ComparableASCIISubsetLiteral&lt;ASCIISubset::NoUppercaseLettersOptimized&gt;;

Why doesn&apos;t the last one say &quot;ASCII&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756217</commentid>
    <comment_count>14</comment_count>
      <attachid>427221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-03 10:11:33 -0700</bug_when>
    <thetext>Comment on attachment 427221
Patch

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

&gt;&gt; Source/WTF/wtf/SortedArrayMap.h:80
&gt;&gt; +using ComparableLettersLiteral = ComparableASCIISubsetLiteral&lt;ASCIISubset::NoUppercaseLettersOptimized&gt;;
&gt; 
&gt; Why doesn&apos;t the last one say &quot;ASCII&quot;?

It probably should.

In bug 225251, Sam is and I are discussing better names for this. I’ll do a rename as soon as we decide.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426888</attachid>
            <date>2021-04-22 21:53:59 -0700</date>
            <delta_ts>2021-04-27 17:00:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224968-20210422215358.patch</filename>
            <type>text/plain</type>
            <size>63040</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkwZmQ2YzlkNDkyZTJkYmEzMThjMWJl
MmU4ZGYzMGNlNDk5NWRlMmYuLjM0NmM5MDE5MDhjOTQ0NGU1YjUwMzYzNmIzZTE0Y2U5ZGJlODJi
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDQtMjIgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuZCBTb3J0ZWRBcnJheU1hcCBmdXJ0aGVyIHRvIHdv
cmsgb24gY2FzZS1mb2xkZWQgc3RyaW5ncywgdXNlIGluIE1JTUVUeXBlUmVnaXN0cnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDk2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0FTQ0lJQ1R5
cGUuaDogTWFrZSBtb3N0IGZ1bmN0aW9ucyBjb25zdGV4cHIuCisKKyAgICAgICAgKiB3dGYvRm9y
d2FyZC5oOiBBZGRlZCBGaXhlZFZlY3Rvci4KKworICAgICAgICAqIHd0Zi9Tb3J0ZWRBcnJheU1h
cC5oOiBBZGRlZCBTb3J0ZWRBcnJheVNldC4gQWRkZWQgQ29tcGFyYWJsZUNhc2VGb2xkaW5nQVND
SUlMaXRlcmFsCisgICAgICAgIGFuZCBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwsIHVzaW5nIGEg
dGVtcGxhdGUgc2hhcmVkIHdpdGggQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbC4KKwogMjAyMS0wNC0x
OSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3Igc29y
dGVkIGFycmF5IG1hcHBpbmcgbWFjaGluZXJ5IGluIExvY2FsZVRvU2NyaXB0TWFwcGluZy5jcHAg
Zm9yIHJldXNlIGVsc2V3aGVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBjMGFhODQ2NTA2YWYwYTNmMWMyM2Y3
ZWI1Nzg1ZTYwZTJlZWUwOTkuLjhjMmEzZTE3ZTEyOTNjMTY2ZDY5NDIyZjE3ODc2YjI0Y2JmYjVj
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNC0yMiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIFNvcnRlZEFycmF5TWFwIGZ1cnRo
ZXIgdG8gd29yayBvbiBjYXNlLWZvbGRlZCBzdHJpbmdzLCB1c2UgaW4gTUlNRVR5cGVSZWdpc3Ry
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0OTY4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcg
ZmV3ZXIgSGFzaFNldCBpbiBNSU1FVHlwZVJlZ2lzdHJ5IHNhdmVzIGNvZGUgc2l6ZSBhbmQgcmVk
dWNlcyBtZW1vcnkgdXNlLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlcyk6IERlbGV0ZWQuIFJlcGxhY2VkCisgICAgICAgIHRoaXMgZnVuY3Rpb24gd2l0aCBh
IGNvbnN0ZXhwciBhcnJheSwgZWxpbWluYXRpbmcgdGhlIHVzZSBvZiBIYXNoU2V0LgorICAgICAg
ICAoV2ViQ29yZTo6bWFrZUZpeGVkVmVjdG9yKTogQWRkZWQuIEhlbHBlciBmdW5jdGlvbiB1c2Vk
IGJlbG93IGZvciB0aGUgcmVwZWF0ZWQgcGF0dHRlcm4KKyAgICAgICAgb2YgY29udmVydGluZyBh
IGNvbnN0ZXhwciBhcnJheSBpbnRvIGEgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+LgorICAgICAg
ICAoV2ViQ29yZTo6c3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cyk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVBcnJh
eSBpcyBub3cgYW4gYXJyYXksIG5vdCBhIEhhc2hTZXQuCisgICAgICAgIChXZWJDb3JlOjpNSU1F
VHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMpOiBSZXdyb3RlIHRvIHJldHVybiBhIEZpeGVkVmVj
dG9yPGNvbnN0IGNoYXIqPgorICAgICAgICBpbnN0ZWFkIG9mIGEgSGFzaFNldC4gVGhlIG9ubHkg
Y2FsbGVyIG1ha2VzIGFuIE5TQXJyYXk8TlNTdHJpbmcgKj4sIHNvIHRoZXJlIGlzIG5vIG5lZWQK
KyAgICAgICAgdG8gaW52b2x2ZSBhIGhhc2ggdGFibGUgb3IgYSBXVEY6OlN0cmluZy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9uTWVkaWFUeXBlcyk6IERlbGV0ZWQsIG1l
cmdpbmcgaW50byB0aGUgZnVuY3Rpb24gYmVsb3cuCisgICAgICAgIChXZWJDb3JlOjpjb21tb25N
aW1lVHlwZXNNYXApOiBNb3ZlZCB0aGUgY29tbW9uTWVkaWFUeXBlcyBkYXRhIGluIGhlcmUKKyAg
ICAgICAgYW5kIHVzZSBhIGNvbnN0ZXhwciBhcnJheSBpbnN0ZWFkIG9mIGFuIGluaXRpYWxpemVy
X2xpc3QuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZElt
YWdlTUlNRVR5cGUpOiBVc2UgU29ydGVkQXJyYXlTZXQKKyAgICAgICAgaW5zdGVhZCBvZiBhIEhh
c2hTZXQgZm9yIHRoZSBjb3JlIHN1cHBvcnRlZCBpbWFnZXMgdHlwZXMuIE1vdmVkIHRoZSBjb2Rl
CisgICAgICAgIHRoYXQgY2hlY2tzIHRoaXMgYWdhaW5zdCBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VU
eXBlcyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGUpOiBVc2UgU29ydGVkQXJyYXlTZXQuCisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1JTUVUeXBlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1JTUVUeXBlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Bvc3RTY3JpcHRNSU1F
VHlwZSk6IFVzZSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAgICAgICAgRm9yIHNv
bWUgcmVhc29uIHRoaXMgd2FzIHRoZSBzaW5nbGUgY2FzZS1zZW5zaXRpdmUgZnVuY3Rpb24gaW4g
dGhpcyB3aG9sZSBjbGFzcyEKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Omlz
U3lzdGVtUHJldmlld01JTUVUeXBlKTogVXNlIFNvcnRlZEFycmF5U2V0LgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcyk6IFJldHVybiBh
IEZpeGVkVmVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplZEltYWdlTUlNRVR5cGUp
OiBSZW5hbWVkIHRoaXMgZnJvbSBpdHMgb2xkIG5hbWUsCisgICAgICAgIE1JTUVUeXBlUmVnaXN0
cnk6Om5vcm1hbGl6ZWRNSU1FVHlwZSwgdG8gYmV0dGVyIHJlZmxlY3QgdGhhdCBpdCdzIG9ubHkg
dXNlZCBpbgorICAgICAgICBvbmUgcGxhY2UuIEFsc28gYWRkZWQgY29tbWVudHMgdG8gY2xhcmlm
eSB0aGF0IGl0J3MgQ1VSTC1vbmx5IGFuZCBzdWdnZXN0IGl0IGJlCisgICAgICAgIHJlbW92ZWQg
ZXZlbnR1YWxseS4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaDogQ2hh
bmdlZCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcywgcGRmTUlNRVR5cGVzLAorICAgICAgICB1bnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMsIGFuZCBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzIHRvIHJldHVy
biBGaXhlZFZlY3RvciBpbnN0ZWFkCisgICAgICAgIG9mIEhhc2hTZXQuIEFsc28gcmVtb3ZlZCBu
b3JtYWxpemVkTUlNRVR5cGUuCisKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaDog
UmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlIG9mIEhhc2hNYXAuaC4KKyAgICAgICAgKiB0ZXN0aW5n
L1R5cGVDb252ZXJzaW9ucy5oOiBEaXR0by4KKwogMjAyMS0wNC0xOSAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3Igc29ydGVkIGFycmF5IG1hcHBpbmcg
bWFjaGluZXJ5IGluIExvY2FsZVRvU2NyaXB0TWFwcGluZy5jcHAgZm9yIHJldXNlIGVsc2V3aGVy
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBiNmE1MTc2ZjRiNjRmYTlmODg2MzZhMWNjYTA5YTU4ZDQ0YjMxY2VkLi4y
N2Y1NzIzYTM0ZmM1YzEyZjA4OTFiMWU0YjZmMGVlMDMwMmNmNzFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIxLTA0LTIyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFeHRlbmQgU29ydGVkQXJyYXlNYXAgZnVydGhlciB0byB3b3JrIG9uIGNhc2UtZm9s
ZGVkIHN0cmluZ3MsIHVzZSBpbiBNSU1FVHlwZVJlZ2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ5NjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc0Rpc3BsYXlpbmdQREZdKTogVXBkYXRl
ZCBzaW5jZSBNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMKKyAgICAgICAgcmV0dXJucyBh
IGRpZmZlcmVudCB0eXBlLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250
ZW50UHJvdmlkZXJSZWdpc3RyeS5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyUmVnaXN0cnkgaW5pdFdpdGhDb25maWd1cmF0aW9uOl0pOiBVcGRhdGVkIHNpbmNlCisgICAg
ICAgIE1JTUVUeXBlUmVnaXN0cnk6OnN5c3RlbVByZXZpZXdNSU1FVHlwZXMgcmV0dXJucyBhIGRp
ZmZlcmVudCB0eXBlLgorCiAyMDIxLTA0LTE5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZWZhY3RvciBzb3J0ZWQgYXJyYXkgbWFwcGluZyBtYWNoaW5lcnkgaW4g
TG9jYWxlVG9TY3JpcHRNYXBwaW5nLmNwcCBmb3IgcmV1c2UgZWxzZXdoZXJlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggOGE2MGFlYmRmNWZjMzRiMDNlM2JlMGUyMzNlMDZkMjQyYjVh
M2EyMy4uY2JlNzQ2ZGNkZDFiNTk0MTJjYTljZTAzNmQwZjAyNThjYjQ4YjYzNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA0LTIyICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmQgU29ydGVkQXJyYXlNYXAg
ZnVydGhlciB0byB3b3JrIG9uIGNhc2UtZm9sZGVkIHN0cmluZ3MsIHVzZSBpbiBNSU1FVHlwZVJl
Z2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjQ5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoY3JlYXRlTlNBcnJh
eSk6IFJlbmFtZWQgZnJvbSBuZXdBcnJheVdpdGhTdHJpbmdzIHNvIHRoaXMgb3ZlcmxvYWRzIHRo
ZSBjcmVhdGVOU0FycmF5CisgICAgICAgIGZ1bmN0aW9uIGZyb20gVmVjdG9yQ29jb2EuaCBzbyB3
ZSBjYW4gdXNlIHRoZSB0d28gaW50ZXJjaGFuZ2FibHkgYW5kIGhhbmRsZSBib3RoIEZpeGVkVmVj
dG9yCisgICAgICAgIGFuZCBIYXNoU2V0IHdpdGggdGhlIHNtYWUgY29kZS4KKyAgICAgICAgKCtb
V2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzXSk6IFVwZGF0ZWQg
Zm9yIG5hbWUgY2hhbmdlLgorICAgICAgICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTogRGl0dG8uCisgICAgICAgICgrW1dlYkhUTUxSZXByZXNl
bnRhdGlvbiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlc10pOiBEaXR0by4KKyAgICAgICAgKCtbV2Vi
SFRNTFJlcHJlc2VudGF0aW9uIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlc10pOiBEaXR0by4KKwog
MjAyMS0wNC0xOSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEVuYWJsZSAtV3RocmVhZC1zYWZldHksIGFkZCBhdHRyaWJ1dGVzIHRvIGN1c3RvbSBsb2Nr
IGNsYXNzZXMsIGFuZCBwcm92aWRlIG1hY3JvcyB0byBkZWNsYXJlIGd1YXJkcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oIGIvU291cmNlL1dURi93dGYvQVNDSUlDVHlw
ZS5oCmluZGV4IDk0NWU3ODI4NDc1NjNiYjZiMDhiYjVhZGNkNTIxNTRkNjY5MzEzOTguLmJhNjc3
MjczZDQ5MjU0MmRiOWRhZWViNTIxZDJmODMxM2U1NzMyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0FTQ0lJQ1R5cGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BU0NJSUNUeXBlLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MCwxNiArNDAsMTcgQEAKIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJKENoYXJhY3RlclR5cGUpOwotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FTQ0lJQWxwaGEoQ2hhcmFjdGVy
VHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQVNDSUlBbHBo
YW51bWVyaWMoQ2hhcmFjdGVyVHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBib29sIGlzQVNDSUlCaW5hcnlEaWdpdChDaGFyYWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSURpZ2l0KENoYXJhY3RlclR5cGUpOwotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FTQ0lJSGV4RGlnaXQoQ2hhcmFj
dGVyVHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQVNDSUlM
b3dlcihDaGFyYWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJv
b2wgaXNBU0NJSU9jdGFsRGlnaXQoQ2hhcmFjdGVyVHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBib29sIGlzQVNDSUlQcmludGFibGUoQ2hhcmFjdGVyVHlwZSk7Ci10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQVNDSUlTcGFjZShDaGFyYWN0ZXJU
eXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSVVwcGVy
KENoYXJhY3RlclR5cGUpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3Rl
eHByIGJvb2wgaXNBU0NJSUFscGhhKENoYXJhY3RlclR5cGUpOwordGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSUFscGhhbnVtZXJpYyhDaGFyYWN0
ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29s
IGlzQVNDSUlCaW5hcnlEaWdpdChDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlEaWdpdChDaGFyYWN0ZXJUeXBlKTsK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlE
aWdpdE9yUHVuY3R1YXRpb24oQ2hhcmFjdGVyVHlwZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJSGV4RGlnaXQoQ2hhcmFjdGVyVHlwZSk7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJ
TG93ZXIoQ2hhcmFjdGVyVHlwZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBj
b25zdGV4cHIgYm9vbCBpc0FTQ0lJT2N0YWxEaWdpdChDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlQcmludGFibGUo
Q2hhcmFjdGVyVHlwZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4
cHIgYm9vbCBpc0FTQ0lJU3BhY2UoQ2hhcmFjdGVyVHlwZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSk7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IENoYXJhY3RlclR5cGUgdG9BU0NJ
SUxvd2VyKENoYXJhY3RlclR5cGUpOwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Q2hhcmFjdGVyVHlwZSB0b0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSk7CkBAIC01NywxOCArNTgs
MTggQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQ2hhcmFjdGVyVHlwZSB0b0FT
Q0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiB1aW50OF90IHRvQVNDSUlIZXhWYWx1ZShDaGFyYWN0ZXJUeXBlKTsKIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHVpbnQ4X3QgdG9BU0NJSUhleFZhbHVlKENoYXJhY3RlclR5cGUg
Zmlyc3RDaGFyYWN0ZXIsIENoYXJhY3RlclR5cGUgc2Vjb25kQ2hhcmFjdGVyKTsKIAotY2hhciBs
b3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90KTsKLWNoYXIgdXBwZXJOaWJibGVUb0FT
Q0lJSGV4RGlnaXQodWludDhfdCk7Ci1jaGFyIGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhl
eERpZ2l0KHVpbnQ4X3QpOwotY2hhciB1cHBlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdp
dCh1aW50OF90KTsKK2NvbnN0ZXhwciBjaGFyIGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHVp
bnQ4X3QpOworY29uc3RleHByIGNoYXIgdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodWludDhf
dCk7Citjb25zdGV4cHIgY2hhciBsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdCh1
aW50OF90KTsKK2NvbnN0ZXhwciBjaGFyIHVwcGVyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERp
Z2l0KHVpbnQ4X3QpOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlz
QVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoQ2hhcmFjdGVyVHlwZSwgY2hhciBleHBlY3RlZEFTQ0lJ
TG93ZXJjYXNlTGV0dGVyKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0
ZXhwciBib29sIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoQ2hhcmFjdGVyVHlwZSwgY2hhciBl
eHBlY3RlZEFTQ0lJTG93ZXJjYXNlTGV0dGVyKTsKIAogLy8gVGhlIHRvQVNDSUlMb3dlclVuY2hl
Y2tlZCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgY29tcGFyaW5nIGFueSBpbnB1dCBjaGFyYWN0
ZXIKIC8vIHRvIGEgbG93ZXJjYXNlIEVuZ2xpc2ggY2hhcmFjdGVyLiBUaGUgaXNBU0NJSUFscGhh
Q2FzZWxlc3NFcXVhbCBmdW5jdGlvbiBzaG91bGQKIC8vIGJlIHVzZWQgZm9yIHJlZ3VsYXIgY29t
cGFyaXNvbiBvZiBBU0NJSSBhbHBoYSBjaGFyYWN0ZXJzLCBidXQgc3dpdGNoIHN0YXRlbWVudHMK
IC8vIGluIHRoZSBDU1MgdG9rZW5pemVyLCBmb3IgZXhhbXBsZSwgaW5zdGVhZCBtYWtlIGRpcmVj
dCB1c2UgdG9BU0NJSUxvd2VyVW5jaGVja2VkLgotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoQ2hhcmFjdGVyVHlwZSk7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgQ2hhcmFjdGVyVHlw
ZSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoQ2hhcmFjdGVyVHlwZSk7CiAKIGV4dGVybiBXVEZfRVhQ
T1JUX1BSSVZBVEUgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaUNhc2VGb2xkVGFibGVbMjU2XTsK
IApAQCAtNzcsMTIgKzc4LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNv
bnN0ZXhwciBib29sIGlzQVNDSUkoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiAgICAgcmV0dXJu
ICEoY2hhcmFjdGVyICYgfjB4N0YpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJTG93ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJTG93
ZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlciA+PSAn
YScgJiYgY2hhcmFjdGVyIDw9ICd6JzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gaW5saW5lIENoYXJhY3RlclR5cGUgdG9BU0NJSUxvd2VyVW5jaGVja2VkKENoYXJhY3Rl
clR5cGUgY2hhcmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3Rl
eHByIENoYXJhY3RlclR5cGUgdG9BU0NJSUxvd2VyVW5jaGVja2VkKENoYXJhY3RlclR5cGUgY2hh
cmFjdGVyKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGNvbXBhcmlu
ZyBhbnkgaW5wdXQgY2hhcmFjdGVyCiAgICAgLy8gdG8gYSBsb3dlcmNhc2UgRW5nbGlzaCBjaGFy
YWN0ZXIuIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsCkBAIC05MiwzNyArOTMsMzcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIENoYXJhY3RlclR5cGUgdG9B
U0NJSUxvd2VyVW5jaGVja2VkKENoYXIKICAgICByZXR1cm4gY2hhcmFjdGVyIHwgMHgyMDsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSUFs
cGhhKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSUFscGhhKENoYXJhY3RlclR5cGUgY2hhcmFjdGVy
KQogewogICAgIHJldHVybiBpc0FTQ0lJTG93ZXIodG9BU0NJSUxvd2VyVW5jaGVja2VkKGNoYXJh
Y3RlcikpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9v
bCBpc0FTQ0lJRGlnaXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJRGlnaXQoQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlciA+PSAnMCcgJiYgY2hhcmFjdGVy
IDw9ICc5JzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJv
b2wgaXNBU0NJSUFscGhhbnVtZXJpYyhDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlBbHBoYW51bWVy
aWMoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGlzQVNDSUlEaWdpdChj
aGFyYWN0ZXIpIHx8IGlzQVNDSUlBbHBoYShjaGFyYWN0ZXIpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJSGV4RGlnaXQoQ2hhcmFjdGVy
VHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4
cHIgYm9vbCBpc0FTQ0lJSGV4RGlnaXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAg
cmV0dXJuIGlzQVNDSUlEaWdpdChjaGFyYWN0ZXIpIHx8ICh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQo
Y2hhcmFjdGVyKSA+PSAnYScgJiYgdG9BU0NJSUxvd2VyVW5jaGVja2VkKGNoYXJhY3RlcikgPD0g
J2YnKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wg
aXNBU0NJSUJpbmFyeURpZ2l0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQordGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSUJpbmFyeURpZ2l0KENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewogICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gJzAnIHx8
IGNoYXJhY3RlciA9PSAnMSc7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGlubGluZSBib29sIGlzQVNDSUlPY3RhbERpZ2l0KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSU9j
dGFsRGlnaXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3Rl
ciA+PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc3JzsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSVByaW50YWJsZShDaGFyYWN0ZXJUeXBlIGNo
YXJhY3RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29s
IGlzQVNDSUlQcmludGFibGUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJu
IGNoYXJhY3RlciA+PSAnICcgJiYgY2hhcmFjdGVyIDw9ICd+JzsKIH0KQEAgLTE0MywxMiArMTQ0
LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVND
SUlQcmludGFibGUoQ2hhcmFjdGVyVHlwZSBjaGFyCiAgICAgQmVjYXVzZSBvZiB0aG9zZSwgd2Ug
Zmlyc3QgY2hlY2sgdG8gcXVpY2tseSByZXR1cm4gZmFsc2UgZm9yIG5vbi1jb250cm9sIGNoYXJh
Y3RlcnMsCiAgICAgdGhlbiBjaGVjayBmb3Igc3BhY2UgaXRzZWxmIHRvIHF1aWNrbHkgcmV0dXJu
IHRydWUgZm9yIHRoYXQgY2FzZSwgdGhlbiBkbyB0aGUgcmVzdC4KICovCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJU3BhY2UoQ2hhcmFjdGVyVHlw
ZSBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIg
Ym9vbCBpc0FTQ0lJU3BhY2UoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJu
IGNoYXJhY3RlciA8PSAnICcgJiYgKGNoYXJhY3RlciA9PSAnICcgfHwgKGNoYXJhY3RlciA8PSAw
eEQgJiYgY2hhcmFjdGVyID49IDB4OSkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJ
VXBwZXIoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGNoYXJhY3RlciA+
PSAnQScgJiYgY2hhcmFjdGVyIDw9ICdaJzsKIH0KQEAgLTE4NCwzMSArMTg1LDMxIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSB1aW50OF90IHRvQVNDSUlIZXhWYWx1
ZShDaGFyYWN0ZXJUeXBlIGZpCiAgICAgcmV0dXJuIHRvQVNDSUlIZXhWYWx1ZShmaXJzdENoYXJh
Y3RlcikgPDwgNCB8IHRvQVNDSUlIZXhWYWx1ZShzZWNvbmRDaGFyYWN0ZXIpOwogfQogCi1pbmxp
bmUgY2hhciBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90IHZhbHVlKQorY29uc3Rl
eHByIGNoYXIgbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodWludDhfdCB2YWx1ZSkKIHsKICAg
ICB1aW50OF90IG5pYmJsZSA9IHZhbHVlICYgMHhGOwogICAgIHJldHVybiBuaWJibGUgKyAobmli
YmxlIDwgMTAgPyAnMCcgOiAnQScgLSAxMCk7CiB9CiAKLWlubGluZSBjaGFyIHVwcGVyTmliYmxl
VG9BU0NJSUhleERpZ2l0KHVpbnQ4X3QgdmFsdWUpCitjb25zdGV4cHIgY2hhciB1cHBlck5pYmJs
ZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90IHZhbHVlKQogewogICAgIHVpbnQ4X3QgbmliYmxlID0g
dmFsdWUgPj4gNDsKICAgICByZXR1cm4gbmliYmxlICsgKG5pYmJsZSA8IDEwID8gJzAnIDogJ0En
IC0gMTApOwogfQogCi1pbmxpbmUgY2hhciBsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhE
aWdpdCh1aW50OF90IHZhbHVlKQorY29uc3RleHByIGNoYXIgbG93ZXJOaWJibGVUb0xvd2VyY2Fz
ZUFTQ0lJSGV4RGlnaXQodWludDhfdCB2YWx1ZSkKIHsKICAgICB1aW50OF90IG5pYmJsZSA9IHZh
bHVlICYgMHhGOwogICAgIHJldHVybiBuaWJibGUgKyAobmliYmxlIDwgMTAgPyAnMCcgOiAnYScg
LSAxMCk7CiB9CiAKLWlubGluZSBjaGFyIHVwcGVyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERp
Z2l0KHVpbnQ4X3QgdmFsdWUpCitjb25zdGV4cHIgY2hhciB1cHBlck5pYmJsZVRvTG93ZXJjYXNl
QVNDSUlIZXhEaWdpdCh1aW50OF90IHZhbHVlKQogewogICAgIHVpbnQ4X3QgbmliYmxlID0gdmFs
dWUgPj4gNDsKICAgICByZXR1cm4gbmliYmxlICsgKG5pYmJsZSA8IDEwID8gJzAnIDogJ2EnIC0g
MTApOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBp
c0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKENoYXJhY3RlclR5cGUgaW5wdXRDaGFyYWN0ZXIsIGNo
YXIgZXhwZWN0ZWRBU0NJSUxvd2VyY2FzZUxldHRlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoQ2hhcmFj
dGVyVHlwZSBpbnB1dENoYXJhY3RlciwgY2hhciBleHBlY3RlZEFTQ0lJTG93ZXJjYXNlTGV0dGVy
KQogewogICAgIC8vIE5hbWUgb2YgdGhpcyBhcmd1bWVudCBzYXlzIHRoaXMgbXVzdCBiZSBhIGxv
d2VyY2FzZSBsZXR0ZXIsIGJ1dCBpdCBjYW4gYWN0dWFsbHkgYmU6CiAgICAgLy8gICAtIGEgbG93
ZXJjYXNlIGxldHRlcgpAQCAtMjI1LDkgKzIyNiw5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoQ2hhcmFjdGVy
CiAgICAgcmV0dXJuIExJS0VMWSh0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoaW5wdXRDaGFyYWN0ZXIp
ID09IGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0ZXIpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJRGlnaXRPclB1bmN0dWF0aW9uKENo
YXJhY3RlclR5cGUgY2hhckNvZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBj
b25zdGV4cHIgYm9vbCBpc0FTQ0lJRGlnaXRPclB1bmN0dWF0aW9uKENoYXJhY3RlclR5cGUgY2hh
cmFjdGVyKQogewotICAgIHJldHVybiAoY2hhckNvZGUgPj0gJyEnICYmIGNoYXJDb2RlIDw9ICdA
JykgfHwgKGNoYXJDb2RlID49ICdbJyAmJiBjaGFyQ29kZSA8PSAnYCcpIHx8IChjaGFyQ29kZSA+
PSAneycgJiYgY2hhckNvZGUgPD0gJ34nKTsKKyAgICByZXR1cm4gKGNoYXJhY3RlciA+PSAnIScg
JiYgY2hhcmFjdGVyIDw9ICdAJykgfHwgKGNoYXJhY3RlciA+PSAnWycgJiYgY2hhcmFjdGVyIDw9
ICdgJykgfHwgKGNoYXJhY3RlciA+PSAneycgJiYgY2hhcmFjdGVyIDw9ICd+Jyk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0Zv
cndhcmQuaAppbmRleCAyMGY3NjgxOWYzNmMxMzExYjliY2ZiYjI5N2E1NmIyOWU4MjAyZjhjLi5m
NWMzZjk0MzFiNWE0Yzc3YjNkZjRmMjJlMmUwNjZiMzg0ZjQ2NzEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCkBAIC02
Miw2ICs2Miw3IEBAIHVzaW5nIFZlY3Rvck1hbGxvYyA9IEZhc3RNYWxsb2M7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gc3RydWN0IERlZmF1bHRSZWZEZXJlZlRyYWl0czsKIAogdGVtcGxhdGU8dHlwZW5h
bWU+IGNsYXNzIENvbXBsZXRpb25IYW5kbGVyOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZp
eGVkVmVjdG9yOwogdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIEZ1bmN0aW9uOwogdGVtcGxhdGU8
dHlwZW5hbWUsIHR5cGVuYW1lID0gQW55VGhyZWFkc0FjY2Vzc1RyYWl0cz4gY2xhc3MgTGF6eU5l
dmVyRGVzdHJveWVkOwogdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lID0gQW55VGhyZWFkc0Fj
Y2Vzc1RyYWl0cz4gY2xhc3MgTmV2ZXJEZXN0cm95ZWQ7CkBAIC0xMTgsNiArMTE5LDcgQEAgdXNp
bmcgV1RGOjpBdG9tU3RyaW5nSW1wbDsKIHVzaW5nIFdURjo6QmluYXJ5U2VtYXBob3JlOwogdXNp
bmcgV1RGOjpDU3RyaW5nOwogdXNpbmcgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjsKK3VzaW5nIFdU
Rjo6Rml4ZWRWZWN0b3I7CiB1c2luZyBXVEY6OkZ1bmN0aW9uOwogdXNpbmcgV1RGOjpGdW5jdGlv
bkRpc3BhdGNoZXI7CiB1c2luZyBXVEY6Okhhc2hDb3VudGVkU2V0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5
TWFwLmgKaW5kZXggNzY5MDEyODhiZDU2NDRlNzBmZTQyZjk0Y2Q4MzE0YThiODY0MTA2My4uZTc1
MjlkZGMzMTg0MDgxODk0MTFlYTY4ZTk0OGQ1YTE0NjY3NzA3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvU29ydGVkQXJyYXlNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJh
eU1hcC5oCkBAIC01MiwzMiArNTIsODcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBBcnJheVR5cGUm
IG1fYXJyYXk7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheVR5cGU+IGNsYXNzIFNvcnRl
ZEFycmF5U2V0IHsKK3B1YmxpYzoKKyAgICBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQoY29uc3Qg
QXJyYXlUeXBlJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJndW1lbnQ+IGJvb2wgY29u
dGFpbnMoY29uc3QgS2V5QXJndW1lbnQmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdCBB
cnJheVR5cGUmIG1fYXJyYXk7Cit9OworCiBzdHJ1Y3QgQ29tcGFyYWJsZVN0cmluZ1ZpZXcgewog
ICAgIFN0cmluZ1ZpZXcgc3RyaW5nOwogfTsKIAotc3RydWN0IENvbXBhcmFibGVBU0NJSUxpdGVy
YWwgewotICAgIGNvbnN0IGNoYXIqIGxpdGVyYWw7Ci0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3Qg
c2l6ZT4gY29uc3RleHByIENvbXBhcmFibGVBU0NJSUxpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJh
Y3RlcnMpW3NpemVdKSA6IGxpdGVyYWwgeyBjaGFyYWN0ZXJzIH0geyB9CisvLyBOb1VwcGVyY2Fz
ZUxldHRlcnNPcHRpbWl6ZWQgbWVhbnMgbm8gY2hhcmFjdGVycyB3aXRoIHRoZSAweDIwIGJpdCBz
ZXQuCisvLyBUaGF0IG1lYW5zIHRoZSBzdHJpbmdzIGNhbid0IGluY2x1ZGUgY29udHJvbCBjaGFy
YWN0ZXJzLCB1cHBlcmNhc2UgbGV0dGVycywgb3IgYW55IG9mIEBbXF1fLgorZW51bSBjbGFzcyBB
U0NJSVN1YnNldCB7IEFsbCwgTm9VcHBlcmNhc2VMZXR0ZXJzLCBOb1VwcGVyY2FzZUxldHRlcnNP
cHRpbWl6ZWQgfTsKKwordGVtcGxhdGU8QVNDSUlTdWJzZXQ+IHN0cnVjdCBDb21wYXJhYmxlQVND
SUlTdWJzZXRMaXRlcmFsIHsKKyAgICBBU0NJSUxpdGVyYWwgbGl0ZXJhbDsKKyAgICB0ZW1wbGF0
ZTxzdGQ6OnNpemVfdCBzaXplPiBjb25zdGV4cHIgQ29tcGFyYWJsZUFTQ0lJU3Vic2V0TGl0ZXJh
bChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbc2l6ZV0pOwogICAgIHN0YXRpYyBPcHRpb25hbDxD
b21wYXJhYmxlU3RyaW5nVmlldz4gcGFyc2UoU3RyaW5nVmlldyBzdHJpbmcpIHsgcmV0dXJuIHsg
eyBzdHJpbmcgfSB9OyB9CiB9OwogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KENvbXBhcmFi
bGVBU0NJSUxpdGVyYWwsIENvbXBhcmFibGVBU0NJSUxpdGVyYWwpOwotY29uc3RleHByIGJvb2wg
b3BlcmF0b3I8KENvbXBhcmFibGVBU0NJSUxpdGVyYWwsIENvbXBhcmFibGVBU0NJSUxpdGVyYWwp
OwordXNpbmcgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCA9IENvbXBhcmFibGVBU0NJSVN1YnNldExp
dGVyYWw8QVNDSUlTdWJzZXQ6OkFsbD47Cit1c2luZyBDb21wYXJhYmxlQ2FzZUZvbGRpbmdBU0NJ
SUxpdGVyYWwgPSBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPEFTQ0lJU3Vic2V0OjpOb1Vw
cGVyY2FzZUxldHRlcnM+OwordXNpbmcgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsID0gQ29tcGFy
YWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbDxBU0NJSVN1YnNldDo6Tm9VcHBlcmNhc2VMZXR0ZXJzT3B0
aW1pemVkPjsKKwordGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0PiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8c3Vic2V0PiwgQ29tcGFyYWJs
ZUFTQ0lJU3Vic2V0TGl0ZXJhbDxzdWJzZXQ+KTsKK3RlbXBsYXRlPEFTQ0lJU3Vic2V0IHN1YnNl
dD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8
c3Vic2V0PiwgQ29tcGFyYWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbDxzdWJzZXQ+KTsKIAogYm9vbCBv
cGVyYXRvcj09KENvbXBhcmFibGVTdHJpbmdWaWV3LCBDb21wYXJhYmxlQVNDSUlMaXRlcmFsKTsK
K2Jvb2wgb3BlcmF0b3I9PShDb21wYXJhYmxlU3RyaW5nVmlldywgQ29tcGFyYWJsZUNhc2VGb2xk
aW5nQVNDSUlMaXRlcmFsKTsKK2Jvb2wgb3BlcmF0b3I9PShDb21wYXJhYmxlU3RyaW5nVmlldywg
Q29tcGFyYWJsZUxldHRlcnNMaXRlcmFsKTsKIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVTdHJp
bmdWaWV3LCBDb21wYXJhYmxlQVNDSUlMaXRlcmFsKTsKLWJvb2wgb3BlcmF0b3IhPShDb21wYXJh
YmxlU3RyaW5nVmlldywgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCk7Ci1ib29sIG9wZXJhdG9yPT0o
Q29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCwgQ29tcGFyYWJsZVN0cmluZ1ZpZXcpOworYm9vbCBvcGVy
YXRvcjwoQ29tcGFyYWJsZVN0cmluZ1ZpZXcsIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0
ZXJhbCk7Citib29sIG9wZXJhdG9yPChDb21wYXJhYmxlU3RyaW5nVmlldywgQ29tcGFyYWJsZUxl
dHRlcnNMaXRlcmFsKTsKKwordGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUeXBlPiBib29sIG9wZXJh
dG9yPT0oT3RoZXJUeXBlLCBDb21wYXJhYmxlU3RyaW5nVmlldyk7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlclR5cGU+IGJvb2wgb3BlcmF0b3IhPShDb21wYXJhYmxlU3RyaW5nVmlldywgT3RoZXJU
eXBlKTsKKwordGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0PiBjb25zdGV4cHIgYm9vbCBpc0lu
U3Vic2V0KGNoYXIgY2hhcmFjdGVyKQoreworICAgIGlmICghKGNoYXJhY3RlciAmJiBpc0FTQ0lJ
KGNoYXJhY3RlcikpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgc3dpdGNoIChzdWJzZXQp
IHsKKyAgICBjYXNlIEFTQ0lJU3Vic2V0OjpBbGw6CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IGNhc2UgQVNDSUlTdWJzZXQ6Ok5vVXBwZXJjYXNlTGV0dGVyczoKKyAgICAgICAgcmV0dXJuICFp
c0FTQ0lJVXBwZXIoY2hhcmFjdGVyKTsKKyAgICBjYXNlIEFTQ0lJU3Vic2V0OjpOb1VwcGVyY2Fz
ZUxldHRlcnNPcHRpbWl6ZWQ6CisgICAgICAgIHJldHVybiBjaGFyYWN0ZXIgPT0gdG9BU0NJSUxv
d2VyVW5jaGVja2VkKGNoYXJhY3Rlcik7CisgICAgfQorfQorCisvLyBGSVhNRTogVXNlIHN0ZDo6
YWxsX29mIGluc3RlYWQgb2YgdGhpcyBhbmQgcmVtb3ZlIGl0LCBvbmNlIHdlIHJlcXVpcmUgQysr
MjAuCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlPiBjb25z
dGV4cHIgYm9vbCBhbGxPZkNvbnN0RXhwcihJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwg
UHJlZGljYXRlIHByZWRpY2F0ZSkKK3sKKyAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJz
dCkgeworICAgICAgICBpZiAoIXByZWRpY2F0ZSgqZmlyc3QpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8QVNDSUlTdWJz
ZXQgc3Vic2V0PiB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBzaXplPiBjb25zdGV4cHIgQ29tcGFyYWJs
ZUFTQ0lJU3Vic2V0TGl0ZXJhbDxzdWJzZXQ+OjpDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFs
KGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtzaXplXSkKKyAgICA6IGxpdGVyYWwgeyBBU0NJSUxp
dGVyYWw6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3RlcnMpIH0KK3sKKyAgICBBU1NFUlRfVU5E
RVJfQ09OU1RFWFBSX0NPTlRFWFQoYWxsT2ZDb25zdEV4cHIoJmNoYXJhY3RlcnNbMF0sICZjaGFy
YWN0ZXJzW3NpemUgLSAxXSwgW10gKGNoYXIgY2hhcmFjdGVyKSB7CisgICAgICAgIHJldHVybiBp
c0luU3Vic2V0PHN1YnNldD4oY2hhcmFjdGVyKTsKKyAgICB9KSk7CisgICAgQVNTRVJUX1VOREVS
X0NPTlNURVhQUl9DT05URVhUKCFjaGFyYWN0ZXJzW3NpemUgLSAxXSk7Cit9CiAKIC8vIEZJWE1F
OiBVc2Ugc3RkOjppc19zb3J0ZWQgaW5zdGVhZCBvZiB0aGlzIGFuZCByZW1vdmUgaXQsIG9uY2Ug
d2UgcmVxdWlyZSBDKysyMC4KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBQ
cmVkaWNhdGU+IGNvbnN0ZXhwciBib29sIGlzU29ydGVkQ29uc3RFeHByKEl0ZXJhdG9yIGJlZ2lu
LCBJdGVyYXRvciBlbmQsIFByZWRpY2F0ZSBwcmVkaWNhdGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
dGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlPiBjb25zdGV4cHIgYm9vbCBpc1NvcnRlZENvbnN0
RXhwcihJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCwgUHJlZGljYXRlIHByZWRpY2F0ZSkK
IHsKLSAgICBpZiAoYmVnaW4gPT0gZW5kKQorICAgIGlmIChmaXJzdCA9PSBsYXN0KQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBhdXRvIGN1cnJlbnQgPSBiZWdpbjsKKyAgICBhdXRvIGN1cnJl
bnQgPSBmaXJzdDsKICAgICBhdXRvIHByZXZpb3VzID0gY3VycmVudDsKLSAgICB3aGlsZSAoKytj
dXJyZW50ICE9IGVuZCkgeworICAgIHdoaWxlICgrK2N1cnJlbnQgIT0gbGFzdCkgewogICAgICAg
ICBpZiAoIXByZWRpY2F0ZSgqcHJldmlvdXMsICpjdXJyZW50KSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgcHJldmlvdXMgPSBjdXJyZW50OwpAQCAtODUsNiArMTQwLDEyIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+IGNvbnN0ZXhw
ciBib29sIGlzU29ydGVkQ29uc3RFeHByCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIEZJWE1F
OiBVc2Ugc3RkOjppc19zb3J0ZWQgaW5zdGVhZCBvZiB0aGlzIGFuZCByZW1vdmUgaXQsIG9uY2Ug
d2UgcmVxdWlyZSBDKysyMC4KK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPiBjb25zdGV4cHIg
Ym9vbCBpc1NvcnRlZENvbnN0RXhwcihJdGVyYXRvciBmaXJzdCwgSXRlcmF0b3IgbGFzdCkKK3sK
KyAgICByZXR1cm4gaXNTb3J0ZWRDb25zdEV4cHIoZmlyc3QsIGxhc3QsIFtdIChhdXRvJiBhLCBh
dXRvJiBiKSB7IHJldHVybiBhIDwgYjsgfSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEFycmF5
VHlwZT4gY29uc3RleHByIFNvcnRlZEFycmF5TWFwPEFycmF5VHlwZT46OlNvcnRlZEFycmF5TWFw
KGNvbnN0IEFycmF5VHlwZSYgYXJyYXkpCiAgICAgOiBtX2FycmF5IHsgYXJyYXkgfQogewpAQCAt
MTEyLDYgKzE3MywyNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJheVR5cGU+IHRlbXBsYXRlPHR5
cGVuYW1lIEtleUFyZ3VtZW50PiBpbmxpbmUgYXV0byBTb3J0ZWRBcgogICAgIHJldHVybiByZXN1
bHQgPyAqcmVzdWx0IDogZGVmYXVsdFZhbHVlOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcnJh
eVR5cGU+IGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldDxBcnJheVR5cGU+OjpTb3J0ZWRBcnJheVNl
dChjb25zdCBBcnJheVR5cGUmIGFycmF5KQorICAgIDogbV9hcnJheSB7IGFycmF5IH0KK3sKKyAg
ICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoaXNTb3J0ZWRDb25zdEV4cHIoc3RkOjpi
ZWdpbihhcnJheSksIHN0ZDo6ZW5kKGFycmF5KSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBB
cnJheVR5cGU+IHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZ3VtZW50PiBpbmxpbmUgYm9vbCBTb3J0
ZWRBcnJheVNldDxBcnJheVR5cGU+Ojpjb250YWlucyhjb25zdCBLZXlBcmd1bWVudCYga2V5KSBj
b25zdAoreworICAgIHVzaW5nIEVsZW1lbnRUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfZXh0
ZW50X3Q8QXJyYXlUeXBlPjsKKyAgICBhdXRvIHBhcnNlZEtleSA9IEVsZW1lbnRUeXBlOjpwYXJz
ZShrZXkpOworICAgIGlmICghcGFyc2VkS2V5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGVuaGFuY2UgdHJ5QmluYXJ5U2VhcmNoIHNvIGl0IGNhbiBk
ZWR1Y2UgRWxlbWVudFR5cGUuCisgICAgLy8gRklYTUU6IElmIHRoZSBhcnJheSdzIHNpemUgaXMg
c21hbGwgZW5vdWdoLCBzaG91bGQgZG8gbGluZWFyIHNlYXJjaCBzaW5jZSBpdCBpcyBtb3JlIGVm
ZmljaWVudCB0aGFuIGJpbmFyeSBzZWFyY2guCisgICAgcmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxF
bGVtZW50VHlwZT4obV9hcnJheSwgc3RkOjpzaXplKG1fYXJyYXkpLCAqcGFyc2VkS2V5LCBbXSAo
YXV0byogZWxlbWVudCkgeworICAgICAgICByZXR1cm4gKmVsZW1lbnQ7CisgICAgfSk7Cit9CisK
IGNvbnN0ZXhwciBpbnQgc3RyY21wQ29uc3RFeHByKGNvbnN0IGNoYXIqIGEsIGNvbnN0IGNoYXIq
IGIpCiB7CiAgICAgd2hpbGUgKCphID09ICpiICYmICphICYmICpiKSB7CkBAIC0xMjEsMTQgKzIw
MSwzMyBAQCBjb25zdGV4cHIgaW50IHN0cmNtcENvbnN0RXhwcihjb25zdCBjaGFyKiBhLCBjb25z
dCBjaGFyKiBiKQogICAgIHJldHVybiAqYSA9PSAqYiA/IDAgOiAqYSA8ICpiID8gLTEgOiAxOwog
fQogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVBU0NJSUxpdGVyYWwgYSwg
Q29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBiKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIGJvb2wgbGVzc1RoYW5BU0NJSUNhc2VGb2xkaW5nKGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgY2hhciogbGl0ZXJhbFdpdGhO
b1VwcGVyY2FzZSkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgaWYgKCFsaXRlcmFsV2l0aE5vVXBwZXJjYXNlW2ldKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGF1dG8gY2hhcmFjdGVyID0gdG9BU0NJSUxvd2VyKGNoYXJh
Y3RlcnNbaV0pOworICAgICAgICBpZiAoY2hhcmFjdGVyICE9IGxpdGVyYWxXaXRoTm9VcHBlcmNh
c2VbaV0pCisgICAgICAgICAgICByZXR1cm4gY2hhcmFjdGVyIDwgbGl0ZXJhbFdpdGhOb1VwcGVy
Y2FzZVtpXTsKKyAgICB9CisgICAgcmV0dXJuICFsaXRlcmFsV2l0aE5vVXBwZXJjYXNlW2xlbmd0
aF07Cit9CisKK2lubGluZSBib29sIGxlc3NUaGFuQVNDSUlDYXNlRm9sZGluZyhTdHJpbmdWaWV3
IHN0cmluZywgY29uc3QgY2hhciogbGl0ZXJhbFdpdGhOb1VwcGVyY2FzZSkKIHsKLSAgICByZXR1
cm4gIXN0cmNtcENvbnN0RXhwcihhLmxpdGVyYWwsIGIubGl0ZXJhbCk7CisgICAgaWYgKHN0cmlu
Zy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGxlc3NUaGFuQVNDSUlDYXNlRm9sZGluZyhzdHJp
bmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBsaXRlcmFsV2l0aE5vVXBwZXJjYXNl
KTsKKyAgICByZXR1cm4gbGVzc1RoYW5BU0NJSUNhc2VGb2xkaW5nKHN0cmluZy5jaGFyYWN0ZXJz
MTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBsaXRlcmFsV2l0aE5vVXBwZXJjYXNlKTsKIH0KIAotY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVBU0NJSUxpdGVyYWwgYSwgQ29tcGFyYWJs
ZUFTQ0lJTGl0ZXJhbCBiKQordGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0PiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8c3Vic2V0PiBhLCBD
b21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4gYikKIHsKLSAgICByZXR1cm4gc3Ry
Y21wQ29uc3RFeHByKGEubGl0ZXJhbCwgYi5saXRlcmFsKSA8IDA7CisgICAgcmV0dXJuICFzdHJj
bXBDb25zdEV4cHIoYS5saXRlcmFsLmNoYXJhY3RlcnMoKSwgYi5saXRlcmFsLmNoYXJhY3RlcnMo
KSk7Cit9CisKK3RlbXBsYXRlPEFTQ0lJU3Vic2V0IHN1YnNldD4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8KENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8c3Vic2V0PiBhLCBDb21wYXJhYmxl
QVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4gYikKK3sKKyAgICByZXR1cm4gc3RyY21wQ29uc3RF
eHByKGEubGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGIubGl0ZXJhbC5jaGFyYWN0ZXJzKCkpIDwgMDsK
IH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShDb21wYXJhYmxlU3RyaW5nVmlldyBhLCBDb21w
YXJhYmxlQVNDSUlMaXRlcmFsIGIpCkBAIC0xMzgsMjAgKzIzNyw0NSBAQCBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KENvbXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFibGVBU0NJSUxpdGVyYWwg
YikKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBh
cmFibGVBU0NJSUxpdGVyYWwgYikKIHsKLSAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShhLnN0
cmluZywgYi5saXRlcmFsKSA8IDA7CisgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoYS5zdHJp
bmcsIGIubGl0ZXJhbC5jaGFyYWN0ZXJzKCkpIDwgMDsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShDb21wYXJhYmxlU3RyaW5nVmlldyBhLCBDb21wYXJhYmxlQVNDSUlMaXRlcmFsIGIpCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFibGVM
ZXR0ZXJzTGl0ZXJhbCBiKQogewotICAgIHJldHVybiAhKGEgPT0gYik7CisgICAgcmV0dXJuIGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uV2l0aG91dExlbmd0aChhLnN0cmluZywg
Yi5saXRlcmFsKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVTdHJpbmdW
aWV3IGEsIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBiKQoreworICAgIHJldHVybiBsZXNzVGhh
bkFTQ0lJQ2FzZUZvbGRpbmcoYS5zdHJpbmcsIGIubGl0ZXJhbCk7Cit9CisKK2lubGluZSBib29s
IG9wZXJhdG9yPT0oQ29tcGFyYWJsZVN0cmluZ1ZpZXcgYSwgQ29tcGFyYWJsZUNhc2VGb2xkaW5n
QVNDSUlMaXRlcmFsIGIpCit7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5z
dHJpbmcsIGIubGl0ZXJhbCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJs
ZUFTQ0lJTGl0ZXJhbCBhLCBDb21wYXJhYmxlU3RyaW5nVmlldyBiKQoraW5saW5lIGJvb2wgb3Bl
cmF0b3I8KENvbXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJ
TGl0ZXJhbCBiKQoreworICAgIHJldHVybiBsZXNzVGhhbkFTQ0lJQ2FzZUZvbGRpbmcoYS5zdHJp
bmcsIGIubGl0ZXJhbCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZT4gaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShPdGhlclR5cGUgYSwgQ29tcGFyYWJsZVN0cmluZ1ZpZXcgYikKIHsK
ICAgICByZXR1cm4gYiA9PSBhOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGU+IGlu
bGluZSBib29sIG9wZXJhdG9yIT0oQ29tcGFyYWJsZVN0cmluZ1ZpZXcgYSwgT3RoZXJUeXBlIGIp
Cit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKwogfQogCit1c2luZyBXVEY6OkFTQ0lJU3Vi
c2V0OwogdXNpbmcgV1RGOjpDb21wYXJhYmxlQVNDSUlMaXRlcmFsOwordXNpbmcgV1RGOjpDb21w
YXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsOwordXNpbmcgV1RGOjpDb21wYXJhYmxlQ2FzZUZvbGRp
bmdBU0NJSUxpdGVyYWw7Cit1c2luZyBXVEY6OkNvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbDsKIHVz
aW5nIFdURjo6U29ydGVkQXJyYXlNYXA7Cit1c2luZyBXVEY6OlNvcnRlZEFycmF5U2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAyYjBkOGFi
ZDZjMmI1ZTRmMGVmYjUwZDM3ODJkM2IxOTQ5MGZiMTE1Li4wY2RjNzZhZTNjNWMwZWE4OTAzNmEy
NWNlNTI4YjJkZmVjZjVmODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6
Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDEwICsyOSwx
MyBAQAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxE
YXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0cp
CiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgpAQCAtNjQsMTA4ICs2Nyw5OSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCi17
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxTdHJpbmc+IHsKLSNpZiBVU0UoQ0cpCi0gICAgICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0
aGUgc3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2UgVVRJcyBmb3Igd2hpY2ggQ29yZVNlcnZpY2VzIGhh
cyBhIGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBlLgotICAgICAgICAiaW1hZ2UvdGlmZiJfcywKLSAg
ICAgICAgImltYWdlL2dpZiJfcywKLSAgICAgICAgImltYWdlL2pwZWciX3MsCi0gICAgICAgICJp
bWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MsCi0gICAgICAgICJpbWFnZS9qcDIiX3MsCi0gICAg
ICAgICJpbWFnZS9hcG5nIl9zLAotICAgICAgICAiaW1hZ2UvcG5nIl9zLAotICAgICAgICAiaW1h
Z2UvYm1wIl9zLAorc3RhdGljIFN0cmluZyBub3JtYWxpemVkSW1hZ2VNSU1FVHlwZShjb25zdCBT
dHJpbmcmKTsKIAotICAgICAgICAiaW1hZ2UveC1pY29uIl9zLCAvLyBGYXZpY29ucyBkb24ndCBo
YXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRoZXIuCi0gICAgICAgICJpbWFnZS9w
anBlZyJfcywgLy8gIFdlIG9ubHkgZ2V0IG9uZSBNSU1FIHR5cGUgcGVyIFVUSSwgaGVuY2Ugb3Vy
IG5lZWQgdG8gYWRkIHRoZXNlIG1hbnVhbGx5Ci0jaWYgSEFWRShXRUJQKQotICAgICAgICAiaW1h
Z2Uvd2VicCJfcywKLSNlbmRpZgorLy8gT24gaU9TLCB3ZSBpbmNsdWRlIG1hbGZvcm1lZCBpbWFn
ZSBNSU1FIHR5cGVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbC4KKy8vIFRoZXNlIHdlcmUg
cmVtb3ZlZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NjQ1Mzg+IFJlLWVuYWJsZSBVVEkgY29kZSBp
biBXZWJDb3JlIG5vdyB0aGF0CisvLyBNb2JpbGVDb3JlU2VydmljZXMgZXhpc3RzLiBCdXQgTWFp
bCByZWxpZXMgb24gYXQgbGVhc3QgaW1hZ2UvdGlmIHJlcG9ydGVkIGFzIGJlaW5nCisvLyBzdXBw
b3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90aWZmKS4gVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1h
aWwgYWRkcmVzc2VzOgorLy8gPHJkYXI6Ly9wcm9ibGVtLzc4Nzk1MTA+IE1haWwgc2hvdWxkIHVz
ZSBzdGFuZGFyZCBpbWFnZSBtaW1ldHlwZXMKKy8vIGFuZCB3ZSBmaXggc25pZmZpbmcgc28gdGhh
dCBpdCBjb3JyZWN0cyBpdGVtcyBzdWNoIGFzIGltYWdlL2pwZyAtPiBpbWFnZS9qcGVnLgorY29u
c3RleHByIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBzdXBwb3J0ZWRJbWFnZU1J
TUVUeXBlQXJyYXlbXSA9IHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAvLyBB
ZGQgbWFsZm9ybWVkIGltYWdlIG1pbWV0eXBlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbCBh
bmQgdG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1ldHlwZXMgZnJvbSB0aGUgbmV0Ci0gICAgICAgIC8v
IFRoZXNlIHdlcmUgcmVtb3ZlZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NjQ1Mzg+IFJlLWVuYWJs
ZSBVVEkgY29kZSBpbiBXZWJDb3JlIG5vdyB0aGF0IE1vYmlsZUNvcmVTZXJ2aWNlcyBleGlzdHMK
LSAgICAgICAgLy8gQnV0IE1haWwgcmVsaWVzIG9uIGF0IGxlYXN0IGltYWdlL3RpZiByZXBvcnRl
ZCBhcyBiZWluZyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90aWZmKS4KLSAgICAgICAgLy8g
VGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgotICAgICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNzg3OTUxMD4gTWFpbCBzaG91bGQgdXNlIHN0YW5kYXJkIGltYWdlIG1pbWV0
eXBlcwotICAgICAgICAvLyBhbmQgd2UgZml4IHNuaWZmaW5nIHNvIHRoYXQgaXQgY29ycmVjdHMg
aXRlbXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4gaW1hZ2UvanBlZy4KLQotICAgICAgICAvLyBKUEVH
IChpbWFnZS9qcGVnKQotICAgICAgICAiaW1hZ2UvanBnIl9zLAotICAgICAgICAiaW1hZ2UvanBf
Il9zLAotICAgICAgICAiaW1hZ2UvanBlXyJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL2pwZyJf
cywKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtanBnIl9zLAotICAgICAgICAiaW1hZ2UvcGlwZWci
X3MsCi0gICAgICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciX3MsCi0gICAgICAgICJpbWFn
ZS94LXhiaXRtYXAiX3MsCi0KLSAgICAgICAgLy8gR0lGIChpbWFnZS9naWYpCi0gICAgICAgICJp
bWFnZS9naV8iX3MsCi0KLSAgICAgICAgLy8gUE5HIChpbWFnZS9wbmcpCi0gICAgICAgICJhcHBs
aWNhdGlvbi9wbmciX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LXBuZyJfcywKLQotICAgICAg
ICAvLyBUSUZGIChpbWFnZS90aWZmKQotICAgICAgICAiaW1hZ2UveC10aWYiX3MsCi0gICAgICAg
ICJpbWFnZS90aWYiX3MsCi0gICAgICAgICJpbWFnZS94LXRpZmYiX3MsCi0gICAgICAgICJhcHBs
aWNhdGlvbi90aWYiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LXRpZiJfcywKLSAgICAgICAg
ImFwcGxpY2F0aW9uL3RpZmYiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LXRpZmYiX3MsCi0K
LSAgICAgICAgLy8gQk1QIChpbWFnZS9ibXAsIGltYWdlL3gtYml0bWFwKQotICAgICAgICAiaW1h
Z2UveC1ibXAiX3MsCi0gICAgICAgICJpbWFnZS94LXdpbi1iaXRtYXAiX3MsCi0gICAgICAgICJp
bWFnZS94LXdpbmRvd3MtYm1wIl9zLAotICAgICAgICAiaW1hZ2UvbXMtYm1wIl9zLAotICAgICAg
ICAiaW1hZ2UveC1tcy1ibXAiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi9ibXAiX3MsCi0gICAg
ICAgICJhcHBsaWNhdGlvbi94LWJtcCJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtd2luLWJp
dG1hcCJfcywKKyAgICAiYXBwbGljYXRpb24vYm1wIiwKKyAgICAiYXBwbGljYXRpb24vanBnIiwK
KyAgICAiYXBwbGljYXRpb24vcG5nIiwKKyAgICAiYXBwbGljYXRpb24vdGlmIiwKKyAgICAiYXBw
bGljYXRpb24vdGlmZiIsCisgICAgImFwcGxpY2F0aW9uL3gtYm1wIiwKKyAgICAiYXBwbGljYXRp
b24veC1qcGciLAorICAgICJhcHBsaWNhdGlvbi94LXBuZyIsCisgICAgImFwcGxpY2F0aW9uL3gt
dGlmIiwKKyAgICAiYXBwbGljYXRpb24veC10aWZmIiwKKyAgICAiYXBwbGljYXRpb24veC13aW4t
Yml0bWFwIiwKICNlbmRpZgotI2Vsc2UKLSAgICAgICAgLy8gYXNzdW1lIHRoYXQgYWxsIGltcGxl
bWVudGF0aW9ucyBhdCBsZWFzdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgc3RhbmRhcmQKLSAgICAg
ICAgLy8gaW1hZ2UgdHlwZXM6Ci0gICAgICAgICJpbWFnZS9qcGVnIl9zLAotICAgICAgICAiaW1h
Z2UvcG5nIl9zLAotICAgICAgICAiaW1hZ2UvZ2lmIl9zLAotICAgICAgICAiaW1hZ2UvYm1wIl9z
LAotICAgICAgICAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zLCAvLyBpY28KLSAgICAgICAg
ImltYWdlL3gtaWNvbiJfcywgLy8gaWNvCi0gICAgICAgICJpbWFnZS94LXhiaXRtYXAiX3MsIC8v
IHhibQotI2lmIEVOQUJMRShBUE5HKQotICAgICAgICAiaW1hZ2UvYXBuZyJfcywKKyNpZiBVU0Uo
Q0cpIHx8IEVOQUJMRShBUE5HKQorICAgICJpbWFnZS9hcG5nIiwKICNlbmRpZgogI2lmIFVTRShB
VklGKQotICAgICAgICAiaW1hZ2UvYXZpZiJfcywKKyAgICAiaW1hZ2UvYXZpZiIsCisjZW5kaWYK
KyAgICAiaW1hZ2UvYm1wIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICJpbWFnZS9n
aV8iLAogI2VuZGlmCi0jaWYgVVNFKE9QRU5KUEVHKQotICAgICAgICAiaW1hZ2UvanAyIl9zLAot
ICAgICAgICAiaW1hZ2UvanBlZzIwMDAiX3MsCisgICAgImltYWdlL2dpZiIsCisjaWYgVVNFKENH
KSB8fCBVU0UoT1BFTkpQRUcpCisgICAgImltYWdlL2pwMiIsCiAjZW5kaWYKLSNpZiBVU0UoV0VC
UCkKLSAgICAgICAgImltYWdlL3dlYnAiX3MsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICAiaW1hZ2UvanBfIiwKKyAgICAiaW1hZ2UvanBlXyIsCiAjZW5kaWYKKyAgICAiaW1hZ2UvanBl
ZyIsCisjaWYgIVVTRShDRykgJiYgVVNFKE9QRU5KUEVHKQorICAgICJpbWFnZS9qcGVnMjAwMCIs
CisjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICJpbWFnZS9tcy1ibXAiLAor
ICAgICJpbWFnZS9waXBlZyIsCiAjZW5kaWYKLSAgICB9OwotCiAjaWYgVVNFKENHKQotI2lmbmRl
ZiBOREVCVUcKLSAgICAvLyBFc251cmUgc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKSBpcyBpbiBz
eW5jIHdpdGggZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXMoKS4KLSAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBpbWFnZVR5cGUgOiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcygp
KSB7Ci0gICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVGb3JJbWFnZVR5cGUoaW1h
Z2VUeXBlKTsKLSAgICAgICAgICAgIEFTU0VSVF9JTVBMSUVTKCFtaW1lVHlwZS5pc0VtcHR5KCks
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLmdldCgpLmNvbnRhaW5zKG1pbWVUeXBlKSk7Ci0gICAg
ICAgIH0KLSAgICB9KTsKKyAgICAiaW1hZ2UvcGpwZWciLAorI2VuZGlmCisgICAgImltYWdlL3Bu
ZyIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAiaW1hZ2UvdGlmIiwKKyNlbmRpZgor
I2lmIFVTRShDRykKKyAgICAiaW1hZ2UvdGlmZiIsCisjZW5kaWYKKyAgICAiaW1hZ2Uvdm5kLm1p
Y3Jvc29mdC5pY29uIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICJpbWFnZS92bmQu
c3dpdGZ2aWV3LWpwZWciLAogI2VuZGlmCisjaWYgKFVTRShDRykgJiYgSEFWRShXRUJQKSkgfHwg
KCFVU0UoQ0cpICYmIFVTRShXRUJQKSkKKyAgICAiaW1hZ2Uvd2VicCIsCiAjZW5kaWYKLSAgICBy
ZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICAiaW1hZ2UveC1ibXAiLAorI2VuZGlmCisgICAgImltYWdlL3gtaWNvbiIsCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAiaW1hZ2UveC1tcy1ibXAiLAorICAgICJpbWFnZS94LXRp
ZiIsCisgICAgImltYWdlL3gtdGlmZiIsCisgICAgImltYWdlL3gtd2luLWJpdG1hcCIsCisgICAg
ImltYWdlL3gtd2luZG93cy1ibXAiLAorI2VuZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
fHwgIVVTRShDRykKKyAgICAiaW1hZ2UveC14Yml0bWFwIiwKKyNlbmRpZgorfTsKKwordGVtcGxh
dGU8QVNDSUlTdWJzZXQgc3Vic2V0LCB1bnNpZ25lZCBzaXplPiBzdGF0aWMgRml4ZWRWZWN0b3I8
Y29uc3QgY2hhcio+IG1ha2VGaXhlZFZlY3Rvcihjb25zdCBDb21wYXJhYmxlQVNDSUlTdWJzZXRM
aXRlcmFsPHN1YnNldD4gKCZhcnJheSlbc2l6ZV0pCit7CisgICAgRml4ZWRWZWN0b3I8Y29uc3Qg
Y2hhcio+IHJlc3VsdChzdGQ6OnNpemUoYXJyYXkpKTsKKyAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6
OmJlZ2luKGFycmF5KSwgc3RkOjplbmQoYXJyYXkpLCByZXN1bHQuYmVnaW4oKSwgW10gKGF1dG8g
bGl0ZXJhbCkgeworICAgICAgICByZXR1cm4gbGl0ZXJhbC5saXRlcmFsOworICAgIH0pOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0ZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJl
Z2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCit7CisgICAgcmV0dXJuIG1ha2VGaXhl
ZFZlY3RvcihzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXkpOwogfQogCiBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6YWRkaXRpb25h
bFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKQEAgLTE3NCwyOSArMTY4LDI1IEBAIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjphZGRp
dGlvbmFsU3VwcG9ydGVkCiAgICAgcmV0dXJuIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlczsKIH0KIAotc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCkKLXsKLSAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+
IHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3Ry
aW5nPiB7Ci0gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3NjcmlwdGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCi0gICAgICAgICJ0ZXh0L2phdmFz
Y3JpcHQiX3MsCi0gICAgICAgICJ0ZXh0L2VjbWFzY3JpcHQiX3MsCi0gICAgICAgICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Il9zLAotICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCJfcywK
LSAgICAgICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcywKLSAgICAgICAgImFwcGxpY2F0
aW9uL3gtZWNtYXNjcmlwdCJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMCJfcywKLSAg
ICAgICAgInRleHQvamF2YXNjcmlwdDEuMSJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEu
MiJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyJfcywKLSAgICAgICAgInRleHQvamF2
YXNjcmlwdDEuNCJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNSJfcywKLSAgICAgICAg
InRleHQvanNjcmlwdCJfcywKLSAgICAgICAgInRleHQvbGl2ZXNjcmlwdCJfcywKLSAgICAgICAg
InRleHQveC1qYXZhc2NyaXB0Il9zLAotICAgICAgICAidGV4dC94LWVjbWFzY3JpcHQiX3MsCi0g
ICAgfTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlczsKLX0KKy8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2phdmFz
Y3JpcHQtbWltZS10eXBlCitjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHN1cHBv
cnRlZEphdmFTY3JpcHRNSU1FVHlwZUFycmF5W10gPSB7CisgICAgImFwcGxpY2F0aW9uL2VjbWFz
Y3JpcHQiLAorICAgICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKKyAgICAiYXBwbGljYXRpb24v
eC1lY21hc2NyaXB0IiwKKyAgICAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiwKKyAgICAidGV4
dC9lY21hc2NyaXB0IiwKKyAgICAidGV4dC9qYXZhc2NyaXB0IiwKKyAgICAidGV4dC9qYXZhc2Ny
aXB0MS4wIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4xIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0
MS4yIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4zIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS40
IiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS41IiwKKyAgICAidGV4dC9qc2NyaXB0IiwKKyAgICAi
dGV4dC9saXZlc2NyaXB0IiwKKyAgICAidGV4dC94LWVjbWFzY3JpcHQiLAorICAgICJ0ZXh0L3gt
amF2YXNjcmlwdCIsCit9OwogCiBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKQogewpA
QCAtMjIzLDcgKzIxMyw4IEBAIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1JCiAgICAgICAgIC8vIE5v
dGU6IEFkZGluZyBhIG5ldyB0eXBlIGhlcmUgd2lsbCBwcm9iYWJseSByZW5kZXIgaXQgYXMgSFRN
TC4KICAgICAgICAgLy8gVGhpcyBjYW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1
bG5lcmFiaWxpdGllcy4KICAgICAgICAgfTsKLSAgICAgICAgc3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMuYWRkKHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKS5iZWdpbigpLCBzdXBwb3J0
ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCkuZW5kKCkpOworICAgICAgICBmb3IgKGF1dG8mIHR5cGUg
OiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVBcnJheSkKKyAgICAgICAgICAgIHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzLmFkZCh0eXBlLmxpdGVyYWwpOwogI2lmIEVOQUJMRShXRUJfQVJD
SElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgICAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJL
bm93bkFyY2hpdmVNSU1FVHlwZXMoc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMpOwogI2VuZGlm
CkBAIC0yNDQsMTIzICsyMzUsNDAgQEAgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE1lZGkKICAgICByZXR1
cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CiB9CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMo
KQorY29uc3RleHByIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBwZGZNSU1FVHlwZUFycmF5W10g
PSB7CisgICAgImFwcGxpY2F0aW9uL3BkZiIsCisgICAgInRleHQvcGRmIiwKK307CisKK0ZpeGVk
VmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPj4gcGRmTUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4g
ewotICAgICAgICAiYXBwbGljYXRpb24vcGRmIl9zLAotICAgICAgICAidGV4dC9wZGYiX3MsCi0g
ICAgfTsKLSAgICByZXR1cm4gcGRmTUlNRVR5cGVzOwotfQotCi1jb25zdCBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0
ZWRUZXh0TUlNRVR5cGVzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBl
cyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKLSAgICAgICAgInRleHQvY2FsZW5k
YXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtY2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtdmNh
bGVuZGFyIl9zLAotICAgICAgICAidGV4dC92Y2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3Zj
YXJkIl9zLAotICAgICAgICAidGV4dC94LXZjYXJkIl9zLAotICAgICAgICAidGV4dC9kaXJlY3Rv
cnkiX3MsCi0gICAgICAgICJ0ZXh0L2xkaWYiX3MsCi0gICAgICAgICJ0ZXh0L3FpZiJfcywKLSAg
ICAgICAgInRleHQveC1xaWYiX3MsCi0gICAgICAgICJ0ZXh0L3gtY3N2Il9zLAotICAgICAgICAi
dGV4dC94LXZjZiJfcywKKyAgICByZXR1cm4gbWFrZUZpeGVkVmVjdG9yKHBkZk1JTUVUeXBlQXJy
YXkpOworfQorCitjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHVuc3VwcG9ydGVk
VGV4dE1JTUVUeXBlQXJyYXlbXSA9IHsKKyAgICAidGV4dC9jYWxlbmRhciIsCisgICAgInRleHQv
ZGlyZWN0b3J5IiwKKyAgICAidGV4dC9sZGlmIiwKKyAgICAidGV4dC9xaWYiLAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICAidGV4dC9ydGYiX3MsCi0jZWxzZQotICAgICAgICAi
dGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2NyaXB0b3IiX3MsCisgICAgInRleHQvcnRmIiwKICNl
bmRpZgotICAgIH07Ci0gICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKLX0KLQot
Y29uc3Qgc3RkOjppbml0aWFsaXplcl9saXN0PFR5cGVFeHRlbnNpb25QYWlyPiYgY29tbW9uTWVk
aWFUeXBlcygpCi17Ci0gICAgLy8gQSB0YWJsZSBvZiBjb21tb24gbWVkaWEgTUlNRSB0eXBlcyBh
bmQgZmlsZSBleHRlbnNpb25zIHVzZWQgd2hlbiBhIHBsYXRmb3JtJ3MKLSAgICAvLyBzcGVjaWZp
YyBNSU1FIHR5cGUgbG9va3VwIGRvZXNuJ3QgaGF2ZSBhIG1hdGNoIGZvciBhIG1lZGlhIGZpbGUg
ZXh0ZW5zaW9uLgotICAgIHN0YXRpYyBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VHlwZUV4dGVuc2lv
blBhaXI+IGNvbW1vbk1lZGlhVHlwZXMgPSB7Ci0gICAgICAgIC8vIE9nZwotICAgICAgICB7ICJh
cHBsaWNhdGlvbi9vZ2ciX3MsICJvZ3giX3MgfSwKLSAgICAgICAgeyAiYXVkaW8vb2dnIl9zLCAi
b2dnIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvL29nZyJfcywgIm9nYSJfcyB9LAotICAgICAgICB7
ICJ2aWRlby9vZ2ciX3MsICJvZ3YiX3MgfSwKLQotICAgICAgICAvLyBBbm5vZGV4Ci0gICAgICAg
IHsgImFwcGxpY2F0aW9uL2Fubm9kZXgiX3MsICJhbngiX3MgfSwKLSAgICAgICAgeyAiYXVkaW8v
YW5ub2RleCJfcywgImF4YSJfcyB9LAotICAgICAgICB7ICJ2aWRlby9hbm5vZGV4Il9zLCAiYXh2
Il9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3NwZWV4Il9zLCAic3B4Il9zIH0sCi0KLSAgICAgICAg
Ly8gV2ViTQotICAgICAgICB7ICJ2aWRlby93ZWJtIl9zLCAid2VibSJfcyB9LAotICAgICAgICB7
ICJhdWRpby93ZWJtIl9zLCAid2VibSJfcyB9LAotCi0gICAgICAgIC8vIE1QRUcKLSAgICAgICAg
eyAiYXVkaW8vbXBlZyJfcywgIm0xYSJfcyB9LAotICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAi
bTJhIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvL21wZWciX3MsICJtMXMiX3MgfSwKLSAgICAgICAg
eyAiYXVkaW8vbXBlZyJfcywgIm1wYSJfcyB9LAotICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAi
bXBnIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWciX3MsICJtMTUiX3MgfSwKLSAgICAgICAg
eyAidmlkZW8vbXBlZyJfcywgIm0xcyJfcyB9LAotICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAi
bTF2Il9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWciX3MsICJtNzUiX3MgfSwKLSAgICAgICAg
eyAidmlkZW8vbXBlZyJfcywgIm1wYSJfcyB9LAotICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAi
bXBlZyJfcyB9LAotICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBtIl9zIH0sCi0gICAgICAg
IHsgInZpZGVvL21wZWciX3MsICJtcHYiX3MgfSwKLQotICAgICAgICAvLyBNUEVHIHBsYXlsaXN0
Ci0gICAgICAgIHsgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIl9zLCAibTN1OCJfcyB9
LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9tcGVndXJsIl9zLCAibTN1OCJfcyB9LAotICAgICAg
ICB7ICJhcHBsaWNhdGlvbi94LW1wZWd1cmwiX3MsICJtM3U4Il9zIH0sCi0gICAgICAgIHsgImF1
ZGlvL21wZWd1cmwiX3MsICJtM3VybCJfcyB9LAotICAgICAgICB7ICJhdWRpby94LW1wZWd1cmwi
X3MsICJtM3VybCJfcyB9LAotICAgICAgICB7ICJhdWRpby9tcGVndXJsIl9zLCAibTN1Il9zIH0s
Ci0gICAgICAgIHsgImF1ZGlvL3gtbXBlZ3VybCJfcywgIm0zdSJfcyB9LAotCi0gICAgICAgIC8v
IE1QRUctNAotICAgICAgICB7ICJ2aWRlby94LW00diJfcywgIm00diJfcyB9LAotICAgICAgICB7
ICJhdWRpby94LW00YSJfcywgIm00YSJfcyB9LAotICAgICAgICB7ICJhdWRpby94LW00YiJfcywg
Im00YiJfcyB9LAotICAgICAgICB7ICJhdWRpby94LW00cCJfcywgIm00cCJfcyB9LAotICAgICAg
ICB7ICJhdWRpby9tcDQiX3MsICJtNGEiX3MgfSwKLQotICAgICAgICAvLyBNUDMKLSAgICAgICAg
eyAiYXVkaW8vbXAzIl9zLCAibXAzIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3gtbXAzIl9zLCAi
bXAzIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3gtbXBlZyJfcywgIm1wMyJfcyB9LAotCi0gICAg
ICAgIC8vIE1QRUctMgotICAgICAgICB7ICJ2aWRlby94LW1wZWcyIl9zLCAibXAyIl9zIH0sCi0g
ICAgICAgIHsgInZpZGVvL21wZWcyIl9zLCAidm9iIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL21w
ZWcyIl9zLCAibW9kIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL20ydHMiX3MsICJtMnRzIl9zIH0s
Ci0gICAgICAgIHsgInZpZGVvL3gtbTJ0cyJfcywgIm0ydCJfcyB9LAotICAgICAgICB7ICJ2aWRl
by94LW0ydHMiX3MsICJ0cyJfcyB9LAotCi0gICAgICAgIC8vIDNHUC8zR1AyCi0gICAgICAgIHsg
ImF1ZGlvLzNncHAiX3MsICIzZ3BwIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvLzNncHAyIl9zLCAi
M2cyIl9zIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL3gtbXBlZyJfcywgImFtYyJfcyB9LAot
Ci0gICAgICAgIC8vIEFBQwotICAgICAgICB7ICJhdWRpby9hYWMiX3MsICJhYWMiX3MgfSwKLSAg
ICAgICAgeyAiYXVkaW8vYWFjIl9zLCAiYWR0cyJfcyB9LAotICAgICAgICB7ICJhdWRpby94LWFh
YyJfcywgIm00ciJfcyB9LAotCi0gICAgICAgIC8vIENvcmVBdWRpbyBGaWxlCi0gICAgICAgIHsg
ImF1ZGlvL3gtY2FmIl9zLCAiY2FmIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3gtZ3NtIl9zLCAi
Z3NtIl9zIH0sCi0KLSAgICAgICAgLy8gQURQQ00KLSAgICAgICAgeyAiYXVkaW8veC13YXYiX3Ms
ICJ3YXYiX3MgfSwKLSAgICAgICAgeyAiYXVkaW8vdm5kLndhdmUiX3MsICJ3YXYiX3MgfSwKLSAg
ICB9OwotICAgIHJldHVybiBjb21tb25NZWRpYVR5cGVzOworICAgICJ0ZXh0L3ZjYWxlbmRhciIs
CisgICAgInRleHQvdmNhcmQiLAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgInRleHQv
dm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yIiwKKyNlbmRpZgorICAgICJ0ZXh0L3gtY2FsZW5k
YXIiLAorICAgICJ0ZXh0L3gtY3N2IiwKKyAgICAidGV4dC94LXFpZiIsCisgICAgInRleHQveC12
Y2FsZW5kYXIiLAorICAgICJ0ZXh0L3gtdmNhcmQiLAorICAgICJ0ZXh0L3gtdmNmIiwKK307CisK
K0ZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMoKQoreworICAgIHJldHVybiBtYWtlRml4ZWRWZWN0b3IodW5zdXBwb3J0ZWRU
ZXh0TUlNRVR5cGVBcnJheSk7CiB9CiAKIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGNvbW1vbk1pbWVUeXBlc01h
cCgpCkBAIC0zNjgsNyArMjc2LDg4IEBAIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgVmVj
dG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGNvbW1vbk1pCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxTdHJpbmc+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtaW1lVHlw
ZXNNYXAgPSBbXSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiwgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IGNv
bW1vbk1lZGlhVHlwZXMoKSkgeworICAgICAgICAvLyBBIHRhYmxlIG9mIGNvbW1vbiBtZWRpYSBN
SU1FIHR5cGVzIGFuZCBmaWxlIGV4dGVuc2lvbnMgdXNlZCB3aGVuIGEgcGxhdGZvcm0ncworICAg
ICAgICAvLyBzcGVjaWZpYyBNSU1FIHR5cGUgbG9va3VwIGRvZXNuJ3QgaGF2ZSBhIG1hdGNoIGZv
ciBhIG1lZGlhIGZpbGUgZXh0ZW5zaW9uLgorICAgICAgICBzdGF0aWMgY29uc3RleHByIFR5cGVF
eHRlbnNpb25QYWlyIGNvbW1vbk1lZGlhVHlwZXNbXSA9IHsKKyAgICAgICAgICAgIC8vIE9nZwor
ICAgICAgICAgICAgeyAiYXBwbGljYXRpb24vb2dnIl9zLCAib2d4Il9zIH0sCisgICAgICAgICAg
ICB7ICJhdWRpby9vZ2ciX3MsICJvZ2ciX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL29nZyJf
cywgIm9nYSJfcyB9LAorICAgICAgICAgICAgeyAidmlkZW8vb2dnIl9zLCAib2d2Il9zIH0sCisK
KyAgICAgICAgICAgIC8vIEFubm9kZXgKKyAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL2Fubm9k
ZXgiX3MsICJhbngiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL2Fubm9kZXgiX3MsICJheGEi
X3MgfSwKKyAgICAgICAgICAgIHsgInZpZGVvL2Fubm9kZXgiX3MsICJheHYiX3MgfSwKKyAgICAg
ICAgICAgIHsgImF1ZGlvL3NwZWV4Il9zLCAic3B4Il9zIH0sCisKKyAgICAgICAgICAgIC8vIFdl
Yk0KKyAgICAgICAgICAgIHsgInZpZGVvL3dlYm0iX3MsICJ3ZWJtIl9zIH0sCisgICAgICAgICAg
ICB7ICJhdWRpby93ZWJtIl9zLCAid2VibSJfcyB9LAorCisgICAgICAgICAgICAvLyBNUEVHCisg
ICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAibTFhIl9zIH0sCisgICAgICAgICAgICB7ICJh
dWRpby9tcGVnIl9zLCAibTJhIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAi
bTFzIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAibXBhIl9zIH0sCisgICAg
ICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBnIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRl
by9tcGVnIl9zLCAibTE1Il9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTFz
Il9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTF2Il9zIH0sCisgICAgICAg
ICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTc1Il9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9t
cGVnIl9zLCAibXBhIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBlZyJf
cyB9LAorICAgICAgICAgICAgeyAidmlkZW8vbXBlZyJfcywgIm1wbSJfcyB9LAorICAgICAgICAg
ICAgeyAidmlkZW8vbXBlZyJfcywgIm1wdiJfcyB9LAorCisgICAgICAgICAgICAvLyBNUEVHIHBs
YXlsaXN0CisgICAgICAgICAgICB7ICJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCJfcywg
Im0zdTgiX3MgfSwKKyAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL21wZWd1cmwiX3MsICJtM3U4
Il9zIH0sCisgICAgICAgICAgICB7ICJhcHBsaWNhdGlvbi94LW1wZWd1cmwiX3MsICJtM3U4Il9z
IH0sCisgICAgICAgICAgICB7ICJhdWRpby9tcGVndXJsIl9zLCAibTN1cmwiX3MgfSwKKyAgICAg
ICAgICAgIHsgImF1ZGlvL3gtbXBlZ3VybCJfcywgIm0zdXJsIl9zIH0sCisgICAgICAgICAgICB7
ICJhdWRpby9tcGVndXJsIl9zLCAibTN1Il9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby94LW1w
ZWd1cmwiX3MsICJtM3UiX3MgfSwKKworICAgICAgICAgICAgLy8gTVBFRy00CisgICAgICAgICAg
ICB7ICJ2aWRlby94LW00diJfcywgIm00diJfcyB9LAorICAgICAgICAgICAgeyAiYXVkaW8veC1t
NGEiX3MsICJtNGEiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL3gtbTRiIl9zLCAibTRiIl9z
IH0sCisgICAgICAgICAgICB7ICJhdWRpby94LW00cCJfcywgIm00cCJfcyB9LAorICAgICAgICAg
ICAgeyAiYXVkaW8vbXA0Il9zLCAibTRhIl9zIH0sCisKKyAgICAgICAgICAgIC8vIE1QMworICAg
ICAgICAgICAgeyAiYXVkaW8vbXAzIl9zLCAibXAzIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRp
by94LW1wMyJfcywgIm1wMyJfcyB9LAorICAgICAgICAgICAgeyAiYXVkaW8veC1tcGVnIl9zLCAi
bXAzIl9zIH0sCisKKyAgICAgICAgICAgIC8vIE1QRUctMgorICAgICAgICAgICAgeyAidmlkZW8v
eC1tcGVnMiJfcywgIm1wMiJfcyB9LAorICAgICAgICAgICAgeyAidmlkZW8vbXBlZzIiX3MsICJ2
b2IiX3MgfSwKKyAgICAgICAgICAgIHsgInZpZGVvL21wZWcyIl9zLCAibW9kIl9zIH0sCisgICAg
ICAgICAgICB7ICJ2aWRlby9tMnRzIl9zLCAibTJ0cyJfcyB9LAorICAgICAgICAgICAgeyAidmlk
ZW8veC1tMnRzIl9zLCAibTJ0Il9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby94LW0ydHMiX3Ms
ICJ0cyJfcyB9LAorCisgICAgICAgICAgICAvLyAzR1AvM0dQMgorICAgICAgICAgICAgeyAiYXVk
aW8vM2dwcCJfcywgIjNncHAiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvLzNncHAyIl9zLCAi
M2cyIl9zIH0sCisgICAgICAgICAgICB7ICJhcHBsaWNhdGlvbi94LW1wZWciX3MsICJhbWMiX3Mg
fSwKKworICAgICAgICAgICAgLy8gQUFDCisgICAgICAgICAgICB7ICJhdWRpby9hYWMiX3MsICJh
YWMiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL2FhYyJfcywgImFkdHMiX3MgfSwKKyAgICAg
ICAgICAgIHsgImF1ZGlvL3gtYWFjIl9zLCAibTRyIl9zIH0sCisKKyAgICAgICAgICAgIC8vIENv
cmVBdWRpbyBGaWxlCisgICAgICAgICAgICB7ICJhdWRpby94LWNhZiJfcywgImNhZiJfcyB9LAor
ICAgICAgICAgICAgeyAiYXVkaW8veC1nc20iX3MsICJnc20iX3MgfSwKKworICAgICAgICAgICAg
Ly8gQURQQ00KKyAgICAgICAgICAgIHsgImF1ZGlvL3gtd2F2Il9zLCAid2F2Il9zIH0sCisgICAg
ICAgICAgICB7ICJhdWRpby92bmQud2F2ZSJfcywgIndhdiJfcyB9LAorICAgICAgICB9OworICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb21tb25NZWRpYVR5cGVzKSB7CiAgICAgICAgICAgICBB
U0NJSUxpdGVyYWwgdHlwZSA9IHBhaXIudHlwZTsKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBl
eHRlbnNpb24gPSBwYWlyLmV4dGVuc2lvbjsKICAgICAgICAgICAgIG1hcC5lbnN1cmUoZXh0ZW5z
aW9uLCBbdHlwZSwgZXh0ZW5zaW9uXSB7CkBAIC00MTgsOCArNDA3LDIwIEBAIGJvb2wgTUlNRVR5
cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIFN0cmluZyBub3JtYWxpemVkTUlNRVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5Ojpub3Jt
YWxpemVkTUlNRVR5cGUobWltZVR5cGUpOwotICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcygpLmNvbnRhaW5zKG5vcm1hbGl6ZWRNSU1FVHlwZSkgfHwgYWRkaXRpb25hbFN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMobm9ybWFsaXplZE1JTUVUeXBlKTsKKyAgICBzdGF0
aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVTZXQgeyBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXkgfTsKKyNpZiBVU0UoQ0cpICYmIEFTU0VSVF9FTkFC
TEVECisgICAgLy8gRXNudXJlIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVBcnJheSBtYXRjaGVzIGRl
ZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuCisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CisgICAgICAgIGZvciAo
YXV0byYgaW1hZ2VUeXBlIDogZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXMoKSkgeworICAgICAg
ICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VUeXBlKGltYWdlVHlwZSk7Cisg
ICAgICAgICAgICBBU1NFUlRfSU1QTElFUyghbWltZVR5cGUuaXNFbXB0eSgpLCBzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlU2V0LmNvbnRhaW5zKG1pbWVUeXBlKSk7CisgICAgICAgIH0KKyAgICB9KTsK
KyNlbmRpZgorICAgIGlmIChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlU2V0LmNvbnRhaW5zKG1pbWVU
eXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGFkZGl0aW9uYWxTdXBwb3J0
ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG5vcm1hbGl6ZWRJbWFnZU1JTUVUeXBlKG1pbWVU
eXBlKSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVZpZGVv
T3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNDg2LDE4ICs0ODcsOCBA
QCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29k
aW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cAogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAg
aWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFpc01haW5UaHJlYWQoKSkgewotICAgICAgICBib29sIGlzU3VwcG9ydGVkID0gZmFsc2U7Ci0g
ICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmaXNTdXBwb3J0ZWQsIG1pbWVUeXBlID0g
bWltZVR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgICAgIGlzU3VwcG9ydGVkID0gaXNT
dXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpOwotICAgICAgICB9KTsKLSAgICAg
ICAgcmV0dXJuIGlzU3VwcG9ydGVkOwotICAgIH0KLQotICAgIHJldHVybiBzdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOworICAgIHN0YXRpYyBjb25zdGV4
cHIgU29ydGVkQXJyYXlTZXQgc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyB7IHN1cHBvcnRl
ZEphdmFTY3JpcHRNSU1FVHlwZUFycmF5IH07CisgICAgcmV0dXJuIHN1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZXMuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkU3R5bGVTaGVldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CkBAIC01NzcsOSArNTY4LDggQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZFRl
eHRUcmFja01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIGJvb2wgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogewotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUp
OworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgdW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzIHsgdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVBcnJheSB9OworICAgIHJldHVybiB1bnN1
cHBvcnRlZFRleHRNSU1FVHlwZXMuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVU
eXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC02
NDEsMTQgKzYzMSwxMyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQ
REZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIGlmIChtaW1lVHlwZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcGRmTUlNRVR5cGVz
KCkuY29udGFpbnMobWltZVR5cGUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlT
ZXQgc2V0IHsgcGRmTUlNRVR5cGVBcnJheSB9OworICAgIHJldHVybiBzZXQuY29udGFpbnMobWlt
ZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzUG9zdFNjcmlwdE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIG1pbWVUeXBlID09ICJhcHBs
aWNhdGlvbi9wb3N0c2NyaXB0IjsKKyAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7CiB9CiAKIGJvb2wgTUlN
RVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQpAQCAtNjgxLDEwMyArNjcwLDg0IEBAIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVU
eXBlKCkKICAgICByZXR1cm4gZGVmYXVsdE1JTUVUeXBlOwogfQogCi1jb25zdCBIYXNoU2V0PFN0
cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVt
UHJldmlld01JTUVUeXBlcygpCitjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHN5
c3RlbVByZXZpZXdNSU1FVHlwZUFycmF5W10gPSB7CisgICAgIm1vZGVsL3VzZCIsIC8vIFVub2Zm
aWNpYWwsIGJ1dCBzdXBwb3J0ZWQgYmVjYXVzZSB3ZSBkb2N1bWVudGVkIHRoaXMuCisgICAgIm1v
ZGVsL3ZuZC5waXhhci51c2QiLCAvLyBVbm9mZmljaWFsLCBidXQgc3VwcG9ydGVkIGJlY2F1c2Ug
d2UgZG9jdW1lbnRlZCB0aGlzLgorICAgICJtb2RlbC92bmQucmVhbGl0eSIsCisgICAgIm1vZGVs
L3ZuZC51c2R6K3ppcCIsIC8vIFRoZSBvZmZpY2lhbCB0eXBlOiBodHRwczovL3d3dy5pYW5hLm9y
Zy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9tb2RlbC92bmQudXNkeit6aXAKK307CisKK0ZpeGVk
VmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5
cGVzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN5c3RlbVByZXZpZXdNSU1FVHlwZXMgPSBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgIC8vIFRoZSBvZmZpY2lhbCB0eXBlOiBodHRw
czovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9tb2RlbC92bmQudXNkeit6
aXAKLSAgICAgICAgIm1vZGVsL3ZuZC51c2R6K3ppcCJfcywKLSAgICAgICAgLy8gVW5vZmZpY2lh
bCwgYnV0IHN1cHBvcnRlZCBiZWNhdXNlIHdlIGRvY3VtZW50ZWQgdGhlbS4KLSAgICAgICAgIm1v
ZGVsL3VzZCJfcywKLSAgICAgICAgIm1vZGVsL3ZuZC5waXhhci51c2QiX3MsCi0gICAgICAgIC8v
IFJlYWxpdHkgZmlsZXMuCi0gICAgICAgICJtb2RlbC92bmQucmVhbGl0eSJfcywKLSAgICB9Owot
ICAgIHJldHVybiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzOworICAgIHJldHVybiBtYWtlRml4ZWRW
ZWN0b3Ioc3lzdGVtUHJldmlld01JTUVUeXBlQXJyYXkpOwogfQogCiBib29sIE1JTUVUeXBlUmVn
aXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7
Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc3lzdGVtUHJldmlld01JTUVUeXBlU2V0
IHsgc3lzdGVtUHJldmlld01JTUVUeXBlQXJyYXkgfTsKKyAgICByZXR1cm4gc3lzdGVtUHJldmll
d01JTUVUeXBlU2V0LmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotI2lmICFVU0UoQ1VSTCkKLQot
Ly8gRklYTUU6IE5vdCBzdXJlIHdoeSBpdCBtYWtlcyBzZW5zZSB0byBoYXZlIGEgY3Jvc3MtcGxh
dGZvcm0gZnVuY3Rpb24gd2hlbiBvbmx5IENVUkwgaGFzIHRoZSBjb25jZXB0Ci0vLyBvZiBhICJu
b3JtYWxpemVkIiBNSU1FIHR5cGUuCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bm9ybWFsaXpl
ZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisvLyBGSVhNRTogTm90IGdyZWF0IHRo
YXQgQ1VSTCBuZWVkcyB0aGlzIGNvbmNlcHQ7IG90aGVyIHBsYXRmb3JtcyBkbyBub3QuCitzdGF0
aWMgU3RyaW5nIG5vcm1hbGl6ZWRJbWFnZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiB7CisjaWYgVVNFKENVUkwpCiAgICAgcmV0dXJuIG1pbWVUeXBlOwotfQotCiAjZWxzZQotCi1T
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gbWltZVR5cGVBc3NvY2lhdGlvbk1h
cCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OnBh
aXI8QVNDSUlMaXRlcmFsLCBBU0NJSUxpdGVyYWw+IG1pbWVUeXBlQXNzb2NpYXRpb25zW10gPSB7
Ci0gICAgICAgICAgICB7ICJpbWFnZS94LW1zLWJtcCJfcywgImltYWdlL2JtcCJfcyB9LAotICAg
ICAgICAgICAgeyAiaW1hZ2UveC13aW5kb3dzLWJtcCJfcywgImltYWdlL2JtcCJfcyB9LAotICAg
ICAgICAgICAgeyAiaW1hZ2UveC1ibXAiX3MsICJpbWFnZS9ibXAiX3MgfSwKLSAgICAgICAgICAg
IHsgImltYWdlL3gtYml0bWFwIl9zLCAiaW1hZ2UvYm1wIl9zIH0sCi0gICAgICAgICAgICB7ICJp
bWFnZS94LW1zLWJpdG1hcCJfcywgImltYWdlL2JtcCJfcyB9LAotICAgICAgICAgICAgeyAiaW1h
Z2UvanBnIl9zLCAiaW1hZ2UvanBlZyJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UvcGpwZWci
X3MsICJpbWFnZS9qcGVnIl9zIH0sCi0gICAgICAgICAgICB7ICJpbWFnZS94LXBuZyJfcywgImlt
YWdlL3BuZyJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2Uvdm5kLnJpbS5wbmciX3MsICJpbWFn
ZS9wbmciX3MgfSwKLSAgICAgICAgICAgIHsgImltYWdlL2ljbyJfcywgImltYWdlL3ZuZC5taWNy
b3NvZnQuaWNvbiJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UvaWNvbiJfcywgImltYWdlL3Zu
ZC5taWNyb3NvZnQuaWNvbiJfcyB9LAotICAgICAgICAgICAgeyAidGV4dC9pY28iX3MsICJpbWFn
ZS92bmQubWljcm9zb2Z0Lmljb24iX3MgfSwKLSAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL2lj
byJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcyB9LAotICAgICAgICAgICAgeyAiaW1h
Z2UveC1pY29uIl9zLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCi0gICAgICAgICAg
ICB7ICJhdWRpby92bmQucWNlbHAiX3MsICJhdWRpby9xY2VscCJfcyB9LAotICAgICAgICAgICAg
eyAiYXVkaW8vcWNwIl9zLCAiYXVkaW8vcWNlbHAiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlv
L3ZuZC5xY3AiX3MsICJhdWRpby9xY2VscCJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vd2F2
Il9zLCAiYXVkaW8veC13YXYiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3ZuZC53YXZlIl9z
LCAiYXVkaW8veC13YXYiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL21pZCJfcywgImF1ZGlv
L21pZGkiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3NwLW1pZGkiX3MsICJhdWRpby9taWRp
Il9zIH0sCi0gICAgICAgICAgICB7ICJhdWRpby94LW1pZCJfcywgImF1ZGlvL21pZGkiX3MgfSwK
LSAgICAgICAgICAgIHsgImF1ZGlvL3gtbWlkaSJfcywgImF1ZGlvL21pZGkiX3MgfSwKLSAgICAg
ICAgICAgIHsgImF1ZGlvL3gtbXBlZyJfcywgImF1ZGlvL21wZWciX3MgfSwKLSAgICAgICAgICAg
IHsgImF1ZGlvL21wMyJfcywgImF1ZGlvL21wZWciX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlv
L3gtbXAzIl9zLCAiYXVkaW8vbXBlZyJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vbXBlZzMi
X3MsICJhdWRpby9tcGVnIl9zIH0sCi0gICAgICAgICAgICB7ICJhdWRpby94LW1wZWczIl9zLCAi
YXVkaW8vbXBlZyJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vbXBnMyJfcywgImF1ZGlvL21w
ZWciX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL21wZyJfcywgImF1ZGlvL21wZWciX3MgfSwK
LSAgICAgICAgICAgIHsgImF1ZGlvL3gtbXBnIl9zLCAiYXVkaW8vbXBlZyJfcyB9LAotICAgICAg
ICAgICAgeyAiYXVkaW8vbTRhIl9zLCAiYXVkaW8vbXA0Il9zIH0sCi0gICAgICAgICAgICB7ICJh
dWRpby94LW00YSJfcywgImF1ZGlvL21wNCJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8veC1t
cDQiX3MsICJhdWRpby9tcDQiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3gtYWFjIl9zLCAi
YXVkaW8vYWFjIl9zIH0sCi0gICAgICAgICAgICB7ICJhdWRpby94LWFtciJfcywgImF1ZGlvL2Ft
ciJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vbXBlZ3VybCJfcywgImF1ZGlvL3gtbXBlZ3Vy
bCJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vZmxhYyJfcywgImF1ZGlvL3gtZmxhYyJfcyB9
LAotICAgICAgICAgICAgeyAidmlkZW8vM2dwIl9zLCAidmlkZW8vM2dwcCJfcyB9LAotICAgICAg
ICAgICAgeyAidmlkZW8vYXZpIl9zLCAidmlkZW8veC1tc3ZpZGVvIl9zIH0sCi0gICAgICAgICAg
ICB7ICJ2aWRlby94LW00diJfcywgInZpZGVvL21wNCJfcyB9LAotICAgICAgICAgICAgeyAidmlk
ZW8veC1xdWlja3RpbWUiX3MsICJ2aWRlby9xdWlja3RpbWUiX3MgfSwKLSAgICAgICAgICAgIHsg
ImFwcGxpY2F0aW9uL2phdmEiX3MsICJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiX3MgfSwKLSAg
ICAgICAgICAgIHsgImFwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlIl9zLCAiYXBwbGljYXRpb24v
amF2YS1hcmNoaXZlIl9zIH0sCi0gICAgICAgICAgICB7ICJhcHBsaWNhdGlvbi94LXppcC1jb21w
cmVzc2VkIl9zLCAiYXBwbGljYXRpb24vemlwIl9zIH0sCi0gICAgICAgICAgICB7ICJ0ZXh0L2Nh
Y2hlLW1hbmlmZXN0Il9zLCAidGV4dC9wbGFpbiJfcyB9LAotICAgICAgICB9OwotCi0gICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbWFwOwot
ICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtaW1lVHlwZUFzc29jaWF0aW9ucykKLSAgICAgICAg
ICAgIG1hcC5hZGQocGFpci5maXJzdCwgcGFpci5zZWNvbmQpOwotICAgICAgICByZXR1cm4gbWFw
OwotICAgIH0oKSk7Ci0KLSAgICBhdXRvIGl0ID0gbWltZVR5cGVBc3NvY2lhdGlvbk1hcC5nZXQo
KS5maW5kKG1pbWVUeXBlKTsKLSAgICBpZiAoaXQgIT0gbWltZVR5cGVBc3NvY2lhdGlvbk1hcC5n
ZXQoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKLSAgICByZXR1cm4gbWltZVR5
cGU7Ci19Ci0KKyAgICAvLyBGSVhNRTogU2luY2UgdGhpcyBpcyBvbmx5IHVzZWQgaW4gaXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlLCB3ZSBzaG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgdGhlIG5vbi1p
bWFnZSB0eXBlcyBiZWxvdy4KKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxDb21wYXJh
YmxlTGV0dGVyc0xpdGVyYWwsIEFTQ0lJTGl0ZXJhbD4gbWltZVR5cGVBc3NvY2lhdGlvbkFycmF5
W10gPSB7CisgICAgICAgIHsgImFwcGxpY2F0aW9uL2ljbyIsICJpbWFnZS92bmQubWljcm9zb2Z0
Lmljb24iX3MgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YSIsICJhcHBsaWNhdGlvbi9q
YXZhLWFyY2hpdmUiX3MgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUi
LCAiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlIl9zIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9u
L3gtemlwLWNvbXByZXNzZWQiLCAiYXBwbGljYXRpb24vemlwIl9zIH0sCisgICAgICAgIHsgImF1
ZGlvL2ZsYWMiLCAiYXVkaW8veC1mbGFjIl9zIH0sCisgICAgICAgIHsgImF1ZGlvL200YSIsICJh
dWRpby9tcDQiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vbWlkIiwgImF1ZGlvL21pZGkiX3MgfSwK
KyAgICAgICAgeyAiYXVkaW8vbXAzIiwgImF1ZGlvL21wZWciX3MgfSwKKyAgICAgICAgeyAiYXVk
aW8vbXBlZzMiLCAiYXVkaW8vbXBlZyJfcyB9LAorICAgICAgICB7ICJhdWRpby9tcGVndXJsIiwg
ImF1ZGlvL3gtbXBlZ3VybCJfcyB9LAorICAgICAgICB7ICJhdWRpby9tcGciLCAiYXVkaW8vbXBl
ZyJfcyB9LAorICAgICAgICB7ICJhdWRpby9tcGczIiwgImF1ZGlvL21wZWciX3MgfSwKKyAgICAg
ICAgeyAiYXVkaW8vcWNwIiwgImF1ZGlvL3FjZWxwIl9zIH0sCisgICAgICAgIHsgImF1ZGlvL3Nw
LW1pZGkiLCAiYXVkaW8vbWlkaSJfcyB9LAorICAgICAgICB7ICJhdWRpby92bmQucWNlbHAiLCAi
YXVkaW8vcWNlbHAiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vdm5kLnFjcCIsICJhdWRpby9xY2Vs
cCJfcyB9LAorICAgICAgICB7ICJhdWRpby92bmQud2F2ZSIsICJhdWRpby94LXdhdiJfcyB9LAor
ICAgICAgICB7ICJhdWRpby93YXYiLCAiYXVkaW8veC13YXYiX3MgfSwKKyAgICAgICAgeyAiYXVk
aW8veC1hYWMiLCAiYXVkaW8vYWFjIl9zIH0sCisgICAgICAgIHsgImF1ZGlvL3gtYW1yIiwgImF1
ZGlvL2FtciJfcyB9LAorICAgICAgICB7ICJhdWRpby94LW00YSIsICJhdWRpby9tcDQiX3MgfSwK
KyAgICAgICAgeyAiYXVkaW8veC1taWQiLCAiYXVkaW8vbWlkaSJfcyB9LAorICAgICAgICB7ICJh
dWRpby94LW1pZGkiLCAiYXVkaW8vbWlkaSJfcyB9LAorICAgICAgICB7ICJhdWRpby94LW1wMyIs
ICJhdWRpby9tcGVnIl9zIH0sCisgICAgICAgIHsgImF1ZGlvL3gtbXA0IiwgImF1ZGlvL21wNCJf
cyB9LAorICAgICAgICB7ICJhdWRpby94LW1wZWciLCAiYXVkaW8vbXBlZyJfcyB9LAorICAgICAg
ICB7ICJhdWRpby94LW1wZWczIiwgImF1ZGlvL21wZWciX3MgfSwKKyAgICAgICAgeyAiYXVkaW8v
eC1tcGciLCAiYXVkaW8vbXBlZyJfcyB9LAorICAgICAgICB7ICJpbWFnZS9pY28iLCAiaW1hZ2Uv
dm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCisgICAgICAgIHsgImltYWdlL2ljb24iLCAiaW1hZ2Uv
dm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCisgICAgICAgIHsgImltYWdlL2pwZyIsICJpbWFnZS9q
cGVnIl9zIH0sCisgICAgICAgIHsgImltYWdlL3BqcGVnIiwgImltYWdlL2pwZWciX3MgfSwKKyAg
ICAgICAgeyAiaW1hZ2Uvdm5kLnJpbS5wbmciLCAiaW1hZ2UvcG5nIl9zIH0sCisgICAgICAgIHsg
ImltYWdlL3gtYml0bWFwIiwgImltYWdlL2JtcCJfcyB9LAorICAgICAgICB7ICJpbWFnZS94LWJt
cCIsICJpbWFnZS9ibXAiX3MgfSwKKyAgICAgICAgeyAiaW1hZ2UveC1pY29uIiwgImltYWdlL3Zu
ZC5taWNyb3NvZnQuaWNvbiJfcyB9LAorICAgICAgICB7ICJpbWFnZS94LW1zLWJpdG1hcCIsICJp
bWFnZS9ibXAiX3MgfSwKKyAgICAgICAgeyAiaW1hZ2UveC1tcy1ibXAiLCAiaW1hZ2UvYm1wIl9z
IH0sCisgICAgICAgIHsgImltYWdlL3gtcG5nIiwgImltYWdlL3BuZyJfcyB9LAorICAgICAgICB7
ICJpbWFnZS94LXdpbmRvd3MtYm1wIiwgImltYWdlL2JtcCJfcyB9LAorICAgICAgICB7ICJ0ZXh0
L2NhY2hlLW1hbmlmZXN0IiwgInRleHQvcGxhaW4iX3MgfSwKKyAgICAgICAgeyAidGV4dC9pY28i
LCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCisgICAgICAgIHsgInZpZGVvLzNncCIs
ICJ2aWRlby8zZ3BwIl9zIH0sCisgICAgICAgIHsgInZpZGVvL2F2aSIsICJ2aWRlby94LW1zdmlk
ZW8iX3MgfSwKKyAgICAgICAgeyAidmlkZW8veC1tNHYiLCAidmlkZW8vbXA0Il9zIH0sCisgICAg
ICAgIHsgInZpZGVvL3gtcXVpY2t0aW1lIiwgInZpZGVvL3F1aWNrdGltZSJfcyB9LAorICAgIH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheU1hcCBhc3NvY2lhdGlvbk1hcCB7IG1p
bWVUeXBlQXNzb2NpYXRpb25BcnJheSB9OworICAgIGF1dG8gbm9ybWFsaXplZFR5cGUgPSBhc3Nv
Y2lhdGlvbk1hcC50cnlHZXQobWltZVR5cGUpOworICAgIHJldHVybiBub3JtYWxpemVkVHlwZSA/
ICpub3JtYWxpemVkVHlwZSA6IG1pbWVUeXBlOwogI2VuZGlmCit9CiAKIFN0cmluZyBNSU1FVHlw
ZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCAyMzM3YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5ODcx
NThmZjIwMjM1MWNmLi44NGJhMWZiNDk5NjAzYjM3NzM3ZjhlNDk2ZWVmOGVlNGY3MDgzMDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0yNiw3ICsy
Niw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI4LDE3ICsxMjcsMTMgQEAgcHVibGljOgogICAgIC8vIG1h
a2VzIHRoaXMgdGVzdCBpcyBhZnRlciBtYW55IG90aGVyIHRlc3RzIGFyZSBkb25lIG9uIHRoZSBN
SU1FIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0
byBmaW5kIGEgd2F5IHRvIGF2b2lkIGV4cG9zaW5nIHRoZXNlIHNldHMsIGV2ZW4gd29yc2UgZXhw
b3Npbmcgbm9uLWNvbnN0IHJlZmVyZW5jZXMuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxj
b25zdCBjaGFyKj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKICAgICBzdGF0aWMgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGFkZGl0aW9uYWxTdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE1lZGlhTUlNRVR5cGVzKCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+JiBwZGZNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHVuc3VwcG9ydGVk
VGV4dE1JTUVUeXBlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3lzdGVtUHJldmlld01JTUVUeXBl
cygpOwotCi0gICAgLy8gRklYTUU6IFVuY2xlYXIgd2hhdCB0aGUgY29uY2VwdCBvZiBhIG5vcm1h
bGl6ZWQgTUlNRSB0eXBlIGlzOyBjdXJyZW50bHkgaXQncyBhIHBsYXRmb3JtLXNwZWNpZmljIG5v
dGlvbi4KLSAgICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHBk
Zk1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25z
dCBjaGFyKj4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVuZEZpbGVFeHRlbnNpb25J
Zk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAppbmRleCA2MDExMWFhNDQw
YzQ5ZWQ1MGU3ZTkwOTQ3MTE2MzlmMmQzZDljMWY1Li41NjdmMTE4NTM4YTA3YTA1OTFkMTBhMGFh
ZDYyNzA4YjNjMGY5YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNm
b3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaApA
QCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9h
dFNpemUuaCIKICNpbmNsdWRlICJTVkdNYXRyaXguaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBl
Q29udmVyc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmgK
aW5kZXggZTM1YzExN2Q5Njg0MTk4ZWEwMTNiY2RjYmFjN2UyZDZhMjI5YjkzNS4uMjk3ZGI1OTMz
MGRiMTRjNzE5ODU1NGMwMjcyOWM2MTJlNTM4NjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1R5cGVDb252ZXJzaW9ucy5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGUxODM5N2MzZDA4Y2QxZWNiMWJkNWE1YjA2OTE0OGE2
MWIxODQwYTUuLjdiMTgxMzRjYjlmZDgwYWVhZjYwZGJhM2NiNGI5NjZhMjA0OTVkZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0y
Njk5LDggKzI2OTksOCBAQCAtIChCT09MKV9hbGxvd3NWaWV3cG9ydFNocmlua1RvRml0CiAKIC0g
KEJPT0wpX2lzRGlzcGxheWluZ1BERgogewotICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkgewotICAgICAgICBDbGFzcyBw
cm92aWRlckNsYXNzID0gW1tfY29uZmlndXJhdGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnld
IHByb3ZpZGVyRm9yTUlNRVR5cGU6bWltZVR5cGVdOworICAgIGZvciAoYXV0byYgdHlwZSA6IFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpKSB7CisgICAgICAgIENsYXNz
IHByb3ZpZGVyQ2xhc3MgPSBbW19jb25maWd1cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdpc3Ry
eV0gcHJvdmlkZXJGb3JNSU1FVHlwZTpAKHR5cGUpXTsKICAgICAgICAgaWYgKFtfY3VzdG9tQ29u
dGVudFZpZXcgaXNLaW5kT2ZDbGFzczpwcm92aWRlckNsYXNzXSkKICAgICAgICAgICAgIHJldHVy
biBZRVM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQppbmRleCBhNWRm
YjRmODE3Mjc5MDUyNmMwNDFlNDViNDBhN2RkZDE3ODYwYjc3Li41OGY0YWI4NDMyZjRhNmQ1Yjk4
OTVlZWE1Y2Y3MmFiODFlYzE0M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5t
bQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnku
aD4KKyNpbXBvcnQgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL0hhc2hDb3VudGVk
U2V0Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIEBpbXBsZW1lbnRhdGlv
biBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSB7CiAgICAgSGFzaE1hcDxTdHJpbmcs
IENsYXNzIDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXI+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IF9jb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZTsKQEAgLTUwLDE0ICs1MCwxNCBAQCAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICopY29uZmlndXJhdGlvbgogICAgICAgICByZXR1cm4gbmlsOwogCiAjaWYgRU5BQkxFKFdLUERG
VklFVykKLSAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6cGRmTUlNRVR5cGVzKCkpCi0gICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6W1dLUERG
VmlldyBjbGFzc10gZm9yTUlNRVR5cGU6bWltZVR5cGVdOworICAgIGZvciAoYXV0byYgdHlwZSA6
IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpKQorICAgICAgICBbc2Vs
ZiByZWdpc3RlclByb3ZpZGVyOltXS1BERlZpZXcgY2xhc3NdIGZvck1JTUVUeXBlOkAodHlwZSld
OwogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGNvbmZpZ3VyYXRp
b24uX3N5c3RlbVByZXZpZXdFbmFibGVkKSB7Ci0gICAgICAgIGZvciAoYXV0byYgbWltZVR5cGUg
OiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkpCi0g
ICAgICAgICAgICBbc2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1N5c3RlbVByZXZpZXdWaWV3IGNs
YXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07CisgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN5c3RlbVByZXZpZXdNSU1FVHlwZXMoKSkKKyAgICAg
ICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6W1dLU3lzdGVtUHJldmlld1ZpZXcgY2xhc3Nd
IGZvck1JTUVUeXBlOkAodHlwZSldOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmlu
ZGV4IDhlNmVlYTY4YWY1MzdlNzE5MTJmNTIyMDZkOWQzZmIyMGNkNDhiNzIuLjJlZWVmNzAyZWRj
MzYzMTZmNDViNjAxM2ExMDVmNzYwNDNkMzM0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC02Myw2
ICs2Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBv
cnQgPFdlYktpdExlZ2FjeS9ET01IVE1MSW5wdXRFbGVtZW50Lmg+CiAjaW1wb3J0IDx3dGYvQXNz
ZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0
Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgpAQCAtODksNyArOTAsNyBAQCBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXZWJIVE1MUmVwcmVzZW50YXRpb24KIAotc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PiBuZXdBcnJheVdpdGhTdHJpbmdzKGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+JiBzZXQpCitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TQXJy
YXkoY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHNldCkK
IHsKICAgICBhdXRvIHZlY3RvciA9IGNvcHlUb1ZlY3Rvck9mPE5TU3RyaW5nICo+KHNldCk7CiAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6dmVjdG9y
LmRhdGEoKSBjb3VudDp2ZWN0b3Iuc2l6ZSgpXSk7CkBAIC0xMDQsMjUgKzEwNSwyNSBAQCArIChO
U0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNZWRp
YU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJh
eT4+IHN0YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhN
SU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygpKTsKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1J
TUVUeXBlcyA9IGNyZWF0ZU5TQXJyYXkoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFN
SU1FVHlwZXMoKSk7CiAgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzLmdl
dCgpLmdldCgpOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMK
IHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNT
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVS
ZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMgPSBjcmVhdGVOU0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzKCkpOwogICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKXN1cHBvcnRlZEltYWdlTUlNRVR5cGVz
CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGlj
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVn
aXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0g
Y3JlYXRlTlNBcnJheShNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygp
KTsKICAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7
CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNVbnN1cHBvcnRlZFRl
eHRNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnVuc3Vw
cG9ydGVkVGV4dE1JTUVUeXBlcygpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWlu
UHRyPE5TQXJyYXk+PiBzdGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBjcmVhdGVOU0Fy
cmF5KE1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKTsKICAgICBy
ZXR1cm4gc3RhdGljVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427216</attachid>
            <date>2021-04-27 17:00:16 -0700</date>
            <delta_ts>2021-04-27 18:19:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224968-20210427170016.patch</filename>
            <type>text/plain</type>
            <size>75494</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYxZDhhZmFjOGM2MmUwZDlmMTI3NTFj
ZGNmNjFhNDUzMzEwOGNiYzcuLjRjOTU0ZmNiNGVlODVmODUzMjk0MjRlOWUwNDljY2NjNzNmNjBk
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDQtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuZCBTb3J0ZWRBcnJheU1hcCBmdXJ0aGVyIHRvIHdv
cmsgb24gY2FzZS1mb2xkZWQgc3RyaW5ncywgdXNlIGluIE1JTUVUeXBlUmVnaXN0cnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDk2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0FTQ0lJQ1R5
cGUuaDogTWFrZSBtb3N0IGZ1bmN0aW9ucyBjb25zdGV4cHIuCisKKyAgICAgICAgKiB3dGYvRm9y
d2FyZC5oOiBBZGRlZCBGaXhlZFZlY3Rvci4KKworICAgICAgICAqIHd0Zi9Tb3J0ZWRBcnJheU1h
cC5oOiBBZGRlZCBTb3J0ZWRBcnJheVNldC4gQWRkZWQgQ29tcGFyYWJsZUNhc2VGb2xkaW5nQVND
SUlMaXRlcmFsCisgICAgICAgIGFuZCBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwsIHVzaW5nIGEg
dGVtcGxhdGUgc2hhcmVkIHdpdGggQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbC4KKwogMjAyMS0wNC0y
MyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlY29k
ZXIgbWVtb3J5IGFsbG9jYXRpb25zIGJhc2VkIG9uIHVudHJ1c3RlZCBkYXRhIChzaXplcykgaW4g
dGhlIHN0cmVhbTsgcmVsYXRlZCBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU2NGU1NjQzZWI3OTE5
NTkxYWJjYmQzMjg2OGFlNzk4OWYyNzBlMC4uZGY1NTUzMzkwOTI5ZDUzMTRiODhmNTI3YjNjNjA4
MWVhNjAxY2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA0LTI3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmQgU29ydGVkQXJyYXlN
YXAgZnVydGhlciB0byB3b3JrIG9uIGNhc2UtZm9sZGVkIHN0cmluZ3MsIHVzZSBpbiBNSU1FVHlw
ZVJlZ2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjQ5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2luZyBmZXdlciBIYXNoU2V0IGluIE1JTUVUeXBlUmVnaXN0cnkgc2F2ZXMgY29kZSBzaXpl
IGFuZCByZWR1Y2VzIG1lbW9yeSB1c2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzKTogRGVsZXRlZC4gUmVwbGFjZWQKKyAgICAgICAgdGhpcyBmdW5jdGlv
biB3aXRoIGEgY29uc3RleHByIGFycmF5LCBlbGltaW5hdGluZyB0aGUgdXNlIG9mIEhhc2hTZXQu
CisgICAgICAgIChXZWJDb3JlOjptYWtlRml4ZWRWZWN0b3IpOiBBZGRlZC4gSGVscGVyIGZ1bmN0
aW9uIHVzZWQgYmVsb3cgZm9yIHRoZSByZXBlYXRlZCBwYXR0dGVybgorICAgICAgICBvZiBjb252
ZXJ0aW5nIGEgY29uc3RleHByIGFycmF5IGludG8gYSBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4u
CisgICAgICAgIChXZWJDb3JlOjpzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGVzKTogVXBkYXRlIHNpbmNlCisgICAgICAgIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1F
VHlwZUFycmF5IGlzIG5vdyBhbiBhcnJheSwgbm90IGEgSGFzaFNldC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcyk6IFJld3JvdGUgdG8gcmV0dXJuIGEg
Rml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+CisgICAgICAgIGluc3RlYWQgb2YgYSBIYXNoU2V0LiBU
aGUgb25seSBjYWxsZXIgbWFrZXMgYW4gTlNBcnJheTxOU1N0cmluZyAqPiwgc28gdGhlcmUgaXMg
bm8gbmVlZAorICAgICAgICB0byBpbnZvbHZlIGEgaGFzaCB0YWJsZSBvciBhIFdURjo6U3RyaW5n
LgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb21tb25NZWRpYVR5cGVzKTogRGVs
ZXRlZCwgbWVyZ2luZyBpbnRvIHRoZSBmdW5jdGlvbiBiZWxvdy4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbW1vbk1pbWVUeXBlc01hcCk6IE1vdmVkIHRoZSBjb21tb25NZWRpYVR5cGVzIGRhdGEgaW4g
aGVyZQorICAgICAgICBhbmQgdXNlIGEgY29uc3RleHByIGFycmF5IGluc3RlYWQgb2YgYW4gaW5p
dGlhbGl6ZXJfbGlzdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZSk6IFVzZSBTb3J0ZWRBcnJheVNldAorICAgICAgICBpbnN0ZWFk
IG9mIGEgSGFzaFNldCBmb3IgdGhlIGNvcmUgc3VwcG9ydGVkIGltYWdlcyB0eXBlcy4gTW92ZWQg
dGhlIGNvZGUKKyAgICAgICAgdGhhdCBjaGVja3MgdGhpcyBhZ2FpbnN0IGRlZmF1bHRTdXBwb3J0
ZWRJbWFnZVR5cGVzIGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZSk6IFVzZSBTb3J0ZWRBcnJheVNldC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzUERGTUlNRVR5
cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzUG9zdFNj
cmlwdE1JTUVUeXBlKTogVXNlIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlLgorICAgICAg
ICBGb3Igc29tZSByZWFzb24gdGhpcyB3YXMgdGhlIHNpbmdsZSBjYXNlLXNlbnNpdGl2ZSBmdW5j
dGlvbiBpbiB0aGlzIHdob2xlIGNsYXNzIQorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdp
c3RyeTo6aXNTeXN0ZW1QcmV2aWV3TUlNRVR5cGUpOiBVc2UgU29ydGVkQXJyYXlTZXQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKTog
UmV0dXJuIGEgRml4ZWRWZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVkSW1hZ2VN
SU1FVHlwZSk6IFJlbmFtZWQgdGhpcyBmcm9tIGl0cyBvbGQgbmFtZSwKKyAgICAgICAgTUlNRVR5
cGVSZWdpc3RyeTo6bm9ybWFsaXplZE1JTUVUeXBlLCB0byBiZXR0ZXIgcmVmbGVjdCB0aGF0IGl0
J3Mgb25seSB1c2VkIGluCisgICAgICAgIG9uZSBwbGFjZS4gQWxzbyBhZGRlZCBjb21tZW50cyB0
byBjbGFyaWZ5IHRoYXQgaXQncyBDVVJMLW9ubHkgYW5kIHN1Z2dlc3QgaXQgYmUKKyAgICAgICAg
cmVtb3ZlZCBldmVudHVhbGx5LgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5oOiBDaGFuZ2VkIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLCBwZGZNSU1FVHlwZXMsCisgICAg
ICAgIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcywgYW5kIHN5c3RlbVByZXZpZXdNSU1FVHlwZXMg
dG8gcmV0dXJuIEZpeGVkVmVjdG9yIGluc3RlYWQKKyAgICAgICAgb2YgSGFzaFNldC4gQWxzbyBy
ZW1vdmVkIG5vcm1hbGl6ZWRNSU1FVHlwZS4KKworICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1W
YWx1ZS5oOiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGUgb2YgSGFzaE1hcC5oLgorICAgICAgICAq
IHRlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmg6IERpdHRvLgorCiAyMDIxLTA0LTI1ICBUeWxlciBX
aWxjb2NrICA8dHdpbGNvLm9AcHJvdG9ubWFpbC5jb20+CiAKICAgICAgICAgY3NzLWNvbnRhaW4g
Y2F0ZWdvcnkgbWlzc2luZyBmcm9tIENTU1Byb3BlcnRpZXMuanNvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxYTI2
YTJlYWQwY2MyYmRhZjc1MmVkNzEwNDQxZTIzY2JiODczOWVhLi5hYzY5NDBhNDQ3OGUzNDc1NDEx
OGQ2MTM4Yjk1OWE3ZDgzMzM2NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0
LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmQgU29y
dGVkQXJyYXlNYXAgZnVydGhlciB0byB3b3JrIG9uIGNhc2UtZm9sZGVkIHN0cmluZ3MsIHVzZSBp
biBNSU1FVHlwZVJlZ2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQ5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9pc0Rpc3BsYXlpbmdQREZdKTogVXBkYXRlZCBzaW5jZSBNSU1FVHlwZVJl
Z2lzdHJ5OjpwZGZNSU1FVHlwZXMKKyAgICAgICAgcmV0dXJucyBhIGRpZmZlcmVudCB0eXBlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3Ry
eS5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgaW5pdFdp
dGhDb25maWd1cmF0aW9uOl0pOiBVcGRhdGVkIHNpbmNlCisgICAgICAgIE1JTUVUeXBlUmVnaXN0
cnk6OnN5c3RlbVByZXZpZXdNSU1FVHlwZXMgcmV0dXJucyBhIGRpZmZlcmVudCB0eXBlLgorCiAy
MDIxLTA0LTI1ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
WFJdIFNob3VsZCBiZSBlbmFibGVkIHdoZW4gV0VCWFJfSU5URVJOQUxTIGlzIHRydWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBlZTBiZWIxNWIxMDE0ZWU5MDQ2ZmU0M2NjZDI2Yjk3
YTI4ODI2ZjE4Li5mMjU5NmE0MTE0M2YxY2FjMTg5MjAxZDZkODUxNTllM2UxNmUwOTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDQtMjcgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuZCBTb3J0ZWRBcnJh
eU1hcCBmdXJ0aGVyIHRvIHdvcmsgb24gY2FzZS1mb2xkZWQgc3RyaW5ncywgdXNlIGluIE1JTUVU
eXBlUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNDk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgIChjcmVhdGVO
U0FycmF5KTogUmVuYW1lZCBmcm9tIG5ld0FycmF5V2l0aFN0cmluZ3Mgc28gdGhpcyBvdmVybG9h
ZHMgdGhlIGNyZWF0ZU5TQXJyYXkKKyAgICAgICAgZnVuY3Rpb24gZnJvbSBWZWN0b3JDb2NvYS5o
IHNvIHdlIGNhbiB1c2UgdGhlIHR3byBpbnRlcmNoYW5nYWJseSBhbmQgaGFuZGxlIGJvdGggRml4
ZWRWZWN0b3IKKyAgICAgICAgYW5kIEhhc2hTZXQgd2l0aCB0aGUgc21hZSBjb2RlLgorICAgICAg
ICAoK1tXZWJIVE1MUmVwcmVzZW50YXRpb24gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdKTogVXBk
YXRlZCBmb3IgbmFtZSBjaGFuZ2UuCisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBz
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOiBEaXR0by4KKyAgICAgICAgKCtbV2ViSFRNTFJl
cHJlc2VudGF0aW9uIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzXSk6IERpdHRvLgorICAgICAgICAo
K1tXZWJIVE1MUmVwcmVzZW50YXRpb24gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzXSk6IERpdHRv
LgorCiAyMDIxLTA0LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wcm92ZSBvdXIgY29uc3RydWN0RGVsZXRlZFZhbHVlKCkgdGVtcGxhdGUgc3BlY2lhbGl6
YXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BU0NJSUNUeXBlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9BU0NJSUNUeXBlLmgKaW5kZXggOTQ1ZTc4Mjg0NzU2M2JiNmIwOGJiNWFkY2Q1MjE1
NGQ2NjkzMTM5OC4uYmE2NzcyNzNkNDkyNTQyZGI5ZGFlZWI1MjFkMmY4MzEzZTU3MzIwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0FTQ0lJQ1R5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDE2ICs0MCwxNyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUkoQ2hh
cmFjdGVyVHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQVND
SUlBbHBoYShDaGFyYWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IGJvb2wgaXNBU0NJSUFscGhhbnVtZXJpYyhDaGFyYWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSUJpbmFyeURpZ2l0KENoYXJhY3RlclR5cGUp
OwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FTQ0lJRGlnaXQoQ2hh
cmFjdGVyVHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBib29sIGlzQVND
SUlIZXhEaWdpdChDaGFyYWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgaXNBU0NJSUxvd2VyKENoYXJhY3RlclR5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FTQ0lJT2N0YWxEaWdpdChDaGFyYWN0ZXJUeXBlKTsKLXRl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSVByaW50YWJsZShDaGFy
YWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJ
SVNwYWNlKENoYXJhY3RlclR5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Ym9vbCBpc0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJQWxwaGEoQ2hhcmFjdGVyVHlwZSk7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJQWxw
aGFudW1lcmljKENoYXJhY3RlclR5cGUpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSUJpbmFyeURpZ2l0KENoYXJhY3RlclR5cGUpOwordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSURpZ2l0
KENoYXJhY3RlclR5cGUpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3Rl
eHByIGJvb2wgaXNBU0NJSURpZ2l0T3JQdW5jdHVhdGlvbihDaGFyYWN0ZXJUeXBlKTsKK3RlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlIZXhEaWdp
dChDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0
ZXhwciBib29sIGlzQVNDSUlMb3dlcihDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlPY3RhbERpZ2l0KENoYXJhY3Rl
clR5cGUpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wg
aXNBU0NJSVByaW50YWJsZShDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlTcGFjZShDaGFyYWN0ZXJUeXBlKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlVcHBl
cihDaGFyYWN0ZXJUeXBlKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQ2hh
cmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXIoQ2hhcmFjdGVyVHlwZSk7CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPiBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlVcHBlcihDaGFyYWN0ZXJUeXBl
KTsKQEAgLTU3LDE4ICs1OCwxOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBD
aGFyYWN0ZXJUeXBlIHRvQVNDSUlVcHBlcihDaGFyYWN0ZXJUeXBlKTsKIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IHVpbnQ4X3QgdG9BU0NJSUhleFZhbHVlKENoYXJhY3RlclR5cGUp
OwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdWludDhfdCB0b0FTQ0lJSGV4VmFs
dWUoQ2hhcmFjdGVyVHlwZSBmaXJzdENoYXJhY3RlciwgQ2hhcmFjdGVyVHlwZSBzZWNvbmRDaGFy
YWN0ZXIpOwogCi1jaGFyIGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHVpbnQ4X3QpOwotY2hh
ciB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90KTsKLWNoYXIgbG93ZXJOaWJibGVU
b0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQodWludDhfdCk7Ci1jaGFyIHVwcGVyTmliYmxlVG9Mb3dl
cmNhc2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QpOworY29uc3RleHByIGNoYXIgbG93ZXJOaWJibGVU
b0FTQ0lJSGV4RGlnaXQodWludDhfdCk7Citjb25zdGV4cHIgY2hhciB1cHBlck5pYmJsZVRvQVND
SUlIZXhEaWdpdCh1aW50OF90KTsKK2NvbnN0ZXhwciBjaGFyIGxvd2VyTmliYmxlVG9Mb3dlcmNh
c2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QpOworY29uc3RleHByIGNoYXIgdXBwZXJOaWJibGVUb0xv
d2VyY2FzZUFTQ0lJSGV4RGlnaXQodWludDhfdCk7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGJvb2wgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChDaGFyYWN0ZXJUeXBlLCBj
aGFyIGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0ZXIpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChDaGFy
YWN0ZXJUeXBlLCBjaGFyIGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0ZXIpOwogCiAvLyBUaGUg
dG9BU0NJSUxvd2VyVW5jaGVja2VkIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBjb21wYXJpbmcg
YW55IGlucHV0IGNoYXJhY3RlcgogLy8gdG8gYSBsb3dlcmNhc2UgRW5nbGlzaCBjaGFyYWN0ZXIu
IFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIHNob3VsZAogLy8gYmUgdXNl
ZCBmb3IgcmVndWxhciBjb21wYXJpc29uIG9mIEFTQ0lJIGFscGhhIGNoYXJhY3RlcnMsIGJ1dCBz
d2l0Y2ggc3RhdGVtZW50cwogLy8gaW4gdGhlIENTUyB0b2tlbml6ZXIsIGZvciBleGFtcGxlLCBp
bnN0ZWFkIG1ha2UgZGlyZWN0IHVzZSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQuCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlMb3dlclVuY2hlY2tl
ZChDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0
ZXhwciBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlMb3dlclVuY2hlY2tlZChDaGFyYWN0ZXJUeXBlKTsK
IAogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCB1bnNpZ25lZCBjaGFyIGFzY2lpQ2Fz
ZUZvbGRUYWJsZVsyNTZdOwogCkBAIC03NywxMiArNzgsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSShDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikKICAgICByZXR1cm4gIShjaGFyYWN0ZXIgJiB+MHg3Rik7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlMb3dlcihDaGFyYWN0ZXJU
eXBlIGNoYXJhY3RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhw
ciBib29sIGlzQVNDSUlMb3dlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICByZXR1
cm4gY2hhcmFjdGVyID49ICdhJyAmJiBjaGFyYWN0ZXIgPD0gJ3onOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXJV
bmNoZWNrZWQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQo
Q2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBjYW4gYmUg
dXNlZCBmb3IgY29tcGFyaW5nIGFueSBpbnB1dCBjaGFyYWN0ZXIKICAgICAvLyB0byBhIGxvd2Vy
Y2FzZSBFbmdsaXNoIGNoYXJhY3Rlci4gVGhlIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwKQEAg
LTkyLDM3ICs5MywzNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUg
Q2hhcmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoQ2hhcgogICAgIHJldHVybiBjaGFy
YWN0ZXIgfCAweDIwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxp
bmUgYm9vbCBpc0FTQ0lJQWxwaGEoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJQWxwaGEoQ2hhcmFj
dGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGlzQVNDSUlMb3dlcih0b0FTQ0lJTG93
ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGlubGluZSBib29sIGlzQVNDSUlEaWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlE
aWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyID49
ICcwJyAmJiBjaGFyYWN0ZXIgPD0gJzknOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKENoYXJhY3RlclR5cGUgY2hh
cmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wg
aXNBU0NJSUFscGhhbnVtZXJpYyhDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICByZXR1
cm4gaXNBU0NJSURpZ2l0KGNoYXJhY3RlcikgfHwgaXNBU0NJSUFscGhhKGNoYXJhY3Rlcik7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlI
ZXhEaWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlIZXhEaWdpdChDaGFyYWN0ZXJUeXBlIGNo
YXJhY3RlcikKIHsKICAgICByZXR1cm4gaXNBU0NJSURpZ2l0KGNoYXJhY3RlcikgfHwgKHRvQVND
SUlMb3dlclVuY2hlY2tlZChjaGFyYWN0ZXIpID49ICdhJyAmJiB0b0FTQ0lJTG93ZXJVbmNoZWNr
ZWQoY2hhcmFjdGVyKSA8PSAnZicpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJQmluYXJ5RGlnaXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0
ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FT
Q0lJQmluYXJ5RGlnaXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGNo
YXJhY3RlciA9PSAnMCcgfHwgY2hhcmFjdGVyID09ICcxJzsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSU9jdGFsRGlnaXQoQ2hhcmFjdGVy
VHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4
cHIgYm9vbCBpc0FTQ0lJT2N0YWxEaWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAg
ICByZXR1cm4gY2hhcmFjdGVyID49ICcwJyAmJiBjaGFyYWN0ZXIgPD0gJzcnOwogfQogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJUHJpbnRhYmxl
KENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSVByaW50YWJsZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
cikKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyID49ICcgJyAmJiBjaGFyYWN0ZXIgPD0gJ34nOwog
fQpAQCAtMTQzLDEyICsxNDQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
aW5saW5lIGJvb2wgaXNBU0NJSVByaW50YWJsZShDaGFyYWN0ZXJUeXBlIGNoYXIKICAgICBCZWNh
dXNlIG9mIHRob3NlLCB3ZSBmaXJzdCBjaGVjayB0byBxdWlja2x5IHJldHVybiBmYWxzZSBmb3Ig
bm9uLWNvbnRyb2wgY2hhcmFjdGVycywKICAgICB0aGVuIGNoZWNrIGZvciBzcGFjZSBpdHNlbGYg
dG8gcXVpY2tseSByZXR1cm4gdHJ1ZSBmb3IgdGhhdCBjYXNlLCB0aGVuIGRvIHRoZSByZXN0Lgog
Ki8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlT
cGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
cikKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyIDw9ICcgJyAmJiAoY2hhcmFjdGVyID09ICcgJyB8
fCAoY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5KSk7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlVcHBlcihDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0
ZXhwciBib29sIGlzQVNDSUlVcHBlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICBy
ZXR1cm4gY2hhcmFjdGVyID49ICdBJyAmJiBjaGFyYWN0ZXIgPD0gJ1onOwogfQpAQCAtMTg0LDMx
ICsxODUsMzEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIHVpbnQ4
X3QgdG9BU0NJSUhleFZhbHVlKENoYXJhY3RlclR5cGUgZmkKICAgICByZXR1cm4gdG9BU0NJSUhl
eFZhbHVlKGZpcnN0Q2hhcmFjdGVyKSA8PCA0IHwgdG9BU0NJSUhleFZhbHVlKHNlY29uZENoYXJh
Y3Rlcik7CiB9CiAKLWlubGluZSBjaGFyIGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0KHVpbnQ4
X3QgdmFsdWUpCitjb25zdGV4cHIgY2hhciBsb3dlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50
OF90IHZhbHVlKQogewogICAgIHVpbnQ4X3QgbmliYmxlID0gdmFsdWUgJiAweEY7CiAgICAgcmV0
dXJuIG5pYmJsZSArIChuaWJibGUgPCAxMCA/ICcwJyA6ICdBJyAtIDEwKTsKIH0KIAotaW5saW5l
IGNoYXIgdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodWludDhfdCB2YWx1ZSkKK2NvbnN0ZXhw
ciBjaGFyIHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KHVpbnQ4X3QgdmFsdWUpCiB7CiAgICAg
dWludDhfdCBuaWJibGUgPSB2YWx1ZSA+PiA0OwogICAgIHJldHVybiBuaWJibGUgKyAobmliYmxl
IDwgMTAgPyAnMCcgOiAnQScgLSAxMCk7CiB9CiAKLWlubGluZSBjaGFyIGxvd2VyTmliYmxlVG9M
b3dlcmNhc2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QgdmFsdWUpCitjb25zdGV4cHIgY2hhciBsb3dl
ck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdCh1aW50OF90IHZhbHVlKQogewogICAgIHVp
bnQ4X3QgbmliYmxlID0gdmFsdWUgJiAweEY7CiAgICAgcmV0dXJuIG5pYmJsZSArIChuaWJibGUg
PCAxMCA/ICcwJyA6ICdhJyAtIDEwKTsKIH0KIAotaW5saW5lIGNoYXIgdXBwZXJOaWJibGVUb0xv
d2VyY2FzZUFTQ0lJSGV4RGlnaXQodWludDhfdCB2YWx1ZSkKK2NvbnN0ZXhwciBjaGFyIHVwcGVy
TmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QgdmFsdWUpCiB7CiAgICAgdWlu
dDhfdCBuaWJibGUgPSB2YWx1ZSA+PiA0OwogICAgIHJldHVybiBuaWJibGUgKyAobmliYmxlIDwg
MTAgPyAnMCcgOiAnYScgLSAxMCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGlubGluZSBib29sIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoQ2hhcmFjdGVyVHlwZSBp
bnB1dENoYXJhY3RlciwgY2hhciBleHBlY3RlZEFTQ0lJTG93ZXJjYXNlTGV0dGVyKQordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbChDaGFyYWN0ZXJUeXBlIGlucHV0Q2hhcmFjdGVyLCBjaGFyIGV4cGVjdGVkQVND
SUlMb3dlcmNhc2VMZXR0ZXIpCiB7CiAgICAgLy8gTmFtZSBvZiB0aGlzIGFyZ3VtZW50IHNheXMg
dGhpcyBtdXN0IGJlIGEgbG93ZXJjYXNlIGxldHRlciwgYnV0IGl0IGNhbiBhY3R1YWxseSBiZToK
ICAgICAvLyAgIC0gYSBsb3dlcmNhc2UgbGV0dGVyCkBAIC0yMjUsOSArMjI2LDkgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSUFscGhhQ2FzZWxl
c3NFcXVhbChDaGFyYWN0ZXIKICAgICByZXR1cm4gTElLRUxZKHRvQVNDSUlMb3dlclVuY2hlY2tl
ZChpbnB1dENoYXJhY3RlcikgPT0gZXhwZWN0ZWRBU0NJSUxvd2VyY2FzZUxldHRlcik7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlEaWdp
dE9yUHVuY3R1YXRpb24oQ2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkKK3RlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24o
Q2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7Ci0gICAgcmV0dXJuIChjaGFyQ29kZSA+PSAnIScg
JiYgY2hhckNvZGUgPD0gJ0AnKSB8fCAoY2hhckNvZGUgPj0gJ1snICYmIGNoYXJDb2RlIDw9ICdg
JykgfHwgKGNoYXJDb2RlID49ICd7JyAmJiBjaGFyQ29kZSA8PSAnficpOworICAgIHJldHVybiAo
Y2hhcmFjdGVyID49ICchJyAmJiBjaGFyYWN0ZXIgPD0gJ0AnKSB8fCAoY2hhcmFjdGVyID49ICdb
JyAmJiBjaGFyYWN0ZXIgPD0gJ2AnKSB8fCAoY2hhcmFjdGVyID49ICd7JyAmJiBjaGFyYWN0ZXIg
PD0gJ34nKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2FyZC5oIGIv
U291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDIwZjc2ODE5ZjM2YzEzMTFiOWJjZmJiMjk3
YTU2YjI5ZTgyMDJmOGMuLmY1YzNmOTQzMWI1YTRjNzdiM2RmNGYyMmUyZTA2NmIzODRmNDY3MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Gb3J3YXJkLmgKQEAgLTYyLDYgKzYyLDcgQEAgdXNpbmcgVmVjdG9yTWFsbG9jID0gRmFzdE1h
bGxvYzsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdFJlZkRlcmVmVHJhaXRzOwog
CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI7Cit0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgRml4ZWRWZWN0b3I7CiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRnVu
Y3Rpb247CiB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSBBbnlUaHJlYWRzQWNjZXNzVHJh
aXRzPiBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5h
bWUgPSBBbnlUaHJlYWRzQWNjZXNzVHJhaXRzPiBjbGFzcyBOZXZlckRlc3Ryb3llZDsKQEAgLTEx
OCw2ICsxMTksNyBAQCB1c2luZyBXVEY6OkF0b21TdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpCaW5h
cnlTZW1hcGhvcmU7CiB1c2luZyBXVEY6OkNTdHJpbmc7CiB1c2luZyBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyOwordXNpbmcgV1RGOjpGaXhlZFZlY3RvcjsKIHVzaW5nIFdURjo6RnVuY3Rpb247CiB1
c2luZyBXVEY6OkZ1bmN0aW9uRGlzcGF0Y2hlcjsKIHVzaW5nIFdURjo6SGFzaENvdW50ZWRTZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oIGIvU291cmNlL1dU
Ri93dGYvU29ydGVkQXJyYXlNYXAuaAppbmRleCA3NjkwMTI4OGJkNTY0NGU3MGZlNDJmOTRjZDgz
MTRhOGI4NjQxMDYzLi4xZGQxNDg3YjMzN2M5MjNlNThhMmUxZjdmZTdkYzYzZDA5NzczMzI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1NvcnRlZEFycmF5TWFwLmgKQEAgLTUyLDMyICs1Miw4NyBAQCBwcml2YXRlOgogICAg
IGNvbnN0IEFycmF5VHlwZSYgbV9hcnJheTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEFycmF5
VHlwZT4gY2xhc3MgU29ydGVkQXJyYXlTZXQgeworcHVibGljOgorICAgIGNvbnN0ZXhwciBTb3J0
ZWRBcnJheVNldChjb25zdCBBcnJheVR5cGUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlB
cmd1bWVudD4gYm9vbCBjb250YWlucyhjb25zdCBLZXlBcmd1bWVudCYpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGNvbnN0IEFycmF5VHlwZSYgbV9hcnJheTsKK307CisKIHN0cnVjdCBDb21wYXJh
YmxlU3RyaW5nVmlldyB7CiAgICAgU3RyaW5nVmlldyBzdHJpbmc7CiB9OwogCi1zdHJ1Y3QgQ29t
cGFyYWJsZUFTQ0lJTGl0ZXJhbCB7Ci0gICAgY29uc3QgY2hhciogbGl0ZXJhbDsKLSAgICB0ZW1w
bGF0ZTxzdGQ6OnNpemVfdCBzaXplPiBjb25zdGV4cHIgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbChj
b25zdCBjaGFyICgmY2hhcmFjdGVycylbc2l6ZV0pIDogbGl0ZXJhbCB7IGNoYXJhY3RlcnMgfSB7
IH0KKy8vIE5vVXBwZXJjYXNlTGV0dGVyc09wdGltaXplZCBtZWFucyBubyBjaGFyYWN0ZXJzIHdp
dGggdGhlIDB4MjAgYml0IHNldC4KKy8vIFRoYXQgbWVhbnMgdGhlIHN0cmluZ3MgY2FuJ3QgaW5j
bHVkZSBjb250cm9sIGNoYXJhY3RlcnMsIHVwcGVyY2FzZSBsZXR0ZXJzLCBvciBhbnkgb2YgQFtc
XV8uCitlbnVtIGNsYXNzIEFTQ0lJU3Vic2V0IHsgQWxsLCBOb1VwcGVyY2FzZUxldHRlcnMsIE5v
VXBwZXJjYXNlTGV0dGVyc09wdGltaXplZCB9OworCit0ZW1wbGF0ZTxBU0NJSVN1YnNldD4gc3Ry
dWN0IENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWwgeworICAgIEFTQ0lJTGl0ZXJhbCBsaXRl
cmFsOworICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IHNpemU+IGNvbnN0ZXhwciBDb21wYXJhYmxl
QVNDSUlTdWJzZXRMaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtzaXplXSk7CiAgICAg
c3RhdGljIE9wdGlvbmFsPENvbXBhcmFibGVTdHJpbmdWaWV3PiBwYXJzZShTdHJpbmdWaWV3IHN0
cmluZykgeyByZXR1cm4geyB7IHN0cmluZyB9IH07IH0KIH07CiAKLWNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCwgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCk7
Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCwgQ29tcGFy
YWJsZUFTQ0lJTGl0ZXJhbCk7Cit1c2luZyBDb21wYXJhYmxlQVNDSUlMaXRlcmFsID0gQ29tcGFy
YWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbDxBU0NJSVN1YnNldDo6QWxsPjsKK3VzaW5nIENvbXBhcmFi
bGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCA9IENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8
QVNDSUlTdWJzZXQ6Ok5vVXBwZXJjYXNlTGV0dGVycz47Cit1c2luZyBDb21wYXJhYmxlTGV0dGVy
c0xpdGVyYWwgPSBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPEFTQ0lJU3Vic2V0OjpOb1Vw
cGVyY2FzZUxldHRlcnNPcHRpbWl6ZWQ+OworCit0ZW1wbGF0ZTxBU0NJSVN1YnNldCBzdWJzZXQ+
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbDxz
dWJzZXQ+LCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4pOwordGVtcGxhdGU8
QVNDSUlTdWJzZXQgc3Vic2V0PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoQ29tcGFyYWJsZUFT
Q0lJU3Vic2V0TGl0ZXJhbDxzdWJzZXQ+LCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1
YnNldD4pOwogCiBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZVN0cmluZ1ZpZXcsIENvbXBhcmFi
bGVBU0NJSUxpdGVyYWwpOworYm9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVTdHJpbmdWaWV3LCBD
b21wYXJhYmxlQ2FzZUZvbGRpbmdBU0NJSUxpdGVyYWwpOworYm9vbCBvcGVyYXRvcj09KENvbXBh
cmFibGVTdHJpbmdWaWV3LCBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwpOwogYm9vbCBvcGVyYXRv
cjwoQ29tcGFyYWJsZVN0cmluZ1ZpZXcsIENvbXBhcmFibGVBU0NJSUxpdGVyYWwpOwotYm9vbCBv
cGVyYXRvciE9KENvbXBhcmFibGVTdHJpbmdWaWV3LCBDb21wYXJhYmxlQVNDSUlMaXRlcmFsKTsK
LWJvb2wgb3BlcmF0b3I9PShDb21wYXJhYmxlQVNDSUlMaXRlcmFsLCBDb21wYXJhYmxlU3RyaW5n
Vmlldyk7Citib29sIG9wZXJhdG9yPChDb21wYXJhYmxlU3RyaW5nVmlldywgQ29tcGFyYWJsZUNh
c2VGb2xkaW5nQVNDSUlMaXRlcmFsKTsKK2Jvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVTdHJpbmdW
aWV3LCBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwpOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhl
clR5cGU+IGJvb2wgb3BlcmF0b3I9PShPdGhlclR5cGUsIENvbXBhcmFibGVTdHJpbmdWaWV3KTsK
K3RlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZT4gYm9vbCBvcGVyYXRvciE9KENvbXBhcmFibGVT
dHJpbmdWaWV3LCBPdGhlclR5cGUpOworCit0ZW1wbGF0ZTxBU0NJSVN1YnNldCBzdWJzZXQ+IGNv
bnN0ZXhwciBib29sIGlzSW5TdWJzZXQoY2hhciBjaGFyYWN0ZXIpCit7CisgICAgaWYgKCEoY2hh
cmFjdGVyICYmIGlzQVNDSUkoY2hhcmFjdGVyKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBzd2l0Y2ggKHN1YnNldCkgeworICAgIGNhc2UgQVNDSUlTdWJzZXQ6OkFsbDoKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgY2FzZSBBU0NJSVN1YnNldDo6Tm9VcHBlcmNhc2VMZXR0ZXJzOgor
ICAgICAgICByZXR1cm4gIWlzQVNDSUlVcHBlcihjaGFyYWN0ZXIpOworICAgIGNhc2UgQVNDSUlT
dWJzZXQ6Ok5vVXBwZXJjYXNlTGV0dGVyc09wdGltaXplZDoKKyAgICAgICAgcmV0dXJuIGNoYXJh
Y3RlciA9PSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKTsKKyAgICB9Cit9CisKKy8v
IEZJWE1FOiBVc2Ugc3RkOjphbGxfb2YgaW5zdGVhZCBvZiB0aGlzIGFuZCByZW1vdmUgaXQsIG9u
Y2Ugd2UgcmVxdWlyZSBDKysyMC4KK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFt
ZSBQcmVkaWNhdGU+IGNvbnN0ZXhwciBib29sIGFsbE9mQ29uc3RFeHByKEl0ZXJhdG9yIGZpcnN0
LCBJdGVyYXRvciBsYXN0LCBQcmVkaWNhdGUgcHJlZGljYXRlKQoreworICAgIGZvciAoOyBmaXJz
dCAhPSBsYXN0OyArK2ZpcnN0KSB7CisgICAgICAgIGlmICghcHJlZGljYXRlKCpmaXJzdCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit0
ZW1wbGF0ZTxBU0NJSVN1YnNldCBzdWJzZXQ+IHRlbXBsYXRlPHN0ZDo6c2l6ZV90IHNpemU+IGNv
bnN0ZXhwciBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD46OkNvbXBhcmFibGVB
U0NJSVN1YnNldExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW3NpemVdKQorICAgIDog
bGl0ZXJhbCB7IEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2hhcmFjdGVycykgfQor
eworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChhbGxPZkNvbnN0RXhwcigmY2hh
cmFjdGVyc1swXSwgJmNoYXJhY3RlcnNbc2l6ZSAtIDFdLCBbXSAoY2hhciBjaGFyYWN0ZXIpIHsK
KyAgICAgICAgcmV0dXJuIGlzSW5TdWJzZXQ8c3Vic2V0PihjaGFyYWN0ZXIpOworICAgIH0pKTsK
KyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoIWNoYXJhY3RlcnNbc2l6ZSAtIDFd
KTsKK30KIAogLy8gRklYTUU6IFVzZSBzdGQ6OmlzX3NvcnRlZCBpbnN0ZWFkIG9mIHRoaXMgYW5k
IHJlbW92ZSBpdCwgb25jZSB3ZSByZXF1aXJlIEMrKzIwLgotdGVtcGxhdGU8dHlwZW5hbWUgSXRl
cmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4gY29uc3RleHByIGJvb2wgaXNTb3J0ZWRDb25zdEV4
cHIoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCwgUHJlZGljYXRlIHByZWRpY2F0ZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+IGNvbnN0ZXhwciBi
b29sIGlzU29ydGVkQ29uc3RFeHByKEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LCBQcmVk
aWNhdGUgcHJlZGljYXRlKQogewotICAgIGlmIChiZWdpbiA9PSBlbmQpCisgICAgaWYgKGZpcnN0
ID09IGxhc3QpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8gY3VycmVudCA9IGJlZ2lu
OworICAgIGF1dG8gY3VycmVudCA9IGZpcnN0OwogICAgIGF1dG8gcHJldmlvdXMgPSBjdXJyZW50
OwotICAgIHdoaWxlICgrK2N1cnJlbnQgIT0gZW5kKSB7CisgICAgd2hpbGUgKCsrY3VycmVudCAh
PSBsYXN0KSB7CiAgICAgICAgIGlmICghcHJlZGljYXRlKCpwcmV2aW91cywgKmN1cnJlbnQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7CkBA
IC04NSw2ICsxNDAsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFBy
ZWRpY2F0ZT4gY29uc3RleHByIGJvb2wgaXNTb3J0ZWRDb25zdEV4cHIKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorLy8gRklYTUU6IFVzZSBzdGQ6OmlzX3NvcnRlZCBpbnN0ZWFkIG9mIHRoaXMgYW5k
IHJlbW92ZSBpdCwgb25jZSB3ZSByZXF1aXJlIEMrKzIwLgordGVtcGxhdGU8dHlwZW5hbWUgSXRl
cmF0b3I+IGNvbnN0ZXhwciBib29sIGlzU29ydGVkQ29uc3RFeHByKEl0ZXJhdG9yIGZpcnN0LCBJ
dGVyYXRvciBsYXN0KQoreworICAgIHJldHVybiBpc1NvcnRlZENvbnN0RXhwcihmaXJzdCwgbGFz
dCwgW10gKGF1dG8mIGEsIGF1dG8mIGIpIHsgcmV0dXJuIGEgPCBiOyB9KTsKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgQXJyYXlUeXBlPiBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXA8QXJyYXlUeXBl
Pjo6U29ydGVkQXJyYXlNYXAoY29uc3QgQXJyYXlUeXBlJiBhcnJheSkKICAgICA6IG1fYXJyYXkg
eyBhcnJheSB9CiB7CkBAIC0xMTIsNiArMTczLDIzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEFycmF5
VHlwZT4gdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJndW1lbnQ+IGlubGluZSBhdXRvIFNvcnRlZEFy
CiAgICAgcmV0dXJuIHJlc3VsdCA/ICpyZXN1bHQgOiBkZWZhdWx0VmFsdWU7CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEFycmF5VHlwZT4gY29uc3RleHByIFNvcnRlZEFycmF5U2V0PEFycmF5VHlw
ZT46OlNvcnRlZEFycmF5U2V0KGNvbnN0IEFycmF5VHlwZSYgYXJyYXkpCisgICAgOiBtX2FycmF5
IHsgYXJyYXkgfQoreworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChpc1NvcnRl
ZENvbnN0RXhwcihzdGQ6OmJlZ2luKGFycmF5KSwgc3RkOjplbmQoYXJyYXkpKSk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEFycmF5VHlwZT4gdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJndW1lbnQ+
IGlubGluZSBib29sIFNvcnRlZEFycmF5U2V0PEFycmF5VHlwZT46OmNvbnRhaW5zKGNvbnN0IEtl
eUFyZ3VtZW50JiBrZXkpIGNvbnN0Cit7CisgICAgdXNpbmcgRWxlbWVudFR5cGUgPSB0eXBlbmFt
ZSBzdGQ6OnJlbW92ZV9leHRlbnRfdDxBcnJheVR5cGU+OworICAgIGF1dG8gcGFyc2VkS2V5ID0g
RWxlbWVudFR5cGU6OnBhcnNlKGtleSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBlbmhhbmNl
IHRyeUJpbmFyeVNlYXJjaCBzbyBpdCBjYW4gZGVkdWNlIEVsZW1lbnRUeXBlLgorICAgIC8vIEZJ
WE1FOiBJZiB0aGUgYXJyYXkncyBzaXplIGlzIHNtYWxsIGVub3VnaCwgc2hvdWxkIGRvIGxpbmVh
ciBzZWFyY2ggc2luY2UgaXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBiaW5hcnkgc2VhcmNoLgor
ICAgIHJldHVybiBwYXJzZWRLZXkgJiYgdHJ5QmluYXJ5U2VhcmNoPEVsZW1lbnRUeXBlPihtX2Fy
cmF5LCBzdGQ6OnNpemUobV9hcnJheSksICpwYXJzZWRLZXksIFtdIChhdXRvKiBlbGVtZW50KSB7
CisgICAgICAgIHJldHVybiAqZWxlbWVudDsKKyAgICB9KTsKK30KKwogY29uc3RleHByIGludCBz
dHJjbXBDb25zdEV4cHIoY29uc3QgY2hhciogYSwgY29uc3QgY2hhciogYikKIHsKICAgICB3aGls
ZSAoKmEgPT0gKmIgJiYgKmEgJiYgKmIpIHsKQEAgLTEyMSwxNCArMTk5LDMzIEBAIGNvbnN0ZXhw
ciBpbnQgc3RyY21wQ29uc3RFeHByKGNvbnN0IGNoYXIqIGEsIGNvbnN0IGNoYXIqIGIpCiAgICAg
cmV0dXJuICphID09ICpiID8gMCA6ICphIDwgKmIgPyAtMSA6IDE7CiB9CiAKLWNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBhLCBDb21wYXJhYmxlQVNDSUlM
aXRlcmFsIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBs
ZXNzVGhhbkFTQ0lJQ2FzZUZvbGRpbmcoY29uc3QgQ2hhcmFjdGVyVHlwZSogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyKiBsaXRlcmFsV2l0aE5vVXBwZXJjYXNlKQogewot
ICAgIHJldHVybiAhc3RyY21wQ29uc3RFeHByKGEubGl0ZXJhbCwgYi5saXRlcmFsKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFsaXRl
cmFsV2l0aE5vVXBwZXJjYXNlW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBhdXRvIGNoYXJhY3RlciA9IHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJzW2ldKTsKKyAgICAgICAg
aWYgKGNoYXJhY3RlciAhPSBsaXRlcmFsV2l0aE5vVXBwZXJjYXNlW2ldKQorICAgICAgICAgICAg
cmV0dXJuIGNoYXJhY3RlciA8IGxpdGVyYWxXaXRoTm9VcHBlcmNhc2VbaV07CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBsZXNzVGhhbkFTQ0lJQ2FzZUZvbGRpbmco
U3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IGNoYXIqIGxpdGVyYWxXaXRoTm9VcHBlcmNhc2UpCit7
CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGxlc3NUaGFuQVNDSUlD
YXNlRm9sZGluZyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpLCBsaXRlcmFs
V2l0aE5vVXBwZXJjYXNlKTsKKyAgICByZXR1cm4gbGVzc1RoYW5BU0NJSUNhc2VGb2xkaW5nKHN0
cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBsaXRlcmFsV2l0aE5vVXBwZXJj
YXNlKTsKIH0KIAotY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVBU0NJSUxpdGVy
YWwgYSwgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBiKQordGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vi
c2V0PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVy
YWw8c3Vic2V0PiBhLCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4gYikKIHsK
LSAgICByZXR1cm4gc3RyY21wQ29uc3RFeHByKGEubGl0ZXJhbCwgYi5saXRlcmFsKSA8IDA7Cisg
ICAgcmV0dXJuICFzdHJjbXBDb25zdEV4cHIoYS5saXRlcmFsLmNoYXJhY3RlcnMoKSwgYi5saXRl
cmFsLmNoYXJhY3RlcnMoKSk7Cit9CisKK3RlbXBsYXRlPEFTQ0lJU3Vic2V0IHN1YnNldD4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWw8c3Vic2V0
PiBhLCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4gYikKK3sKKyAgICByZXR1
cm4gc3RyY21wQ29uc3RFeHByKGEubGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGIubGl0ZXJhbC5jaGFy
YWN0ZXJzKCkpIDwgMDsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShDb21wYXJhYmxlU3Ry
aW5nVmlldyBhLCBDb21wYXJhYmxlQVNDSUlMaXRlcmFsIGIpCkBAIC0xMzgsMjAgKzIzNSw0NSBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFi
bGVBU0NJSUxpdGVyYWwgYikKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVTdHJp
bmdWaWV3IGEsIENvbXBhcmFibGVBU0NJSUxpdGVyYWwgYikKIHsKLSAgICByZXR1cm4gY29kZVBv
aW50Q29tcGFyZShhLnN0cmluZywgYi5saXRlcmFsKSA8IDA7CisgICAgcmV0dXJuIGNvZGVQb2lu
dENvbXBhcmUoYS5zdHJpbmcsIGIubGl0ZXJhbC5jaGFyYWN0ZXJzKCkpIDwgMDsKIH0KIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShDb21wYXJhYmxlU3RyaW5nVmlldyBhLCBDb21wYXJhYmxlQVND
SUlMaXRlcmFsIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVTdHJpbmdWaWV3
IGEsIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBiKQogewotICAgIHJldHVybiAhKGEgPT0gYik7
CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlQ29tbW9uV2l0aG91dExl
bmd0aChhLnN0cmluZywgYi5saXRlcmFsKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I8KENv
bXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBiKQoreworICAg
IHJldHVybiBsZXNzVGhhbkFTQ0lJQ2FzZUZvbGRpbmcoYS5zdHJpbmcsIGIubGl0ZXJhbCk7Cit9
CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZVN0cmluZ1ZpZXcgYSwgQ29tcGFy
YWJsZUNhc2VGb2xkaW5nQVNDSUlMaXRlcmFsIGIpCit7CisgICAgcmV0dXJuIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoYS5zdHJpbmcsIGIubGl0ZXJhbCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJh
dG9yPT0oQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBhLCBDb21wYXJhYmxlU3RyaW5nVmlldyBiKQor
aW5saW5lIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFibGVD
YXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBiKQoreworICAgIHJldHVybiBsZXNzVGhhbkFTQ0lJQ2Fz
ZUZvbGRpbmcoYS5zdHJpbmcsIGIubGl0ZXJhbCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIE90
aGVyVHlwZT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShPdGhlclR5cGUgYSwgQ29tcGFyYWJsZVN0
cmluZ1ZpZXcgYikKIHsKICAgICByZXR1cm4gYiA9PSBhOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlclR5cGU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oQ29tcGFyYWJsZVN0cmluZ1ZpZXcg
YSwgT3RoZXJUeXBlIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKwogfQogCit1c2lu
ZyBXVEY6OkFTQ0lJU3Vic2V0OwogdXNpbmcgV1RGOjpDb21wYXJhYmxlQVNDSUlMaXRlcmFsOwor
dXNpbmcgV1RGOjpDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsOwordXNpbmcgV1RGOjpDb21w
YXJhYmxlQ2FzZUZvbGRpbmdBU0NJSUxpdGVyYWw7Cit1c2luZyBXVEY6OkNvbXBhcmFibGVMZXR0
ZXJzTGl0ZXJhbDsKIHVzaW5nIFdURjo6U29ydGVkQXJyYXlNYXA7Cit1c2luZyBXVEY6OlNvcnRl
ZEFycmF5U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNw
cAppbmRleCAyYjBkOGFiZDZjMmI1ZTRmMGVmYjUwZDM3ODJkM2IxOTQ5MGZiMTE1Li4wY2RjNzZh
ZTNjNWMwZWE4OTAzNmEyNWNlNTI4YjJkZmVjZjVmODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTI5LDEwICsyOSwxMyBAQAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRl
ICJUaHJlYWRHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Tb3J0ZWRBcnJheU1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgpAQCAtNjQsMTA4ICs2
Nyw5OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcyA9IHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKLSNpZiBVU0UoQ0cpCi0gICAgICAgIC8vIFRo
aXMgcmVwcmVzZW50cyB0aGUgc3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2UgVVRJcyBmb3Igd2hpY2gg
Q29yZVNlcnZpY2VzIGhhcyBhIGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBlLgotICAgICAgICAiaW1h
Z2UvdGlmZiJfcywKLSAgICAgICAgImltYWdlL2dpZiJfcywKLSAgICAgICAgImltYWdlL2pwZWci
X3MsCi0gICAgICAgICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MsCi0gICAgICAgICJpbWFn
ZS9qcDIiX3MsCi0gICAgICAgICJpbWFnZS9hcG5nIl9zLAotICAgICAgICAiaW1hZ2UvcG5nIl9z
LAotICAgICAgICAiaW1hZ2UvYm1wIl9zLAorc3RhdGljIFN0cmluZyBub3JtYWxpemVkSW1hZ2VN
SU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIAotICAgICAgICAiaW1hZ2UveC1pY29uIl9zLCAvLyBG
YXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdpc3RyeSBlaXRoZXIuCi0g
ICAgICAgICJpbWFnZS9wanBlZyJfcywgLy8gIFdlIG9ubHkgZ2V0IG9uZSBNSU1FIHR5cGUgcGVy
IFVUSSwgaGVuY2Ugb3VyIG5lZWQgdG8gYWRkIHRoZXNlIG1hbnVhbGx5Ci0jaWYgSEFWRShXRUJQ
KQotICAgICAgICAiaW1hZ2Uvd2VicCJfcywKLSNlbmRpZgorLy8gT24gaU9TLCB3ZSBpbmNsdWRl
IG1hbGZvcm1lZCBpbWFnZSBNSU1FIHR5cGVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbC4K
Ky8vIFRoZXNlIHdlcmUgcmVtb3ZlZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1NjQ1Mzg+IFJlLWVu
YWJsZSBVVEkgY29kZSBpbiBXZWJDb3JlIG5vdyB0aGF0CisvLyBNb2JpbGVDb3JlU2VydmljZXMg
ZXhpc3RzLiBCdXQgTWFpbCByZWxpZXMgb24gYXQgbGVhc3QgaW1hZ2UvdGlmIHJlcG9ydGVkIGFz
IGJlaW5nCisvLyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90aWZmKS4gVGhpcyBjYW4gYmUg
cmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgorLy8gPHJkYXI6Ly9wcm9ibGVtLzc4Nzk1MTA+
IE1haWwgc2hvdWxkIHVzZSBzdGFuZGFyZCBpbWFnZSBtaW1ldHlwZXMKKy8vIGFuZCB3ZSBmaXgg
c25pZmZpbmcgc28gdGhhdCBpdCBjb3JyZWN0cyBpdGVtcyBzdWNoIGFzIGltYWdlL2pwZyAtPiBp
bWFnZS9qcGVnLgorY29uc3RleHByIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBz
dXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXlbXSA9IHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQotICAgICAgICAvLyBBZGQgbWFsZm9ybWVkIGltYWdlIG1pbWV0eXBlIGZvciBjb21wYXRpYmls
aXR5IHdpdGggTWFpbCBhbmQgdG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1ldHlwZXMgZnJvbSB0aGUg
bmV0Ci0gICAgICAgIC8vIFRoZXNlIHdlcmUgcmVtb3ZlZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzY1
NjQ1Mzg+IFJlLWVuYWJsZSBVVEkgY29kZSBpbiBXZWJDb3JlIG5vdyB0aGF0IE1vYmlsZUNvcmVT
ZXJ2aWNlcyBleGlzdHMKLSAgICAgICAgLy8gQnV0IE1haWwgcmVsaWVzIG9uIGF0IGxlYXN0IGlt
YWdlL3RpZiByZXBvcnRlZCBhcyBiZWluZyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90aWZm
KS4KLSAgICAgICAgLy8gVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgot
ICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzg3OTUxMD4gTWFpbCBzaG91bGQgdXNlIHN0YW5k
YXJkIGltYWdlIG1pbWV0eXBlcwotICAgICAgICAvLyBhbmQgd2UgZml4IHNuaWZmaW5nIHNvIHRo
YXQgaXQgY29ycmVjdHMgaXRlbXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4gaW1hZ2UvanBlZy4KLQot
ICAgICAgICAvLyBKUEVHIChpbWFnZS9qcGVnKQotICAgICAgICAiaW1hZ2UvanBnIl9zLAotICAg
ICAgICAiaW1hZ2UvanBfIl9zLAotICAgICAgICAiaW1hZ2UvanBlXyJfcywKLSAgICAgICAgImFw
cGxpY2F0aW9uL2pwZyJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtanBnIl9zLAotICAgICAg
ICAiaW1hZ2UvcGlwZWciX3MsCi0gICAgICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciX3Ms
Ci0gICAgICAgICJpbWFnZS94LXhiaXRtYXAiX3MsCi0KLSAgICAgICAgLy8gR0lGIChpbWFnZS9n
aWYpCi0gICAgICAgICJpbWFnZS9naV8iX3MsCi0KLSAgICAgICAgLy8gUE5HIChpbWFnZS9wbmcp
Ci0gICAgICAgICJhcHBsaWNhdGlvbi9wbmciX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LXBu
ZyJfcywKLQotICAgICAgICAvLyBUSUZGIChpbWFnZS90aWZmKQotICAgICAgICAiaW1hZ2UveC10
aWYiX3MsCi0gICAgICAgICJpbWFnZS90aWYiX3MsCi0gICAgICAgICJpbWFnZS94LXRpZmYiX3Ms
Ci0gICAgICAgICJhcHBsaWNhdGlvbi90aWYiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LXRp
ZiJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL3RpZmYiX3MsCi0gICAgICAgICJhcHBsaWNhdGlv
bi94LXRpZmYiX3MsCi0KLSAgICAgICAgLy8gQk1QIChpbWFnZS9ibXAsIGltYWdlL3gtYml0bWFw
KQotICAgICAgICAiaW1hZ2UveC1ibXAiX3MsCi0gICAgICAgICJpbWFnZS94LXdpbi1iaXRtYXAi
X3MsCi0gICAgICAgICJpbWFnZS94LXdpbmRvd3MtYm1wIl9zLAotICAgICAgICAiaW1hZ2UvbXMt
Ym1wIl9zLAotICAgICAgICAiaW1hZ2UveC1tcy1ibXAiX3MsCi0gICAgICAgICJhcHBsaWNhdGlv
bi9ibXAiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LWJtcCJfcywKLSAgICAgICAgImFwcGxp
Y2F0aW9uL3gtd2luLWJpdG1hcCJfcywKKyAgICAiYXBwbGljYXRpb24vYm1wIiwKKyAgICAiYXBw
bGljYXRpb24vanBnIiwKKyAgICAiYXBwbGljYXRpb24vcG5nIiwKKyAgICAiYXBwbGljYXRpb24v
dGlmIiwKKyAgICAiYXBwbGljYXRpb24vdGlmZiIsCisgICAgImFwcGxpY2F0aW9uL3gtYm1wIiwK
KyAgICAiYXBwbGljYXRpb24veC1qcGciLAorICAgICJhcHBsaWNhdGlvbi94LXBuZyIsCisgICAg
ImFwcGxpY2F0aW9uL3gtdGlmIiwKKyAgICAiYXBwbGljYXRpb24veC10aWZmIiwKKyAgICAiYXBw
bGljYXRpb24veC13aW4tYml0bWFwIiwKICNlbmRpZgotI2Vsc2UKLSAgICAgICAgLy8gYXNzdW1l
IHRoYXQgYWxsIGltcGxlbWVudGF0aW9ucyBhdCBsZWFzdCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcg
c3RhbmRhcmQKLSAgICAgICAgLy8gaW1hZ2UgdHlwZXM6Ci0gICAgICAgICJpbWFnZS9qcGVnIl9z
LAotICAgICAgICAiaW1hZ2UvcG5nIl9zLAotICAgICAgICAiaW1hZ2UvZ2lmIl9zLAotICAgICAg
ICAiaW1hZ2UvYm1wIl9zLAotICAgICAgICAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zLCAv
LyBpY28KLSAgICAgICAgImltYWdlL3gtaWNvbiJfcywgLy8gaWNvCi0gICAgICAgICJpbWFnZS94
LXhiaXRtYXAiX3MsIC8vIHhibQotI2lmIEVOQUJMRShBUE5HKQotICAgICAgICAiaW1hZ2UvYXBu
ZyJfcywKKyNpZiBVU0UoQ0cpIHx8IEVOQUJMRShBUE5HKQorICAgICJpbWFnZS9hcG5nIiwKICNl
bmRpZgogI2lmIFVTRShBVklGKQotICAgICAgICAiaW1hZ2UvYXZpZiJfcywKKyAgICAiaW1hZ2Uv
YXZpZiIsCisjZW5kaWYKKyAgICAiaW1hZ2UvYm1wIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorICAgICJpbWFnZS9naV8iLAogI2VuZGlmCi0jaWYgVVNFKE9QRU5KUEVHKQotICAgICAgICAi
aW1hZ2UvanAyIl9zLAotICAgICAgICAiaW1hZ2UvanBlZzIwMDAiX3MsCisgICAgImltYWdlL2dp
ZiIsCisjaWYgVVNFKENHKSB8fCBVU0UoT1BFTkpQRUcpCisgICAgImltYWdlL2pwMiIsCiAjZW5k
aWYKLSNpZiBVU0UoV0VCUCkKLSAgICAgICAgImltYWdlL3dlYnAiX3MsCisjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICAiaW1hZ2UvanBfIiwKKyAgICAiaW1hZ2UvanBlXyIsCiAjZW5kaWYK
KyAgICAiaW1hZ2UvanBlZyIsCisjaWYgIVVTRShDRykgJiYgVVNFKE9QRU5KUEVHKQorICAgICJp
bWFnZS9qcGVnMjAwMCIsCisjZW5kaWYKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgICJp
bWFnZS9tcy1ibXAiLAorICAgICJpbWFnZS9waXBlZyIsCiAjZW5kaWYKLSAgICB9OwotCiAjaWYg
VVNFKENHKQotI2lmbmRlZiBOREVCVUcKLSAgICAvLyBFc251cmUgc3VwcG9ydGVkSW1hZ2VNSU1F
VHlwZXMoKSBpcyBpbiBzeW5jIHdpdGggZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlwZXMoKS4KLSAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2Uob25j
ZUZsYWcsIFtdIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVR5cGUgOiBkZWZhdWx0U3VwcG9y
dGVkSW1hZ2VUeXBlcygpKSB7Ci0gICAgICAgICAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVG
b3JJbWFnZVR5cGUoaW1hZ2VUeXBlKTsKLSAgICAgICAgICAgIEFTU0VSVF9JTVBMSUVTKCFtaW1l
VHlwZS5pc0VtcHR5KCksIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLmdldCgpLmNvbnRhaW5zKG1p
bWVUeXBlKSk7Ci0gICAgICAgIH0KLSAgICB9KTsKKyAgICAiaW1hZ2UvcGpwZWciLAorI2VuZGlm
CisgICAgImltYWdlL3BuZyIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAiaW1hZ2Uv
dGlmIiwKKyNlbmRpZgorI2lmIFVTRShDRykKKyAgICAiaW1hZ2UvdGlmZiIsCisjZW5kaWYKKyAg
ICAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciLAogI2VuZGlmCisjaWYgKFVTRShDRykgJiYg
SEFWRShXRUJQKSkgfHwgKCFVU0UoQ0cpICYmIFVTRShXRUJQKSkKKyAgICAiaW1hZ2Uvd2VicCIs
CiAjZW5kaWYKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXM7CisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICAiaW1hZ2UveC1ibXAiLAorI2VuZGlmCisgICAgImltYWdlL3gt
aWNvbiIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAiaW1hZ2UveC1tcy1ibXAiLAor
ICAgICJpbWFnZS94LXRpZiIsCisgICAgImltYWdlL3gtdGlmZiIsCisgICAgImltYWdlL3gtd2lu
LWJpdG1hcCIsCisgICAgImltYWdlL3gtd2luZG93cy1ibXAiLAorI2VuZGlmCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgfHwgIVVTRShDRykKKyAgICAiaW1hZ2UveC14Yml0bWFwIiwKKyNlbmRp
ZgorfTsKKwordGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0LCB1bnNpZ25lZCBzaXplPiBzdGF0
aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IG1ha2VGaXhlZFZlY3Rvcihjb25zdCBDb21wYXJh
YmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4gKCZhcnJheSlbc2l6ZV0pCit7CisgICAgRml4
ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHJlc3VsdChzdGQ6OnNpemUoYXJyYXkpKTsKKyAgICBzdGQ6
OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGFycmF5KSwgc3RkOjplbmQoYXJyYXkpLCByZXN1bHQuYmVn
aW4oKSwgW10gKGF1dG8gbGl0ZXJhbCkgeworICAgICAgICByZXR1cm4gbGl0ZXJhbC5saXRlcmFs
OworICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0ZpeGVkVmVjdG9yPGNvbnN0IGNo
YXIqPiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCit7CisgICAg
cmV0dXJuIG1ha2VGaXhlZFZlY3RvcihzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXkpOwogfQog
CiBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdp
c3RyeTo6YWRkaXRpb25hbFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkKQEAgLTE3NCwyOSArMTY4
LDI1IEBAIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlw
ZVJlZ2lzdHJ5OjphZGRpdGlvbmFsU3VwcG9ydGVkCiAgICAgcmV0dXJuIGFkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlczsKIH0KIAotc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCkK
LXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4+IHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMgPSBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCi0gICAg
ICAgICJ0ZXh0L2phdmFzY3JpcHQiX3MsCi0gICAgICAgICJ0ZXh0L2VjbWFzY3JpcHQiX3MsCi0g
ICAgICAgICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zLAotICAgICAgICAiYXBwbGljYXRpb24v
ZWNtYXNjcmlwdCJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcywKLSAg
ICAgICAgImFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJfcywKLSAgICAgICAgInRleHQvamF2YXNj
cmlwdDEuMCJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMSJfcywKLSAgICAgICAgInRl
eHQvamF2YXNjcmlwdDEuMiJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyJfcywKLSAg
ICAgICAgInRleHQvamF2YXNjcmlwdDEuNCJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEu
NSJfcywKLSAgICAgICAgInRleHQvanNjcmlwdCJfcywKLSAgICAgICAgInRleHQvbGl2ZXNjcmlw
dCJfcywKLSAgICAgICAgInRleHQveC1qYXZhc2NyaXB0Il9zLAotICAgICAgICAidGV4dC94LWVj
bWFzY3JpcHQiX3MsCi0gICAgfTsKLSAgICByZXR1cm4gc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVU
eXBlczsKLX0KKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3Njcmlw
dGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCitjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRl
cnNMaXRlcmFsIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZUFycmF5W10gPSB7CisgICAgImFw
cGxpY2F0aW9uL2VjbWFzY3JpcHQiLAorICAgICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKKyAg
ICAiYXBwbGljYXRpb24veC1lY21hc2NyaXB0IiwKKyAgICAiYXBwbGljYXRpb24veC1qYXZhc2Ny
aXB0IiwKKyAgICAidGV4dC9lY21hc2NyaXB0IiwKKyAgICAidGV4dC9qYXZhc2NyaXB0IiwKKyAg
ICAidGV4dC9qYXZhc2NyaXB0MS4wIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4xIiwKKyAgICAi
dGV4dC9qYXZhc2NyaXB0MS4yIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4zIiwKKyAgICAidGV4
dC9qYXZhc2NyaXB0MS40IiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS41IiwKKyAgICAidGV4dC9q
c2NyaXB0IiwKKyAgICAidGV4dC9saXZlc2NyaXB0IiwKKyAgICAidGV4dC94LWVjbWFzY3JpcHQi
LAorICAgICJ0ZXh0L3gtamF2YXNjcmlwdCIsCit9OwogCiBIYXNoU2V0PFN0cmluZywgQVNDSUlD
YXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VN
SU1FVHlwZXMoKQogewpAQCAtMjIzLDcgKzIxMyw4IEBAIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25JbWFnZU1J
CiAgICAgICAgIC8vIE5vdGU6IEFkZGluZyBhIG5ldyB0eXBlIGhlcmUgd2lsbCBwcm9iYWJseSBy
ZW5kZXIgaXQgYXMgSFRNTC4KICAgICAgICAgLy8gVGhpcyBjYW4gcmVzdWx0IGluIGNyb3NzLXNp
dGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4KICAgICAgICAgfTsKLSAgICAgICAgc3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXMuYWRkKHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMoKS5i
ZWdpbigpLCBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCkuZW5kKCkpOworICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVBcnJheSkKKyAgICAg
ICAgICAgIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzLmFkZCh0eXBlLmxpdGVyYWwpOwogI2lm
IEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgICAgICBBcmNoaXZlRmFj
dG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoc3VwcG9ydGVkTm9uSW1hZ2VNSU1F
VHlwZXMpOwogI2VuZGlmCkBAIC0yNDQsMTIzICsyMzUsNDAgQEAgY29uc3QgSGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRl
ZE1lZGkKICAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7CiB9CiAKLWNvbnN0IEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5
OjpwZGZNSU1FVHlwZXMoKQorY29uc3RleHByIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBwZGZN
SU1FVHlwZUFycmF5W10gPSB7CisgICAgImFwcGxpY2F0aW9uL3BkZiIsCisgICAgInRleHQvcGRm
IiwKK307CisKK0ZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZN
SU1FVHlwZXMoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywg
QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gcGRmTUlNRVR5cGVzID0gc3RkOjppbml0aWFsaXpl
cl9saXN0PFN0cmluZz4gewotICAgICAgICAiYXBwbGljYXRpb24vcGRmIl9zLAotICAgICAgICAi
dGV4dC9wZGYiX3MsCi0gICAgfTsKLSAgICByZXR1cm4gcGRmTUlNRVR5cGVzOwotfQotCi1jb25z
dCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdp
c3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHVuc3VwcG9y
dGVkVGV4dE1JTUVUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKLSAgICAg
ICAgInRleHQvY2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtY2FsZW5kYXIiX3MsCi0gICAg
ICAgICJ0ZXh0L3gtdmNhbGVuZGFyIl9zLAotICAgICAgICAidGV4dC92Y2FsZW5kYXIiX3MsCi0g
ICAgICAgICJ0ZXh0L3ZjYXJkIl9zLAotICAgICAgICAidGV4dC94LXZjYXJkIl9zLAotICAgICAg
ICAidGV4dC9kaXJlY3RvcnkiX3MsCi0gICAgICAgICJ0ZXh0L2xkaWYiX3MsCi0gICAgICAgICJ0
ZXh0L3FpZiJfcywKLSAgICAgICAgInRleHQveC1xaWYiX3MsCi0gICAgICAgICJ0ZXh0L3gtY3N2
Il9zLAotICAgICAgICAidGV4dC94LXZjZiJfcywKKyAgICByZXR1cm4gbWFrZUZpeGVkVmVjdG9y
KHBkZk1JTUVUeXBlQXJyYXkpOworfQorCitjb25zdGV4cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRl
cmFsIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlQXJyYXlbXSA9IHsKKyAgICAidGV4dC9jYWxlbmRh
ciIsCisgICAgInRleHQvZGlyZWN0b3J5IiwKKyAgICAidGV4dC9sZGlmIiwKKyAgICAidGV4dC9x
aWYiLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAidGV4dC9ydGYiX3MsCi0j
ZWxzZQotICAgICAgICAidGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2NyaXB0b3IiX3MsCisgICAg
InRleHQvcnRmIiwKICNlbmRpZgotICAgIH07Ci0gICAgcmV0dXJuIHVuc3VwcG9ydGVkVGV4dE1J
TUVUeXBlczsKLX0KLQotY29uc3Qgc3RkOjppbml0aWFsaXplcl9saXN0PFR5cGVFeHRlbnNpb25Q
YWlyPiYgY29tbW9uTWVkaWFUeXBlcygpCi17Ci0gICAgLy8gQSB0YWJsZSBvZiBjb21tb24gbWVk
aWEgTUlNRSB0eXBlcyBhbmQgZmlsZSBleHRlbnNpb25zIHVzZWQgd2hlbiBhIHBsYXRmb3JtJ3MK
LSAgICAvLyBzcGVjaWZpYyBNSU1FIHR5cGUgbG9va3VwIGRvZXNuJ3QgaGF2ZSBhIG1hdGNoIGZv
ciBhIG1lZGlhIGZpbGUgZXh0ZW5zaW9uLgotICAgIHN0YXRpYyBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VHlwZUV4dGVuc2lvblBhaXI+IGNvbW1vbk1lZGlhVHlwZXMgPSB7Ci0gICAgICAgIC8vIE9n
ZwotICAgICAgICB7ICJhcHBsaWNhdGlvbi9vZ2ciX3MsICJvZ3giX3MgfSwKLSAgICAgICAgeyAi
YXVkaW8vb2dnIl9zLCAib2dnIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvL29nZyJfcywgIm9nYSJf
cyB9LAotICAgICAgICB7ICJ2aWRlby9vZ2ciX3MsICJvZ3YiX3MgfSwKLQotICAgICAgICAvLyBB
bm5vZGV4Ci0gICAgICAgIHsgImFwcGxpY2F0aW9uL2Fubm9kZXgiX3MsICJhbngiX3MgfSwKLSAg
ICAgICAgeyAiYXVkaW8vYW5ub2RleCJfcywgImF4YSJfcyB9LAotICAgICAgICB7ICJ2aWRlby9h
bm5vZGV4Il9zLCAiYXh2Il9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3NwZWV4Il9zLCAic3B4Il9z
IH0sCi0KLSAgICAgICAgLy8gV2ViTQotICAgICAgICB7ICJ2aWRlby93ZWJtIl9zLCAid2VibSJf
cyB9LAotICAgICAgICB7ICJhdWRpby93ZWJtIl9zLCAid2VibSJfcyB9LAotCi0gICAgICAgIC8v
IE1QRUcKLSAgICAgICAgeyAiYXVkaW8vbXBlZyJfcywgIm0xYSJfcyB9LAotICAgICAgICB7ICJh
dWRpby9tcGVnIl9zLCAibTJhIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvL21wZWciX3MsICJtMXMi
X3MgfSwKLSAgICAgICAgeyAiYXVkaW8vbXBlZyJfcywgIm1wYSJfcyB9LAotICAgICAgICB7ICJ2
aWRlby9tcGVnIl9zLCAibXBnIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWciX3MsICJtMTUi
X3MgfSwKLSAgICAgICAgeyAidmlkZW8vbXBlZyJfcywgIm0xcyJfcyB9LAotICAgICAgICB7ICJ2
aWRlby9tcGVnIl9zLCAibTF2Il9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWciX3MsICJtNzUi
X3MgfSwKLSAgICAgICAgeyAidmlkZW8vbXBlZyJfcywgIm1wYSJfcyB9LAotICAgICAgICB7ICJ2
aWRlby9tcGVnIl9zLCAibXBlZyJfcyB9LAotICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBt
Il9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWciX3MsICJtcHYiX3MgfSwKLQotICAgICAgICAv
LyBNUEVHIHBsYXlsaXN0Ci0gICAgICAgIHsgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJs
Il9zLCAibTN1OCJfcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9tcGVndXJsIl9zLCAibTN1
OCJfcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi94LW1wZWd1cmwiX3MsICJtM3U4Il9zIH0s
Ci0gICAgICAgIHsgImF1ZGlvL21wZWd1cmwiX3MsICJtM3VybCJfcyB9LAotICAgICAgICB7ICJh
dWRpby94LW1wZWd1cmwiX3MsICJtM3VybCJfcyB9LAotICAgICAgICB7ICJhdWRpby9tcGVndXJs
Il9zLCAibTN1Il9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3gtbXBlZ3VybCJfcywgIm0zdSJfcyB9
LAotCi0gICAgICAgIC8vIE1QRUctNAotICAgICAgICB7ICJ2aWRlby94LW00diJfcywgIm00diJf
cyB9LAotICAgICAgICB7ICJhdWRpby94LW00YSJfcywgIm00YSJfcyB9LAotICAgICAgICB7ICJh
dWRpby94LW00YiJfcywgIm00YiJfcyB9LAotICAgICAgICB7ICJhdWRpby94LW00cCJfcywgIm00
cCJfcyB9LAotICAgICAgICB7ICJhdWRpby9tcDQiX3MsICJtNGEiX3MgfSwKLQotICAgICAgICAv
LyBNUDMKLSAgICAgICAgeyAiYXVkaW8vbXAzIl9zLCAibXAzIl9zIH0sCi0gICAgICAgIHsgImF1
ZGlvL3gtbXAzIl9zLCAibXAzIl9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3gtbXBlZyJfcywgIm1w
MyJfcyB9LAotCi0gICAgICAgIC8vIE1QRUctMgotICAgICAgICB7ICJ2aWRlby94LW1wZWcyIl9z
LCAibXAyIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWcyIl9zLCAidm9iIl9zIH0sCi0gICAg
ICAgIHsgInZpZGVvL21wZWcyIl9zLCAibW9kIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL20ydHMi
X3MsICJtMnRzIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL3gtbTJ0cyJfcywgIm0ydCJfcyB9LAot
ICAgICAgICB7ICJ2aWRlby94LW0ydHMiX3MsICJ0cyJfcyB9LAotCi0gICAgICAgIC8vIDNHUC8z
R1AyCi0gICAgICAgIHsgImF1ZGlvLzNncHAiX3MsICIzZ3BwIl9zIH0sCi0gICAgICAgIHsgImF1
ZGlvLzNncHAyIl9zLCAiM2cyIl9zIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL3gtbXBlZyJf
cywgImFtYyJfcyB9LAotCi0gICAgICAgIC8vIEFBQwotICAgICAgICB7ICJhdWRpby9hYWMiX3Ms
ICJhYWMiX3MgfSwKLSAgICAgICAgeyAiYXVkaW8vYWFjIl9zLCAiYWR0cyJfcyB9LAotICAgICAg
ICB7ICJhdWRpby94LWFhYyJfcywgIm00ciJfcyB9LAotCi0gICAgICAgIC8vIENvcmVBdWRpbyBG
aWxlCi0gICAgICAgIHsgImF1ZGlvL3gtY2FmIl9zLCAiY2FmIl9zIH0sCi0gICAgICAgIHsgImF1
ZGlvL3gtZ3NtIl9zLCAiZ3NtIl9zIH0sCi0KLSAgICAgICAgLy8gQURQQ00KLSAgICAgICAgeyAi
YXVkaW8veC13YXYiX3MsICJ3YXYiX3MgfSwKLSAgICAgICAgeyAiYXVkaW8vdm5kLndhdmUiX3Ms
ICJ3YXYiX3MgfSwKLSAgICB9OwotICAgIHJldHVybiBjb21tb25NZWRpYVR5cGVzOworICAgICJ0
ZXh0L3ZjYWxlbmRhciIsCisgICAgInRleHQvdmNhcmQiLAorI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yIiwKKyNlbmRpZgorICAg
ICJ0ZXh0L3gtY2FsZW5kYXIiLAorICAgICJ0ZXh0L3gtY3N2IiwKKyAgICAidGV4dC94LXFpZiIs
CisgICAgInRleHQveC12Y2FsZW5kYXIiLAorICAgICJ0ZXh0L3gtdmNhcmQiLAorICAgICJ0ZXh0
L3gtdmNmIiwKK307CisKK0ZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5
Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKQoreworICAgIHJldHVybiBtYWtlRml4ZWRWZWN0
b3IodW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVBcnJheSk7CiB9CiAKIHN0YXRpYyBjb25zdCBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGNv
bW1vbk1pbWVUeXBlc01hcCgpCkBAIC0zNjgsNyArMjc2LDg4IEBAIHN0YXRpYyBjb25zdCBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGNv
bW1vbk1pCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+LCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+PiBtaW1lVHlwZXNNYXAgPSBbXSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8U3RyaW5nPiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7Ci0gICAgICAgIGZvciAo
YXV0byYgcGFpciA6IGNvbW1vbk1lZGlhVHlwZXMoKSkgeworICAgICAgICAvLyBBIHRhYmxlIG9m
IGNvbW1vbiBtZWRpYSBNSU1FIHR5cGVzIGFuZCBmaWxlIGV4dGVuc2lvbnMgdXNlZCB3aGVuIGEg
cGxhdGZvcm0ncworICAgICAgICAvLyBzcGVjaWZpYyBNSU1FIHR5cGUgbG9va3VwIGRvZXNuJ3Qg
aGF2ZSBhIG1hdGNoIGZvciBhIG1lZGlhIGZpbGUgZXh0ZW5zaW9uLgorICAgICAgICBzdGF0aWMg
Y29uc3RleHByIFR5cGVFeHRlbnNpb25QYWlyIGNvbW1vbk1lZGlhVHlwZXNbXSA9IHsKKyAgICAg
ICAgICAgIC8vIE9nZworICAgICAgICAgICAgeyAiYXBwbGljYXRpb24vb2dnIl9zLCAib2d4Il9z
IH0sCisgICAgICAgICAgICB7ICJhdWRpby9vZ2ciX3MsICJvZ2ciX3MgfSwKKyAgICAgICAgICAg
IHsgImF1ZGlvL29nZyJfcywgIm9nYSJfcyB9LAorICAgICAgICAgICAgeyAidmlkZW8vb2dnIl9z
LCAib2d2Il9zIH0sCisKKyAgICAgICAgICAgIC8vIEFubm9kZXgKKyAgICAgICAgICAgIHsgImFw
cGxpY2F0aW9uL2Fubm9kZXgiX3MsICJhbngiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL2Fu
bm9kZXgiX3MsICJheGEiX3MgfSwKKyAgICAgICAgICAgIHsgInZpZGVvL2Fubm9kZXgiX3MsICJh
eHYiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL3NwZWV4Il9zLCAic3B4Il9zIH0sCisKKyAg
ICAgICAgICAgIC8vIFdlYk0KKyAgICAgICAgICAgIHsgInZpZGVvL3dlYm0iX3MsICJ3ZWJtIl9z
IH0sCisgICAgICAgICAgICB7ICJhdWRpby93ZWJtIl9zLCAid2VibSJfcyB9LAorCisgICAgICAg
ICAgICAvLyBNUEVHCisgICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAibTFhIl9zIH0sCisg
ICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAibTJhIl9zIH0sCisgICAgICAgICAgICB7ICJh
dWRpby9tcGVnIl9zLCAibTFzIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAi
bXBhIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBnIl9zIH0sCisgICAg
ICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTE1Il9zIH0sCisgICAgICAgICAgICB7ICJ2aWRl
by9tcGVnIl9zLCAibTFzIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTF2
Il9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTc1Il9zIH0sCisgICAgICAg
ICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBhIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9t
cGVnIl9zLCAibXBlZyJfcyB9LAorICAgICAgICAgICAgeyAidmlkZW8vbXBlZyJfcywgIm1wbSJf
cyB9LAorICAgICAgICAgICAgeyAidmlkZW8vbXBlZyJfcywgIm1wdiJfcyB9LAorCisgICAgICAg
ICAgICAvLyBNUEVHIHBsYXlsaXN0CisgICAgICAgICAgICB7ICJhcHBsaWNhdGlvbi92bmQuYXBw
bGUubXBlZ3VybCJfcywgIm0zdTgiX3MgfSwKKyAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL21w
ZWd1cmwiX3MsICJtM3U4Il9zIH0sCisgICAgICAgICAgICB7ICJhcHBsaWNhdGlvbi94LW1wZWd1
cmwiX3MsICJtM3U4Il9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby9tcGVndXJsIl9zLCAibTN1
cmwiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL3gtbXBlZ3VybCJfcywgIm0zdXJsIl9zIH0s
CisgICAgICAgICAgICB7ICJhdWRpby9tcGVndXJsIl9zLCAibTN1Il9zIH0sCisgICAgICAgICAg
ICB7ICJhdWRpby94LW1wZWd1cmwiX3MsICJtM3UiX3MgfSwKKworICAgICAgICAgICAgLy8gTVBF
Ry00CisgICAgICAgICAgICB7ICJ2aWRlby94LW00diJfcywgIm00diJfcyB9LAorICAgICAgICAg
ICAgeyAiYXVkaW8veC1tNGEiX3MsICJtNGEiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL3gt
bTRiIl9zLCAibTRiIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby94LW00cCJfcywgIm00cCJf
cyB9LAorICAgICAgICAgICAgeyAiYXVkaW8vbXA0Il9zLCAibTRhIl9zIH0sCisKKyAgICAgICAg
ICAgIC8vIE1QMworICAgICAgICAgICAgeyAiYXVkaW8vbXAzIl9zLCAibXAzIl9zIH0sCisgICAg
ICAgICAgICB7ICJhdWRpby94LW1wMyJfcywgIm1wMyJfcyB9LAorICAgICAgICAgICAgeyAiYXVk
aW8veC1tcGVnIl9zLCAibXAzIl9zIH0sCisKKyAgICAgICAgICAgIC8vIE1QRUctMgorICAgICAg
ICAgICAgeyAidmlkZW8veC1tcGVnMiJfcywgIm1wMiJfcyB9LAorICAgICAgICAgICAgeyAidmlk
ZW8vbXBlZzIiX3MsICJ2b2IiX3MgfSwKKyAgICAgICAgICAgIHsgInZpZGVvL21wZWcyIl9zLCAi
bW9kIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tMnRzIl9zLCAibTJ0cyJfcyB9LAorICAg
ICAgICAgICAgeyAidmlkZW8veC1tMnRzIl9zLCAibTJ0Il9zIH0sCisgICAgICAgICAgICB7ICJ2
aWRlby94LW0ydHMiX3MsICJ0cyJfcyB9LAorCisgICAgICAgICAgICAvLyAzR1AvM0dQMgorICAg
ICAgICAgICAgeyAiYXVkaW8vM2dwcCJfcywgIjNncHAiX3MgfSwKKyAgICAgICAgICAgIHsgImF1
ZGlvLzNncHAyIl9zLCAiM2cyIl9zIH0sCisgICAgICAgICAgICB7ICJhcHBsaWNhdGlvbi94LW1w
ZWciX3MsICJhbWMiX3MgfSwKKworICAgICAgICAgICAgLy8gQUFDCisgICAgICAgICAgICB7ICJh
dWRpby9hYWMiX3MsICJhYWMiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL2FhYyJfcywgImFk
dHMiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL3gtYWFjIl9zLCAibTRyIl9zIH0sCisKKyAg
ICAgICAgICAgIC8vIENvcmVBdWRpbyBGaWxlCisgICAgICAgICAgICB7ICJhdWRpby94LWNhZiJf
cywgImNhZiJfcyB9LAorICAgICAgICAgICAgeyAiYXVkaW8veC1nc20iX3MsICJnc20iX3MgfSwK
KworICAgICAgICAgICAgLy8gQURQQ00KKyAgICAgICAgICAgIHsgImF1ZGlvL3gtd2F2Il9zLCAi
d2F2Il9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby92bmQud2F2ZSJfcywgIndhdiJfcyB9LAor
ICAgICAgICB9OworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb21tb25NZWRpYVR5cGVzKSB7
CiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwgdHlwZSA9IHBhaXIudHlwZTsKICAgICAgICAgICAg
IEFTQ0lJTGl0ZXJhbCBleHRlbnNpb24gPSBwYWlyLmV4dGVuc2lvbjsKICAgICAgICAgICAgIG1h
cC5lbnN1cmUoZXh0ZW5zaW9uLCBbdHlwZSwgZXh0ZW5zaW9uXSB7CkBAIC00MTgsOCArNDA3LDIw
IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZyBub3JtYWxpemVkTUlNRVR5cGUgPSBNSU1FVHlw
ZVJlZ2lzdHJ5Ojpub3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpOwotICAgIHJldHVybiBzdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG5vcm1hbGl6ZWRNSU1FVHlwZSkgfHwgYWRk
aXRpb25hbFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMobm9ybWFsaXplZE1JTUVU
eXBlKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVTZXQgeyBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXkgfTsKKyNpZiBVU0UoQ0cp
ICYmIEFTU0VSVF9FTkFCTEVECisgICAgLy8gRXNudXJlIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVB
cnJheSBtYXRjaGVzIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuCisgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7
CisgICAgICAgIGZvciAoYXV0byYgaW1hZ2VUeXBlIDogZGVmYXVsdFN1cHBvcnRlZEltYWdlVHlw
ZXMoKSkgeworICAgICAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVUeXBlRm9ySW1hZ2VUeXBl
KGltYWdlVHlwZSk7CisgICAgICAgICAgICBBU1NFUlRfSU1QTElFUyghbWltZVR5cGUuaXNFbXB0
eSgpLCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlU2V0LmNvbnRhaW5zKG1pbWVUeXBlKSk7CisgICAg
ICAgIH0KKyAgICB9KTsKKyNlbmRpZgorICAgIGlmIChzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlU2V0
LmNvbnRhaW5zKG1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGFk
ZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG5vcm1hbGl6ZWRJbWFn
ZU1JTUVUeXBlKG1pbWVUeXBlKSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZVZpZGVvT3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAt
NDg2LDE4ICs0ODcsOCBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cAogCiBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiB7Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAgICAgICBib29sIGlzU3VwcG9y
dGVkID0gZmFsc2U7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmaXNTdXBwb3J0
ZWQsIG1pbWVUeXBlID0gbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgICAgIGlz
U3VwcG9ydGVkID0gaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUobWltZVR5cGUpOwotICAg
ICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkOwotICAgIH0KLQotICAgIHJldHVy
biBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVU
eXBlcyB7IHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZUFycmF5IH07CisgICAgcmV0dXJuIHN1
cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29s
IE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkU3R5bGVTaGVldE1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCkBAIC01NzcsOSArNTY4LDggQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZFRleHRUcmFja01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAK
IGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkuY29u
dGFpbnMobWltZVR5cGUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgdW5z
dXBwb3J0ZWRUZXh0TUlNRVR5cGVzIHsgdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVBcnJheSB9Owor
ICAgIHJldHVybiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMuY29udGFpbnMobWltZVR5cGUpOwog
fQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCkBAIC02NDEsMTQgKzYzMSwxMyBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
SmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAKIGJvb2wgTUlNRVR5
cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAg
IGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gcGRmTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOworICAgIHN0YXRpYyBjb25zdGV4
cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgcGRmTUlNRVR5cGVBcnJheSB9OworICAgIHJldHVybiBz
ZXQuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzUG9z
dFNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgcmV0dXJuIG1p
bWVUeXBlID09ICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IjsKKyAgICByZXR1cm4gZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7
CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNjgxLDEwMyArNjcwLDg0IEBAIGNvbnN0IFN0cmlu
ZyYgZGVmYXVsdE1JTUVUeXBlKCkKICAgICByZXR1cm4gZGVmYXVsdE1JTUVUeXBlOwogfQogCi1j
b25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVS
ZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcygpCitjb25zdGV4cHIgQ29tcGFyYWJsZUxl
dHRlcnNMaXRlcmFsIHN5c3RlbVByZXZpZXdNSU1FVHlwZUFycmF5W10gPSB7CisgICAgIm1vZGVs
L3VzZCIsIC8vIFVub2ZmaWNpYWwsIGJ1dCBzdXBwb3J0ZWQgYmVjYXVzZSB3ZSBkb2N1bWVudGVk
IHRoaXMuCisgICAgIm1vZGVsL3ZuZC5waXhhci51c2QiLCAvLyBVbm9mZmljaWFsLCBidXQgc3Vw
cG9ydGVkIGJlY2F1c2Ugd2UgZG9jdW1lbnRlZCB0aGlzLgorICAgICJtb2RlbC92bmQucmVhbGl0
eSIsCisgICAgIm1vZGVsL3ZuZC51c2R6K3ppcCIsIC8vIFRoZSBvZmZpY2lhbCB0eXBlOiBodHRw
czovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9tb2RlbC92bmQudXNkeit6
aXAKK307CisKK0ZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0
ZW1QcmV2aWV3TUlNRVR5cGVzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN5c3RlbVByZXZpZXdNSU1FVHlw
ZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgIC8vIFRoZSBvZmZp
Y2lhbCB0eXBlOiBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9t
b2RlbC92bmQudXNkeit6aXAKLSAgICAgICAgIm1vZGVsL3ZuZC51c2R6K3ppcCJfcywKLSAgICAg
ICAgLy8gVW5vZmZpY2lhbCwgYnV0IHN1cHBvcnRlZCBiZWNhdXNlIHdlIGRvY3VtZW50ZWQgdGhl
bS4KLSAgICAgICAgIm1vZGVsL3VzZCJfcywKLSAgICAgICAgIm1vZGVsL3ZuZC5waXhhci51c2Qi
X3MsCi0gICAgICAgIC8vIFJlYWxpdHkgZmlsZXMuCi0gICAgICAgICJtb2RlbC92bmQucmVhbGl0
eSJfcywKLSAgICB9OwotICAgIHJldHVybiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzOworICAgIHJl
dHVybiBtYWtlRml4ZWRWZWN0b3Ioc3lzdGVtUHJldmlld01JTUVUeXBlQXJyYXkpOwogfQogCiBi
b29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiB7Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkuY29udGFpbnMo
bWltZVR5cGUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc3lzdGVtUHJl
dmlld01JTUVUeXBlU2V0IHsgc3lzdGVtUHJldmlld01JTUVUeXBlQXJyYXkgfTsKKyAgICByZXR1
cm4gc3lzdGVtUHJldmlld01JTUVUeXBlU2V0LmNvbnRhaW5zKG1pbWVUeXBlKTsKIH0KIAotI2lm
ICFVU0UoQ1VSTCkKLQotLy8gRklYTUU6IE5vdCBzdXJlIHdoeSBpdCBtYWtlcyBzZW5zZSB0byBo
YXZlIGEgY3Jvc3MtcGxhdGZvcm0gZnVuY3Rpb24gd2hlbiBvbmx5IENVUkwgaGFzIHRoZSBjb25j
ZXB0Ci0vLyBvZiBhICJub3JtYWxpemVkIiBNSU1FIHR5cGUuCi1TdHJpbmcgTUlNRVR5cGVSZWdp
c3RyeTo6bm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisvLyBGSVhN
RTogTm90IGdyZWF0IHRoYXQgQ1VSTCBuZWVkcyB0aGlzIGNvbmNlcHQ7IG90aGVyIHBsYXRmb3Jt
cyBkbyBub3QuCitzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZWRJbWFnZU1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB7CisjaWYgVVNFKENVUkwpCiAgICAgcmV0dXJuIG1pbWVUeXBlOwot
fQotCiAjZWxzZQotCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bm9ybWFsaXplZE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgc3RhdGljIGNvbnN0IGF1dG8gbWltZVR5
cGVBc3NvY2lhdGlvbk1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBBU0NJSUxpdGVyYWw+IG1pbWVUeXBlQXNz
b2NpYXRpb25zW10gPSB7Ci0gICAgICAgICAgICB7ICJpbWFnZS94LW1zLWJtcCJfcywgImltYWdl
L2JtcCJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UveC13aW5kb3dzLWJtcCJfcywgImltYWdl
L2JtcCJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UveC1ibXAiX3MsICJpbWFnZS9ibXAiX3Mg
fSwKLSAgICAgICAgICAgIHsgImltYWdlL3gtYml0bWFwIl9zLCAiaW1hZ2UvYm1wIl9zIH0sCi0g
ICAgICAgICAgICB7ICJpbWFnZS94LW1zLWJpdG1hcCJfcywgImltYWdlL2JtcCJfcyB9LAotICAg
ICAgICAgICAgeyAiaW1hZ2UvanBnIl9zLCAiaW1hZ2UvanBlZyJfcyB9LAotICAgICAgICAgICAg
eyAiaW1hZ2UvcGpwZWciX3MsICJpbWFnZS9qcGVnIl9zIH0sCi0gICAgICAgICAgICB7ICJpbWFn
ZS94LXBuZyJfcywgImltYWdlL3BuZyJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2Uvdm5kLnJp
bS5wbmciX3MsICJpbWFnZS9wbmciX3MgfSwKLSAgICAgICAgICAgIHsgImltYWdlL2ljbyJfcywg
ImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UvaWNv
biJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcyB9LAotICAgICAgICAgICAgeyAidGV4
dC9pY28iX3MsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MgfSwKLSAgICAgICAgICAgIHsg
ImFwcGxpY2F0aW9uL2ljbyJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcyB9LAotICAg
ICAgICAgICAgeyAiaW1hZ2UveC1pY29uIl9zLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9z
IH0sCi0gICAgICAgICAgICB7ICJhdWRpby92bmQucWNlbHAiX3MsICJhdWRpby9xY2VscCJfcyB9
LAotICAgICAgICAgICAgeyAiYXVkaW8vcWNwIl9zLCAiYXVkaW8vcWNlbHAiX3MgfSwKLSAgICAg
ICAgICAgIHsgImF1ZGlvL3ZuZC5xY3AiX3MsICJhdWRpby9xY2VscCJfcyB9LAotICAgICAgICAg
ICAgeyAiYXVkaW8vd2F2Il9zLCAiYXVkaW8veC13YXYiX3MgfSwKLSAgICAgICAgICAgIHsgImF1
ZGlvL3ZuZC53YXZlIl9zLCAiYXVkaW8veC13YXYiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlv
L21pZCJfcywgImF1ZGlvL21pZGkiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3NwLW1pZGki
X3MsICJhdWRpby9taWRpIl9zIH0sCi0gICAgICAgICAgICB7ICJhdWRpby94LW1pZCJfcywgImF1
ZGlvL21pZGkiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3gtbWlkaSJfcywgImF1ZGlvL21p
ZGkiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3gtbXBlZyJfcywgImF1ZGlvL21wZWciX3Mg
fSwKLSAgICAgICAgICAgIHsgImF1ZGlvL21wMyJfcywgImF1ZGlvL21wZWciX3MgfSwKLSAgICAg
ICAgICAgIHsgImF1ZGlvL3gtbXAzIl9zLCAiYXVkaW8vbXBlZyJfcyB9LAotICAgICAgICAgICAg
eyAiYXVkaW8vbXBlZzMiX3MsICJhdWRpby9tcGVnIl9zIH0sCi0gICAgICAgICAgICB7ICJhdWRp
by94LW1wZWczIl9zLCAiYXVkaW8vbXBlZyJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vbXBn
MyJfcywgImF1ZGlvL21wZWciX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL21wZyJfcywgImF1
ZGlvL21wZWciX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3gtbXBnIl9zLCAiYXVkaW8vbXBl
ZyJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vbTRhIl9zLCAiYXVkaW8vbXA0Il9zIH0sCi0g
ICAgICAgICAgICB7ICJhdWRpby94LW00YSJfcywgImF1ZGlvL21wNCJfcyB9LAotICAgICAgICAg
ICAgeyAiYXVkaW8veC1tcDQiX3MsICJhdWRpby9tcDQiX3MgfSwKLSAgICAgICAgICAgIHsgImF1
ZGlvL3gtYWFjIl9zLCAiYXVkaW8vYWFjIl9zIH0sCi0gICAgICAgICAgICB7ICJhdWRpby94LWFt
ciJfcywgImF1ZGlvL2FtciJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vbXBlZ3VybCJfcywg
ImF1ZGlvL3gtbXBlZ3VybCJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vZmxhYyJfcywgImF1
ZGlvL3gtZmxhYyJfcyB9LAotICAgICAgICAgICAgeyAidmlkZW8vM2dwIl9zLCAidmlkZW8vM2dw
cCJfcyB9LAotICAgICAgICAgICAgeyAidmlkZW8vYXZpIl9zLCAidmlkZW8veC1tc3ZpZGVvIl9z
IH0sCi0gICAgICAgICAgICB7ICJ2aWRlby94LW00diJfcywgInZpZGVvL21wNCJfcyB9LAotICAg
ICAgICAgICAgeyAidmlkZW8veC1xdWlja3RpbWUiX3MsICJ2aWRlby9xdWlja3RpbWUiX3MgfSwK
LSAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmEiX3MsICJhcHBsaWNhdGlvbi9qYXZhLWFy
Y2hpdmUiX3MgfSwKLSAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlIl9z
LCAiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlIl9zIH0sCi0gICAgICAgICAgICB7ICJhcHBsaWNh
dGlvbi94LXppcC1jb21wcmVzc2VkIl9zLCAiYXBwbGljYXRpb24vemlwIl9zIH0sCi0gICAgICAg
ICAgICB7ICJ0ZXh0L2NhY2hlLW1hbmlmZXN0Il9zLCAidGV4dC9wbGFpbiJfcyB9LAotICAgICAg
ICB9OwotCi0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4gbWFwOwotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtaW1lVHlwZUFzc29jaWF0
aW9ucykKLSAgICAgICAgICAgIG1hcC5hZGQocGFpci5maXJzdCwgcGFpci5zZWNvbmQpOwotICAg
ICAgICByZXR1cm4gbWFwOwotICAgIH0oKSk7Ci0KLSAgICBhdXRvIGl0ID0gbWltZVR5cGVBc3Nv
Y2lhdGlvbk1hcC5nZXQoKS5maW5kKG1pbWVUeXBlKTsKLSAgICBpZiAoaXQgIT0gbWltZVR5cGVB
c3NvY2lhdGlvbk1hcC5nZXQoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKLSAg
ICByZXR1cm4gbWltZVR5cGU7Ci19Ci0KKyAgICAvLyBGSVhNRTogU2luY2UgdGhpcyBpcyBvbmx5
IHVzZWQgaW4gaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlLCB3ZSBzaG91bGQgY29uc2lkZXIgcmVt
b3ZpbmcgdGhlIG5vbi1pbWFnZSB0eXBlcyBiZWxvdy4KKyAgICBzdGF0aWMgY29uc3RleHByIHN0
ZDo6cGFpcjxDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwsIEFTQ0lJTGl0ZXJhbD4gbWltZVR5cGVB
c3NvY2lhdGlvbkFycmF5W10gPSB7CisgICAgICAgIHsgImFwcGxpY2F0aW9uL2ljbyIsICJpbWFn
ZS92bmQubWljcm9zb2Z0Lmljb24iX3MgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YSIs
ICJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiX3MgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24v
eC1qYXZhLWFyY2hpdmUiLCAiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlIl9zIH0sCisgICAgICAg
IHsgImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiLCAiYXBwbGljYXRpb24vemlwIl9zIH0s
CisgICAgICAgIHsgImF1ZGlvL2ZsYWMiLCAiYXVkaW8veC1mbGFjIl9zIH0sCisgICAgICAgIHsg
ImF1ZGlvL200YSIsICJhdWRpby9tcDQiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vbWlkIiwgImF1
ZGlvL21pZGkiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vbXAzIiwgImF1ZGlvL21wZWciX3MgfSwK
KyAgICAgICAgeyAiYXVkaW8vbXBlZzMiLCAiYXVkaW8vbXBlZyJfcyB9LAorICAgICAgICB7ICJh
dWRpby9tcGVndXJsIiwgImF1ZGlvL3gtbXBlZ3VybCJfcyB9LAorICAgICAgICB7ICJhdWRpby9t
cGciLCAiYXVkaW8vbXBlZyJfcyB9LAorICAgICAgICB7ICJhdWRpby9tcGczIiwgImF1ZGlvL21w
ZWciX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vcWNwIiwgImF1ZGlvL3FjZWxwIl9zIH0sCisgICAg
ICAgIHsgImF1ZGlvL3NwLW1pZGkiLCAiYXVkaW8vbWlkaSJfcyB9LAorICAgICAgICB7ICJhdWRp
by92bmQucWNlbHAiLCAiYXVkaW8vcWNlbHAiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vdm5kLnFj
cCIsICJhdWRpby9xY2VscCJfcyB9LAorICAgICAgICB7ICJhdWRpby92bmQud2F2ZSIsICJhdWRp
by94LXdhdiJfcyB9LAorICAgICAgICB7ICJhdWRpby93YXYiLCAiYXVkaW8veC13YXYiX3MgfSwK
KyAgICAgICAgeyAiYXVkaW8veC1hYWMiLCAiYXVkaW8vYWFjIl9zIH0sCisgICAgICAgIHsgImF1
ZGlvL3gtYW1yIiwgImF1ZGlvL2FtciJfcyB9LAorICAgICAgICB7ICJhdWRpby94LW00YSIsICJh
dWRpby9tcDQiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8veC1taWQiLCAiYXVkaW8vbWlkaSJfcyB9
LAorICAgICAgICB7ICJhdWRpby94LW1pZGkiLCAiYXVkaW8vbWlkaSJfcyB9LAorICAgICAgICB7
ICJhdWRpby94LW1wMyIsICJhdWRpby9tcGVnIl9zIH0sCisgICAgICAgIHsgImF1ZGlvL3gtbXA0
IiwgImF1ZGlvL21wNCJfcyB9LAorICAgICAgICB7ICJhdWRpby94LW1wZWciLCAiYXVkaW8vbXBl
ZyJfcyB9LAorICAgICAgICB7ICJhdWRpby94LW1wZWczIiwgImF1ZGlvL21wZWciX3MgfSwKKyAg
ICAgICAgeyAiYXVkaW8veC1tcGciLCAiYXVkaW8vbXBlZyJfcyB9LAorICAgICAgICB7ICJpbWFn
ZS9pY28iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCisgICAgICAgIHsgImltYWdl
L2ljb24iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCisgICAgICAgIHsgImltYWdl
L2pwZyIsICJpbWFnZS9qcGVnIl9zIH0sCisgICAgICAgIHsgImltYWdlL3BqcGVnIiwgImltYWdl
L2pwZWciX3MgfSwKKyAgICAgICAgeyAiaW1hZ2Uvdm5kLnJpbS5wbmciLCAiaW1hZ2UvcG5nIl9z
IH0sCisgICAgICAgIHsgImltYWdlL3gtYml0bWFwIiwgImltYWdlL2JtcCJfcyB9LAorICAgICAg
ICB7ICJpbWFnZS94LWJtcCIsICJpbWFnZS9ibXAiX3MgfSwKKyAgICAgICAgeyAiaW1hZ2UveC1p
Y29uIiwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcyB9LAorICAgICAgICB7ICJpbWFnZS94
LW1zLWJpdG1hcCIsICJpbWFnZS9ibXAiX3MgfSwKKyAgICAgICAgeyAiaW1hZ2UveC1tcy1ibXAi
LCAiaW1hZ2UvYm1wIl9zIH0sCisgICAgICAgIHsgImltYWdlL3gtcG5nIiwgImltYWdlL3BuZyJf
cyB9LAorICAgICAgICB7ICJpbWFnZS94LXdpbmRvd3MtYm1wIiwgImltYWdlL2JtcCJfcyB9LAor
ICAgICAgICB7ICJ0ZXh0L2NhY2hlLW1hbmlmZXN0IiwgInRleHQvcGxhaW4iX3MgfSwKKyAgICAg
ICAgeyAidGV4dC9pY28iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCisgICAgICAg
IHsgInZpZGVvLzNncCIsICJ2aWRlby8zZ3BwIl9zIH0sCisgICAgICAgIHsgInZpZGVvL2F2aSIs
ICJ2aWRlby94LW1zdmlkZW8iX3MgfSwKKyAgICAgICAgeyAidmlkZW8veC1tNHYiLCAidmlkZW8v
bXA0Il9zIH0sCisgICAgICAgIHsgInZpZGVvL3gtcXVpY2t0aW1lIiwgInZpZGVvL3F1aWNrdGlt
ZSJfcyB9LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheU1hcCBhc3Nv
Y2lhdGlvbk1hcCB7IG1pbWVUeXBlQXNzb2NpYXRpb25BcnJheSB9OworICAgIGF1dG8gbm9ybWFs
aXplZFR5cGUgPSBhc3NvY2lhdGlvbk1hcC50cnlHZXQobWltZVR5cGUpOworICAgIHJldHVybiBu
b3JtYWxpemVkVHlwZSA/ICpub3JtYWxpemVkVHlwZSA6IG1pbWVUeXBlOwogI2VuZGlmCit9CiAK
IFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnko
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCAyMzM3YjBmM2Y4Njgw
ZTdjOWVmNDFiY2Q5ODcxNThmZjIwMjM1MWNmLi44NGJhMWZiNDk5NjAzYjM3NzM3ZjhlNDk2ZWVm
OGVlNGY3MDgzMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI4LDE3ICsxMjcsMTMgQEAgcHVi
bGljOgogICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBpcyBhZnRlciBtYW55IG90aGVyIHRlc3RzIGFy
ZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
aXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKLSAgICAvLyBGSVhNRTog
V291bGQgYmUgbmljZSB0byBmaW5kIGEgd2F5IHRvIGF2b2lkIGV4cG9zaW5nIHRoZXNlIHNldHMs
IGV2ZW4gd29yc2UgZXhwb3Npbmcgbm9uLWNvbnN0IHJlZmVyZW5jZXMuCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+JiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMoKTsKICAg
ICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIGFkZGl0
aW9uYWxTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBvcnRlZE1lZGlhTUlNRVR5
cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBwZGZNSU1FVHlwZXMoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3lzdGVt
UHJldmlld01JTUVUeXBlcygpOwotCi0gICAgLy8gRklYTUU6IFVuY2xlYXIgd2hhdCB0aGUgY29u
Y2VwdCBvZiBhIG5vcm1hbGl6ZWQgTUlNRSB0eXBlIGlzOyBjdXJyZW50bHkgaXQncyBhIHBsYXRm
b3JtLXNwZWNpZmljIG5vdGlvbi4KLSAgICBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZWRNSU1FVHlw
ZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRml4ZWRWZWN0b3I8
Y29uc3QgY2hhcio+IHBkZk1JTUVUeXBlcygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBG
aXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBzeXN0ZW1QcmV2
aWV3TUlNRVR5cGVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVu
ZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaApp
bmRleCA2MDExMWFhNDQwYzQ5ZWQ1MGU3ZTkwOTQ3MTE2MzlmMmQzZDljMWY1Li41NjdmMTE4NTM4
YTA3YTA1OTFkMTBhMGFhZDYyNzA4YjNjMGY5YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtVmFsdWUuaApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIK
ICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJTVkdNYXRyaXguaCIKLSNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvVHlw
ZUNvbnZlcnNpb25zLmgKaW5kZXggZTM1YzExN2Q5Njg0MTk4ZWEwMTNiY2RjYmFjN2UyZDZhMjI5
YjkzNS4uMjk3ZGI1OTMzMGRiMTRjNzE5ODU1NGMwMjcyOWM2MTJlNTM4NjIwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGZhODg0ZmI5YTdlNTA4ODUw
YTk0ZGIwMmIxOGUyZmFiMDYzZjUwZTEuLmUwYWM5ZTlmMjM3NDA5ZGFhZTk4NTZlYmYyZmVjZWEy
NWVmNjE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJW
aWV3SU9TLm1tCkBAIC0yNzAwLDggKzI3MDAsOCBAQCAtIChCT09MKV9hbGxvd3NWaWV3cG9ydFNo
cmlua1RvRml0CiAKIC0gKEJPT0wpX2lzRGlzcGxheWluZ1BERgogewotICAgIGZvciAoYXV0byYg
bWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKSkgewot
ICAgICAgICBDbGFzcyBwcm92aWRlckNsYXNzID0gW1tfY29uZmlndXJhdGlvbiBfY29udGVudFBy
b3ZpZGVyUmVnaXN0cnldIHByb3ZpZGVyRm9yTUlNRVR5cGU6bWltZVR5cGVdOworICAgIGZvciAo
YXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygpKSB7
CisgICAgICAgIENsYXNzIHByb3ZpZGVyQ2xhc3MgPSBbW19jb25maWd1cmF0aW9uIF9jb250ZW50
UHJvdmlkZXJSZWdpc3RyeV0gcHJvdmlkZXJGb3JNSU1FVHlwZTpAKHR5cGUpXTsKICAgICAgICAg
aWYgKFtfY3VzdG9tQ29udGVudFZpZXcgaXNLaW5kT2ZDbGFzczpwcm92aWRlckNsYXNzXSkKICAg
ICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3Ry
eS5tbQppbmRleCBhNWRmYjRmODE3Mjc5MDUyNmMwNDFlNDViNDBhN2RkZDE3ODYwYjc3Li41OGY0
YWI4NDMyZjRhNmQ1Yjk4OTVlZWE1Y2Y3MmFiODFlYzE0M2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJv
dmlkZXJSZWdpc3RyeS5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL01J
TUVUeXBlUmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9GaXhlZFZlY3Rvci5oPgogI2ltcG9ydCA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSB7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIENsYXNzIDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXI+LCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IF9jb250ZW50UHJvdmlkZXJGb3JNSU1FVHlwZTsKQEAgLTUwLDE0
ICs1MCwxNCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogICAgICAgICByZXR1cm4gbmlsOwogCiAj
aWYgRU5BQkxFKFdLUERGVklFVykKLSAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkpCi0gICAgICAgIFtzZWxmIHJlZ2lzdGVy
UHJvdmlkZXI6W1dLUERGVmlldyBjbGFzc10gZm9yTUlNRVR5cGU6bWltZVR5cGVdOworICAgIGZv
ciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcygp
KQorICAgICAgICBbc2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1BERlZpZXcgY2xhc3NdIGZvck1J
TUVUeXBlOkAodHlwZSldOwogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
aWYgKGNvbmZpZ3VyYXRpb24uX3N5c3RlbVByZXZpZXdFbmFibGVkKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3
TUlNRVR5cGVzKCkpCi0gICAgICAgICAgICBbc2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1N5c3Rl
bVByZXZpZXdWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07CisgICAgICAgIGZvciAo
YXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN5c3RlbVByZXZpZXdNSU1F
VHlwZXMoKSkKKyAgICAgICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6W1dLU3lzdGVtUHJl
dmlld1ZpZXcgY2xhc3NdIGZvck1JTUVUeXBlOkAodHlwZSldOwogICAgIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tCmluZGV4IDhlNmVlYTY4YWY1MzdlNzE5MTJmNTIyMDZkOWQzZmIyMGNkNDhi
NzIuLjJlZWVmNzAyZWRjMzYzMTZmNDViNjAxM2ExMDVmNzYwNDNkMzM0MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCkBAIC02Myw2ICs2Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURl
Y29kZXIuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MSW5wdXRFbGVtZW50Lmg+CiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgpAQCAtODksNyArOTAsNyBAQCBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJIVE1MUmVwcmVzZW50YXRpb24KIAotc3RhdGljIFJl
dGFpblB0cjxOU0FycmF5PiBuZXdBcnJheVdpdGhTdHJpbmdzKGNvbnN0IEhhc2hTZXQ8U3RyaW5n
LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzZXQpCitzdGF0aWMgUmV0YWluUHRyPE5TQXJy
YXk+IGNyZWF0ZU5TQXJyYXkoY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mIHNldCkKIHsKICAgICBhdXRvIHZlY3RvciA9IGNvcHlUb1ZlY3Rvck9mPE5TU3Ry
aW5nICo+KHNldCk7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6dmVjdG9yLmRhdGEoKSBjb3VudDp2ZWN0b3Iuc2l6ZSgpXSk7CkBAIC0xMDQsMjUg
KzEwNSwyNSBAQCArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVzCiAKICsgKE5TQXJyYXkg
KilzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzID0gbmV3QXJy
YXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcygp
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNT
dXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IGNyZWF0ZU5TQXJyYXkoTUlNRVR5cGVSZWdpc3RyeTo6
c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSk7CiAgICAgcmV0dXJuIHN0YXRpY1N1cHBvcnRlZE1l
ZGlhTUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCiArIChOU0FycmF5ICopc3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5T
QXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9IG5ld0FycmF5V2l0aFN0
cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXMgPSBjcmVhdGVOU0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OnN1
cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkpOwogICAgIHJldHVybiBzdGF0aWNTdXBwb3J0ZWRO
b25JbWFnZU1JTUVUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNBcnJheSAqKXN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxO
U0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJp
bmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1N1cHBvcnRlZElt
YWdlTUlNRVR5cGVzID0gY3JlYXRlTlNBcnJheShNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlcygpKTsKICAgICByZXR1cm4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0
aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBl
UmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlw
ZXMgPSBjcmVhdGVOU0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlcygpKTsKICAgICByZXR1cm4gc3RhdGljVW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzLmdldCgp
LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggOGE5NGRlZTIxMjE3MjU1MjJlZTE4NTVjNWI3NjIyN2ZmZWU4YzBlNS4uMGU2MDc0
NDU3Y2ZjNjI4YTRhN2M1MDk0MTIzNzliNDZlNmQ5YWEwMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTI3
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBFeHRlbmQgU29ydGVk
QXJyYXlNYXAgZnVydGhlciB0byB3b3JrIG9uIGNhc2UtZm9sZGVkIHN0cmluZ3MsIHVzZSBpbiBN
SU1FVHlwZVJlZ2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjQ5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBBZGRlZCBTb3J0ZWRBcnJheU1hcC5jcHAsCisgICAgICAgIGFuZCByZW1vdmVkIHJl
ZmVyZW5jZXMgdG8gbm9uLWV4aXN0ZW50IEZ1bGxzY3JlZW5SZW1vdmVOb2RlQmVmb3JlRW50ZXIu
aCBhbmQKKyAgICAgICAgRmxvYXRRdWFkVGVzdHMuaC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Tb3J0ZWRBcnJheU1hcC5jcHA6IEFkZGVkLgorCiAyMDIxLTA0LTI1ICBUeWxl
ciBXaWxjb2NrICA8dHdpbGNvLm9AcHJvdG9ubWFpbC5jb20+CiAKICAgICAgICAganNvbmNoZWNr
ZXIucHkgdmFsaWRhdGVfc3RyaW5nIHVzZXMgUHl0aG9uIDIgYmFzZXN0cmluZyB0eXBlIGluc3Rl
YWQgb2YgUHl0aG9uIDIvMyBzdHIgdHlwZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YjA2
YmFkM2Q5NGZjMWU3ZDNmYTEwZGQ2N2NhMWEzMDA2ZjNjMmQxLi42ZjBjM2JhMzdjZTU3MjU2MDZk
MWI4NjhmNzYyMTU2NDkwMzliZTcyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODY1LDYg
Kzg2NSw3IEBACiAJCTkzRjU2REE3MUU1RjkxNzQwMDNFREU4NCAvKiBsaWJpY3Vjb3JlLmR5bGli
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4M0Uw
MzMxRDBBNUYyNzAwRkVCQ0YzIC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CiAJCTkzRjU2REE5
MUU1RjkxOUQwMDNFREU4NCAvKiBXS1dlYlZpZXdTbmFwc2hvdC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU2REE4MUU1RjkxODEwMDNFREU4NCAv
KiBXS1dlYlZpZXdTbmFwc2hvdC5tbSAqLzsgfTsKIAkJOTNGN0U4NkYxNERDOEU1QzAwQzg0QTk5
IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGN0U4NkUxNERDOEU1
QjAwQzg0QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUu
Y3BwICovOyB9OworCQk5M0ZDREIzNDI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGQ0RC
MzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLzsgfTsKIAkJOTUwRTRD
QzEyNTJFNzUyNDAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBFNENDMDI1MkU3NTIzMDA3MTY1OUYg
LyogaU9TU3R5bHVzU3VwcG9ydC5tbSAqLzsgfTsKIAkJOTUzQUJCMzUyNUMwRDY4MjAwNEM4Qjcz
IC8qIFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1M0FCQjM0MjVDMEQ2ODEwMDRDOEI3MyAvKiBQYWdl
RXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IubW0gKi87IH07CiAJCTk1QTUyNDk1MjU4MUExMEQwMDQ2
MUZFOSAvKiBXS1dlYlZpZXdUaGVtZUNvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmll
d1RoZW1lQ29sb3IubW0gKi87IH07CkBAIC0yNTU1LDYgKzI1NTYsNyBAQAogCQk5M0Y1NkRBODFF
NUY5MTgxMDAzRURFODQgLyogV0tXZWJWaWV3U25hcHNob3QubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdTbmFwc2hvdC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNGN0U4NkIxNERDOEU0RDAwQzg0QTk5IC8qIE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
cmFtZXNfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGQ0RCMzMy
NjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNvcnRlZEFycmF5TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTUwRTRDQzAyNTJFNzUyMzAwNzE2NTlGIC8qIGlPU1N0eWx1c1N1cHBvcnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBpT1NTdHlsdXNTdXBw
b3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTNBQkIzNDI1QzBENjgxMDA0
QzhCNzMgLyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyog
V0tXZWJWaWV3VGhlbWVDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLV2ViVmlld1RoZW1lQ29sb3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODYzLDcgKzI4NjUsNiBAQAogCQlDRENGQTdBOTFFNDUxMjJGMDBDMjQzM0QgLyogU2Ft
cGxlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsZU1h
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQ0ZGRUMwMjJFMjY4RDUwMERG
NDIyMyAvKiBOb1BhdXNlV2hlblN3aXRjaGluZ1RhYnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBOb1BhdXNlV2hlblN3aXRjaGluZ1RhYnMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERDY4RjBDMjJDMTgzMTcwMDBDRjBBRSAvKiBXS1dlYlZp
ZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0Nsb3NlQWxsTWVkaWFQcmVzZW50YXRpb25zLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRERDN0M2NzI1RkZGNkQwMDAyMjQyNzggLyog
RnVsbHNjcmVlblJlbW92ZU5vZGVCZWZvcmVFbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxsc2Ny
ZWVuUmVtb3ZlTm9kZUJlZm9yZUVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEREM3QzY4MjVGRkY2RDAwMDIyNDI3OCAvKiBGdWxsc2NyZWVuUmVtb3ZlTm9kZUJlZm9yZUVu
dGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnVsbHNjcmVlblJlbW92ZU5vZGVCZWZvcmVF
bnRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFMTk1QjIxQ0ZFMEFERTAw
NTNEMjU2IC8qIEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9IEZ1bGxzY3JlZW5Ub3BDb250ZW50SW5zZXQuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFMTk1QjMxQ0ZFMEFERTAwNTNEMjU2IC8qIFRvcENvbnRlbnRJ
bnNldC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRvcENvbnRl
bnRJbnNldC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNDEsNyArMzA0Miw2
IEBACiAJCUY0QTMyRUNBMUYwNjQyRjQwMDQ3QzU0NCAvKiBjb250ZW50ZWRpdGFibGUtaW4taWZy
YW1lLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAiY29udGVudGVkaXRhYmxlLWluLWlmcmFtZS5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRBOTIwMkUxRkVFMzRDODAwRjU5NTkwIC8qIGFw
cGxlLWRhdGEtdXJsLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXBwbGUtZGF0
YS11cmwuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QUI1Nzg5MUY2NTE2
NEIwMERCMERBMSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlGNEFEMTgzNjI1RUQ3OTE1MDBCMUExOUYgLyogRmxvYXRRdWFkVGVzdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRRdWFkVGVzdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjRBRDE4MzcyNUVENzkxNTAwQjFBMTlGIC8qIEZsb2F0UXVhZFRlc3RzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0UXVhZFRlc3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjRCMDE2N0YyNUFFMDJENjAwRTQ0NUM0IC8qIERpc2FibGVTcGVsbGNoZWNr
UGx1Z0luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlzYWJsZVNwZWxsY2hlY2tQbHVnSW4u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0QjAxNjgyMjVBRTA2MEYwMEU0NDVD
NCAvKiBEaXNhYmxlU3BlbGxjaGVjay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpc2FibGVT
cGVsbGNoZWNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQwNyw3ICszNDA3
LDYgQEAKIAkJCQlDRENGNzhBNzI0NEEyRURCMDA0ODAzMTEgLyogRnVsbHNjcmVlbkFsZXJ0Lm1t
ICovLAogCQkJCUNENzhFMTFBMURCN0VBMzYwMDE0QTJERSAvKiBGdWxsc2NyZWVuRGVsZWdhdGUu
bW0gKi8sCiAJCQkJM0YxQjUyNjgxRDNENzEyOTAwOEQ2MEM0IC8qIEZ1bGxzY3JlZW5MYXlvdXRD
b25zdHJhaW50cy5tbSAqLywKLQkJCQlDRERDN0M2NzI1RkZGNkQwMDAyMjQyNzggLyogRnVsbHNj
cmVlblJlbW92ZU5vZGVCZWZvcmVFbnRlci5oICovLAogCQkJCUNEREM3QzY4MjVGRkY2RDAwMDIy
NDI3OCAvKiBGdWxsc2NyZWVuUmVtb3ZlTm9kZUJlZm9yZUVudGVyLm1tICovLAogCQkJCTYzMUVG
RkY1MUU3QjVFOEQwMEQyRUJCOCAvKiBHZW9sb2NhdGlvbi5tbSAqLywKIAkJCQkwN0UxRjZBMDFG
RkMzQTA4MDA5NkM3RUMgLyogR2V0RGlzcGxheU1lZGlhLm1tICovLApAQCAtMzY2Niw3ICszNjY1
LDYgQEAKIAkJCQk3QTMyRDc0OTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3BwICov
LAogCQkJCTdBOTA5QTcwMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFBvaW50VGVzdHMuY3BwICov
LAogCQkJCUY0QUQxODM3MjVFRDc5MTUwMEIxQTE5RiAvKiBGbG9hdFF1YWRUZXN0cy5jcHAgKi8s
Ci0JCQkJRjRBRDE4MzYyNUVENzkxNTAwQjFBMTlGIC8qIEZsb2F0UXVhZFRlc3RzLmggKi8sCiAJ
CQkJN0E5MDlBNzExRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0UmVjdFRlc3RzLmNwcCAqLywKIAkJ
CQk3QTkwOUE3MjFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRTaXplVGVzdHMuY3BwICovLAogCQkJ
CThFNEE4NTM2MUUxRDFBQTEwMEY1M0IwRiAvKiBHcmlkUG9zaXRpb24uY3BwICovLApAQCAtNDQz
OCw2ICs0NDM2LDcgQEAKIAkJCQkwQkNEODU2OTE0ODVDOThCMDBFQTIwMDMgLyogU2V0Rm9yU2Nv
cGUuY3BwICovLAogCQkJCUNENTM5M0M5MTc1N0JBQzQwMEMwNzEyMyAvKiBTSEExLmNwcCAqLywK
IAkJCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi8sCisJCQkJOTNG
Q0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFwLmNwcCAqLywKIAkJCQlGRTJC
Q0RDNjI0NzBGQzcwMDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNwcCAqLywKIAkJCQk4MUI1MDE5
MjE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCiAJCQkJN0NENEMyNkMx
RTJDMEU2RTAwOTI5NDcwIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmNwcCAqLywKQEAgLTUxODksNiAr
NTE4OCw3IEBACiAJCQkJN0M4M0RGM0QxRDBBNTkwQzAwRkVCQ0YzIC8qIFNldEZvclNjb3BlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjJBMUQwQTU5MEMwMEZFQkNGMyAvKiBTSEExLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzNzNENzkxMUYyQ0YzNTIwMEM2RkFBRiAvKiBTaWduYWxz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0
ZWRBcnJheU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTJCQ0RDNzI0NzBGREEzMDBERUMz
M0IgLyogU3RkTGliRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjMyMUQwQTU5
MEMwMEZFQkNGMyAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRDRD
MjZFMUUyQzBFNkUwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRlbmF0ZS5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NvcnRlZEFycmF5
TWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NvcnRlZEFycmF5TWFwLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZDUyMTlhMjdhMDVjYmJiY2NlOWZiYTc2Yzk0MzhhMGQ2NzcwMTg5Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU29ydGVkQXJy
YXlNYXAuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CisKK1RFU1QoV1RGLCBTb3J0ZWRB
cnJheVNldCkKK3sKKyAgICBjb25zdGV4cHIgQ29tcGFyYWJsZUNhc2VGb2xkaW5nQVNDSUlMaXRl
cmFsIGNhc2VGb2xkaW5nQXJyYXlbXSA9IHsKKyAgICAgICAgIl8iLAorICAgICAgICAiYSIsCisg
ICAgICAgICJjIiwKKyAgICAgICAgImRlbGlnaHRmdWwiLAorICAgICAgICAicSIsCisgICAgICAg
ICJxXyIsCisgICAgICAgICJyL3kiLAorICAgICAgICAicy16IiwKKyAgICB9OworICAgIGNvbnN0
ZXhwciBTb3J0ZWRBcnJheVNldCBjYXNlRm9sZGluZ1NldCB7IGNhc2VGb2xkaW5nQXJyYXkgfTsK
KworICAgIGNvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgbGV0dGVyc0FycmF5W10g
PSB7CisgICAgICAgICJhIiwKKyAgICAgICAgImMiLAorICAgICAgICAiZGVsaWdodGZ1bCIsCisg
ICAgICAgICJxIiwKKyAgICAgICAgInIveSIsCisgICAgICAgICJzLXoiLAorICAgIH07CisgICAg
Y29uc3RleHByIFNvcnRlZEFycmF5U2V0IGxldHRlcnNTZXQgeyBsZXR0ZXJzQXJyYXkgfTsKKwor
ICAgIGNvbnN0ZXhwciBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgc2NyaXB0VHlwZXNBcnJheVtd
ID0geworICAgICAgICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCIsCisgICAgICAgICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiwKKyAgICAgICAgImFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCIsCisg
ICAgICAgICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiLAorICAgICAgICAidGV4dC9lY21hc2Ny
aXB0IiwKKyAgICAgICAgInRleHQvamF2YXNjcmlwdCIsCisgICAgICAgICJ0ZXh0L2phdmFzY3Jp
cHQxLjAiLAorICAgICAgICAidGV4dC9qYXZhc2NyaXB0MS4xIiwKKyAgICAgICAgInRleHQvamF2
YXNjcmlwdDEuMiIsCisgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjMiLAorICAgICAgICAidGV4
dC9qYXZhc2NyaXB0MS40IiwKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNSIsCisgICAgICAg
ICJ0ZXh0L2pzY3JpcHQiLAorICAgICAgICAidGV4dC9saXZlc2NyaXB0IiwKKyAgICAgICAgInRl
eHQveC1lY21hc2NyaXB0IiwKKyAgICAgICAgInRleHQveC1qYXZhc2NyaXB0IiwKKyAgICB9Owor
ICAgIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzY3JpcHRUeXBlc1NldCB7IHNjcmlwdFR5cGVz
QXJyYXkgfTsKKworICAgIEVYUEVDVF9GQUxTRShjYXNlRm9sZGluZ1NldC5jb250YWlucygiIikp
OworICAgIEVYUEVDVF9UUlVFKGNhc2VGb2xkaW5nU2V0LmNvbnRhaW5zKCJfIikpOworICAgIEVY
UEVDVF9UUlVFKGNhc2VGb2xkaW5nU2V0LmNvbnRhaW5zKCJjIikpOworICAgIEVYUEVDVF9UUlVF
KGNhc2VGb2xkaW5nU2V0LmNvbnRhaW5zKCJkZWxpZ2h0ZnVsIikpOworICAgIEVYUEVDVF9GQUxT
RShjYXNlRm9sZGluZ1NldC5jb250YWlucygiZCIpKTsKKyAgICBFWFBFQ1RfVFJVRShjYXNlRm9s
ZGluZ1NldC5jb250YWlucygicV8iKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNhc2VGb2xkaW5nU2V0
LmNvbnRhaW5zKCJxX18iKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UobGV0dGVyc1NldC5jb250YWlu
cygiIikpOworICAgIEVYUEVDVF9GQUxTRShsZXR0ZXJzU2V0LmNvbnRhaW5zKCJfIikpOworICAg
IEVYUEVDVF9UUlVFKGxldHRlcnNTZXQuY29udGFpbnMoImMiKSk7CisgICAgRVhQRUNUX1RSVUUo
bGV0dGVyc1NldC5jb250YWlucygiZGVsaWdodGZ1bCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UobGV0
dGVyc1NldC5jb250YWlucygiZCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UobGV0dGVyc1NldC5jb250
YWlucygicV8iKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxldHRlcnNTZXQuY29udGFpbnMoInFfXyIp
KTsKKworICAgIEFTU0VSVF9UUlVFKHNjcmlwdFR5cGVzU2V0LmNvbnRhaW5zKCJ0ZXh0L2phdmFz
Y3JpcHQiKSk7CisgICAgQVNTRVJUX1RSVUUoc2NyaXB0VHlwZXNTZXQuY29udGFpbnMoIlRFWFQv
SkFWQVNDUklQVCIpKTsKKyAgICBBU1NFUlRfVFJVRShzY3JpcHRUeXBlc1NldC5jb250YWlucygi
YXBwbGljYXRpb24vamF2YXNjcmlwdCIpKTsKKyAgICBBU1NFUlRfVFJVRShzY3JpcHRUeXBlc1Nl
dC5jb250YWlucygiYXBwbGljYXRpb24vZWNtYXNjcmlwdCIpKTsKKyAgICBBU1NFUlRfVFJVRShz
Y3JpcHRUeXBlc1NldC5jb250YWlucygiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IikpOworICAg
IEFTU0VSVF9UUlVFKHNjcmlwdFR5cGVzU2V0LmNvbnRhaW5zKCJhcHBsaWNhdGlvbi94LWVjbWFz
Y3JpcHQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNjcmlwdFR5cGVzU2V0LmNvbnRhaW5zKCJ0ZXh0
L3BsYWluIikpOworICAgIEFTU0VSVF9GQUxTRShzY3JpcHRUeXBlc1NldC5jb250YWlucygiYXBw
bGljYXRpb24vanNvbiIpKTsKKyAgICBBU1NFUlRfRkFMU0Uoc2NyaXB0VHlwZXNTZXQuY29udGFp
bnMoImZvby9qYXZhc2NyaXB0IikpOworfQo=
</data>
<flag name="commit-queue"
          id="447755"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427221</attachid>
            <date>2021-04-27 17:53:24 -0700</date>
            <delta_ts>2021-04-28 12:12:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224968-20210427175323.patch</filename>
            <type>text/plain</type>
            <size>77321</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYzZjgzYmZiMDk3NWFlMDZmNTdhMWIx
YmIxMGE2MTUyYmMzOTlkMjAuLmMyY2E2YzllNGU1MmQzNjNkNTUyMDlhYTRkNTI1MWQ0YTA5NTk0
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDQtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEV4dGVuZCBTb3J0ZWRBcnJheU1hcCBmdXJ0aGVyIHRvIHdv
cmsgb24gY2FzZS1mb2xkZWQgc3RyaW5ncywgdXNlIGluIE1JTUVUeXBlUmVnaXN0cnkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDk2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0FTQ0lJQ1R5
cGUuaDogTWFrZSBtb3N0IGZ1bmN0aW9ucyBjb25zdGV4cHIuCisKKyAgICAgICAgKiB3dGYvRm9y
d2FyZC5oOiBBZGRlZCBGaXhlZFZlY3Rvci4KKworICAgICAgICAqIHd0Zi9Tb3J0ZWRBcnJheU1h
cC5oOiBBZGRlZCBTb3J0ZWRBcnJheVNldC4gQWRkZWQgQ29tcGFyYWJsZUNhc2VGb2xkaW5nQVND
SUlMaXRlcmFsCisgICAgICAgIGFuZCBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwsIHVzaW5nIGEg
dGVtcGxhdGUgc2hhcmVkIHdpdGggQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbC4KKwogMjAyMS0wNC0y
NyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc1OTEyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZmMTVlN2U4Nzk5
MjVjMTNiNTY1NDZhYmYzYjE2YzYyODE5YzE3ZTUuLjVlZTE2ZjU3ODA2YTg1YzIyNDJhNzQzM2Q1
M2RkMzRhM2I0YjFhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNC0yNyAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRXh0ZW5kIFNvcnRlZEFy
cmF5TWFwIGZ1cnRoZXIgdG8gd29yayBvbiBjYXNlLWZvbGRlZCBzdHJpbmdzLCB1c2UgaW4gTUlN
RVR5cGVSZWdpc3RyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI0OTY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXNpbmcgZmV3ZXIgSGFzaFNldCBpbiBNSU1FVHlwZVJlZ2lzdHJ5IHNhdmVzIGNvZGUg
c2l6ZSBhbmQgcmVkdWNlcyBtZW1vcnkgdXNlLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcyk6IERlbGV0ZWQuIFJlcGxhY2VkCisgICAgICAgIHRoaXMgZnVu
Y3Rpb24gd2l0aCBhIGNvbnN0ZXhwciBhcnJheSwgZWxpbWluYXRpbmcgdGhlIHVzZSBvZiBIYXNo
U2V0LgorICAgICAgICAoV2ViQ29yZTo6bWFrZUZpeGVkVmVjdG9yKTogQWRkZWQuIEhlbHBlciBm
dW5jdGlvbiB1c2VkIGJlbG93IGZvciB0aGUgcmVwZWF0ZWQgcGF0dHRlcm4KKyAgICAgICAgb2Yg
Y29udmVydGluZyBhIGNvbnN0ZXhwciBhcnJheSBpbnRvIGEgRml4ZWRWZWN0b3I8Y29uc3QgY2hh
cio+LgorICAgICAgICAoV2ViQ29yZTo6c3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcyk6IFVwZGF0ZSBzaW5jZQorICAgICAgICBzdXBwb3J0ZWRKYXZhU2NyaXB0
TUlNRVR5cGVBcnJheSBpcyBub3cgYW4gYXJyYXksIG5vdCBhIEhhc2hTZXQuCisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMpOiBSZXdyb3RlIHRvIHJldHVy
biBhIEZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPgorICAgICAgICBpbnN0ZWFkIG9mIGEgSGFzaFNl
dC4gVGhlIG9ubHkgY2FsbGVyIG1ha2VzIGFuIE5TQXJyYXk8TlNTdHJpbmcgKj4sIHNvIHRoZXJl
IGlzIG5vIG5lZWQKKyAgICAgICAgdG8gaW52b2x2ZSBhIGhhc2ggdGFibGUgb3IgYSBXVEY6OlN0
cmluZy4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4
dE1JTUVUeXBlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29tbW9uTWVkaWFUeXBlcyk6
IERlbGV0ZWQsIG1lcmdpbmcgaW50byB0aGUgZnVuY3Rpb24gYmVsb3cuCisgICAgICAgIChXZWJD
b3JlOjpjb21tb25NaW1lVHlwZXNNYXApOiBNb3ZlZCB0aGUgY29tbW9uTWVkaWFUeXBlcyBkYXRh
IGluIGhlcmUKKyAgICAgICAgYW5kIHVzZSBhIGNvbnN0ZXhwciBhcnJheSBpbnN0ZWFkIG9mIGFu
IGluaXRpYWxpemVyX2xpc3QuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGUpOiBVc2UgU29ydGVkQXJyYXlTZXQKKyAgICAgICAgaW5z
dGVhZCBvZiBhIEhhc2hTZXQgZm9yIHRoZSBjb3JlIHN1cHBvcnRlZCBpbWFnZXMgdHlwZXMuIE1v
dmVkIHRoZSBjb2RlCisgICAgICAgIHRoYXQgY2hlY2tzIHRoaXMgYWdhaW5zdCBkZWZhdWx0U3Vw
cG9ydGVkSW1hZ2VUeXBlcyBoZXJlLgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUpOiBVc2UgU29ydGVkQXJyYXlTZXQuCisg
ICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Vuc3VwcG9ydGVkVGV4dE1JTUVU
eXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1J
TUVUeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1Bv
c3RTY3JpcHRNSU1FVHlwZSk6IFVzZSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZS4KKyAg
ICAgICAgRm9yIHNvbWUgcmVhc29uIHRoaXMgd2FzIHRoZSBzaW5nbGUgY2FzZS1zZW5zaXRpdmUg
ZnVuY3Rpb24gaW4gdGhpcyB3aG9sZSBjbGFzcyEKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBl
UmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVUeXBlKTogVXNlIFNvcnRlZEFycmF5U2V0Lgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBl
cyk6IFJldHVybiBhIEZpeGVkVmVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplZElt
YWdlTUlNRVR5cGUpOiBSZW5hbWVkIHRoaXMgZnJvbSBpdHMgb2xkIG5hbWUsCisgICAgICAgIE1J
TUVUeXBlUmVnaXN0cnk6Om5vcm1hbGl6ZWRNSU1FVHlwZSwgdG8gYmV0dGVyIHJlZmxlY3QgdGhh
dCBpdCdzIG9ubHkgdXNlZCBpbgorICAgICAgICBvbmUgcGxhY2UuIEFsc28gYWRkZWQgY29tbWVu
dHMgdG8gY2xhcmlmeSB0aGF0IGl0J3MgQ1VSTC1vbmx5IGFuZCBzdWdnZXN0IGl0IGJlCisgICAg
ICAgIHJlbW92ZWQgZXZlbnR1YWxseS4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaDogQ2hhbmdlZCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcywgcGRmTUlNRVR5cGVzLAor
ICAgICAgICB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMsIGFuZCBzeXN0ZW1QcmV2aWV3TUlNRVR5
cGVzIHRvIHJldHVybiBGaXhlZFZlY3RvciBpbnN0ZWFkCisgICAgICAgIG9mIEhhc2hTZXQuIEFs
c28gcmVtb3ZlZCBub3JtYWxpemVkTUlNRVR5cGUuCisKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNm
b3JtVmFsdWUuaDogUmVtb3ZlZCB1bm5lZWRlZCBpbmNsdWRlIG9mIEhhc2hNYXAuaC4KKyAgICAg
ICAgKiB0ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oOiBEaXR0by4KKwogMjAyMS0wNC0yNyAgQ2Ft
ZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFzc29jaWF0ZSBh
IHBpY3R1cmUgZWxlbWVudCB3aXRoIGFuIGltZyBvbmx5IGlmIHRoZSBpbWcgaXMgYSBkaXJlY3Qg
Y2hpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGUyNjY3MWVmYThiMjNiYjFkMWM2NmFkY2UyY2NjYmNlNWFhZTdk
OGIuLjU5MjI0N2U5NTdlZDQzYmY2ZTFlZTBiODE3NDAzMGIyNmM1M2M3MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDQtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIEV4dGVuZCBTb3J0ZWRBcnJheU1hcCBmdXJ0aGVyIHRvIHdvcmsgb24gY2Fz
ZS1mb2xkZWQgc3RyaW5ncywgdXNlIGluIE1JTUVUeXBlUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDk2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tX
ZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2lzRGlzcGxheWluZ1BERl0pOiBV
cGRhdGVkIHNpbmNlIE1JTUVUeXBlUmVnaXN0cnk6OnBkZk1JTUVUeXBlcworICAgICAgICByZXR1
cm5zIGEgZGlmZmVyZW50IHR5cGUuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dLV2ViVmll
d0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeSBpbml0V2l0aENvbmZpZ3VyYXRpb246XSk6IFVwZGF0ZWQgc2luY2UK
KyAgICAgICAgTUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcyByZXR1cm5z
IGEgZGlmZmVyZW50IHR5cGUuCisKIDIwMjEtMDQtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBJUEM6OmRlY29kZXI6OmRlY29kZSgpIHNob3VsZCBtYXJrIGRl
Y29kZXIgYXMgaW52YWxpZCB3aGVuIGZhaWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpp
bmRleCA1YWNmYmJkNGQ2Mzc5ZDQxM2E0NzU4MjFhYzQ2ODE2ZDgzYmJkOGExLi5hN2Q1M2ViMjMz
Njk5ZjU1NjQ0ZDQ5MmUxMmVmYjUzMGYzZWVhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDQtMjcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIEV4dGVuZCBTb3J0ZWRBcnJheU1hcCBmdXJ0aGVyIHRvIHdvcmsg
b24gY2FzZS1mb2xkZWQgc3RyaW5ncywgdXNlIGluIE1JTUVUeXBlUmVnaXN0cnkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDk2OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
UmVwcmVzZW50YXRpb24ubW06CisgICAgICAgIChjcmVhdGVOU0FycmF5KTogUmVuYW1lZCBmcm9t
IG5ld0FycmF5V2l0aFN0cmluZ3Mgc28gdGhpcyBvdmVybG9hZHMgdGhlIGNyZWF0ZU5TQXJyYXkK
KyAgICAgICAgZnVuY3Rpb24gZnJvbSBWZWN0b3JDb2NvYS5oIHNvIHdlIGNhbiB1c2UgdGhlIHR3
byBpbnRlcmNoYW5nYWJseSBhbmQgaGFuZGxlIGJvdGggRml4ZWRWZWN0b3IKKyAgICAgICAgYW5k
IEhhc2hTZXQgd2l0aCB0aGUgc21hZSBjb2RlLgorICAgICAgICAoK1tXZWJIVE1MUmVwcmVzZW50
YXRpb24gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXNdKTogVXBkYXRlZCBmb3IgbmFtZSBjaGFuZ2Uu
CisgICAgICAgICgrW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlc10pOiBEaXR0by4KKyAgICAgICAgKCtbV2ViSFRNTFJlcHJlc2VudGF0aW9uIHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVzXSk6IERpdHRvLgorICAgICAgICAoK1tXZWJIVE1MUmVwcmVzZW50YXRp
b24gdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzXSk6IERpdHRvLgorCiAyMDIxLTA0LTI3ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgY2hhcnNl
dCBpbiBjb250ZW50VHlwZSB1c2VkIGluIEJsb2IucHJvdG90eXBlLnNsaWNlKHN0YXJ0LCBlbmQs
IGNvbnRlbnRUeXBlKSBpcyBsb3N0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9BU0NJSUNU
eXBlLmggYi9Tb3VyY2UvV1RGL3d0Zi9BU0NJSUNUeXBlLmgKaW5kZXggOTQ1ZTc4Mjg0NzU2M2Ji
NmIwOGJiNWFkY2Q1MjE1NGQ2NjkzMTM5OC4uYmE2NzcyNzNkNDkyNTQyZGI5ZGFlZWI1MjFkMmY4
MzEzZTU3MzIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQVNDSUlDVHlwZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0FTQ0lJQ1R5cGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQwLDE2ICs0MCwxNyBAQAogbmFtZXNw
YWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBi
b29sIGlzQVNDSUkoQ2hhcmFjdGVyVHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBib29sIGlzQVNDSUlBbHBoYShDaGFyYWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSUFscGhhbnVtZXJpYyhDaGFyYWN0ZXJUeXBlKTsK
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSUJpbmFyeURpZ2l0
KENoYXJhY3RlclR5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBp
c0FTQ0lJRGlnaXQoQ2hhcmFjdGVyVHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBib29sIGlzQVNDSUlIZXhEaWdpdChDaGFyYWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSUxvd2VyKENoYXJhY3RlclR5cGUpOwotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FTQ0lJT2N0YWxEaWdpdChDaGFy
YWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJ
SVByaW50YWJsZShDaGFyYWN0ZXJUeXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IGJvb2wgaXNBU0NJSVNwYWNlKENoYXJhY3RlclR5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gYm9vbCBpc0FTQ0lJVXBwZXIoQ2hhcmFjdGVyVHlwZSk7Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJQWxwaGEoQ2hh
cmFjdGVyVHlwZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIg
Ym9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKENoYXJhY3RlclR5cGUpOwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSUJpbmFyeURpZ2l0KENoYXJh
Y3RlclR5cGUpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJv
b2wgaXNBU0NJSURpZ2l0KENoYXJhY3RlclR5cGUpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSURpZ2l0T3JQdW5jdHVhdGlvbihDaGFyYWN0
ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29s
IGlzQVNDSUlIZXhEaWdpdChDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlMb3dlcihDaGFyYWN0ZXJUeXBlKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlPY3Rh
bERpZ2l0KENoYXJhY3RlclR5cGUpOwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Y29uc3RleHByIGJvb2wgaXNBU0NJSVByaW50YWJsZShDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlTcGFjZShDaGFy
YWN0ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBi
b29sIGlzQVNDSUlVcHBlcihDaGFyYWN0ZXJUeXBlKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4gQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXIoQ2hhcmFjdGVyVHlwZSk7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlVcHBl
cihDaGFyYWN0ZXJUeXBlKTsKQEAgLTU3LDE4ICs1OCwxOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlVcHBlcihDaGFyYWN0ZXJUeXBlKTsK
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHVpbnQ4X3QgdG9BU0NJSUhleFZhbHVl
KENoYXJhY3RlclR5cGUpOwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdWludDhf
dCB0b0FTQ0lJSGV4VmFsdWUoQ2hhcmFjdGVyVHlwZSBmaXJzdENoYXJhY3RlciwgQ2hhcmFjdGVy
VHlwZSBzZWNvbmRDaGFyYWN0ZXIpOwogCi1jaGFyIGxvd2VyTmliYmxlVG9BU0NJSUhleERpZ2l0
KHVpbnQ4X3QpOwotY2hhciB1cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90KTsKLWNo
YXIgbG93ZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQodWludDhfdCk7Ci1jaGFyIHVw
cGVyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QpOworY29uc3RleHByIGNo
YXIgbG93ZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodWludDhfdCk7Citjb25zdGV4cHIgY2hhciB1
cHBlck5pYmJsZVRvQVNDSUlIZXhEaWdpdCh1aW50OF90KTsKK2NvbnN0ZXhwciBjaGFyIGxvd2Vy
TmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QpOworY29uc3RleHByIGNoYXIg
dXBwZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQodWludDhfdCk7CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGJvb2wgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChD
aGFyYWN0ZXJUeXBlLCBjaGFyIGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0ZXIpOwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSUFscGhhQ2Fz
ZWxlc3NFcXVhbChDaGFyYWN0ZXJUeXBlLCBjaGFyIGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0
ZXIpOwogCiAvLyBUaGUgdG9BU0NJSUxvd2VyVW5jaGVja2VkIGZ1bmN0aW9uIGNhbiBiZSB1c2Vk
IGZvciBjb21wYXJpbmcgYW55IGlucHV0IGNoYXJhY3RlcgogLy8gdG8gYSBsb3dlcmNhc2UgRW5n
bGlzaCBjaGFyYWN0ZXIuIFRoZSBpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsIGZ1bmN0aW9uIHNo
b3VsZAogLy8gYmUgdXNlZCBmb3IgcmVndWxhciBjb21wYXJpc29uIG9mIEFTQ0lJIGFscGhhIGNo
YXJhY3RlcnMsIGJ1dCBzd2l0Y2ggc3RhdGVtZW50cwogLy8gaW4gdGhlIENTUyB0b2tlbml6ZXIs
IGZvciBleGFtcGxlLCBpbnN0ZWFkIG1ha2UgZGlyZWN0IHVzZSB0b0FTQ0lJTG93ZXJVbmNoZWNr
ZWQuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBDaGFyYWN0ZXJUeXBlIHRvQVND
SUlMb3dlclVuY2hlY2tlZChDaGFyYWN0ZXJUeXBlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGNvbnN0ZXhwciBDaGFyYWN0ZXJUeXBlIHRvQVNDSUlMb3dlclVuY2hlY2tlZChD
aGFyYWN0ZXJUeXBlKTsKIAogZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCB1bnNpZ25l
ZCBjaGFyIGFzY2lpQ2FzZUZvbGRUYWJsZVsyNTZdOwogCkBAIC03NywxMiArNzgsMTIgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSShDaGFy
YWN0ZXJUeXBlIGNoYXJhY3RlcikKICAgICByZXR1cm4gIShjaGFyYWN0ZXIgJiB+MHg3Rik7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlM
b3dlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlMb3dlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
cikKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyID49ICdhJyAmJiBjaGFyYWN0ZXIgPD0gJ3onOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgQ2hhcmFjdGVyVHlw
ZSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJ
TG93ZXJVbmNoZWNrZWQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gVGhpcyBm
dW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgY29tcGFyaW5nIGFueSBpbnB1dCBjaGFyYWN0ZXIKICAg
ICAvLyB0byBhIGxvd2VyY2FzZSBFbmdsaXNoIGNoYXJhY3Rlci4gVGhlIGlzQVNDSUlBbHBoYUNh
c2VsZXNzRXF1YWwKQEAgLTkyLDM3ICs5MywzNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBpbmxpbmUgQ2hhcmFjdGVyVHlwZSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoQ2hhcgog
ICAgIHJldHVybiBjaGFyYWN0ZXIgfCAweDIwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGEoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0
ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FT
Q0lJQWxwaGEoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7CiAgICAgcmV0dXJuIGlzQVNDSUlM
b3dlcih0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlEaWdpdChDaGFyYWN0ZXJU
eXBlIGNoYXJhY3RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhw
ciBib29sIGlzQVNDSUlEaWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICByZXR1
cm4gY2hhcmFjdGVyID49ICcwJyAmJiBjaGFyYWN0ZXIgPD0gJzknOwogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
Y29uc3RleHByIGJvb2wgaXNBU0NJSUFscGhhbnVtZXJpYyhDaGFyYWN0ZXJUeXBlIGNoYXJhY3Rl
cikKIHsKICAgICByZXR1cm4gaXNBU0NJSURpZ2l0KGNoYXJhY3RlcikgfHwgaXNBU0NJSUFscGhh
KGNoYXJhY3Rlcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGlu
ZSBib29sIGlzQVNDSUlIZXhEaWdpdChDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlIZXhEaWdpdChD
aGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICByZXR1cm4gaXNBU0NJSURpZ2l0KGNoYXJh
Y3RlcikgfHwgKHRvQVNDSUlMb3dlclVuY2hlY2tlZChjaGFyYWN0ZXIpID49ICdhJyAmJiB0b0FT
Q0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKSA8PSAnZicpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBpc0FTQ0lJQmluYXJ5RGlnaXQoQ2hhcmFj
dGVyVHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBjb25z
dGV4cHIgYm9vbCBpc0FTQ0lJQmluYXJ5RGlnaXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7
CiAgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnMCcgfHwgY2hhcmFjdGVyID09ICcxJzsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSU9jdGFs
RGlnaXQoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBjb25zdGV4cHIgYm9vbCBpc0FTQ0lJT2N0YWxEaWdpdChDaGFyYWN0ZXJUeXBlIGNo
YXJhY3RlcikKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyID49ICcwJyAmJiBjaGFyYWN0ZXIgPD0g
JzcnOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgYm9vbCBp
c0FTQ0lJUHJpbnRhYmxlKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wgaXNBU0NJSVByaW50YWJsZShDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyID49ICcgJyAmJiBjaGFy
YWN0ZXIgPD0gJ34nOwogfQpAQCAtMTQzLDEyICsxNDQsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNBU0NJSVByaW50YWJsZShDaGFyYWN0ZXJUeXBl
IGNoYXIKICAgICBCZWNhdXNlIG9mIHRob3NlLCB3ZSBmaXJzdCBjaGVjayB0byBxdWlja2x5IHJl
dHVybiBmYWxzZSBmb3Igbm9uLWNvbnRyb2wgY2hhcmFjdGVycywKICAgICB0aGVuIGNoZWNrIGZv
ciBzcGFjZSBpdHNlbGYgdG8gcXVpY2tseSByZXR1cm4gdHJ1ZSBmb3IgdGhhdCBjYXNlLCB0aGVu
IGRvIHRoZSByZXN0LgogKi8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGlu
ZSBib29sIGlzQVNDSUlTcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlTcGFjZShDaGFyYWN0
ZXJUeXBlIGNoYXJhY3RlcikKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyIDw9ICcgJyAmJiAoY2hh
cmFjdGVyID09ICcgJyB8fCAoY2hhcmFjdGVyIDw9IDB4RCAmJiBjaGFyYWN0ZXIgPj0gMHg5KSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVND
SUlVcHBlcihDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlVcHBlcihDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikKIHsKICAgICByZXR1cm4gY2hhcmFjdGVyID49ICdBJyAmJiBjaGFyYWN0ZXIgPD0gJ1on
OwogfQpAQCAtMTg0LDMxICsxODUsMzEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gaW5saW5lIHVpbnQ4X3QgdG9BU0NJSUhleFZhbHVlKENoYXJhY3RlclR5cGUgZmkKICAgICBy
ZXR1cm4gdG9BU0NJSUhleFZhbHVlKGZpcnN0Q2hhcmFjdGVyKSA8PCA0IHwgdG9BU0NJSUhleFZh
bHVlKHNlY29uZENoYXJhY3Rlcik7CiB9CiAKLWlubGluZSBjaGFyIGxvd2VyTmliYmxlVG9BU0NJ
SUhleERpZ2l0KHVpbnQ4X3QgdmFsdWUpCitjb25zdGV4cHIgY2hhciBsb3dlck5pYmJsZVRvQVND
SUlIZXhEaWdpdCh1aW50OF90IHZhbHVlKQogewogICAgIHVpbnQ4X3QgbmliYmxlID0gdmFsdWUg
JiAweEY7CiAgICAgcmV0dXJuIG5pYmJsZSArIChuaWJibGUgPCAxMCA/ICcwJyA6ICdBJyAtIDEw
KTsKIH0KIAotaW5saW5lIGNoYXIgdXBwZXJOaWJibGVUb0FTQ0lJSGV4RGlnaXQodWludDhfdCB2
YWx1ZSkKK2NvbnN0ZXhwciBjaGFyIHVwcGVyTmliYmxlVG9BU0NJSUhleERpZ2l0KHVpbnQ4X3Qg
dmFsdWUpCiB7CiAgICAgdWludDhfdCBuaWJibGUgPSB2YWx1ZSA+PiA0OwogICAgIHJldHVybiBu
aWJibGUgKyAobmliYmxlIDwgMTAgPyAnMCcgOiAnQScgLSAxMCk7CiB9CiAKLWlubGluZSBjaGFy
IGxvd2VyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QgdmFsdWUpCitjb25z
dGV4cHIgY2hhciBsb3dlck5pYmJsZVRvTG93ZXJjYXNlQVNDSUlIZXhEaWdpdCh1aW50OF90IHZh
bHVlKQogewogICAgIHVpbnQ4X3QgbmliYmxlID0gdmFsdWUgJiAweEY7CiAgICAgcmV0dXJuIG5p
YmJsZSArIChuaWJibGUgPCAxMCA/ICcwJyA6ICdhJyAtIDEwKTsKIH0KIAotaW5saW5lIGNoYXIg
dXBwZXJOaWJibGVUb0xvd2VyY2FzZUFTQ0lJSGV4RGlnaXQodWludDhfdCB2YWx1ZSkKK2NvbnN0
ZXhwciBjaGFyIHVwcGVyTmliYmxlVG9Mb3dlcmNhc2VBU0NJSUhleERpZ2l0KHVpbnQ4X3QgdmFs
dWUpCiB7CiAgICAgdWludDhfdCBuaWJibGUgPSB2YWx1ZSA+PiA0OwogICAgIHJldHVybiBuaWJi
bGUgKyAobmliYmxlIDwgMTAgPyAnMCcgOiAnYScgLSAxMCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBib29sIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwo
Q2hhcmFjdGVyVHlwZSBpbnB1dENoYXJhY3RlciwgY2hhciBleHBlY3RlZEFTQ0lJTG93ZXJjYXNl
TGV0dGVyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gY29uc3RleHByIGJvb2wg
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChDaGFyYWN0ZXJUeXBlIGlucHV0Q2hhcmFjdGVyLCBj
aGFyIGV4cGVjdGVkQVNDSUlMb3dlcmNhc2VMZXR0ZXIpCiB7CiAgICAgLy8gTmFtZSBvZiB0aGlz
IGFyZ3VtZW50IHNheXMgdGhpcyBtdXN0IGJlIGEgbG93ZXJjYXNlIGxldHRlciwgYnV0IGl0IGNh
biBhY3R1YWxseSBiZToKICAgICAvLyAgIC0gYSBsb3dlcmNhc2UgbGV0dGVyCkBAIC0yMjUsOSAr
MjI2LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIGJvb2wgaXNB
U0NJSUFscGhhQ2FzZWxlc3NFcXVhbChDaGFyYWN0ZXIKICAgICByZXR1cm4gTElLRUxZKHRvQVND
SUlMb3dlclVuY2hlY2tlZChpbnB1dENoYXJhY3RlcikgPT0gZXhwZWN0ZWRBU0NJSUxvd2VyY2Fz
ZUxldHRlcik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBi
b29sIGlzQVNDSUlEaWdpdE9yUHVuY3R1YXRpb24oQ2hhcmFjdGVyVHlwZSBjaGFyQ29kZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGNvbnN0ZXhwciBib29sIGlzQVNDSUlEaWdp
dE9yUHVuY3R1YXRpb24oQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCiB7Ci0gICAgcmV0dXJuIChj
aGFyQ29kZSA+PSAnIScgJiYgY2hhckNvZGUgPD0gJ0AnKSB8fCAoY2hhckNvZGUgPj0gJ1snICYm
IGNoYXJDb2RlIDw9ICdgJykgfHwgKGNoYXJDb2RlID49ICd7JyAmJiBjaGFyQ29kZSA8PSAnficp
OworICAgIHJldHVybiAoY2hhcmFjdGVyID49ICchJyAmJiBjaGFyYWN0ZXIgPD0gJ0AnKSB8fCAo
Y2hhcmFjdGVyID49ICdbJyAmJiBjaGFyYWN0ZXIgPD0gJ2AnKSB8fCAoY2hhcmFjdGVyID49ICd7
JyAmJiBjaGFyYWN0ZXIgPD0gJ34nKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDIwZjc2ODE5ZjM2
YzEzMTFiOWJjZmJiMjk3YTU2YjI5ZTgyMDJmOGMuLmY1YzNmOTQzMWI1YTRjNzdiM2RmNGYyMmUy
ZTA2NmIzODRmNDY3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTYyLDYgKzYyLDcgQEAgdXNpbmcgVmVjdG9y
TWFsbG9jID0gRmFzdE1hbGxvYzsKIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVsdFJl
ZkRlcmVmVHJhaXRzOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRs
ZXI7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgRml4ZWRWZWN0b3I7CiB0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgRnVuY3Rpb247CiB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWUgPSBBbnlU
aHJlYWRzQWNjZXNzVHJhaXRzPiBjbGFzcyBMYXp5TmV2ZXJEZXN0cm95ZWQ7CiB0ZW1wbGF0ZTx0
eXBlbmFtZSwgdHlwZW5hbWUgPSBBbnlUaHJlYWRzQWNjZXNzVHJhaXRzPiBjbGFzcyBOZXZlckRl
c3Ryb3llZDsKQEAgLTExOCw2ICsxMTksNyBAQCB1c2luZyBXVEY6OkF0b21TdHJpbmdJbXBsOwog
dXNpbmcgV1RGOjpCaW5hcnlTZW1hcGhvcmU7CiB1c2luZyBXVEY6OkNTdHJpbmc7CiB1c2luZyBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyOwordXNpbmcgV1RGOjpGaXhlZFZlY3RvcjsKIHVzaW5nIFdU
Rjo6RnVuY3Rpb247CiB1c2luZyBXVEY6OkZ1bmN0aW9uRGlzcGF0Y2hlcjsKIHVzaW5nIFdURjo6
SGFzaENvdW50ZWRTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1h
cC5oIGIvU291cmNlL1dURi93dGYvU29ydGVkQXJyYXlNYXAuaAppbmRleCA3NjkwMTI4OGJkNTY0
NGU3MGZlNDJmOTRjZDgzMTRhOGI4NjQxMDYzLi4xZGQxNDg3YjMzN2M5MjNlNThhMmUxZjdmZTdk
YzYzZDA5NzczMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmgKQEAgLTUyLDMyICs1Miw4NyBA
QCBwcml2YXRlOgogICAgIGNvbnN0IEFycmF5VHlwZSYgbV9hcnJheTsKIH07CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIEFycmF5VHlwZT4gY2xhc3MgU29ydGVkQXJyYXlTZXQgeworcHVibGljOgorICAg
IGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldChjb25zdCBBcnJheVR5cGUmKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlBcmd1bWVudD4gYm9vbCBjb250YWlucyhjb25zdCBLZXlBcmd1bWVudCYp
IGNvbnN0OworCitwcml2YXRlOgorICAgIGNvbnN0IEFycmF5VHlwZSYgbV9hcnJheTsKK307CisK
IHN0cnVjdCBDb21wYXJhYmxlU3RyaW5nVmlldyB7CiAgICAgU3RyaW5nVmlldyBzdHJpbmc7CiB9
OwogCi1zdHJ1Y3QgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCB7Ci0gICAgY29uc3QgY2hhciogbGl0
ZXJhbDsKLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBzaXplPiBjb25zdGV4cHIgQ29tcGFyYWJs
ZUFTQ0lJTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbc2l6ZV0pIDogbGl0ZXJhbCB7
IGNoYXJhY3RlcnMgfSB7IH0KKy8vIE5vVXBwZXJjYXNlTGV0dGVyc09wdGltaXplZCBtZWFucyBu
byBjaGFyYWN0ZXJzIHdpdGggdGhlIDB4MjAgYml0IHNldC4KKy8vIFRoYXQgbWVhbnMgdGhlIHN0
cmluZ3MgY2FuJ3QgaW5jbHVkZSBjb250cm9sIGNoYXJhY3RlcnMsIHVwcGVyY2FzZSBsZXR0ZXJz
LCBvciBhbnkgb2YgQFtcXV8uCitlbnVtIGNsYXNzIEFTQ0lJU3Vic2V0IHsgQWxsLCBOb1VwcGVy
Y2FzZUxldHRlcnMsIE5vVXBwZXJjYXNlTGV0dGVyc09wdGltaXplZCB9OworCit0ZW1wbGF0ZTxB
U0NJSVN1YnNldD4gc3RydWN0IENvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWwgeworICAgIEFT
Q0lJTGl0ZXJhbCBsaXRlcmFsOworICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IHNpemU+IGNvbnN0
ZXhwciBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJz
KVtzaXplXSk7CiAgICAgc3RhdGljIE9wdGlvbmFsPENvbXBhcmFibGVTdHJpbmdWaWV3PiBwYXJz
ZShTdHJpbmdWaWV3IHN0cmluZykgeyByZXR1cm4geyB7IHN0cmluZyB9IH07IH0KIH07CiAKLWNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCwgQ29tcGFyYWJs
ZUFTQ0lJTGl0ZXJhbCk7Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoQ29tcGFyYWJsZUFTQ0lJ
TGl0ZXJhbCwgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCk7Cit1c2luZyBDb21wYXJhYmxlQVNDSUlM
aXRlcmFsID0gQ29tcGFyYWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbDxBU0NJSVN1YnNldDo6QWxsPjsK
K3VzaW5nIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCA9IENvbXBhcmFibGVBU0NJ
SVN1YnNldExpdGVyYWw8QVNDSUlTdWJzZXQ6Ok5vVXBwZXJjYXNlTGV0dGVycz47Cit1c2luZyBD
b21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgPSBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPEFT
Q0lJU3Vic2V0OjpOb1VwcGVyY2FzZUxldHRlcnNPcHRpbWl6ZWQ+OworCit0ZW1wbGF0ZTxBU0NJ
SVN1YnNldCBzdWJzZXQ+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZUFTQ0lJ
U3Vic2V0TGl0ZXJhbDxzdWJzZXQ+LCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNl
dD4pOwordGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjwoQ29tcGFyYWJsZUFTQ0lJU3Vic2V0TGl0ZXJhbDxzdWJzZXQ+LCBDb21wYXJhYmxlQVNDSUlT
dWJzZXRMaXRlcmFsPHN1YnNldD4pOwogCiBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZVN0cmlu
Z1ZpZXcsIENvbXBhcmFibGVBU0NJSUxpdGVyYWwpOworYm9vbCBvcGVyYXRvcj09KENvbXBhcmFi
bGVTdHJpbmdWaWV3LCBDb21wYXJhYmxlQ2FzZUZvbGRpbmdBU0NJSUxpdGVyYWwpOworYm9vbCBv
cGVyYXRvcj09KENvbXBhcmFibGVTdHJpbmdWaWV3LCBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwp
OwogYm9vbCBvcGVyYXRvcjwoQ29tcGFyYWJsZVN0cmluZ1ZpZXcsIENvbXBhcmFibGVBU0NJSUxp
dGVyYWwpOwotYm9vbCBvcGVyYXRvciE9KENvbXBhcmFibGVTdHJpbmdWaWV3LCBDb21wYXJhYmxl
QVNDSUlMaXRlcmFsKTsKLWJvb2wgb3BlcmF0b3I9PShDb21wYXJhYmxlQVNDSUlMaXRlcmFsLCBD
b21wYXJhYmxlU3RyaW5nVmlldyk7Citib29sIG9wZXJhdG9yPChDb21wYXJhYmxlU3RyaW5nVmll
dywgQ29tcGFyYWJsZUNhc2VGb2xkaW5nQVNDSUlMaXRlcmFsKTsKK2Jvb2wgb3BlcmF0b3I8KENv
bXBhcmFibGVTdHJpbmdWaWV3LCBDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwpOworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBPdGhlclR5cGU+IGJvb2wgb3BlcmF0b3I9PShPdGhlclR5cGUsIENvbXBhcmFi
bGVTdHJpbmdWaWV3KTsKK3RlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHlwZT4gYm9vbCBvcGVyYXRv
ciE9KENvbXBhcmFibGVTdHJpbmdWaWV3LCBPdGhlclR5cGUpOworCit0ZW1wbGF0ZTxBU0NJSVN1
YnNldCBzdWJzZXQ+IGNvbnN0ZXhwciBib29sIGlzSW5TdWJzZXQoY2hhciBjaGFyYWN0ZXIpCit7
CisgICAgaWYgKCEoY2hhcmFjdGVyICYmIGlzQVNDSUkoY2hhcmFjdGVyKSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBzd2l0Y2ggKHN1YnNldCkgeworICAgIGNhc2UgQVNDSUlTdWJzZXQ6
OkFsbDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBBU0NJSVN1YnNldDo6Tm9VcHBl
cmNhc2VMZXR0ZXJzOgorICAgICAgICByZXR1cm4gIWlzQVNDSUlVcHBlcihjaGFyYWN0ZXIpOwor
ICAgIGNhc2UgQVNDSUlTdWJzZXQ6Ok5vVXBwZXJjYXNlTGV0dGVyc09wdGltaXplZDoKKyAgICAg
ICAgcmV0dXJuIGNoYXJhY3RlciA9PSB0b0FTQ0lJTG93ZXJVbmNoZWNrZWQoY2hhcmFjdGVyKTsK
KyAgICB9Cit9CisKKy8vIEZJWE1FOiBVc2Ugc3RkOjphbGxfb2YgaW5zdGVhZCBvZiB0aGlzIGFu
ZCByZW1vdmUgaXQsIG9uY2Ugd2UgcmVxdWlyZSBDKysyMC4KK3RlbXBsYXRlPHR5cGVuYW1lIEl0
ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+IGNvbnN0ZXhwciBib29sIGFsbE9mQ29uc3RFeHBy
KEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LCBQcmVkaWNhdGUgcHJlZGljYXRlKQorewor
ICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7CisgICAgICAgIGlmICghcHJlZGlj
YXRlKCpmaXJzdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZTxBU0NJSVN1YnNldCBzdWJzZXQ+IHRlbXBsYXRlPHN0ZDo6
c2l6ZV90IHNpemU+IGNvbnN0ZXhwciBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNl
dD46OkNvbXBhcmFibGVBU0NJSVN1YnNldExpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMp
W3NpemVdKQorICAgIDogbGl0ZXJhbCB7IEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUo
Y2hhcmFjdGVycykgfQoreworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChhbGxP
ZkNvbnN0RXhwcigmY2hhcmFjdGVyc1swXSwgJmNoYXJhY3RlcnNbc2l6ZSAtIDFdLCBbXSAoY2hh
ciBjaGFyYWN0ZXIpIHsKKyAgICAgICAgcmV0dXJuIGlzSW5TdWJzZXQ8c3Vic2V0PihjaGFyYWN0
ZXIpOworICAgIH0pKTsKKyAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQoIWNoYXJh
Y3RlcnNbc2l6ZSAtIDFdKTsKK30KIAogLy8gRklYTUU6IFVzZSBzdGQ6OmlzX3NvcnRlZCBpbnN0
ZWFkIG9mIHRoaXMgYW5kIHJlbW92ZSBpdCwgb25jZSB3ZSByZXF1aXJlIEMrKzIwLgotdGVtcGxh
dGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4gY29uc3RleHByIGJvb2wg
aXNTb3J0ZWRDb25zdEV4cHIoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCwgUHJlZGljYXRl
IHByZWRpY2F0ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNh
dGU+IGNvbnN0ZXhwciBib29sIGlzU29ydGVkQ29uc3RFeHByKEl0ZXJhdG9yIGZpcnN0LCBJdGVy
YXRvciBsYXN0LCBQcmVkaWNhdGUgcHJlZGljYXRlKQogewotICAgIGlmIChiZWdpbiA9PSBlbmQp
CisgICAgaWYgKGZpcnN0ID09IGxhc3QpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGF1dG8g
Y3VycmVudCA9IGJlZ2luOworICAgIGF1dG8gY3VycmVudCA9IGZpcnN0OwogICAgIGF1dG8gcHJl
dmlvdXMgPSBjdXJyZW50OwotICAgIHdoaWxlICgrK2N1cnJlbnQgIT0gZW5kKSB7CisgICAgd2hp
bGUgKCsrY3VycmVudCAhPSBsYXN0KSB7CiAgICAgICAgIGlmICghcHJlZGljYXRlKCpwcmV2aW91
cywgKmN1cnJlbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBwcmV2aW91
cyA9IGN1cnJlbnQ7CkBAIC04NSw2ICsxNDAsMTIgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0
b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4gY29uc3RleHByIGJvb2wgaXNTb3J0ZWRDb25zdEV4cHIK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gRklYTUU6IFVzZSBzdGQ6OmlzX3NvcnRlZCBpbnN0
ZWFkIG9mIHRoaXMgYW5kIHJlbW92ZSBpdCwgb25jZSB3ZSByZXF1aXJlIEMrKzIwLgordGVtcGxh
dGU8dHlwZW5hbWUgSXRlcmF0b3I+IGNvbnN0ZXhwciBib29sIGlzU29ydGVkQ29uc3RFeHByKEl0
ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0KQoreworICAgIHJldHVybiBpc1NvcnRlZENvbnN0
RXhwcihmaXJzdCwgbGFzdCwgW10gKGF1dG8mIGEsIGF1dG8mIGIpIHsgcmV0dXJuIGEgPCBiOyB9
KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgQXJyYXlUeXBlPiBjb25zdGV4cHIgU29ydGVkQXJy
YXlNYXA8QXJyYXlUeXBlPjo6U29ydGVkQXJyYXlNYXAoY29uc3QgQXJyYXlUeXBlJiBhcnJheSkK
ICAgICA6IG1fYXJyYXkgeyBhcnJheSB9CiB7CkBAIC0xMTIsNiArMTczLDIzIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIEFycmF5VHlwZT4gdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJndW1lbnQ+IGlubGlu
ZSBhdXRvIFNvcnRlZEFyCiAgICAgcmV0dXJuIHJlc3VsdCA/ICpyZXN1bHQgOiBkZWZhdWx0VmFs
dWU7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEFycmF5VHlwZT4gY29uc3RleHByIFNvcnRlZEFy
cmF5U2V0PEFycmF5VHlwZT46OlNvcnRlZEFycmF5U2V0KGNvbnN0IEFycmF5VHlwZSYgYXJyYXkp
CisgICAgOiBtX2FycmF5IHsgYXJyYXkgfQoreworICAgIEFTU0VSVF9VTkRFUl9DT05TVEVYUFJf
Q09OVEVYVChpc1NvcnRlZENvbnN0RXhwcihzdGQ6OmJlZ2luKGFycmF5KSwgc3RkOjplbmQoYXJy
YXkpKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFycmF5VHlwZT4gdGVtcGxhdGU8dHlwZW5h
bWUgS2V5QXJndW1lbnQ+IGlubGluZSBib29sIFNvcnRlZEFycmF5U2V0PEFycmF5VHlwZT46OmNv
bnRhaW5zKGNvbnN0IEtleUFyZ3VtZW50JiBrZXkpIGNvbnN0Cit7CisgICAgdXNpbmcgRWxlbWVu
dFR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnRfdDxBcnJheVR5cGU+OworICAgIGF1
dG8gcGFyc2VkS2V5ID0gRWxlbWVudFR5cGU6OnBhcnNlKGtleSk7CisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBlbmhhbmNlIHRyeUJpbmFyeVNlYXJjaCBzbyBpdCBjYW4gZGVkdWNlIEVsZW1lbnRU
eXBlLgorICAgIC8vIEZJWE1FOiBJZiB0aGUgYXJyYXkncyBzaXplIGlzIHNtYWxsIGVub3VnaCwg
c2hvdWxkIGRvIGxpbmVhciBzZWFyY2ggc2luY2UgaXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBi
aW5hcnkgc2VhcmNoLgorICAgIHJldHVybiBwYXJzZWRLZXkgJiYgdHJ5QmluYXJ5U2VhcmNoPEVs
ZW1lbnRUeXBlPihtX2FycmF5LCBzdGQ6OnNpemUobV9hcnJheSksICpwYXJzZWRLZXksIFtdIChh
dXRvKiBlbGVtZW50KSB7CisgICAgICAgIHJldHVybiAqZWxlbWVudDsKKyAgICB9KTsKK30KKwog
Y29uc3RleHByIGludCBzdHJjbXBDb25zdEV4cHIoY29uc3QgY2hhciogYSwgY29uc3QgY2hhciog
YikKIHsKICAgICB3aGlsZSAoKmEgPT0gKmIgJiYgKmEgJiYgKmIpIHsKQEAgLTEyMSwxNCArMTk5
LDMzIEBAIGNvbnN0ZXhwciBpbnQgc3RyY21wQ29uc3RFeHByKGNvbnN0IGNoYXIqIGEsIGNvbnN0
IGNoYXIqIGIpCiAgICAgcmV0dXJuICphID09ICpiID8gMCA6ICphIDwgKmIgPyAtMSA6IDE7CiB9
CiAKLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBhLCBD
b21wYXJhYmxlQVNDSUlMaXRlcmFsIGIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
PiBpbmxpbmUgYm9vbCBsZXNzVGhhbkFTQ0lJQ2FzZUZvbGRpbmcoY29uc3QgQ2hhcmFjdGVyVHlw
ZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyKiBsaXRlcmFsV2l0aE5v
VXBwZXJjYXNlKQogewotICAgIHJldHVybiAhc3RyY21wQ29uc3RFeHByKGEubGl0ZXJhbCwgYi5s
aXRlcmFsKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgaWYgKCFsaXRlcmFsV2l0aE5vVXBwZXJjYXNlW2ldKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHRvQVNDSUlMb3dlcihjaGFyYWN0ZXJz
W2ldKTsKKyAgICAgICAgaWYgKGNoYXJhY3RlciAhPSBsaXRlcmFsV2l0aE5vVXBwZXJjYXNlW2ld
KQorICAgICAgICAgICAgcmV0dXJuIGNoYXJhY3RlciA8IGxpdGVyYWxXaXRoTm9VcHBlcmNhc2Vb
aV07CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBsZXNzVGhhbkFT
Q0lJQ2FzZUZvbGRpbmcoU3RyaW5nVmlldyBzdHJpbmcsIGNvbnN0IGNoYXIqIGxpdGVyYWxXaXRo
Tm9VcHBlcmNhc2UpCit7CisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJu
IGxlc3NUaGFuQVNDSUlDYXNlRm9sZGluZyhzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxl
bmd0aCgpLCBsaXRlcmFsV2l0aE5vVXBwZXJjYXNlKTsKKyAgICByZXR1cm4gbGVzc1RoYW5BU0NJ
SUNhc2VGb2xkaW5nKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpLCBsaXRl
cmFsV2l0aE5vVXBwZXJjYXNlKTsKIH0KIAotY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KENvbXBh
cmFibGVBU0NJSUxpdGVyYWwgYSwgQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBiKQordGVtcGxhdGU8
QVNDSUlTdWJzZXQgc3Vic2V0PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVB
U0NJSVN1YnNldExpdGVyYWw8c3Vic2V0PiBhLCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFs
PHN1YnNldD4gYikKIHsKLSAgICByZXR1cm4gc3RyY21wQ29uc3RFeHByKGEubGl0ZXJhbCwgYi5s
aXRlcmFsKSA8IDA7CisgICAgcmV0dXJuICFzdHJjbXBDb25zdEV4cHIoYS5saXRlcmFsLmNoYXJh
Y3RlcnMoKSwgYi5saXRlcmFsLmNoYXJhY3RlcnMoKSk7Cit9CisKK3RlbXBsYXRlPEFTQ0lJU3Vi
c2V0IHN1YnNldD4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVBU0NJSVN1YnNl
dExpdGVyYWw8c3Vic2V0PiBhLCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4g
YikKK3sKKyAgICByZXR1cm4gc3RyY21wQ29uc3RFeHByKGEubGl0ZXJhbC5jaGFyYWN0ZXJzKCks
IGIubGl0ZXJhbC5jaGFyYWN0ZXJzKCkpIDwgMDsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShDb21wYXJhYmxlU3RyaW5nVmlldyBhLCBDb21wYXJhYmxlQVNDSUlMaXRlcmFsIGIpCkBAIC0x
MzgsMjAgKzIzNSw0NSBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KENvbXBhcmFibGVTdHJpbmdW
aWV3IGEsIENvbXBhcmFibGVBU0NJSUxpdGVyYWwgYikKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I8
KENvbXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFibGVBU0NJSUxpdGVyYWwgYikKIHsKLSAg
ICByZXR1cm4gY29kZVBvaW50Q29tcGFyZShhLnN0cmluZywgYi5saXRlcmFsKSA8IDA7CisgICAg
cmV0dXJuIGNvZGVQb2ludENvbXBhcmUoYS5zdHJpbmcsIGIubGl0ZXJhbC5jaGFyYWN0ZXJzKCkp
IDwgMDsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShDb21wYXJhYmxlU3RyaW5nVmlldyBh
LCBDb21wYXJhYmxlQVNDSUlMaXRlcmFsIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KENvbXBh
cmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBiKQogewotICAgIHJl
dHVybiAhKGEgPT0gYik7CisgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
Q29tbW9uV2l0aG91dExlbmd0aChhLnN0cmluZywgYi5saXRlcmFsKTsKK30KKworaW5saW5lIGJv
b2wgb3BlcmF0b3I8KENvbXBhcmFibGVTdHJpbmdWaWV3IGEsIENvbXBhcmFibGVMZXR0ZXJzTGl0
ZXJhbCBiKQoreworICAgIHJldHVybiBsZXNzVGhhbkFTQ0lJQ2FzZUZvbGRpbmcoYS5zdHJpbmcs
IGIubGl0ZXJhbCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZVN0cmlu
Z1ZpZXcgYSwgQ29tcGFyYWJsZUNhc2VGb2xkaW5nQVNDSUlMaXRlcmFsIGIpCit7CisgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5zdHJpbmcsIGIubGl0ZXJhbCk7CiB9CiAKLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oQ29tcGFyYWJsZUFTQ0lJTGl0ZXJhbCBhLCBDb21wYXJhYmxl
U3RyaW5nVmlldyBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I8KENvbXBhcmFibGVTdHJpbmdWaWV3
IGEsIENvbXBhcmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBiKQoreworICAgIHJldHVybiBs
ZXNzVGhhbkFTQ0lJQ2FzZUZvbGRpbmcoYS5zdHJpbmcsIGIubGl0ZXJhbCk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIE90aGVyVHlwZT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShPdGhlclR5cGUg
YSwgQ29tcGFyYWJsZVN0cmluZ1ZpZXcgYikKIHsKICAgICByZXR1cm4gYiA9PSBhOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclR5cGU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oQ29tcGFy
YWJsZVN0cmluZ1ZpZXcgYSwgT3RoZXJUeXBlIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsK
K30KKwogfQogCit1c2luZyBXVEY6OkFTQ0lJU3Vic2V0OwogdXNpbmcgV1RGOjpDb21wYXJhYmxl
QVNDSUlMaXRlcmFsOwordXNpbmcgV1RGOjpDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsOwor
dXNpbmcgV1RGOjpDb21wYXJhYmxlQ2FzZUZvbGRpbmdBU0NJSUxpdGVyYWw7Cit1c2luZyBXVEY6
OkNvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbDsKIHVzaW5nIFdURjo6U29ydGVkQXJyYXlNYXA7Cit1
c2luZyBXVEY6OlNvcnRlZEFycmF5U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1F
VHlwZVJlZ2lzdHJ5LmNwcAppbmRleCAyYjBkOGFiZDZjMmI1ZTRmMGVmYjUwZDM3ODJkM2IxOTQ5
MGZiMTE1Li4wY2RjNzZhZTNjNWMwZWE4OTAzNmEyNWNlNTI4YjJkZmVjZjVmODkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDEwICsyOSwxMyBAQAogCiAjaW5jbHVkZSAiTWVkaWFQbGF5
ZXIuaCIKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSA8d3RmL0ZpeGVk
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9T
b3J0ZWRBcnJheU1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKICNpZiBVU0UoQ0cpCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5o
IgpAQCAtNjQsMTA4ICs2Nyw5OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5
OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBzdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxTdHJpbmc+IHsKLSNpZiBVU0UoQ0cp
Ci0gICAgICAgIC8vIFRoaXMgcmVwcmVzZW50cyB0aGUgc3Vic2V0IG9mIGFsbG93ZWQgaW1hZ2Ug
VVRJcyBmb3Igd2hpY2ggQ29yZVNlcnZpY2VzIGhhcyBhIGNvcnJlc3BvbmRpbmcgTUlNRSB0eXBl
LgotICAgICAgICAiaW1hZ2UvdGlmZiJfcywKLSAgICAgICAgImltYWdlL2dpZiJfcywKLSAgICAg
ICAgImltYWdlL2pwZWciX3MsCi0gICAgICAgICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3Ms
Ci0gICAgICAgICJpbWFnZS9qcDIiX3MsCi0gICAgICAgICJpbWFnZS9hcG5nIl9zLAotICAgICAg
ICAiaW1hZ2UvcG5nIl9zLAotICAgICAgICAiaW1hZ2UvYm1wIl9zLAorc3RhdGljIFN0cmluZyBu
b3JtYWxpemVkSW1hZ2VNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIAotICAgICAgICAiaW1hZ2Uv
eC1pY29uIl9zLCAvLyBGYXZpY29ucyBkb24ndCBoYXZlIGEgTUlNRSB0eXBlIGluIHRoZSByZWdp
c3RyeSBlaXRoZXIuCi0gICAgICAgICJpbWFnZS9wanBlZyJfcywgLy8gIFdlIG9ubHkgZ2V0IG9u
ZSBNSU1FIHR5cGUgcGVyIFVUSSwgaGVuY2Ugb3VyIG5lZWQgdG8gYWRkIHRoZXNlIG1hbnVhbGx5
Ci0jaWYgSEFWRShXRUJQKQotICAgICAgICAiaW1hZ2Uvd2VicCJfcywKLSNlbmRpZgorLy8gT24g
aU9TLCB3ZSBpbmNsdWRlIG1hbGZvcm1lZCBpbWFnZSBNSU1FIHR5cGVzIGZvciBjb21wYXRpYmls
aXR5IHdpdGggTWFpbC4KKy8vIFRoZXNlIHdlcmUgcmVtb3ZlZCBmb3IgPHJkYXI6Ly9wcm9ibGVt
LzY1NjQ1Mzg+IFJlLWVuYWJsZSBVVEkgY29kZSBpbiBXZWJDb3JlIG5vdyB0aGF0CisvLyBNb2Jp
bGVDb3JlU2VydmljZXMgZXhpc3RzLiBCdXQgTWFpbCByZWxpZXMgb24gYXQgbGVhc3QgaW1hZ2Uv
dGlmIHJlcG9ydGVkIGFzIGJlaW5nCisvLyBzdXBwb3J0ZWQgKHNob3VsZCBiZSBpbWFnZS90aWZm
KS4gVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1haWwgYWRkcmVzc2VzOgorLy8gPHJkYXI6Ly9w
cm9ibGVtLzc4Nzk1MTA+IE1haWwgc2hvdWxkIHVzZSBzdGFuZGFyZCBpbWFnZSBtaW1ldHlwZXMK
Ky8vIGFuZCB3ZSBmaXggc25pZmZpbmcgc28gdGhhdCBpdCBjb3JyZWN0cyBpdGVtcyBzdWNoIGFz
IGltYWdlL2pwZyAtPiBpbWFnZS9qcGVnLgorY29uc3RleHByIENvbXBhcmFibGVDYXNlRm9sZGlu
Z0FTQ0lJTGl0ZXJhbCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXlbXSA9IHsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICAvLyBBZGQgbWFsZm9ybWVkIGltYWdlIG1pbWV0eXBl
IGZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFpbCBhbmQgdG8gaGFuZGxlIG1hbGZvcm1lZCBtaW1l
dHlwZXMgZnJvbSB0aGUgbmV0Ci0gICAgICAgIC8vIFRoZXNlIHdlcmUgcmVtb3ZlZCBmb3IgPHJk
YXI6Ly9wcm9ibGVtLzY1NjQ1Mzg+IFJlLWVuYWJsZSBVVEkgY29kZSBpbiBXZWJDb3JlIG5vdyB0
aGF0IE1vYmlsZUNvcmVTZXJ2aWNlcyBleGlzdHMKLSAgICAgICAgLy8gQnV0IE1haWwgcmVsaWVz
IG9uIGF0IGxlYXN0IGltYWdlL3RpZiByZXBvcnRlZCBhcyBiZWluZyBzdXBwb3J0ZWQgKHNob3Vs
ZCBiZSBpbWFnZS90aWZmKS4KLSAgICAgICAgLy8gVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIE1h
aWwgYWRkcmVzc2VzOgotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzg3OTUxMD4gTWFpbCBz
aG91bGQgdXNlIHN0YW5kYXJkIGltYWdlIG1pbWV0eXBlcwotICAgICAgICAvLyBhbmQgd2UgZml4
IHNuaWZmaW5nIHNvIHRoYXQgaXQgY29ycmVjdHMgaXRlbXMgc3VjaCBhcyBpbWFnZS9qcGcgLT4g
aW1hZ2UvanBlZy4KLQotICAgICAgICAvLyBKUEVHIChpbWFnZS9qcGVnKQotICAgICAgICAiaW1h
Z2UvanBnIl9zLAotICAgICAgICAiaW1hZ2UvanBfIl9zLAotICAgICAgICAiaW1hZ2UvanBlXyJf
cywKLSAgICAgICAgImFwcGxpY2F0aW9uL2pwZyJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL3gt
anBnIl9zLAotICAgICAgICAiaW1hZ2UvcGlwZWciX3MsCi0gICAgICAgICJpbWFnZS92bmQuc3dp
dGZ2aWV3LWpwZWciX3MsCi0gICAgICAgICJpbWFnZS94LXhiaXRtYXAiX3MsCi0KLSAgICAgICAg
Ly8gR0lGIChpbWFnZS9naWYpCi0gICAgICAgICJpbWFnZS9naV8iX3MsCi0KLSAgICAgICAgLy8g
UE5HIChpbWFnZS9wbmcpCi0gICAgICAgICJhcHBsaWNhdGlvbi9wbmciX3MsCi0gICAgICAgICJh
cHBsaWNhdGlvbi94LXBuZyJfcywKLQotICAgICAgICAvLyBUSUZGIChpbWFnZS90aWZmKQotICAg
ICAgICAiaW1hZ2UveC10aWYiX3MsCi0gICAgICAgICJpbWFnZS90aWYiX3MsCi0gICAgICAgICJp
bWFnZS94LXRpZmYiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi90aWYiX3MsCi0gICAgICAgICJh
cHBsaWNhdGlvbi94LXRpZiJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL3RpZmYiX3MsCi0gICAg
ICAgICJhcHBsaWNhdGlvbi94LXRpZmYiX3MsCi0KLSAgICAgICAgLy8gQk1QIChpbWFnZS9ibXAs
IGltYWdlL3gtYml0bWFwKQotICAgICAgICAiaW1hZ2UveC1ibXAiX3MsCi0gICAgICAgICJpbWFn
ZS94LXdpbi1iaXRtYXAiX3MsCi0gICAgICAgICJpbWFnZS94LXdpbmRvd3MtYm1wIl9zLAotICAg
ICAgICAiaW1hZ2UvbXMtYm1wIl9zLAotICAgICAgICAiaW1hZ2UveC1tcy1ibXAiX3MsCi0gICAg
ICAgICJhcHBsaWNhdGlvbi9ibXAiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi94LWJtcCJfcywK
LSAgICAgICAgImFwcGxpY2F0aW9uL3gtd2luLWJpdG1hcCJfcywKKyAgICAiYXBwbGljYXRpb24v
Ym1wIiwKKyAgICAiYXBwbGljYXRpb24vanBnIiwKKyAgICAiYXBwbGljYXRpb24vcG5nIiwKKyAg
ICAiYXBwbGljYXRpb24vdGlmIiwKKyAgICAiYXBwbGljYXRpb24vdGlmZiIsCisgICAgImFwcGxp
Y2F0aW9uL3gtYm1wIiwKKyAgICAiYXBwbGljYXRpb24veC1qcGciLAorICAgICJhcHBsaWNhdGlv
bi94LXBuZyIsCisgICAgImFwcGxpY2F0aW9uL3gtdGlmIiwKKyAgICAiYXBwbGljYXRpb24veC10
aWZmIiwKKyAgICAiYXBwbGljYXRpb24veC13aW4tYml0bWFwIiwKICNlbmRpZgotI2Vsc2UKLSAg
ICAgICAgLy8gYXNzdW1lIHRoYXQgYWxsIGltcGxlbWVudGF0aW9ucyBhdCBsZWFzdCBzdXBwb3J0
IHRoZSBmb2xsb3dpbmcgc3RhbmRhcmQKLSAgICAgICAgLy8gaW1hZ2UgdHlwZXM6Ci0gICAgICAg
ICJpbWFnZS9qcGVnIl9zLAotICAgICAgICAiaW1hZ2UvcG5nIl9zLAotICAgICAgICAiaW1hZ2Uv
Z2lmIl9zLAotICAgICAgICAiaW1hZ2UvYm1wIl9zLAotICAgICAgICAiaW1hZ2Uvdm5kLm1pY3Jv
c29mdC5pY29uIl9zLCAvLyBpY28KLSAgICAgICAgImltYWdlL3gtaWNvbiJfcywgLy8gaWNvCi0g
ICAgICAgICJpbWFnZS94LXhiaXRtYXAiX3MsIC8vIHhibQotI2lmIEVOQUJMRShBUE5HKQotICAg
ICAgICAiaW1hZ2UvYXBuZyJfcywKKyNpZiBVU0UoQ0cpIHx8IEVOQUJMRShBUE5HKQorICAgICJp
bWFnZS9hcG5nIiwKICNlbmRpZgogI2lmIFVTRShBVklGKQotICAgICAgICAiaW1hZ2UvYXZpZiJf
cywKKyAgICAiaW1hZ2UvYXZpZiIsCisjZW5kaWYKKyAgICAiaW1hZ2UvYm1wIiwKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgICJpbWFnZS9naV8iLAogI2VuZGlmCi0jaWYgVVNFKE9QRU5K
UEVHKQotICAgICAgICAiaW1hZ2UvanAyIl9zLAotICAgICAgICAiaW1hZ2UvanBlZzIwMDAiX3Ms
CisgICAgImltYWdlL2dpZiIsCisjaWYgVVNFKENHKSB8fCBVU0UoT1BFTkpQRUcpCisgICAgImlt
YWdlL2pwMiIsCiAjZW5kaWYKLSNpZiBVU0UoV0VCUCkKLSAgICAgICAgImltYWdlL3dlYnAiX3Ms
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAiaW1hZ2UvanBfIiwKKyAgICAiaW1hZ2Uv
anBlXyIsCiAjZW5kaWYKKyAgICAiaW1hZ2UvanBlZyIsCisjaWYgIVVTRShDRykgJiYgVVNFKE9Q
RU5KUEVHKQorICAgICJpbWFnZS9qcGVnMjAwMCIsCisjZW5kaWYKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgICJpbWFnZS9tcy1ibXAiLAorICAgICJpbWFnZS9waXBlZyIsCiAjZW5kaWYK
LSAgICB9OwotCiAjaWYgVVNFKENHKQotI2lmbmRlZiBOREVCVUcKLSAgICAvLyBFc251cmUgc3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMoKSBpcyBpbiBzeW5jIHdpdGggZGVmYXVsdFN1cHBvcnRlZElt
YWdlVHlwZXMoKS4KLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7Ci0gICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKLSAgICAgICAgZm9yIChhdXRvJiBpbWFnZVR5cGUg
OiBkZWZhdWx0U3VwcG9ydGVkSW1hZ2VUeXBlcygpKSB7Ci0gICAgICAgICAgICBhdXRvIG1pbWVU
eXBlID0gTUlNRVR5cGVGb3JJbWFnZVR5cGUoaW1hZ2VUeXBlKTsKLSAgICAgICAgICAgIEFTU0VS
VF9JTVBMSUVTKCFtaW1lVHlwZS5pc0VtcHR5KCksIHN1cHBvcnRlZEltYWdlTUlNRVR5cGVzLmdl
dCgpLmNvbnRhaW5zKG1pbWVUeXBlKSk7Ci0gICAgICAgIH0KLSAgICB9KTsKKyAgICAiaW1hZ2Uv
cGpwZWciLAorI2VuZGlmCisgICAgImltYWdlL3BuZyIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICAiaW1hZ2UvdGlmIiwKKyNlbmRpZgorI2lmIFVTRShDRykKKyAgICAiaW1hZ2UvdGlm
ZiIsCisjZW5kaWYKKyAgICAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIiwKKyNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorICAgICJpbWFnZS92bmQuc3dpdGZ2aWV3LWpwZWciLAogI2VuZGlmCisj
aWYgKFVTRShDRykgJiYgSEFWRShXRUJQKSkgfHwgKCFVU0UoQ0cpICYmIFVTRShXRUJQKSkKKyAg
ICAiaW1hZ2Uvd2VicCIsCiAjZW5kaWYKLSAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VNSU1FVHlw
ZXM7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAiaW1hZ2UveC1ibXAiLAorI2VuZGlm
CisgICAgImltYWdlL3gtaWNvbiIsCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAiaW1h
Z2UveC1tcy1ibXAiLAorICAgICJpbWFnZS94LXRpZiIsCisgICAgImltYWdlL3gtdGlmZiIsCisg
ICAgImltYWdlL3gtd2luLWJpdG1hcCIsCisgICAgImltYWdlL3gtd2luZG93cy1ibXAiLAorI2Vu
ZGlmCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgfHwgIVVTRShDRykKKyAgICAiaW1hZ2UveC14
Yml0bWFwIiwKKyNlbmRpZgorfTsKKwordGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0LCB1bnNp
Z25lZCBzaXplPiBzdGF0aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IG1ha2VGaXhlZFZlY3Rv
cihjb25zdCBDb21wYXJhYmxlQVNDSUlTdWJzZXRMaXRlcmFsPHN1YnNldD4gKCZhcnJheSlbc2l6
ZV0pCit7CisgICAgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHJlc3VsdChzdGQ6OnNpemUoYXJy
YXkpKTsKKyAgICBzdGQ6OnRyYW5zZm9ybShzdGQ6OmJlZ2luKGFycmF5KSwgc3RkOjplbmQoYXJy
YXkpLCByZXN1bHQuYmVnaW4oKSwgW10gKGF1dG8gbGl0ZXJhbCkgeworICAgICAgICByZXR1cm4g
bGl0ZXJhbC5saXRlcmFsOworICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0ZpeGVk
VmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlcygpCit7CisgICAgcmV0dXJuIG1ha2VGaXhlZFZlY3RvcihzdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlQXJyYXkpOwogfQogCiBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgTUlNRVR5cGVSZWdpc3RyeTo6YWRkaXRpb25hbFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkK
QEAgLTE3NCwyOSArMTY4LDI1IEBAIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2
ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjphZGRpdGlvbmFsU3VwcG9ydGVkCiAgICAgcmV0dXJu
IGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlczsKIH0KIAotc3RhdGljIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRKYXZhU2Ny
aXB0TUlNRVR5cGVzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJp
bmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlw
ZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAgICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2phdmFzY3JpcHQt
bWltZS10eXBlCi0gICAgICAgICJ0ZXh0L2phdmFzY3JpcHQiX3MsCi0gICAgICAgICJ0ZXh0L2Vj
bWFzY3JpcHQiX3MsCi0gICAgICAgICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zLAotICAgICAg
ICAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCJfcywKLSAgICAgICAgImFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJfcywKLSAgICAg
ICAgInRleHQvamF2YXNjcmlwdDEuMCJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMSJf
cywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMiJfcywKLSAgICAgICAgInRleHQvamF2YXNj
cmlwdDEuMyJfcywKLSAgICAgICAgInRleHQvamF2YXNjcmlwdDEuNCJfcywKLSAgICAgICAgInRl
eHQvamF2YXNjcmlwdDEuNSJfcywKLSAgICAgICAgInRleHQvanNjcmlwdCJfcywKLSAgICAgICAg
InRleHQvbGl2ZXNjcmlwdCJfcywKLSAgICAgICAgInRleHQveC1qYXZhc2NyaXB0Il9zLAotICAg
ICAgICAidGV4dC94LWVjbWFzY3JpcHQiX3MsCi0gICAgfTsKLSAgICByZXR1cm4gc3VwcG9ydGVk
SmF2YVNjcmlwdE1JTUVUeXBlczsKLX0KKy8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI2phdmFzY3JpcHQtbWltZS10eXBlCitjb25zdGV4cHIg
Q29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZUFycmF5
W10gPSB7CisgICAgImFwcGxpY2F0aW9uL2VjbWFzY3JpcHQiLAorICAgICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiwKKyAgICAiYXBwbGljYXRpb24veC1lY21hc2NyaXB0IiwKKyAgICAiYXBwbGlj
YXRpb24veC1qYXZhc2NyaXB0IiwKKyAgICAidGV4dC9lY21hc2NyaXB0IiwKKyAgICAidGV4dC9q
YXZhc2NyaXB0IiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4wIiwKKyAgICAidGV4dC9qYXZhc2Ny
aXB0MS4xIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS4yIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0
MS4zIiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS40IiwKKyAgICAidGV4dC9qYXZhc2NyaXB0MS41
IiwKKyAgICAidGV4dC9qc2NyaXB0IiwKKyAgICAidGV4dC9saXZlc2NyaXB0IiwKKyAgICAidGV4
dC94LWVjbWFzY3JpcHQiLAorICAgICJ0ZXh0L3gtamF2YXNjcmlwdCIsCit9OwogCiBIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3Vw
cG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKQogewpAQCAtMjIzLDcgKzIxMyw4IEBAIEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBw
b3J0ZWROb25JbWFnZU1JCiAgICAgICAgIC8vIE5vdGU6IEFkZGluZyBhIG5ldyB0eXBlIGhlcmUg
d2lsbCBwcm9iYWJseSByZW5kZXIgaXQgYXMgSFRNTC4KICAgICAgICAgLy8gVGhpcyBjYW4gcmVz
dWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4KICAgICAgICAgfTsK
LSAgICAgICAgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMuYWRkKHN1cHBvcnRlZEphdmFTY3Jp
cHRNSU1FVHlwZXMoKS5iZWdpbigpLCBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCkuZW5k
KCkpOworICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5
cGVBcnJheSkKKyAgICAgICAgICAgIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzLmFkZCh0eXBl
LmxpdGVyYWwpOwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
ICAgICBBcmNoaXZlRmFjdG9yeTo6cmVnaXN0ZXJLbm93bkFyY2hpdmVNSU1FVHlwZXMoc3VwcG9y
dGVkTm9uSW1hZ2VNSU1FVHlwZXMpOwogI2VuZGlmCkBAIC0yNDQsMTIzICsyMzUsNDAgQEAgY29u
c3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIE1JTUVUeXBlUmVn
aXN0cnk6OnN1cHBvcnRlZE1lZGkKICAgICByZXR1cm4gc3VwcG9ydGVkTWVkaWFNSU1FVHlwZXM7
CiB9CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBN
SU1FVHlwZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKQorY29uc3RleHByIENvbXBhcmFibGVMZXR0
ZXJzTGl0ZXJhbCBwZGZNSU1FVHlwZUFycmF5W10gPSB7CisgICAgImFwcGxpY2F0aW9uL3BkZiIs
CisgICAgInRleHQvcGRmIiwKK307CisKK0ZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlw
ZVJlZ2lzdHJ5OjpwZGZNSU1FVHlwZXMoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gcGRmTUlNRVR5cGVzID0g
c3RkOjppbml0aWFsaXplcl9saXN0PFN0cmluZz4gewotICAgICAgICAiYXBwbGljYXRpb24vcGRm
Il9zLAotICAgICAgICAidGV4dC9wZGYiX3MsCi0gICAgfTsKLSAgICByZXR1cm4gcGRmTUlNRVR5
cGVzOwotfQotCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgTUlNRVR5cGVSZWdpc3RyeTo6dW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzKCkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4+IHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcyA9IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxT
dHJpbmc+IHsKLSAgICAgICAgInRleHQvY2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtY2Fs
ZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3gtdmNhbGVuZGFyIl9zLAotICAgICAgICAidGV4dC92
Y2FsZW5kYXIiX3MsCi0gICAgICAgICJ0ZXh0L3ZjYXJkIl9zLAotICAgICAgICAidGV4dC94LXZj
YXJkIl9zLAotICAgICAgICAidGV4dC9kaXJlY3RvcnkiX3MsCi0gICAgICAgICJ0ZXh0L2xkaWYi
X3MsCi0gICAgICAgICJ0ZXh0L3FpZiJfcywKLSAgICAgICAgInRleHQveC1xaWYiX3MsCi0gICAg
ICAgICJ0ZXh0L3gtY3N2Il9zLAotICAgICAgICAidGV4dC94LXZjZiJfcywKKyAgICByZXR1cm4g
bWFrZUZpeGVkVmVjdG9yKHBkZk1JTUVUeXBlQXJyYXkpOworfQorCitjb25zdGV4cHIgQ29tcGFy
YWJsZUxldHRlcnNMaXRlcmFsIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlQXJyYXlbXSA9IHsKKyAg
ICAidGV4dC9jYWxlbmRhciIsCisgICAgInRleHQvZGlyZWN0b3J5IiwKKyAgICAidGV4dC9sZGlm
IiwKKyAgICAidGV4dC9xaWYiLAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAi
dGV4dC9ydGYiX3MsCi0jZWxzZQotICAgICAgICAidGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2Ny
aXB0b3IiX3MsCisgICAgInRleHQvcnRmIiwKICNlbmRpZgotICAgIH07Ci0gICAgcmV0dXJuIHVu
c3VwcG9ydGVkVGV4dE1JTUVUeXBlczsKLX0KLQotY29uc3Qgc3RkOjppbml0aWFsaXplcl9saXN0
PFR5cGVFeHRlbnNpb25QYWlyPiYgY29tbW9uTWVkaWFUeXBlcygpCi17Ci0gICAgLy8gQSB0YWJs
ZSBvZiBjb21tb24gbWVkaWEgTUlNRSB0eXBlcyBhbmQgZmlsZSBleHRlbnNpb25zIHVzZWQgd2hl
biBhIHBsYXRmb3JtJ3MKLSAgICAvLyBzcGVjaWZpYyBNSU1FIHR5cGUgbG9va3VwIGRvZXNuJ3Qg
aGF2ZSBhIG1hdGNoIGZvciBhIG1lZGlhIGZpbGUgZXh0ZW5zaW9uLgotICAgIHN0YXRpYyBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8VHlwZUV4dGVuc2lvblBhaXI+IGNvbW1vbk1lZGlhVHlwZXMgPSB7
Ci0gICAgICAgIC8vIE9nZwotICAgICAgICB7ICJhcHBsaWNhdGlvbi9vZ2ciX3MsICJvZ3giX3Mg
fSwKLSAgICAgICAgeyAiYXVkaW8vb2dnIl9zLCAib2dnIl9zIH0sCi0gICAgICAgIHsgImF1ZGlv
L29nZyJfcywgIm9nYSJfcyB9LAotICAgICAgICB7ICJ2aWRlby9vZ2ciX3MsICJvZ3YiX3MgfSwK
LQotICAgICAgICAvLyBBbm5vZGV4Ci0gICAgICAgIHsgImFwcGxpY2F0aW9uL2Fubm9kZXgiX3Ms
ICJhbngiX3MgfSwKLSAgICAgICAgeyAiYXVkaW8vYW5ub2RleCJfcywgImF4YSJfcyB9LAotICAg
ICAgICB7ICJ2aWRlby9hbm5vZGV4Il9zLCAiYXh2Il9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3Nw
ZWV4Il9zLCAic3B4Il9zIH0sCi0KLSAgICAgICAgLy8gV2ViTQotICAgICAgICB7ICJ2aWRlby93
ZWJtIl9zLCAid2VibSJfcyB9LAotICAgICAgICB7ICJhdWRpby93ZWJtIl9zLCAid2VibSJfcyB9
LAotCi0gICAgICAgIC8vIE1QRUcKLSAgICAgICAgeyAiYXVkaW8vbXBlZyJfcywgIm0xYSJfcyB9
LAotICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAibTJhIl9zIH0sCi0gICAgICAgIHsgImF1ZGlv
L21wZWciX3MsICJtMXMiX3MgfSwKLSAgICAgICAgeyAiYXVkaW8vbXBlZyJfcywgIm1wYSJfcyB9
LAotICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBnIl9zIH0sCi0gICAgICAgIHsgInZpZGVv
L21wZWciX3MsICJtMTUiX3MgfSwKLSAgICAgICAgeyAidmlkZW8vbXBlZyJfcywgIm0xcyJfcyB9
LAotICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTF2Il9zIH0sCi0gICAgICAgIHsgInZpZGVv
L21wZWciX3MsICJtNzUiX3MgfSwKLSAgICAgICAgeyAidmlkZW8vbXBlZyJfcywgIm1wYSJfcyB9
LAotICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBlZyJfcyB9LAotICAgICAgICB7ICJ2aWRl
by9tcGVnIl9zLCAibXBtIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWciX3MsICJtcHYiX3Mg
fSwKLQotICAgICAgICAvLyBNUEVHIHBsYXlsaXN0Ci0gICAgICAgIHsgImFwcGxpY2F0aW9uL3Zu
ZC5hcHBsZS5tcGVndXJsIl9zLCAibTN1OCJfcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9t
cGVndXJsIl9zLCAibTN1OCJfcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi94LW1wZWd1cmwi
X3MsICJtM3U4Il9zIH0sCi0gICAgICAgIHsgImF1ZGlvL21wZWd1cmwiX3MsICJtM3VybCJfcyB9
LAotICAgICAgICB7ICJhdWRpby94LW1wZWd1cmwiX3MsICJtM3VybCJfcyB9LAotICAgICAgICB7
ICJhdWRpby9tcGVndXJsIl9zLCAibTN1Il9zIH0sCi0gICAgICAgIHsgImF1ZGlvL3gtbXBlZ3Vy
bCJfcywgIm0zdSJfcyB9LAotCi0gICAgICAgIC8vIE1QRUctNAotICAgICAgICB7ICJ2aWRlby94
LW00diJfcywgIm00diJfcyB9LAotICAgICAgICB7ICJhdWRpby94LW00YSJfcywgIm00YSJfcyB9
LAotICAgICAgICB7ICJhdWRpby94LW00YiJfcywgIm00YiJfcyB9LAotICAgICAgICB7ICJhdWRp
by94LW00cCJfcywgIm00cCJfcyB9LAotICAgICAgICB7ICJhdWRpby9tcDQiX3MsICJtNGEiX3Mg
fSwKLQotICAgICAgICAvLyBNUDMKLSAgICAgICAgeyAiYXVkaW8vbXAzIl9zLCAibXAzIl9zIH0s
Ci0gICAgICAgIHsgImF1ZGlvL3gtbXAzIl9zLCAibXAzIl9zIH0sCi0gICAgICAgIHsgImF1ZGlv
L3gtbXBlZyJfcywgIm1wMyJfcyB9LAotCi0gICAgICAgIC8vIE1QRUctMgotICAgICAgICB7ICJ2
aWRlby94LW1wZWcyIl9zLCAibXAyIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWcyIl9zLCAi
dm9iIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL21wZWcyIl9zLCAibW9kIl9zIH0sCi0gICAgICAg
IHsgInZpZGVvL20ydHMiX3MsICJtMnRzIl9zIH0sCi0gICAgICAgIHsgInZpZGVvL3gtbTJ0cyJf
cywgIm0ydCJfcyB9LAotICAgICAgICB7ICJ2aWRlby94LW0ydHMiX3MsICJ0cyJfcyB9LAotCi0g
ICAgICAgIC8vIDNHUC8zR1AyCi0gICAgICAgIHsgImF1ZGlvLzNncHAiX3MsICIzZ3BwIl9zIH0s
Ci0gICAgICAgIHsgImF1ZGlvLzNncHAyIl9zLCAiM2cyIl9zIH0sCi0gICAgICAgIHsgImFwcGxp
Y2F0aW9uL3gtbXBlZyJfcywgImFtYyJfcyB9LAotCi0gICAgICAgIC8vIEFBQwotICAgICAgICB7
ICJhdWRpby9hYWMiX3MsICJhYWMiX3MgfSwKLSAgICAgICAgeyAiYXVkaW8vYWFjIl9zLCAiYWR0
cyJfcyB9LAotICAgICAgICB7ICJhdWRpby94LWFhYyJfcywgIm00ciJfcyB9LAotCi0gICAgICAg
IC8vIENvcmVBdWRpbyBGaWxlCi0gICAgICAgIHsgImF1ZGlvL3gtY2FmIl9zLCAiY2FmIl9zIH0s
Ci0gICAgICAgIHsgImF1ZGlvL3gtZ3NtIl9zLCAiZ3NtIl9zIH0sCi0KLSAgICAgICAgLy8gQURQ
Q00KLSAgICAgICAgeyAiYXVkaW8veC13YXYiX3MsICJ3YXYiX3MgfSwKLSAgICAgICAgeyAiYXVk
aW8vdm5kLndhdmUiX3MsICJ3YXYiX3MgfSwKLSAgICB9OwotICAgIHJldHVybiBjb21tb25NZWRp
YVR5cGVzOworICAgICJ0ZXh0L3ZjYWxlbmRhciIsCisgICAgInRleHQvdmNhcmQiLAorI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisgICAgInRleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9y
IiwKKyNlbmRpZgorICAgICJ0ZXh0L3gtY2FsZW5kYXIiLAorICAgICJ0ZXh0L3gtY3N2IiwKKyAg
ICAidGV4dC94LXFpZiIsCisgICAgInRleHQveC12Y2FsZW5kYXIiLAorICAgICJ0ZXh0L3gtdmNh
cmQiLAorICAgICJ0ZXh0L3gtdmNmIiwKK307CisKK0ZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBN
SU1FVHlwZVJlZ2lzdHJ5Ojp1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMoKQoreworICAgIHJldHVy
biBtYWtlRml4ZWRWZWN0b3IodW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVBcnJheSk7CiB9CiAKIHN0
YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIGNvbW1vbk1pbWVUeXBlc01hcCgpCkBAIC0zNjgsNyArMjc2LDg4IEBAIHN0
YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIGNvbW1vbk1pCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+LCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBtaW1lVHlwZXNNYXAgPSBbXSB7CiAgICAgICAgIEhhc2hN
YXA8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBtYXA7
Ci0gICAgICAgIGZvciAoYXV0byYgcGFpciA6IGNvbW1vbk1lZGlhVHlwZXMoKSkgeworICAgICAg
ICAvLyBBIHRhYmxlIG9mIGNvbW1vbiBtZWRpYSBNSU1FIHR5cGVzIGFuZCBmaWxlIGV4dGVuc2lv
bnMgdXNlZCB3aGVuIGEgcGxhdGZvcm0ncworICAgICAgICAvLyBzcGVjaWZpYyBNSU1FIHR5cGUg
bG9va3VwIGRvZXNuJ3QgaGF2ZSBhIG1hdGNoIGZvciBhIG1lZGlhIGZpbGUgZXh0ZW5zaW9uLgor
ICAgICAgICBzdGF0aWMgY29uc3RleHByIFR5cGVFeHRlbnNpb25QYWlyIGNvbW1vbk1lZGlhVHlw
ZXNbXSA9IHsKKyAgICAgICAgICAgIC8vIE9nZworICAgICAgICAgICAgeyAiYXBwbGljYXRpb24v
b2dnIl9zLCAib2d4Il9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby9vZ2ciX3MsICJvZ2ciX3Mg
fSwKKyAgICAgICAgICAgIHsgImF1ZGlvL29nZyJfcywgIm9nYSJfcyB9LAorICAgICAgICAgICAg
eyAidmlkZW8vb2dnIl9zLCAib2d2Il9zIH0sCisKKyAgICAgICAgICAgIC8vIEFubm9kZXgKKyAg
ICAgICAgICAgIHsgImFwcGxpY2F0aW9uL2Fubm9kZXgiX3MsICJhbngiX3MgfSwKKyAgICAgICAg
ICAgIHsgImF1ZGlvL2Fubm9kZXgiX3MsICJheGEiX3MgfSwKKyAgICAgICAgICAgIHsgInZpZGVv
L2Fubm9kZXgiX3MsICJheHYiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL3NwZWV4Il9zLCAi
c3B4Il9zIH0sCisKKyAgICAgICAgICAgIC8vIFdlYk0KKyAgICAgICAgICAgIHsgInZpZGVvL3dl
Ym0iX3MsICJ3ZWJtIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby93ZWJtIl9zLCAid2VibSJf
cyB9LAorCisgICAgICAgICAgICAvLyBNUEVHCisgICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9z
LCAibTFhIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAibTJhIl9zIH0sCisg
ICAgICAgICAgICB7ICJhdWRpby9tcGVnIl9zLCAibTFzIl9zIH0sCisgICAgICAgICAgICB7ICJh
dWRpby9tcGVnIl9zLCAibXBhIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAi
bXBnIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTE1Il9zIH0sCisgICAg
ICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTFzIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRl
by9tcGVnIl9zLCAibTF2Il9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibTc1
Il9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBhIl9zIH0sCisgICAgICAg
ICAgICB7ICJ2aWRlby9tcGVnIl9zLCAibXBlZyJfcyB9LAorICAgICAgICAgICAgeyAidmlkZW8v
bXBlZyJfcywgIm1wbSJfcyB9LAorICAgICAgICAgICAgeyAidmlkZW8vbXBlZyJfcywgIm1wdiJf
cyB9LAorCisgICAgICAgICAgICAvLyBNUEVHIHBsYXlsaXN0CisgICAgICAgICAgICB7ICJhcHBs
aWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCJfcywgIm0zdTgiX3MgfSwKKyAgICAgICAgICAgIHsg
ImFwcGxpY2F0aW9uL21wZWd1cmwiX3MsICJtM3U4Il9zIH0sCisgICAgICAgICAgICB7ICJhcHBs
aWNhdGlvbi94LW1wZWd1cmwiX3MsICJtM3U4Il9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby9t
cGVndXJsIl9zLCAibTN1cmwiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL3gtbXBlZ3VybCJf
cywgIm0zdXJsIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby9tcGVndXJsIl9zLCAibTN1Il9z
IH0sCisgICAgICAgICAgICB7ICJhdWRpby94LW1wZWd1cmwiX3MsICJtM3UiX3MgfSwKKworICAg
ICAgICAgICAgLy8gTVBFRy00CisgICAgICAgICAgICB7ICJ2aWRlby94LW00diJfcywgIm00diJf
cyB9LAorICAgICAgICAgICAgeyAiYXVkaW8veC1tNGEiX3MsICJtNGEiX3MgfSwKKyAgICAgICAg
ICAgIHsgImF1ZGlvL3gtbTRiIl9zLCAibTRiIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby94
LW00cCJfcywgIm00cCJfcyB9LAorICAgICAgICAgICAgeyAiYXVkaW8vbXA0Il9zLCAibTRhIl9z
IH0sCisKKyAgICAgICAgICAgIC8vIE1QMworICAgICAgICAgICAgeyAiYXVkaW8vbXAzIl9zLCAi
bXAzIl9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby94LW1wMyJfcywgIm1wMyJfcyB9LAorICAg
ICAgICAgICAgeyAiYXVkaW8veC1tcGVnIl9zLCAibXAzIl9zIH0sCisKKyAgICAgICAgICAgIC8v
IE1QRUctMgorICAgICAgICAgICAgeyAidmlkZW8veC1tcGVnMiJfcywgIm1wMiJfcyB9LAorICAg
ICAgICAgICAgeyAidmlkZW8vbXBlZzIiX3MsICJ2b2IiX3MgfSwKKyAgICAgICAgICAgIHsgInZp
ZGVvL21wZWcyIl9zLCAibW9kIl9zIH0sCisgICAgICAgICAgICB7ICJ2aWRlby9tMnRzIl9zLCAi
bTJ0cyJfcyB9LAorICAgICAgICAgICAgeyAidmlkZW8veC1tMnRzIl9zLCAibTJ0Il9zIH0sCisg
ICAgICAgICAgICB7ICJ2aWRlby94LW0ydHMiX3MsICJ0cyJfcyB9LAorCisgICAgICAgICAgICAv
LyAzR1AvM0dQMgorICAgICAgICAgICAgeyAiYXVkaW8vM2dwcCJfcywgIjNncHAiX3MgfSwKKyAg
ICAgICAgICAgIHsgImF1ZGlvLzNncHAyIl9zLCAiM2cyIl9zIH0sCisgICAgICAgICAgICB7ICJh
cHBsaWNhdGlvbi94LW1wZWciX3MsICJhbWMiX3MgfSwKKworICAgICAgICAgICAgLy8gQUFDCisg
ICAgICAgICAgICB7ICJhdWRpby9hYWMiX3MsICJhYWMiX3MgfSwKKyAgICAgICAgICAgIHsgImF1
ZGlvL2FhYyJfcywgImFkdHMiX3MgfSwKKyAgICAgICAgICAgIHsgImF1ZGlvL3gtYWFjIl9zLCAi
bTRyIl9zIH0sCisKKyAgICAgICAgICAgIC8vIENvcmVBdWRpbyBGaWxlCisgICAgICAgICAgICB7
ICJhdWRpby94LWNhZiJfcywgImNhZiJfcyB9LAorICAgICAgICAgICAgeyAiYXVkaW8veC1nc20i
X3MsICJnc20iX3MgfSwKKworICAgICAgICAgICAgLy8gQURQQ00KKyAgICAgICAgICAgIHsgImF1
ZGlvL3gtd2F2Il9zLCAid2F2Il9zIH0sCisgICAgICAgICAgICB7ICJhdWRpby92bmQud2F2ZSJf
cywgIndhdiJfcyB9LAorICAgICAgICB9OworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb21t
b25NZWRpYVR5cGVzKSB7CiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwgdHlwZSA9IHBhaXIudHlw
ZTsKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBleHRlbnNpb24gPSBwYWlyLmV4dGVuc2lvbjsK
ICAgICAgICAgICAgIG1hcC5lbnN1cmUoZXh0ZW5zaW9uLCBbdHlwZSwgZXh0ZW5zaW9uXSB7CkBA
IC00MTgsOCArNDA3LDIwIEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFn
ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKG1pbWVUeXBlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZyBub3JtYWxpemVkTUlN
RVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5Ojpub3JtYWxpemVkTUlNRVR5cGUobWltZVR5cGUpOwot
ICAgIHJldHVybiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG5vcm1hbGl6ZWRN
SU1FVHlwZSkgfHwgYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlTUlNRVR5cGVzKCkuY29udGFpbnMo
bm9ybWFsaXplZE1JTUVUeXBlKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0
IHN1cHBvcnRlZEltYWdlTUlNRVR5cGVTZXQgeyBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlQXJyYXkg
fTsKKyNpZiBVU0UoQ0cpICYmIEFTU0VSVF9FTkFCTEVECisgICAgLy8gRXNudXJlIHN1cHBvcnRl
ZEltYWdlTUlNRVR5cGVBcnJheSBtYXRjaGVzIGRlZmF1bHRTdXBwb3J0ZWRJbWFnZVR5cGVzKCku
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNl
KG9uY2VGbGFnLCBbXSB7CisgICAgICAgIGZvciAoYXV0byYgaW1hZ2VUeXBlIDogZGVmYXVsdFN1
cHBvcnRlZEltYWdlVHlwZXMoKSkgeworICAgICAgICAgICAgYXV0byBtaW1lVHlwZSA9IE1JTUVU
eXBlRm9ySW1hZ2VUeXBlKGltYWdlVHlwZSk7CisgICAgICAgICAgICBBU1NFUlRfSU1QTElFUygh
bWltZVR5cGUuaXNFbXB0eSgpLCBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlU2V0LmNvbnRhaW5zKG1p
bWVUeXBlKSk7CisgICAgICAgIH0KKyAgICB9KTsKKyNlbmRpZgorICAgIGlmIChzdXBwb3J0ZWRJ
bWFnZU1JTUVUeXBlU2V0LmNvbnRhaW5zKG1pbWVUeXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5z
KG5vcm1hbGl6ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSk7CiB9CiAKIGJvb2wgTUlNRVR5cGVS
ZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVZpZGVvT3JTVkdNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQpAQCAtNDg2LDE4ICs0ODcsOCBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSW1hZ2VNSU1FVHlwZUZvckVuY29kaW5nKGNvbnN0IFN0cmluZyYgbWltZVR5cAog
CiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewotICAgICAg
ICBib29sIGlzU3VwcG9ydGVkID0gZmFsc2U7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRX
YWl0KFsmaXNTdXBwb3J0ZWQsIG1pbWVUeXBlID0gbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgICAgIGlzU3VwcG9ydGVkID0gaXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUo
bWltZVR5cGUpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIGlzU3VwcG9ydGVkOwotICAg
IH0KLQotICAgIHJldHVybiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVzKCkuY29udGFpbnMo
bWltZVR5cGUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc3VwcG9ydGVk
SmF2YVNjcmlwdE1JTUVUeXBlcyB7IHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZUFycmF5IH07
CisgICAgcmV0dXJuIHN1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZXMuY29udGFpbnMobWltZVR5
cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkU3R5bGVTaGVldE1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC01NzcsOSArNTY4LDggQEAgYm9vbCBN
SU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZFRleHRUcmFja01JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNVbnN1cHBvcnRlZFRleHRN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIGlmIChtaW1lVHlwZS5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdW5zdXBwb3J0ZWRUZXh0
TUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29y
dGVkQXJyYXlTZXQgdW5zdXBwb3J0ZWRUZXh0TUlNRVR5cGVzIHsgdW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVBcnJheSB9OworICAgIHJldHVybiB1bnN1cHBvcnRlZFRleHRNSU1FVHlwZXMuY29udGFp
bnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzVGV4dE1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBAIC02NDEsMTQgKzYzMSwxMyBAQCBib29sIE1JTUVU
eXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogewotICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gcGRmTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUpOworICAg
IHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlTZXQgc2V0IHsgcGRmTUlNRVR5cGVBcnJheSB9
OworICAgIHJldHVybiBzZXQuY29udGFpbnMobWltZVR5cGUpOwogfQogCiBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzUG9zdFNjcmlwdE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7
Ci0gICAgcmV0dXJuIG1pbWVUeXBlID09ICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IjsKKyAgICBy
ZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsICJhcHBsaWNhdGlv
bi9wb3N0c2NyaXB0Iik7CiB9CiAKIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZPclBvc3RT
Y3JpcHRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpAQCAtNjgxLDEwMyArNjcwLDg0
IEBAIGNvbnN0IFN0cmluZyYgZGVmYXVsdE1JTUVUeXBlKCkKICAgICByZXR1cm4gZGVmYXVsdE1J
TUVUeXBlOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgTUlNRVR5cGVSZWdpc3RyeTo6c3lzdGVtUHJldmlld01JTUVUeXBlcygpCitjb25zdGV4
cHIgQ29tcGFyYWJsZUxldHRlcnNMaXRlcmFsIHN5c3RlbVByZXZpZXdNSU1FVHlwZUFycmF5W10g
PSB7CisgICAgIm1vZGVsL3VzZCIsIC8vIFVub2ZmaWNpYWwsIGJ1dCBzdXBwb3J0ZWQgYmVjYXVz
ZSB3ZSBkb2N1bWVudGVkIHRoaXMuCisgICAgIm1vZGVsL3ZuZC5waXhhci51c2QiLCAvLyBVbm9m
ZmljaWFsLCBidXQgc3VwcG9ydGVkIGJlY2F1c2Ugd2UgZG9jdW1lbnRlZCB0aGlzLgorICAgICJt
b2RlbC92bmQucmVhbGl0eSIsCisgICAgIm1vZGVsL3ZuZC51c2R6K3ppcCIsIC8vIFRoZSBvZmZp
Y2lhbCB0eXBlOiBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9t
b2RlbC92bmQudXNkeit6aXAKK307CisKK0ZpeGVkVmVjdG9yPGNvbnN0IGNoYXIqPiBNSU1FVHlw
ZVJlZ2lzdHJ5OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHN5c3Rl
bVByZXZpZXdNSU1FVHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8U3RyaW5nPiB7Ci0gICAg
ICAgIC8vIFRoZSBvZmZpY2lhbCB0eXBlOiBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50
cy9tZWRpYS10eXBlcy9tb2RlbC92bmQudXNkeit6aXAKLSAgICAgICAgIm1vZGVsL3ZuZC51c2R6
K3ppcCJfcywKLSAgICAgICAgLy8gVW5vZmZpY2lhbCwgYnV0IHN1cHBvcnRlZCBiZWNhdXNlIHdl
IGRvY3VtZW50ZWQgdGhlbS4KLSAgICAgICAgIm1vZGVsL3VzZCJfcywKLSAgICAgICAgIm1vZGVs
L3ZuZC5waXhhci51c2QiX3MsCi0gICAgICAgIC8vIFJlYWxpdHkgZmlsZXMuCi0gICAgICAgICJt
b2RlbC92bmQucmVhbGl0eSJfcywKLSAgICB9OwotICAgIHJldHVybiBzeXN0ZW1QcmV2aWV3TUlN
RVR5cGVzOworICAgIHJldHVybiBtYWtlRml4ZWRWZWN0b3Ioc3lzdGVtUHJldmlld01JTUVUeXBl
QXJyYXkpOwogfQogCiBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJldmlld01JTUVU
eXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgaWYgKG1pbWVUeXBlLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzeXN0ZW1QcmV2aWV3TUlNRVR5
cGVzKCkuY29udGFpbnMobWltZVR5cGUpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJy
YXlTZXQgc3lzdGVtUHJldmlld01JTUVUeXBlU2V0IHsgc3lzdGVtUHJldmlld01JTUVUeXBlQXJy
YXkgfTsKKyAgICByZXR1cm4gc3lzdGVtUHJldmlld01JTUVUeXBlU2V0LmNvbnRhaW5zKG1pbWVU
eXBlKTsKIH0KIAotI2lmICFVU0UoQ1VSTCkKLQotLy8gRklYTUU6IE5vdCBzdXJlIHdoeSBpdCBt
YWtlcyBzZW5zZSB0byBoYXZlIGEgY3Jvc3MtcGxhdGZvcm0gZnVuY3Rpb24gd2hlbiBvbmx5IENV
UkwgaGFzIHRoZSBjb25jZXB0Ci0vLyBvZiBhICJub3JtYWxpemVkIiBNSU1FIHR5cGUuCi1TdHJp
bmcgTUlNRVR5cGVSZWdpc3RyeTo6bm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCisvLyBGSVhNRTogTm90IGdyZWF0IHRoYXQgQ1VSTCBuZWVkcyB0aGlzIGNvbmNlcHQ7
IG90aGVyIHBsYXRmb3JtcyBkbyBub3QuCitzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZWRJbWFnZU1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CisjaWYgVVNFKENVUkwpCiAgICAgcmV0
dXJuIG1pbWVUeXBlOwotfQotCiAjZWxzZQotCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bm9y
bWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCi17Ci0gICAgc3RhdGljIGNv
bnN0IGF1dG8gbWltZVR5cGVBc3NvY2lhdGlvbk1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBBU0NJSUxpdGVy
YWw+IG1pbWVUeXBlQXNzb2NpYXRpb25zW10gPSB7Ci0gICAgICAgICAgICB7ICJpbWFnZS94LW1z
LWJtcCJfcywgImltYWdlL2JtcCJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UveC13aW5kb3dz
LWJtcCJfcywgImltYWdlL2JtcCJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UveC1ibXAiX3Ms
ICJpbWFnZS9ibXAiX3MgfSwKLSAgICAgICAgICAgIHsgImltYWdlL3gtYml0bWFwIl9zLCAiaW1h
Z2UvYm1wIl9zIH0sCi0gICAgICAgICAgICB7ICJpbWFnZS94LW1zLWJpdG1hcCJfcywgImltYWdl
L2JtcCJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UvanBnIl9zLCAiaW1hZ2UvanBlZyJfcyB9
LAotICAgICAgICAgICAgeyAiaW1hZ2UvcGpwZWciX3MsICJpbWFnZS9qcGVnIl9zIH0sCi0gICAg
ICAgICAgICB7ICJpbWFnZS94LXBuZyJfcywgImltYWdlL3BuZyJfcyB9LAotICAgICAgICAgICAg
eyAiaW1hZ2Uvdm5kLnJpbS5wbmciX3MsICJpbWFnZS9wbmciX3MgfSwKLSAgICAgICAgICAgIHsg
ImltYWdlL2ljbyJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcyB9LAotICAgICAgICAg
ICAgeyAiaW1hZ2UvaWNvbiJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcyB9LAotICAg
ICAgICAgICAgeyAidGV4dC9pY28iX3MsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MgfSwK
LSAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL2ljbyJfcywgImltYWdlL3ZuZC5taWNyb3NvZnQu
aWNvbiJfcyB9LAotICAgICAgICAgICAgeyAiaW1hZ2UveC1pY29uIl9zLCAiaW1hZ2Uvdm5kLm1p
Y3Jvc29mdC5pY29uIl9zIH0sCi0gICAgICAgICAgICB7ICJhdWRpby92bmQucWNlbHAiX3MsICJh
dWRpby9xY2VscCJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vcWNwIl9zLCAiYXVkaW8vcWNl
bHAiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3ZuZC5xY3AiX3MsICJhdWRpby9xY2VscCJf
cyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vd2F2Il9zLCAiYXVkaW8veC13YXYiX3MgfSwKLSAg
ICAgICAgICAgIHsgImF1ZGlvL3ZuZC53YXZlIl9zLCAiYXVkaW8veC13YXYiX3MgfSwKLSAgICAg
ICAgICAgIHsgImF1ZGlvL21pZCJfcywgImF1ZGlvL21pZGkiX3MgfSwKLSAgICAgICAgICAgIHsg
ImF1ZGlvL3NwLW1pZGkiX3MsICJhdWRpby9taWRpIl9zIH0sCi0gICAgICAgICAgICB7ICJhdWRp
by94LW1pZCJfcywgImF1ZGlvL21pZGkiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3gtbWlk
aSJfcywgImF1ZGlvL21pZGkiX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3gtbXBlZyJfcywg
ImF1ZGlvL21wZWciX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL21wMyJfcywgImF1ZGlvL21w
ZWciX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3gtbXAzIl9zLCAiYXVkaW8vbXBlZyJfcyB9
LAotICAgICAgICAgICAgeyAiYXVkaW8vbXBlZzMiX3MsICJhdWRpby9tcGVnIl9zIH0sCi0gICAg
ICAgICAgICB7ICJhdWRpby94LW1wZWczIl9zLCAiYXVkaW8vbXBlZyJfcyB9LAotICAgICAgICAg
ICAgeyAiYXVkaW8vbXBnMyJfcywgImF1ZGlvL21wZWciX3MgfSwKLSAgICAgICAgICAgIHsgImF1
ZGlvL21wZyJfcywgImF1ZGlvL21wZWciX3MgfSwKLSAgICAgICAgICAgIHsgImF1ZGlvL3gtbXBn
Il9zLCAiYXVkaW8vbXBlZyJfcyB9LAotICAgICAgICAgICAgeyAiYXVkaW8vbTRhIl9zLCAiYXVk
aW8vbXA0Il9zIH0sCi0gICAgICAgICAgICB7ICJhdWRpby94LW00YSJfcywgImF1ZGlvL21wNCJf
cyB9LAotICAgICAgICAgICAgeyAiYXVkaW8veC1tcDQiX3MsICJhdWRpby9tcDQiX3MgfSwKLSAg
ICAgICAgICAgIHsgImF1ZGlvL3gtYWFjIl9zLCAiYXVkaW8vYWFjIl9zIH0sCi0gICAgICAgICAg
ICB7ICJhdWRpby94LWFtciJfcywgImF1ZGlvL2FtciJfcyB9LAotICAgICAgICAgICAgeyAiYXVk
aW8vbXBlZ3VybCJfcywgImF1ZGlvL3gtbXBlZ3VybCJfcyB9LAotICAgICAgICAgICAgeyAiYXVk
aW8vZmxhYyJfcywgImF1ZGlvL3gtZmxhYyJfcyB9LAotICAgICAgICAgICAgeyAidmlkZW8vM2dw
Il9zLCAidmlkZW8vM2dwcCJfcyB9LAotICAgICAgICAgICAgeyAidmlkZW8vYXZpIl9zLCAidmlk
ZW8veC1tc3ZpZGVvIl9zIH0sCi0gICAgICAgICAgICB7ICJ2aWRlby94LW00diJfcywgInZpZGVv
L21wNCJfcyB9LAotICAgICAgICAgICAgeyAidmlkZW8veC1xdWlja3RpbWUiX3MsICJ2aWRlby9x
dWlja3RpbWUiX3MgfSwKLSAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmEiX3MsICJhcHBs
aWNhdGlvbi9qYXZhLWFyY2hpdmUiX3MgfSwKLSAgICAgICAgICAgIHsgImFwcGxpY2F0aW9uL3gt
amF2YS1hcmNoaXZlIl9zLCAiYXBwbGljYXRpb24vamF2YS1hcmNoaXZlIl9zIH0sCi0gICAgICAg
ICAgICB7ICJhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkIl9zLCAiYXBwbGljYXRpb24vemlw
Il9zIH0sCi0gICAgICAgICAgICB7ICJ0ZXh0L2NhY2hlLW1hbmlmZXN0Il9zLCAidGV4dC9wbGFp
biJfcyB9LAotICAgICAgICB9OwotCi0gICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gbWFwOwotICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBt
aW1lVHlwZUFzc29jaWF0aW9ucykKLSAgICAgICAgICAgIG1hcC5hZGQocGFpci5maXJzdCwgcGFp
ci5zZWNvbmQpOwotICAgICAgICByZXR1cm4gbWFwOwotICAgIH0oKSk7Ci0KLSAgICBhdXRvIGl0
ID0gbWltZVR5cGVBc3NvY2lhdGlvbk1hcC5nZXQoKS5maW5kKG1pbWVUeXBlKTsKLSAgICBpZiAo
aXQgIT0gbWltZVR5cGVBc3NvY2lhdGlvbk1hcC5nZXQoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJu
IGl0LT52YWx1ZTsKLSAgICByZXR1cm4gbWltZVR5cGU7Ci19Ci0KKyAgICAvLyBGSVhNRTogU2lu
Y2UgdGhpcyBpcyBvbmx5IHVzZWQgaW4gaXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlLCB3ZSBzaG91
bGQgY29uc2lkZXIgcmVtb3ZpbmcgdGhlIG5vbi1pbWFnZSB0eXBlcyBiZWxvdy4KKyAgICBzdGF0
aWMgY29uc3RleHByIHN0ZDo6cGFpcjxDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwsIEFTQ0lJTGl0
ZXJhbD4gbWltZVR5cGVBc3NvY2lhdGlvbkFycmF5W10gPSB7CisgICAgICAgIHsgImFwcGxpY2F0
aW9uL2ljbyIsICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MgfSwKKyAgICAgICAgeyAiYXBw
bGljYXRpb24vamF2YSIsICJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUiX3MgfSwKKyAgICAgICAg
eyAiYXBwbGljYXRpb24veC1qYXZhLWFyY2hpdmUiLCAiYXBwbGljYXRpb24vamF2YS1hcmNoaXZl
Il9zIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiLCAiYXBwbGlj
YXRpb24vemlwIl9zIH0sCisgICAgICAgIHsgImF1ZGlvL2ZsYWMiLCAiYXVkaW8veC1mbGFjIl9z
IH0sCisgICAgICAgIHsgImF1ZGlvL200YSIsICJhdWRpby9tcDQiX3MgfSwKKyAgICAgICAgeyAi
YXVkaW8vbWlkIiwgImF1ZGlvL21pZGkiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vbXAzIiwgImF1
ZGlvL21wZWciX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vbXBlZzMiLCAiYXVkaW8vbXBlZyJfcyB9
LAorICAgICAgICB7ICJhdWRpby9tcGVndXJsIiwgImF1ZGlvL3gtbXBlZ3VybCJfcyB9LAorICAg
ICAgICB7ICJhdWRpby9tcGciLCAiYXVkaW8vbXBlZyJfcyB9LAorICAgICAgICB7ICJhdWRpby9t
cGczIiwgImF1ZGlvL21wZWciX3MgfSwKKyAgICAgICAgeyAiYXVkaW8vcWNwIiwgImF1ZGlvL3Fj
ZWxwIl9zIH0sCisgICAgICAgIHsgImF1ZGlvL3NwLW1pZGkiLCAiYXVkaW8vbWlkaSJfcyB9LAor
ICAgICAgICB7ICJhdWRpby92bmQucWNlbHAiLCAiYXVkaW8vcWNlbHAiX3MgfSwKKyAgICAgICAg
eyAiYXVkaW8vdm5kLnFjcCIsICJhdWRpby9xY2VscCJfcyB9LAorICAgICAgICB7ICJhdWRpby92
bmQud2F2ZSIsICJhdWRpby94LXdhdiJfcyB9LAorICAgICAgICB7ICJhdWRpby93YXYiLCAiYXVk
aW8veC13YXYiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8veC1hYWMiLCAiYXVkaW8vYWFjIl9zIH0s
CisgICAgICAgIHsgImF1ZGlvL3gtYW1yIiwgImF1ZGlvL2FtciJfcyB9LAorICAgICAgICB7ICJh
dWRpby94LW00YSIsICJhdWRpby9tcDQiX3MgfSwKKyAgICAgICAgeyAiYXVkaW8veC1taWQiLCAi
YXVkaW8vbWlkaSJfcyB9LAorICAgICAgICB7ICJhdWRpby94LW1pZGkiLCAiYXVkaW8vbWlkaSJf
cyB9LAorICAgICAgICB7ICJhdWRpby94LW1wMyIsICJhdWRpby9tcGVnIl9zIH0sCisgICAgICAg
IHsgImF1ZGlvL3gtbXA0IiwgImF1ZGlvL21wNCJfcyB9LAorICAgICAgICB7ICJhdWRpby94LW1w
ZWciLCAiYXVkaW8vbXBlZyJfcyB9LAorICAgICAgICB7ICJhdWRpby94LW1wZWczIiwgImF1ZGlv
L21wZWciX3MgfSwKKyAgICAgICAgeyAiYXVkaW8veC1tcGciLCAiYXVkaW8vbXBlZyJfcyB9LAor
ICAgICAgICB7ICJpbWFnZS9pY28iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCisg
ICAgICAgIHsgImltYWdlL2ljb24iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29uIl9zIH0sCisg
ICAgICAgIHsgImltYWdlL2pwZyIsICJpbWFnZS9qcGVnIl9zIH0sCisgICAgICAgIHsgImltYWdl
L3BqcGVnIiwgImltYWdlL2pwZWciX3MgfSwKKyAgICAgICAgeyAiaW1hZ2Uvdm5kLnJpbS5wbmci
LCAiaW1hZ2UvcG5nIl9zIH0sCisgICAgICAgIHsgImltYWdlL3gtYml0bWFwIiwgImltYWdlL2Jt
cCJfcyB9LAorICAgICAgICB7ICJpbWFnZS94LWJtcCIsICJpbWFnZS9ibXAiX3MgfSwKKyAgICAg
ICAgeyAiaW1hZ2UveC1pY29uIiwgImltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbiJfcyB9LAorICAg
ICAgICB7ICJpbWFnZS94LW1zLWJpdG1hcCIsICJpbWFnZS9ibXAiX3MgfSwKKyAgICAgICAgeyAi
aW1hZ2UveC1tcy1ibXAiLCAiaW1hZ2UvYm1wIl9zIH0sCisgICAgICAgIHsgImltYWdlL3gtcG5n
IiwgImltYWdlL3BuZyJfcyB9LAorICAgICAgICB7ICJpbWFnZS94LXdpbmRvd3MtYm1wIiwgImlt
YWdlL2JtcCJfcyB9LAorICAgICAgICB7ICJ0ZXh0L2NhY2hlLW1hbmlmZXN0IiwgInRleHQvcGxh
aW4iX3MgfSwKKyAgICAgICAgeyAidGV4dC9pY28iLCAiaW1hZ2Uvdm5kLm1pY3Jvc29mdC5pY29u
Il9zIH0sCisgICAgICAgIHsgInZpZGVvLzNncCIsICJ2aWRlby8zZ3BwIl9zIH0sCisgICAgICAg
IHsgInZpZGVvL2F2aSIsICJ2aWRlby94LW1zdmlkZW8iX3MgfSwKKyAgICAgICAgeyAidmlkZW8v
eC1tNHYiLCAidmlkZW8vbXA0Il9zIH0sCisgICAgICAgIHsgInZpZGVvL3gtcXVpY2t0aW1lIiwg
InZpZGVvL3F1aWNrdGltZSJfcyB9LAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0
ZWRBcnJheU1hcCBhc3NvY2lhdGlvbk1hcCB7IG1pbWVUeXBlQXNzb2NpYXRpb25BcnJheSB9Owor
ICAgIGF1dG8gbm9ybWFsaXplZFR5cGUgPSBhc3NvY2lhdGlvbk1hcC50cnlHZXQobWltZVR5cGUp
OworICAgIHJldHVybiBub3JtYWxpemVkVHlwZSA/ICpub3JtYWxpemVkVHlwZSA6IG1pbWVUeXBl
OwogI2VuZGlmCit9CiAKIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5z
aW9uSWZOZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRl
eCAyMzM3YjBmM2Y4NjgwZTdjOWVmNDFiY2Q5ODcxNThmZjIwMjM1MWNmLi44NGJhMWZiNDk5NjAz
YjM3NzM3ZjhlNDk2ZWVmOGVlNGY3MDgzMDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TUlNRVR5cGVSZWdpc3RyeS5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTI4LDE3
ICsxMjcsMTMgQEAgcHVibGljOgogICAgIC8vIG1ha2VzIHRoaXMgdGVzdCBpcyBhZnRlciBtYW55
IG90aGVyIHRlc3RzIGFyZSBkb25lIG9uIHRoZSBNSU1FIHR5cGUuCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgaXNUZXh0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAK
LSAgICAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBmaW5kIGEgd2F5IHRvIGF2b2lkIGV4cG9z
aW5nIHRoZXNlIHNldHMsIGV2ZW4gd29yc2UgZXhwb3Npbmcgbm9uLWNvbnN0IHJlZmVyZW5jZXMu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMoKTsKICAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4mIGFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHN1cHBv
cnRlZE1lZGlhTUlNRVR5cGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBwZGZNSU1FVHlwZXMoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIHVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiYgc3lzdGVtUHJldmlld01JTUVUeXBlcygpOwotCi0gICAgLy8gRklYTUU6IFVuY2xl
YXIgd2hhdCB0aGUgY29uY2VwdCBvZiBhIG5vcm1hbGl6ZWQgTUlNRSB0eXBlIGlzOyBjdXJyZW50
bHkgaXQncyBhIHBsYXRmb3JtLXNwZWNpZmljIG5vdGlvbi4KLSAgICBzdGF0aWMgU3RyaW5nIG5v
cm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgRml4ZWRWZWN0b3I8Y29uc3QgY2hhcio+IHBkZk1JTUVUeXBlcygpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBGaXhlZFZlY3Rvcjxjb25zdCBjaGFyKj4gdW5zdXBwb3J0ZWRUZXh0TUlN
RVR5cGVzKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZpeGVkVmVjdG9yPGNvbnN0IGNo
YXIqPiBzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIGFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RyYW5zZm9ybVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtVmFsdWUuaAppbmRleCA2MDExMWFhNDQwYzQ5ZWQ1MGU3ZTkwOTQ3MTE2MzlmMmQzZDlj
MWY1Li41NjdmMTE4NTM4YTA3YTA1OTFkMTBhMGFhZDYyNzA4YjNjMGY5YzlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVHJhbnNmb3JtVmFsdWUuaApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJTVkdNYXRy
aXguaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvVHlwZUNvbnZlcnNpb25zLmgKaW5kZXggZTM1YzExN2Q5Njg0MTk4ZWEwMTNi
Y2RjYmFjN2UyZDZhMjI5YjkzNS4uMjk3ZGI1OTMzMGRiMTRjNzE5ODU1NGMwMjcyOWM2MTJlNTM4
NjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9UeXBlQ29udmVyc2lvbnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1R5cGVDb252ZXJzaW9ucy5oCkBAIC0yNyw3
ICsyNyw2IEBACiAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCmluZGV4IGZh
ODg0ZmI5YTdlNTA4ODUwYTk0ZGIwMmIxOGUyZmFiMDYzZjUwZTEuLmUwYWM5ZTlmMjM3NDA5ZGFh
ZTk4NTZlYmYyZmVjZWEyNWVmNjE3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCkBAIC0yNzAwLDggKzI3MDAsOCBAQCAtIChCT09MKV9h
bGxvd3NWaWV3cG9ydFNocmlua1RvRml0CiAKIC0gKEJPT0wpX2lzRGlzcGxheWluZ1BERgogewot
ICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpwZGZN
SU1FVHlwZXMoKSkgewotICAgICAgICBDbGFzcyBwcm92aWRlckNsYXNzID0gW1tfY29uZmlndXJh
dGlvbiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnldIHByb3ZpZGVyRm9yTUlNRVR5cGU6bWltZVR5
cGVdOworICAgIGZvciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnBk
Zk1JTUVUeXBlcygpKSB7CisgICAgICAgIENsYXNzIHByb3ZpZGVyQ2xhc3MgPSBbW19jb25maWd1
cmF0aW9uIF9jb250ZW50UHJvdmlkZXJSZWdpc3RyeV0gcHJvdmlkZXJGb3JNSU1FVHlwZTpAKHR5
cGUpXTsKICAgICAgICAgaWYgKFtfY3VzdG9tQ29udGVudFZpZXcgaXNLaW5kT2ZDbGFzczpwcm92
aWRlckNsYXNzXSkKICAgICAgICAgICAgIHJldHVybiBZRVM7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVn
aXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50
UHJvdmlkZXJSZWdpc3RyeS5tbQppbmRleCBiYTMwZDhlYWMzOWY2YzJjNjU0ODdmYjJhYjUyYmVm
MTRjNDlhMGQ1Li4xMmU1YjRmNDJhMjBkOWE0ODZjYjAwNTczNmJkM2MwYzc4MGE0YzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJv
dmlkZXJSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5tbQpAQCAtMzQsMTAgKzM0LDEwIEBACiAjaW1w
b3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1w
b3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9GaXhlZFZlY3Rv
ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1h
cC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJS
ZWdpc3RyeSB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIENsYXNzIDxXS1dlYlZpZXdDb250ZW50UHJv
dmlkZXI+LCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IF9jb250ZW50UHJvdmlkZXJGb3JNSU1F
VHlwZTsKQEAgLTUwLDE0ICs1MCwxNCBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1
cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogICAgICAgICBy
ZXR1cm4gbmlsOwogCiAjaWYgRU5BQkxFKFdLUERGVklFVykKLSAgICBmb3IgKGF1dG8mIG1pbWVU
eXBlIDogV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cGRmTUlNRVR5cGVzKCkpCi0gICAgICAg
IFtzZWxmIHJlZ2lzdGVyUHJvdmlkZXI6W1dLUERGVmlldyBjbGFzc10gZm9yTUlNRVR5cGU6bWlt
ZVR5cGVdOworICAgIGZvciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OnBkZk1JTUVUeXBlcygpKQorICAgICAgICBbc2VsZiByZWdpc3RlclByb3ZpZGVyOltXS1BERlZp
ZXcgY2xhc3NdIGZvck1JTUVUeXBlOkAodHlwZSldOwogI2VuZGlmCiAKICNpZiBVU0UoU1lTVEVN
X1BSRVZJRVcpCiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uX3N5c3RlbVByZXZpZXdFbmFibGVkKSB7
Ci0gICAgICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjpzeXN0ZW1QcmV2aWV3TUlNRVR5cGVzKCkpCi0gICAgICAgICAgICBbc2VsZiByZWdpc3RlclBy
b3ZpZGVyOltXS1N5c3RlbVByZXZpZXdWaWV3IGNsYXNzXSBmb3JNSU1FVHlwZTptaW1lVHlwZV07
CisgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnN5
c3RlbVByZXZpZXdNSU1FVHlwZXMoKSkKKyAgICAgICAgICAgIFtzZWxmIHJlZ2lzdGVyUHJvdmlk
ZXI6W1dLU3lzdGVtUHJldmlld1ZpZXcgY2xhc3NdIGZvck1JTUVUeXBlOkAodHlwZSldOwogICAg
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDhlNmVlYTY4YWY1MzdlNzE5MTJmNTIy
MDZkOWQzZmIyMGNkNDhiNzIuLjJlZWVmNzAyZWRjMzYzMTZmNDViNjAxM2ExMDVmNzYwNDNkMzM0
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC02Myw2ICs2Myw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01IVE1MSW5w
dXRFbGVtZW50Lmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0Zp
eGVkVmVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgpAQCAt
ODksNyArOTAsNyBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJIVE1MUmVwcmVzZW50YXRp
b24KIAotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBuZXdBcnJheVdpdGhTdHJpbmdzKGNvbnN0
IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzZXQpCitzdGF0aWMg
UmV0YWluUHRyPE5TQXJyYXk+IGNyZWF0ZU5TQXJyYXkoY29uc3QgSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHNldCkKIHsKICAgICBhdXRvIHZlY3RvciA9IGNvcHlU
b1ZlY3Rvck9mPE5TU3RyaW5nICo+KHNldCk7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6dmVjdG9yLmRhdGEoKSBjb3VudDp2ZWN0b3Iuc2l6ZSgp
XSk7CkBAIC0xMDQsMjUgKzEwNSwyNSBAQCArIChOU0FycmF5ICopc3VwcG9ydGVkTUlNRVR5cGVz
CiAKICsgKE5TQXJyYXkgKilzdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcwogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0YXRpY1N1cHBvcnRlZE1lZGlhTUlN
RVR5cGVzID0gbmV3QXJyYXlXaXRoU3RyaW5ncyhNSU1FVHlwZVJlZ2lzdHJ5OjpzdXBwb3J0ZWRN
ZWRpYU1JTUVUeXBlcygpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5T
QXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWRNZWRpYU1JTUVUeXBlcyA9IGNyZWF0ZU5TQXJyYXkoTUlN
RVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTWVkaWFNSU1FVHlwZXMoKSk7CiAgICAgcmV0dXJuIHN0
YXRpY1N1cHBvcnRlZE1lZGlhTUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCiArIChOU0FycmF5
ICopc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcyA9
IG5ld0FycmF5V2l0aFN0cmluZ3MoTUlNRVR5cGVSZWdpc3RyeTo6c3VwcG9ydGVkTm9uSW1hZ2VN
SU1FVHlwZXMoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU0FycmF5
Pj4gc3RhdGljU3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMgPSBjcmVhdGVOU0FycmF5KE1JTUVU
eXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkpOwogICAgIHJldHVybiBz
dGF0aWNTdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcy5nZXQoKS5nZXQoKTsKIH0KIAogKyAoTlNB
cnJheSAqKXN1cHBvcnRlZEltYWdlTUlNRVR5cGVzCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxOU0FycmF5Pj4gc3RhdGljU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZXMgPSBu
ZXdBcnJheVdpdGhTdHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZEltYWdlTUlNRVR5
cGVzKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNBcnJheT4+IHN0
YXRpY1N1cHBvcnRlZEltYWdlTUlNRVR5cGVzID0gY3JlYXRlTlNBcnJheShNSU1FVHlwZVJlZ2lz
dHJ5OjpzdXBwb3J0ZWRJbWFnZU1JTUVUeXBlcygpKTsKICAgICByZXR1cm4gc3RhdGljU3VwcG9y
dGVkSW1hZ2VNSU1FVHlwZXMuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKE5TQXJyYXkgKil1bnN1cHBv
cnRlZFRleHRNSU1FVHlwZXMKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TQXJyYXk+PiBzdGF0aWNVbnN1cHBvcnRlZFRleHRNSU1FVHlwZXMgPSBuZXdBcnJheVdpdGhT
dHJpbmdzKE1JTUVUeXBlUmVnaXN0cnk6OnVuc3VwcG9ydGVkVGV4dE1JTUVUeXBlcygpKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TQXJyYXk+PiBzdGF0aWNVbnN1cHBv
cnRlZFRleHRNSU1FVHlwZXMgPSBjcmVhdGVOU0FycmF5KE1JTUVUeXBlUmVnaXN0cnk6OnVuc3Vw
cG9ydGVkVGV4dE1JTUVUeXBlcygpKTsKICAgICByZXR1cm4gc3RhdGljVW5zdXBwb3J0ZWRUZXh0
TUlNRVR5cGVzLmdldCgpLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGIxMDU5NWIyODRmZjg1YzgzMDFhYmZjOWY3MjY0NWFi
YzBhNjFhNS4uOTExMDZiMWE0NmM3ZDNkNzc3NTEzNmM0YzE1ZTgwNjA3NmQ1MmMwYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIxLTA0LTI3ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBFeHRlbmQgU29ydGVkQXJyYXlNYXAgZnVydGhlciB0byB3b3JrIG9uIGNhc2UtZm9sZGVkIHN0
cmluZ3MsIHVzZSBpbiBNSU1FVHlwZVJlZ2lzdHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ5NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBTb3J0ZWRBcnJheU1hcC5jcHAsCisgICAgICAg
IGFuZCByZW1vdmVkIHJlZmVyZW5jZXMgdG8gbm9uLWV4aXN0ZW50IEZ1bGxzY3JlZW5SZW1vdmVO
b2RlQmVmb3JlRW50ZXIuaCBhbmQKKyAgICAgICAgRmxvYXRRdWFkVGVzdHMuaC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Tb3J0ZWRBcnJheU1hcC5jcHA6IEFkZGVkLgorCiAy
MDIxLTA0LTI3ICBTYW0gU25lZGRvbiAgPGdzbmVkZGVyc0BhcHBsZS5jb20+CiAKICAgICAgICAg
TWFrZSBUZXN0SW5wdXQgaW1tdXRhYmxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRhYTE4
MjMyNDFiNTI4MGRhMmE2MDQxMzFhNGNlZTZlZDAyNzUzOWYuLmM4OGIxNDUyN2EyMDkzM2JkY2Fi
MDExZDkzZmZjMjI0MzdiM2RmOTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NjYsNiAr
ODY2LDcgQEAKIAkJOTNGNTZEQTcxRTVGOTE3NDAwM0VERTg0IC8qIGxpYmljdWNvcmUuZHlsaWIg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzRTAz
MzFEMEE1RjI3MDBGRUJDRjMgLyogbGliaWN1Y29yZS5keWxpYiAqLzsgfTsKIAkJOTNGNTZEQTkx
RTVGOTE5RDAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8q
IFdLV2ViVmlld1NuYXBzaG90Lm1tICovOyB9OwogCQk5M0Y3RTg2RjE0REM4RTVDMDBDODRBOTkg
LyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y3RTg2RTE0REM4RTVC
MDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5j
cHAgKi87IH07CisJCTkzRkNEQjM0MjYzNjMxNTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZDREIz
MzI2MzYzMTU2MDA0NkREN0QgLyogU29ydGVkQXJyYXlNYXAuY3BwICovOyB9OwogCQk5NTBFNEND
MTI1MkU3NTI0MDA3MTY1OUYgLyogaU9TU3R5bHVzU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAv
KiBpT1NTdHlsdXNTdXBwb3J0Lm1tICovOyB9OwogCQk5NTNBQkIzNTI1QzBENjgyMDA0QzhCNzMg
LyogUGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8qIFBhZ2VF
eHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLzsgfTsKIAkJOTVBNTI0OTUyNTgxQTEwRDAwNDYx
RkU5IC8qIFdLV2ViVmlld1RoZW1lQ29sb3IubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUE1MjQ5NDI1ODFBMTBEMDA0NjFGRTkgLyogV0tXZWJWaWV3
VGhlbWVDb2xvci5tbSAqLzsgfTsKQEAgLTEzMzcsNyArMTMzOCw2IEBACiAJCQlkc3RQYXRoID0g
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZp
bGVzID0gKAotCQkJCTQ5OEQwMzBBMjYzNzZCMzQwMDlDQkZBRCAvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWlzc2luZ1VuaXF1ZUluZGV4LmRiIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTU1
QTgxN0ZGMjE4MTAyMUEwMDA0QTM5QSAvKiAxMDB4MTAwLXJlZC50Z2EgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1NUE4MTgwMDIxODEwMjIxMDAwNEEzOUEgLyog
NDAweDQwMC1ncmVlbi5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xNjQ5LDYgKzE2NDks
NyBAQAogCQkJCUY0MUFCOUE5MUVGNDY5NkIwMDgzRkEwOCAvKiBwcmV2ZW50LXN0YXJ0Lmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjZGRERERDYxNDI0MUM2RjAwNEYxNzI5IC8qIHB1
c2gtc3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlBMTJEREMwMDFFODM3M0U3
MDBDRjZDQUUgLyogcmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCisJCQkJNDk4RDAzMEEyNjM3NkIzNDAwOUNCRkFEIC8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NNaXNzaW5nVW5pcXVlSW5kZXguZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJRjQ2ODQ5QzAxRUVGNUVGMzAwQjkzN0ZFIC8qIHJpY2gtYW5kLXBsYWluLXRleHQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQ0U2RkFDMzIzMjAyNjdDMDBFNDhGNkUgLyog
cmljaC1jb2xvci1maWx0ZXJlZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTJFOTJC
OEY3MjE2NDkwRDQwMDVCNjRGMCAvKiByaWNoLXRleHQtYXR0cmlidXRlcy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLApAQCAtMjU1OCw2ICsyNTU5LDcgQEAKIAkJOTNGNTZEQTgxRTVGOTE4MTAw
M0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3U25hcHNob3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjdFODZCMTREQzhFNEQwMEM4NEE5OSAvKiBOZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGcmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTNGN0U4NkUxNERDOEU1QjAwQzg0QTk5IC8qIE5ld0ZpcnN0Vmlz
dWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRkNEQjMzMjYzNjMxNTYw
MDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTb3J0ZWRBcnJheU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk1MEU0Q0MwMjUyRTc1MjMwMDcxNjU5RiAvKiBpT1NTdHlsdXNTdXBwb3J0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gaU9TU3R5bHVzU3VwcG9ydC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUzQUJCMzQyNUMwRDY4MTAwNEM4QjczIC8q
IFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTVBNTI0OTQyNTgxQTEwRDAwNDYxRkU5IC8qIFdLV2ViVmll
d1RoZW1lQ29sb3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S1dlYlZpZXdUaGVtZUNvbG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2
Niw3ICsyODY4LDYgQEAKIAkJQ0RDRkE3QTkxRTQ1MTIyRjAwQzI0MzNEIC8qIFNhbXBsZU1hcC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGVNYXAuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRENGRkVDMDIyRTI2OEQ1MDBERjQyMjMgLyog
Tm9QYXVzZVdoZW5Td2l0Y2hpbmdUYWJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTm9QYXVzZVdoZW5Td2l0Y2hpbmdUYWJzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDREQ2OEYwQzIyQzE4MzE3MDAwQ0YwQUUgLyogV0tXZWJWaWV3Q2xvc2VB
bGxNZWRpYVByZXNlbnRhdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdDbG9zZUFsbE1lZGlhUHJlc2VudGF0aW9ucy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQ0REQzdDNjcyNUZGRjZEMDAwMjI0Mjc4IC8qIEZ1bGxzY3Jl
ZW5SZW1vdmVOb2RlQmVmb3JlRW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlblJlbW92
ZU5vZGVCZWZvcmVFbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRERDN0M2
ODI1RkZGNkQwMDAyMjQyNzggLyogRnVsbHNjcmVlblJlbW92ZU5vZGVCZWZvcmVFbnRlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZ1bGxzY3JlZW5SZW1vdmVOb2RlQmVmb3JlRW50ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERTE5NUIyMUNGRTBBREUwMDUzRDI1NiAv
KiBGdWxsc2NyZWVuVG9wQ29udGVudEluc2V0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBGdWxsc2NyZWVuVG9wQ29udGVudEluc2V0Lmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNERTE5NUIzMUNGRTBBREUwMDUzRDI1NiAvKiBUb3BDb250ZW50SW5zZXQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUb3BDb250ZW50SW5zZXQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDQ0LDcgKzMwNDUsNiBAQAogCQlG
NEEzMkVDQTFGMDY0MkY0MDA0N0M1NDQgLyogY29udGVudGVkaXRhYmxlLWluLWlmcmFtZS5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImNvbnRlbnRlZGl0YWJsZS1pbi1pZnJhbWUuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0QTkyMDJFMUZFRTM0QzgwMEY1OTU5MCAvKiBhcHBsZS1kYXRh
LXVybC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImFwcGxlLWRhdGEtdXJsLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEFCNTc4OTFGNjUxNjRCMDBEQjBE
QTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRjRBRDE4MzYyNUVENzkxNTAwQjFBMTlGIC8qIEZsb2F0UXVhZFRlc3RzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZsb2F0UXVhZFRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0QUQxODM3MjVFRDc5MTUwMEIxQTE5RiAvKiBGbG9hdFF1YWRUZXN0cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGbG9hdFF1YWRUZXN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0QjAxNjdGMjVBRTAyRDYwMEU0NDVDNCAvKiBEaXNhYmxlU3BlbGxjaGVja1BsdWdJbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpc2FibGVTcGVsbGNoZWNrUGx1Z0luLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEIwMTY4MjI1QUUwNjBGMDBFNDQ1QzQgLyogRGlz
YWJsZVNwZWxsY2hlY2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNhYmxlU3BlbGxjaGVj
ay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM0MTAsNyArMzQxMCw2IEBACiAJ
CQkJQ0RDRjc4QTcyNDRBMkVEQjAwNDgwMzExIC8qIEZ1bGxzY3JlZW5BbGVydC5tbSAqLywKIAkJ
CQlDRDc4RTExQTFEQjdFQTM2MDAxNEEyREUgLyogRnVsbHNjcmVlbkRlbGVnYXRlLm1tICovLAog
CQkJCTNGMUI1MjY4MUQzRDcxMjkwMDhENjBDNCAvKiBGdWxsc2NyZWVuTGF5b3V0Q29uc3RyYWlu
dHMubW0gKi8sCi0JCQkJQ0REQzdDNjcyNUZGRjZEMDAwMjI0Mjc4IC8qIEZ1bGxzY3JlZW5SZW1v
dmVOb2RlQmVmb3JlRW50ZXIuaCAqLywKIAkJCQlDRERDN0M2ODI1RkZGNkQwMDAyMjQyNzggLyog
RnVsbHNjcmVlblJlbW92ZU5vZGVCZWZvcmVFbnRlci5tbSAqLywKIAkJCQk2MzFFRkZGNTFFN0I1
RThEMDBEMkVCQjggLyogR2VvbG9jYXRpb24ubW0gKi8sCiAJCQkJMDdFMUY2QTAxRkZDM0EwODAw
OTZDN0VDIC8qIEdldERpc3BsYXlNZWRpYS5tbSAqLywKQEAgLTM2NjksNyArMzY2OCw2IEBACiAJ
CQkJN0EzMkQ3NDkxRjAyMTUxNTAwMTYyQzQ0IC8qIEZpbGVNb25pdG9yLmNwcCAqLywKIAkJCQk3
QTkwOUE3MDFEODc3NDc1MDA3RTEwRjggLyogRmxvYXRQb2ludFRlc3RzLmNwcCAqLywKIAkJCQlG
NEFEMTgzNzI1RUQ3OTE1MDBCMUExOUYgLyogRmxvYXRRdWFkVGVzdHMuY3BwICovLAotCQkJCUY0
QUQxODM2MjVFRDc5MTUwMEIxQTE5RiAvKiBGbG9hdFF1YWRUZXN0cy5oICovLAogCQkJCTdBOTA5
QTcxMUQ4Nzc0NzUwMDdFMTBGOCAvKiBGbG9hdFJlY3RUZXN0cy5jcHAgKi8sCiAJCQkJN0E5MDlB
NzIxRDg3NzQ3NTAwN0UxMEY4IC8qIEZsb2F0U2l6ZVRlc3RzLmNwcCAqLywKIAkJCQk4RTRBODUz
NjFFMUQxQUExMDBGNTNCMEYgLyogR3JpZFBvc2l0aW9uLmNwcCAqLywKQEAgLTM4NzQsNyArMzg3
Miw2IEBACiAJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTQ5OEQwMzA5MjYzNzZCMkMw
MDlDQkZBRCAvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWlzc2luZ1VuaXF1ZUluZGV4LmRiICov
LAogCQkJCTU1QTgxN0ZFMjE4MTAxREYwMDA0QTM5QSAvKiAxMDB4MTAwLXJlZC50Z2EgKi8sCiAJ
CQkJNTVBODE3RkQyMTgxMDFERjAwMDRBMzlBIC8qIDQwMHg0MDAtZ3JlZW4ucG5nICovLAogCQkJ
CUY0Q0ZDREQ5MjQ5RkM5RDkwMDUyNzQ4MiAvKiBBaGVtLnR0ZiAqLywKQEAgLTQwNjQsNiArNDA2
MSw3IEBACiAJCQkJRjQxQUI5OTQxRUY0NjkyQzAwODNGQTA4IC8qIHByZXZlbnQtb3BlcmF0aW9u
Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OUExRUY0NjkyQzAwODNGQTA4IC8qIHByZXZlbnQtc3RhcnQu
aHRtbCAqLywKIAkJCQlBMTJEREJGRjFFODM3M0MxMDBDRjZDQUUgLyogcmVuZGVyZWQtaW1hZ2Ut
ZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgKi8sCisJCQkJNDk4RDAzMDkyNjM3NkIyQzAwOUNCRkFE
IC8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNaXNzaW5nVW5pcXVlSW5kZXguZGIgKi8sCiAJCQkJ
RjQ2ODQ5QkYxRUVGNUVEQzAwQjkzN0ZFIC8qIHJpY2gtYW5kLXBsYWluLXRleHQuaHRtbCAqLywK
IAkJCQkxQ0U2RkFDMTIzMjAyNjRGMDBFNDhGNkUgLyogcmljaC1jb2xvci1maWx0ZXJlZC5odG1s
ICovLAogCQkJCTJFOTJCOEY2MjE2NDkwQzMwMDVCNjRGMCAvKiByaWNoLXRleHQtYXR0cmlidXRl
cy5odG1sICovLApAQCAtNDQ0Miw2ICs0NDQwLDcgQEAKIAkJCQkwQkNEODU2OTE0ODVDOThCMDBF
QTIwMDMgLyogU2V0Rm9yU2NvcGUuY3BwICovLAogCQkJCUNENTM5M0M5MTc1N0JBQzQwMEMwNzEy
MyAvKiBTSEExLmNwcCAqLywKIAkJCQlFMzk1M0Y5NTFGMkNGMzIxMDBBNzZBMkUgLyogU2lnbmFs
cy5jcHAgKi8sCisJCQkJOTNGQ0RCMzMyNjM2MzE1NjAwNDZERDdEIC8qIFNvcnRlZEFycmF5TWFw
LmNwcCAqLywKIAkJCQlGRTJCQ0RDNjI0NzBGQzcwMDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNw
cCAqLywKIAkJCQk4MUI1MDE5MjE0MEYyMzIzMDBEOUVCNTggLyogU3RyaW5nQnVpbGRlci5jcHAg
Ki8sCiAJCQkJN0NENEMyNkMxRTJDMEU2RTAwOTI5NDcwIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmNw
cCAqLywKQEAgLTUxOTMsNiArNTE5Miw3IEBACiAJCQkJN0M4M0RGM0QxRDBBNTkwQzAwRkVCQ0Yz
IC8qIFNldEZvclNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjJBMUQwQTU5MEMw
MEZFQkNGMyAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzNzNENzkxMUYyQ0YzNTIw
MEM2RkFBRiAvKiBTaWduYWxzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzRkNEQjM0MjYzNjMx
NTYwMDQ2REQ3RCAvKiBTb3J0ZWRBcnJheU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTJC
Q0RDNzI0NzBGREEzMDBERUMzM0IgLyogU3RkTGliRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNERjMyMUQwQTU5MEMwMEZFQkNGMyAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDRDRDMjZFMUUyQzBFNkUwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRlbmF0
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1NvcnRlZEFycmF5TWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1NvcnRlZEFycmF5TWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODc4NDMzZmM3Y2NmYjkxYmJkZmVjMWVk
M2YxODg4MDA4MTQ0ZjY2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU29ydGVkQXJyYXlNYXAuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1NvcnRlZEFycmF5TWFwLmg+CisK
K1RFU1QoV1RGLCBTb3J0ZWRBcnJheVNldCkKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIENvbXBh
cmFibGVDYXNlRm9sZGluZ0FTQ0lJTGl0ZXJhbCBjYXNlRm9sZGluZ0FycmF5W10gPSB7CisgICAg
ICAgICJfIiwKKyAgICAgICAgImEiLAorICAgICAgICAiYyIsCisgICAgICAgICJkZWxpZ2h0ZnVs
IiwKKyAgICAgICAgInEiLAorICAgICAgICAicV8iLAorICAgICAgICAici95IiwKKyAgICAgICAg
InMteiIsCisgICAgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5U2V0IGNhc2VG
b2xkaW5nU2V0IHsgY2FzZUZvbGRpbmdBcnJheSB9OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBD
b21wYXJhYmxlTGV0dGVyc0xpdGVyYWwgbGV0dGVyc0FycmF5W10gPSB7CisgICAgICAgICJhIiwK
KyAgICAgICAgImMiLAorICAgICAgICAiZGVsaWdodGZ1bCIsCisgICAgICAgICJxIiwKKyAgICAg
ICAgInIveSIsCisgICAgICAgICJzLXoiLAorICAgIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBT
b3J0ZWRBcnJheVNldCBsZXR0ZXJzU2V0IHsgbGV0dGVyc0FycmF5IH07CisKKyAgICBzdGF0aWMg
Y29uc3RleHByIENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCBzY3JpcHRUeXBlc0FycmF5W10gPSB7
CisgICAgICAgICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0IiwKKyAgICAgICAgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiLAorICAgICAgICAiYXBwbGljYXRpb24veC1lY21hc2NyaXB0IiwKKyAgICAg
ICAgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIsCisgICAgICAgICJ0ZXh0L2VjbWFzY3JpcHQi
LAorICAgICAgICAidGV4dC9qYXZhc2NyaXB0IiwKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEu
MCIsCisgICAgICAgICJ0ZXh0L2phdmFzY3JpcHQxLjEiLAorICAgICAgICAidGV4dC9qYXZhc2Ny
aXB0MS4yIiwKKyAgICAgICAgInRleHQvamF2YXNjcmlwdDEuMyIsCisgICAgICAgICJ0ZXh0L2ph
dmFzY3JpcHQxLjQiLAorICAgICAgICAidGV4dC9qYXZhc2NyaXB0MS41IiwKKyAgICAgICAgInRl
eHQvanNjcmlwdCIsCisgICAgICAgICJ0ZXh0L2xpdmVzY3JpcHQiLAorICAgICAgICAidGV4dC94
LWVjbWFzY3JpcHQiLAorICAgICAgICAidGV4dC94LWphdmFzY3JpcHQiLAorICAgIH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheVNldCBzY3JpcHRUeXBlc1NldCB7IHNjcmlwdFR5
cGVzQXJyYXkgfTsKKworICAgIEVYUEVDVF9GQUxTRShjYXNlRm9sZGluZ1NldC5jb250YWlucygi
IikpOworICAgIEVYUEVDVF9UUlVFKGNhc2VGb2xkaW5nU2V0LmNvbnRhaW5zKCJfIikpOworICAg
IEVYUEVDVF9UUlVFKGNhc2VGb2xkaW5nU2V0LmNvbnRhaW5zKCJjIikpOworICAgIEVYUEVDVF9U
UlVFKGNhc2VGb2xkaW5nU2V0LmNvbnRhaW5zKCJkZWxpZ2h0ZnVsIikpOworICAgIEVYUEVDVF9G
QUxTRShjYXNlRm9sZGluZ1NldC5jb250YWlucygiZCIpKTsKKyAgICBFWFBFQ1RfVFJVRShjYXNl
Rm9sZGluZ1NldC5jb250YWlucygicV8iKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNhc2VGb2xkaW5n
U2V0LmNvbnRhaW5zKCJxX18iKSk7CisKKyAgICBFWFBFQ1RfRkFMU0UobGV0dGVyc1NldC5jb250
YWlucygiIikpOworICAgIEVYUEVDVF9GQUxTRShsZXR0ZXJzU2V0LmNvbnRhaW5zKCJfIikpOwor
ICAgIEVYUEVDVF9UUlVFKGxldHRlcnNTZXQuY29udGFpbnMoImMiKSk7CisgICAgRVhQRUNUX1RS
VUUobGV0dGVyc1NldC5jb250YWlucygiZGVsaWdodGZ1bCIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
bGV0dGVyc1NldC5jb250YWlucygiZCIpKTsKKyAgICBFWFBFQ1RfRkFMU0UobGV0dGVyc1NldC5j
b250YWlucygicV8iKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxldHRlcnNTZXQuY29udGFpbnMoInFf
XyIpKTsKKworICAgIEFTU0VSVF9UUlVFKHNjcmlwdFR5cGVzU2V0LmNvbnRhaW5zKCJ0ZXh0L2ph
dmFzY3JpcHQiKSk7CisgICAgQVNTRVJUX1RSVUUoc2NyaXB0VHlwZXNTZXQuY29udGFpbnMoIlRF
WFQvSkFWQVNDUklQVCIpKTsKKyAgICBBU1NFUlRfVFJVRShzY3JpcHRUeXBlc1NldC5jb250YWlu
cygiYXBwbGljYXRpb24vamF2YXNjcmlwdCIpKTsKKyAgICBBU1NFUlRfVFJVRShzY3JpcHRUeXBl
c1NldC5jb250YWlucygiYXBwbGljYXRpb24vZWNtYXNjcmlwdCIpKTsKKyAgICBBU1NFUlRfVFJV
RShzY3JpcHRUeXBlc1NldC5jb250YWlucygiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IikpOwor
ICAgIEFTU0VSVF9UUlVFKHNjcmlwdFR5cGVzU2V0LmNvbnRhaW5zKCJhcHBsaWNhdGlvbi94LWVj
bWFzY3JpcHQiKSk7CisgICAgQVNTRVJUX0ZBTFNFKHNjcmlwdFR5cGVzU2V0LmNvbnRhaW5zKCJ0
ZXh0L3BsYWluIikpOworICAgIEFTU0VSVF9GQUxTRShzY3JpcHRUeXBlc1NldC5jb250YWlucygi
YXBwbGljYXRpb24vanNvbiIpKTsKKyAgICBBU1NFUlRfRkFMU0Uoc2NyaXB0VHlwZXNTZXQuY29u
dGFpbnMoImZvby9qYXZhc2NyaXB0IikpOworfQo=
</data>
<flag name="review"
          id="447752"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>