<?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>209772</bug_id>
          
          <creation_ts>2020-03-30 14:36:22 -0700</creation_ts>
          <short_desc>[ECMA-402] Implement Intl.Locale</short_desc>
          <delta_ts>2020-07-11 17:38:04 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214223</see_also>
          <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="Shane Carr">sffc</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>andy</cc>
    
    <cc>annulen</cc>
    
    <cc>ashvayka</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>sffc</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635732</commentid>
    <comment_count>0</comment_count>
    <who name="Shane Carr">sffc</who>
    <bug_when>2020-03-30 14:36:22 -0700</bug_when>
    <thetext>Intl.Locale has reached Stage 4 in TC39 as of February 2020, and the other major browser engines (V8 and SpiderMonkey) have been shipping it for some time.

As usage of Intl.Locale increases throughout the ecosystem, WebKit users will be left behind with legacy polyfills, leading to poorer performance relative to other browsers.  Intl.Locale is a low-level type whose usage we expect to grow rapidly as more and more libraries begin to leverage it.

ICU4C exposes C and C++ APIs that can be used to implement Intl.Locale.  Implementing Intl.Locale is largely a matter of adding the glue between JavaScript and ICU4C, as WebKit already does for other Intl types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635740</commentid>
    <comment_count>1</comment_count>
    <who name="Shane Carr">sffc</who>
    <bug_when>2020-03-30 14:40:08 -0700</bug_when>
    <thetext>Original proposal repo: https://github.com/tc39/proposal-intl-locale</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635830</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-30 16:39:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/61079762&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648295</commentid>
    <comment_count>3</comment_count>
      <attachid>398301</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-02 18:19:22 -0700</bug_when>
    <thetext>Created attachment 398301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648299</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-02 19:06:45 -0700</bug_when>
    <thetext>Hmm, since this is basically a static object with a slew of lazy getters, I suppose it would be good to have them all do call_once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648300</commentid>
    <comment_count>5</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-02 19:32:15 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #4)
&gt; Hmm, since this is basically a static object with a slew of lazy getters, I
&gt; suppose it would be good to have them all do call_once.

Err no, that&apos;s not for caching instance data, what am I talking about...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648301</commentid>
    <comment_count>6</comment_count>
      <attachid>398303</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-02 20:09:39 -0700</bug_when>
    <thetext>Created attachment 398303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649258</commentid>
    <comment_count>7</comment_count>
      <attachid>398303</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-05-05 10:35:14 -0700</bug_when>
    <thetext>Comment on attachment 398303
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlLocalePrototype.cpp:56
&gt; +const ClassInfo IntlLocalePrototype::s_info = { &quot;Object&quot;, &amp;Base::s_info, &amp;localePrototypeTable, nullptr, CREATE_METHOD_TABLE(IntlLocalePrototype) };

We might also set `className` to &quot;Intl.Locale&quot; and use JSC_TO_STRING_TAG_WITHOUT_TRANSITION in IntlLocalePrototype::finishCreation().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649270</commentid>
    <comment_count>8</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-05 11:08:28 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #7)
&gt; Comment on attachment 398303 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398303&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlLocalePrototype.cpp:56
&gt; &gt; +const ClassInfo IntlLocalePrototype::s_info = { &quot;Object&quot;, &amp;Base::s_info, &amp;localePrototypeTable, nullptr, CREATE_METHOD_TABLE(IntlLocalePrototype) };
&gt; 
&gt; We might also set `className` to &quot;Intl.Locale&quot; and use
&gt; JSC_TO_STRING_TAG_WITHOUT_TRANSITION in
&gt; IntlLocalePrototype::finishCreation().

Oh, I didn&apos;t know about this approach. Perhaps I should do so for all of the Intl prototypes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649273</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-05-05 11:15:43 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #8)
&gt; Oh, I didn&apos;t know about this approach. Perhaps I should do so for all of the
&gt; Intl prototypes?

It&apos;s very new (introduced in r260992); other Intl prototypes are already covered.
Also, I hope that https://github.com/tc39/ecma402/pull/430 will align @@toStringTag values of all Intl prototypes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649275</commentid>
    <comment_count>10</comment_count>
      <attachid>398303</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-05 11:17:02 -0700</bug_when>
    <thetext>Comment on attachment 398303
Patch

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

Looks generally great. I have some class design thoughts.

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:85
&gt; +    UErrorCode status = U_ZERO_ERROR;
&gt; +    Vector&lt;char, 32&gt; buffer(32);
&gt; +    int32_t parsedLength;
&gt; +    auto bufferLength = uloc_forLanguageTag(input.data(), buffer.data(), buffer.size(), &amp;parsedLength, &amp;status);
&gt; +    if (needsToGrowToProduceBuffer(status)) {
&gt; +        buffer.resize(bufferLength);
&gt; +        status = U_ZERO_ERROR;
&gt; +        uloc_forLanguageTag(input.data(), buffer.data(), bufferLength, &amp;parsedLength, &amp;status);
&gt; +    }
&gt; +    if (U_FAILURE(status) || parsedLength != static_cast&lt;int32_t&gt;(input.length()))
&gt; +        return false;

I am not OK with us continuing to write these out individually. I am going to come up with a template/pattern for these so we have a better chance of doing it right.

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:475
&gt; +        m_numeric = triState(keyword(&quot;colnumeric&quot;_s).startsWith(&quot;true&quot;_s));

I looked at the specification and did not know how to find the string &quot;colnumeric&quot; or the rule about &quot;true&quot; as a prefix. Surprised that a &quot;starts with&quot; check is correct here.

Checking that something starts with an ASCII literal (case sensitive) is not well optimized, perhaps because it’s not very common. Surprised that it is the right thing here.

From a micro-optimization point of view, annoying that this creates/destroys a WTF::String containing the characters &quot;true&quot;; a malloc/free pair. Neither == nor startsWithLettersIgnoringASCIICase does that. We just don’t have a startsWith overload that takes a literal. If we don’t want to add new overloads for WTF::String::startsWith, to avoid allocating memory we could use StringView:

    StringView { keyword(&quot;colnumeric&quot;_s) }.startsWith(&quot;true&quot;)

That would be more efficient. Also, ironically, the free function startsWith from StringCommon.h is better optimized, although it doesn’t work with literals:

    startsWith(keyword(&quot;colnumeric&quot;_s), StringView { &quot;true &quot;})

Both of the above would be more efficient than String::startsWith. Further, the StringCommon.h functions could be fixed to work with ASCII literals by adding member functions named length(), is8Bit(), characters8(), and characters16() to ASCIILiteral or by some other kinds of refactoring.

&gt; Source/JavaScriptCore/runtime/IntlLocale.h:76
&gt; +    void setKeyword(ASCIILiteral, const String&amp;);

I think this should be called setKeywordValue. I think this should take a StringView. I know that currently String has a function to produce UTF-8 characters and StringView does not, but we should fix that.

&gt; Source/JavaScriptCore/runtime/IntlLocale.h:77
&gt; +    String keyword(ASCIILiteral) const;

I think this should be called keywordValue.

&gt; Source/JavaScriptCore/runtime/IntlLocale.h:80
&gt; +    CString m_localeID;

CString seems fine/great for the locale ID after it’s computed. While it’s being computed I don’t think CString is optimal. Vector&lt;char&gt; would probably be better, probably even with inline capacity.

I think it’s a mistake that IntlLocale object is both the &quot;locale ID builder&quot; and the thing to use after it’s built. I suggest a separate object for use as the locale ID builder, that gets created and destroyed within the initializeLocaleFunction. Many of the private member functions would be part of that, not part of IntlLocale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649294</commentid>
    <comment_count>11</comment_count>
      <attachid>398303</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-05 11:39:16 -0700</bug_when>
    <thetext>Comment on attachment 398303
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:79
&gt; +    if (needsToGrowToProduceBuffer(status)) {

This is wrong. It needs to be:
needsToGrowToProduceCString</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649296</commentid>
    <comment_count>12</comment_count>
      <attachid>398303</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-05 11:41:56 -0700</bug_when>
    <thetext>Comment on attachment 398303
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:79
&gt;&gt; +    if (needsToGrowToProduceBuffer(status)) {
&gt; 
&gt; This is wrong. It needs to be:
&gt; needsToGrowToProduceCString

Sorry I think I&apos;m wrong here based on your usage. Reinstating Darin&apos;s r+

&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:95
&gt; +    auto bufferLength = uloc_canonicalize(m_localeID.data(), buffer.data(), buffer.size(), &amp;status);

Looks like the same issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649299</commentid>
    <comment_count>13</comment_count>
      <attachid>398303</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-05 11:45:36 -0700</bug_when>
    <thetext>Comment on attachment 398303
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:95
&gt;&gt; +    auto bufferLength = uloc_canonicalize(m_localeID.data(), buffer.data(), buffer.size(), &amp;status);
&gt; 
&gt; Looks like the same issue.

Also wrong here. I did a quick vetting of all uses of &quot;needsToGrowXYZ&quot; and they seem correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649300</commentid>
    <comment_count>14</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-05 11:47:36 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #13)
&gt; Comment on attachment 398303 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398303&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:95
&gt; &gt;&gt; +    auto bufferLength = uloc_canonicalize(m_localeID.data(), buffer.data(), buffer.size(), &amp;status);
&gt; &gt; 
&gt; &gt; Looks like the same issue.
&gt; 
&gt; Also wrong here. I did a quick vetting of all uses of &quot;needsToGrowXYZ&quot; and
&gt; they seem correct.

Thanks. I guess this may imply that the naming is a little confusing? Since the relevance of the warning is when we need the buffer itself to be null-terminated so that we can use its data *without* making any sort of string class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649306</commentid>
    <comment_count>15</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-05 11:58:12 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; &gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:475
&gt; &gt; +        m_numeric = triState(keyword(&quot;colnumeric&quot;_s).startsWith(&quot;true&quot;_s));
&gt; 
&gt; I looked at the specification and did not know how to find the string
&gt; &quot;colnumeric&quot; or the rule about &quot;true&quot; as a prefix. Surprised that a &quot;starts
&gt; with&quot; check is correct here.
&gt; 
&gt; Checking that something starts with an ASCII literal (case sensitive) is not
&gt; well optimized, perhaps because it’s not very common. Surprised that it is
&gt; the right thing here.

This situation here is kind of goofy because we&apos;re operating on ICU&apos;s legacy locale identifiers. In particular, they represent boolean true as &quot;yes&quot;, but when we modernize these legacy &quot;yes&quot; and &quot;no&quot; values they become &quot;truefalse&quot; and &quot;falsefalse&quot; (which would seem like a very weird bug, but then a missing value turns into just &quot;false&quot; so maybe it&apos;s somehow intended??). I didn&apos;t feel great about using startsWith as a solution to begin with, so I think this means we should just avoid the modernization step for boolean values and check `== &quot;yes&quot;` instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649310</commentid>
    <comment_count>16</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-05 12:01:37 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #14)
&gt; (In reply to Saam Barati from comment #13)
&gt; &gt; Comment on attachment 398303 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=398303&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/JavaScriptCore/runtime/IntlLocale.cpp:95
&gt; &gt; &gt;&gt; +    auto bufferLength = uloc_canonicalize(m_localeID.data(), buffer.data(), buffer.size(), &amp;status);
&gt; &gt; &gt; 
&gt; &gt; &gt; Looks like the same issue.
&gt; &gt; 
&gt; &gt; Also wrong here. I did a quick vetting of all uses of &quot;needsToGrowXYZ&quot; and
&gt; &gt; they seem correct.
&gt; 
&gt; Thanks. I guess this may imply that the naming is a little confusing? Since
&gt; the relevance of the warning is when we need the buffer itself to be
&gt; null-terminated so that we can use its data *without* making any sort of
&gt; string class.

The confusion on my end is just not trusting my immediate reaction that a char* buffer needs to be null terminated. It doesn’t depending on how the result is used.

I think Darin’s planned refactoring will make this a lot nicer by having this code all in one place</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649331</commentid>
    <comment_count>17</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-05 12:30:18 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #8)
&gt; (In reply to Alexey Shvayka from comment #7)
&gt; &gt; Comment on attachment 398303 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=398303&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/runtime/IntlLocalePrototype.cpp:56
&gt; &gt; &gt; +const ClassInfo IntlLocalePrototype::s_info = { &quot;Object&quot;, &amp;Base::s_info, &amp;localePrototypeTable, nullptr, CREATE_METHOD_TABLE(IntlLocalePrototype) };
&gt; &gt; 
&gt; &gt; We might also set `className` to &quot;Intl.Locale&quot; and use
&gt; &gt; JSC_TO_STRING_TAG_WITHOUT_TRANSITION in
&gt; &gt; IntlLocalePrototype::finishCreation().
&gt; 
&gt; Oh, I didn&apos;t know about this approach. Perhaps I should do so for all of the
&gt; Intl prototypes?

Oh oops, I now see this was done in bug 211020. Will follow suit here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649487</commentid>
    <comment_count>18</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-05 21:14:44 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; &gt; Source/JavaScriptCore/runtime/IntlLocale.h:76
&gt; &gt; +    void setKeyword(ASCIILiteral, const String&amp;);
&gt; 
&gt; I think this should be called setKeywordValue. I think this should take a
&gt; StringView. I know that currently String has a function to produce UTF-8
&gt; characters and StringView does not, but we should fix that.

We can do this, but since characters8() lacks a null terminator, I think we still have to make a CString before passing to uloc_setKeywordValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649488</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-05 21:20:16 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #18)
&gt; We can do this, but since characters8() lacks a null terminator, I think we
&gt; still have to make a CString before passing to uloc_setKeywordValue.

Of course: characters8() also won’t produce UTF-8. I’m just saying that we can create a function like String::utf8 that works on a StringView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649490</commentid>
    <comment_count>20</comment_count>
      <attachid>398585</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-05 21:25:49 -0700</bug_when>
    <thetext>Created attachment 398585
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649509</commentid>
    <comment_count>21</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-05 23:01:11 -0700</bug_when>
    <thetext>Committed r261215: &lt;https://trac.webkit.org/changeset/261215&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398585.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398301</attachid>
            <date>2020-05-02 18:19:22 -0700</date>
            <delta_ts>2020-05-02 20:09:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209772-20200502181921.patch</filename>
            <type>text/plain</type>
            <size>100060</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MDVmYTFkZmUzNzE4NzE0YjQ1ZmE5N2ZkMDc1MjAyNzUyMmIwMmIwLi4zMWQxODkxNjc3MDI4OTA1
YTg5YWFlNTIxMmFlNjY0Y2U3YWQ1NWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDYgQEAKKzIwMjAtMDUtMDIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuTG9jYWxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlt
cGxlbWVudHMgdGhlIHJlY2VudCBFQ01BLTQwMiBmZWF0dXJlIEludGwuTG9jYWxlLgorCisgICAg
ICAgIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSB3cmFwcGVyIGNsYXNzIGZvciBhbGwgdGhlIHBpZWNl
cyBvZiB1bG9jLmggdGhhdCBFQ01BLTQwMiBjYXJlcyBhYm91dC4KKyAgICAgICAgKElmIHdlIHVz
ZWQgdGhlIEMrKyBBUEksIHRoZXJlJ3MgYSBMb2NhbGVCdWlsZGVyIHRoYXQgd291bGQgbWFrZSB0
aGlzIG11Y2ggZWFzaWVyLCBidXQgaW4gc3RpY2tpbmcgdG8gdGhlIEMgQVBJLAorICAgICAgICBp
dCdzIGJhc2ljYWxseSBhbiBvYmplY3QgdGhhdCBoYXMgYW4gSUNVIGxvY2FsZUlEIGFzIGRhdGEg
YW5kIHVsb2NfKiBmdW5jdGlvbnMgYXMgbWV0aG9kcyAvIGdldHRlcnMuKQorCisgICAgICAgIFVz
YWdlIGV4YW1wbGU6CisgICAgICAgICAgPj4+IGxvY2FsZSA9IG5ldyBJbnRsLkxvY2FsZSgnamEn
LCB7IHJlZ2lvbjogJ0pQJywgY2FsZW5kYXI6ICdqYXBhbmVzZScsIG51bWVyaWM6IGZhbHNlIH0p
CisgICAgICAgICAgImphLUpQLXUtY2EtamFwYW5lc2Uta24tZmFsc2UiCisgICAgICAgICAgPj4+
IGxvY2FsZS5iYXNlTmFtZQorICAgICAgICAgICJqYS1KUCIKKworICAgICAgICBJbnRsLkxvY2Fs
ZSBjYW4gYmUgdXNlZCBhbnl3aGVyZSB0aGF0IEludGwgQVBJcyBhY2NlcHQgbG9jYWxlIHN0cmlu
Z3MgYXMgaW5wdXQgcGFyYW1ldGVycywKKyAgICAgICAgYW5kIGlzIG1vcmVvdmVyIGhvcGVkIHRv
IGJlIHRoZSBjbGFzcyBieSB3aGljaCBmdXR1cmUgV2ViIEFQSXMgd2lsbCBoYW5kbGUgdGhlIGN1
cnJlbnQgbG9jYWxlLgorCisgICAgICAgIFRoaXMgZmVhdHVyZSBpcyBydW50aW1lLWd1YXJkZWQg
YnkgdGhlIGB1c2VJbnRsTG9jYWxlYCBvcHRpb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkludGxMb2NhbGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxMb2Nh
bGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OkludGxMb2Nh
bGUpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkludGxMb2NhbGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpJbnRsTG9j
YWxlOjppbml0aWFsaXplTG9jYWxlSUQpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpjYW5v
bmljYWxpemVMb2NhbGVJRCk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OnNldEtleXdvcmQp
OgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjprZXl3b3JkKToKKyAgICAgICAgKEpTQzo6SW50
bExvY2FsZTo6b3ZlcnJpZGVMYW5ndWFnZVNjcmlwdFJlZ2lvbik6CisgICAgICAgIChKU0M6Omlz
VW5pY29kZUxhbmd1YWdlU3VidGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlU2NyaXB0U3Vi
dGFnKToKKyAgICAgICAgKEpTQzo6aXNVbmljb2RlUmVnaW9uU3VidGFnKToKKyAgICAgICAgKEpT
Qzo6SW50bExvY2FsZTo6aW5pdGlhbGl6ZUxvY2FsZSk6CisgICAgICAgIChKU0M6OkludGxMb2Nh
bGU6Om1heGltaXplKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6bWluaW1pemUpOgorICAg
ICAgICAoSlNDOjpJbnRsTG9jYWxlOjp0b1N0cmluZyk6CisgICAgICAgIChKU0M6OkludGxMb2Nh
bGU6OmJhc2VOYW1lKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6bGFuZ3VhZ2UpOgorICAg
ICAgICAoSlNDOjpJbnRsTG9jYWxlOjpzY3JpcHQpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
OjpyZWdpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpJbnRsTG9jYWxlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxM
b2NhbGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bExv
Y2FsZUNvbnN0cnVjdG9yOjpJbnRsTG9jYWxlQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpJ
bnRsTG9jYWxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0SW50bExvY2FsZSk6CisgICAgICAgIChKU0M6OmNhbGxJbnRsTG9jYWxlKToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SW50
bExvY2FsZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZVByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZVByb3RvdHlw
ZTo6SW50bExvY2FsZVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGVQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZVByb3RvdHlwZUZ1
bmNNYXhpbWl6ZSk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGVQcm90b3R5cGVGdW5jTWluaW1p
emUpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5nKToKKyAg
ICAgICAgKEpTQzo6SW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKToKKyAgICAgICAg
KEpTQzo6SW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyKToKKyAgICAgICAgKEpTQzo6
SW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCk6CisgICAgICAgIChKU0M6OkludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVySG91ckN5Y2xlKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZVByb3Rv
dHlwZUdldHRlck51bWVyaWMpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyTnVtYmVyaW5nU3lzdGVtKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckxhbmd1YWdlKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZVByb3RvdHlwZUdldHRlclNj
cmlwdCk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0OjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Omxhbmd1YWdlVGFnRnJvbUxvY2FsZUlEQnVmZmVy
KToKKyAgICAgICAgKEpTQzo6aW50bEF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAoSlNDOjpp
bnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXpl
TGFuZ3VhZ2VUYWcpOgorICAgICAgICAoSlNDOjpjYW5vbmljYWxpemVMb2NhbGVMaXN0KToKKyAg
ICAgICAgKEpTQzo6ZGVmYXVsdExvY2FsZSk6CisgICAgICAgIChKU0M6OmNvbnZlcnRJQ1VMb2Nh
bGVUb0JDUDQ3TGFuZ3VhZ2VUYWcpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6bG9jYWxlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6
OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIwLTA0LTMwICBSb3NzIEtp
cnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBUcmlTdGF0ZSBzaG91
bGQgYmUgYW4gZW51bSBjbGFzcyBhbmQgdXNlICJJbmRldGVybWluYXRlIiBpbnN0ZWFkIG9mICJN
aXhlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNTcyYjZjNmJhMDk0
MDVjNmIzMjk5MTcxYzQ4MmY2NWExMzZkM2RkLi40NTQ0MjRlMTdjMzk2ZTUzZGNmZGEyMzVlMmRl
N2I5ZmViM2Y0M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC03MCw2
ICs3MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50
aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsT2JqZWN0LmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApp
bmRleCBmMzUxMDQ0M2VlYzU3YzYwOGM2YTBmZWVjODU5OTI0MzRjNTcxMTM2Li5mZWE0MDQ1ZGYz
NWQ5YWRmMDQ2YTJlZmQ2Yzg4YzhkOGQwMGZiNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTM2LDYgKzEz
Niw3IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3Bw
CiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKICQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAkKFBS
T0pFQ1RfRElSKS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKKyQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGIxYTMzZDUzZGU3OGQ5YTQ5Nzc0
Yjc0ZTZmNDhjYzM0NDRjZGY0MjQuLjc5Y2RlNGVlNTA3ZTEzZjZmZjdmYTc4MDBkYzY0NWNiZjg5
NDFjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTI3LDYgKzI3LDcgQEAgJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvckNvbnN0cnVjdG9y
Lmx1dC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5s
dXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxMb2NhbGVQcm90b3R5cGUubHV0LmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmx1dC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50
bE9iamVjdC5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpp
bmRleCAxYzIyODhkZjg1NWI4MDBiMGJlYzMzZTg1MWNhODg1YjVhZDQ3ZTcxLi4wMGQyYTU3YjNl
ZDJkYzNjMjk5NzQyOTg0ZTUwNTdhYTZhMWMzZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIE9CSkVDVF9MVVRfSEVBREVS
UyA9IFwKICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmggXAogICAgIEludGxEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUubHV0LmggXAorICAgIEludGxMb2NhbGVQcm90b3R5cGUubHV0LmggXAogICAgIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5sdXQuaCBcCiAgICAgSW50bE9iamVjdC5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDIxNmM5MjdiMjQ2ZDdkZjkwYzM0YzJlY2VlYzM2OTdiMTZhN2MzMDUuLjAyN2Y3
ZWYyYWMxNTYzZDNhMGNiYzViZjcwODIwYzFmZjE0MjYzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC00MzMzLDYgKzQzMzMsMTIgQEAKIAkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2
NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTFGRTFFQjAxQzJDNTM3RTAwQTI4OUZGIC8qIERhdGVQcm90b3R5cGUuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBEYXRlUHJvdG90eXBlLmpzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNv
bnRleHRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250
ZXh0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0FGRjkyQjI0NUEz
Q0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsTG9jYWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQUZGOTJD
MjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bExvY2FsZUNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUEzQUZGOTJEMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxMb2NhbGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0FGRjkyRTI0NUEzQ0ZCMDBDOUJBM0Ig
LyogSW50bExvY2FsZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnRsTG9jYWxlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTNBRkY5MkYyNDVBM0NGQjAwQzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTG9jYWxlQ29uc3Ry
dWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0FGRjkzMDI0NUEzQ0ZD
MDBDOUJBM0IgLyogSW50bExvY2FsZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRsTG9jYWxlUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUEzQkY4ODRCMjQ0ODBCREUwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBM0JGODg0QzI0NDgwQkRGMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY4
ODREMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcy
NTQsNiArNzI2MCwxMiBAQAogCQkJCUExNTg3RDZBMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAogCQkJCUExNTg3RDZCMUI0REMxNDEwMEQ2OTg0
OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovLAogCQkJCUExNTg3RDZDMUI0
REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLywKKwkJCQlB
M0FGRjkyRDI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZS5jcHAgKi8sCisJCQkJQTNBRkY5
MkIyNDVBM0NGOTAwQzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLywKKwkJCQlBM0FGRjkyRjI0NUEz
Q0ZCMDBDOUJBM0IgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBM0FGRjky
QzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmggKi8sCisJCQkJQTNB
RkY5MkUyNDVBM0NGQjAwQzlCQTNCIC8qIEludGxMb2NhbGVQcm90b3R5cGUuY3BwICovLAorCQkJ
CUEzQUZGOTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi8sCiAJ
CQkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQuY3BwICovLAog
CQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0LmggKi8sCiAJ
CQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggMGY0YzUwZGYzNjdjNjU2
MDhhMGFmNjI4M2EwZGM1MjZhOTQxMGE1ZS4uZWNjZTkxM2VjNTEzN2IwYTI5ZWE1ZDhlODk1Njhl
MzliZTgzOTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODEyLDYgKzgxMiw5
IEBAIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAog
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCitydW50aW1lL0ludGxMb2Nh
bGUuY3BwCitydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvSW50bExv
Y2FsZVByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
UHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKaW5kZXggZDE2NGJhNGJlZjhiNGVlZmY5MzE3MzdiMzk1M2YzNGZlMTIz
MmEyOC4uOGRiYzZkN2FjMTg3YjcxOWQwNDUyNjU3MDI4MDk2MTYyMjlkNThkYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC00
MCw2ICs0MCw3IEBACiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAgICBtYWNybyhJbnRsKSBcCiAg
ICAgbWFjcm8oTG9hZGVyKSBcCisgICAgbWFjcm8oTG9jYWxlKSBcCiAgICAgbWFjcm8oTWFwKSBc
CiAgICAgbWFjcm8oTmFOKSBcCiAgICAgbWFjcm8oTnVtYmVyKSBcCkBAIC0xMzcsNiArMTM4LDcg
QEAKICAgICBtYWNybyhpc1dhdGNocG9pbnQpIFwKICAgICBtYWNybyhqZXR0aXNvblJlYXNvbikg
XAogICAgIG1hY3JvKGpvaW4pIFwKKyAgICBtYWNybyhsYW5ndWFnZSkgXAogICAgIG1hY3JvKGxh
c3RJbmRleCkgXAogICAgIG1hY3JvKGxlbmd0aCkgXAogICAgIG1hY3JvKGxpbmUpIFwKQEAgLTE2
Niw4ICsxNjgsMTAgQEAKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51bWVyYWJsZSkgXAogICAgIG1h
Y3JvKHByb3RvdHlwZSkgXAogICAgIG1hY3JvKHJhdykgXAorICAgIG1hY3JvKHJlZ2lvbikgXAog
ICAgIG1hY3JvKHJlcGxhY2UpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCisgICAgbWFjcm8oc2Ny
aXB0KSBcCiAgICAgbWFjcm8oc2Vjb25kKSBcCiAgICAgbWFjcm8oc2Vuc2l0aXZpdHkpIFwKICAg
ICBtYWNybyhzZXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2Fs
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTNlYTUxM2Y1NjZlY2M0ZWFmZTkyZWVhZjRiMGU5MzA3MzM5MmI0
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGUuY3BwCkBAIC0wLDAgKzEsNDE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KKyNpbmNs
dWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIEludGxMb2NhbGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bExvY2FsZSkg
fTsKKworSW50bExvY2FsZSogSW50bExvY2FsZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SW50bExvY2FsZT4odm0uaGVhcCkpIEludGxMb2NhbGUodm0sIHN0cnVjdHVyZSk7CisgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3Ry
dWN0dXJlKiBJbnRsTG9jYWxlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxMb2NhbGU6OkludGxMb2Nh
bGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVy
ZSkKK3sKK30KKwordm9pZCBJbnRsTG9jYWxlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5m
bygpKSk7Cit9CisKK3ZvaWQgSW50bExvY2FsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SW50bExvY2FsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7Cit9CisKK2Jvb2wgSW50bExvY2FsZTo6aW5pdGlhbGl6ZUxvY2FsZUlEKGNvbnN0IFN0
cmluZyYgdGFnKQoreworICAgIENTdHJpbmcgaW5wdXQgPSB0YWcudXRmOCgpOworCisgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVmVjdG9yPGNoYXIsIDMyPiBidWZm
ZXIoMzIpOworICAgIGludDMyX3QgcGFyc2VkTGVuZ3RoOworICAgIGF1dG8gYnVmZmVyTGVuZ3Ro
ID0gdWxvY19mb3JMYW5ndWFnZVRhZyhpbnB1dC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCksICZwYXJzZWRMZW5ndGgsICZzdGF0dXMpOworICAgIGlmIChuZWVkc1RvR3Jvd1Rv
UHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7CisgICAgICAgIGJ1ZmZlci5yZXNpemUoYnVmZmVyTGVu
Z3RoKTsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1bG9jX2Zvckxh
bmd1YWdlVGFnKGlucHV0LmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoLCAmcGFy
c2VkTGVuZ3RoLCAmc3RhdHVzKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpIHx8
IHBhcnNlZExlbmd0aCAhPSBzdGF0aWNfY2FzdDxpbnQzMl90PihpbnB1dC5sZW5ndGgoKSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbG9jYWxlSUQgPSBDU3RyaW5nKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW50bExv
Y2FsZTo6Y2Fub25pY2FsaXplTG9jYWxlSUQoKQoreworICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgIFZlY3RvcjxjaGFyLCAzMj4gYnVmZmVyKDMyKTsKKyAgICBhdXRv
IGJ1ZmZlckxlbmd0aCA9IHVsb2NfY2Fub25pY2FsaXplKG1fbG9jYWxlSUQuZGF0YSgpLCBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAobmVlZHNUb0dyb3dU
b1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgeworICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5n
dGgpOworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVsb2NfY2Fub25p
Y2FsaXplKG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsICZz
dGF0dXMpOworICAgIH0KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIG1fbG9jYWxlSUQgPSBDU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ckxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSW50bExvY2FsZTo6c2V0S2V5
d29yZChBU0NJSUxpdGVyYWwga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIENTdHJp
bmcgaW5wdXQgPSB2YWx1ZS51dGY4KCk7CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICBhdXRvIGxlbmd0aCA9IHVsb2Nfc2V0S2V5d29yZFZhbHVlKGtleS5jaGFy
YWN0ZXJzKCksIGlucHV0LmRhdGEoKSwgbV9sb2NhbGVJRC5tdXRhYmxlRGF0YSgpLCBtX2xvY2Fs
ZUlELmxlbmd0aCgpLCAmc3RhdHVzKTsKKyAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZm
ZXIoc3RhdHVzKSkgeworICAgICAgICBtX2xvY2FsZUlELmdyb3cobGVuZ3RoICsgMSk7CisgICAg
ICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgdWxvY19zZXRLZXl3b3JkVmFsdWUo
a2V5LmNoYXJhY3RlcnMoKSwgaW5wdXQuZGF0YSgpLCBtX2xvY2FsZUlELm11dGFibGVEYXRhKCks
IGxlbmd0aCArIDEsICZzdGF0dXMpOworICAgIH0KKyAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1
cykpOworfQorCitTdHJpbmcgSW50bExvY2FsZTo6a2V5d29yZChBU0NJSUxpdGVyYWwga2V5KQor
eworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFZlY3RvcjxjaGFy
LCAzMj4gYnVmZmVyKDMyKTsKKyAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVsb2NfZ2V0S2V5d29y
ZFZhbHVlKG1fbG9jYWxlSUQuZGF0YSgpLCBrZXkuY2hhcmFjdGVycygpLCBidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VD
U3RyaW5nKHN0YXR1cykpIHsKKyAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyTGVuZ3RoICsgMSk7
CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgdWxvY19nZXRLZXl3b3Jk
VmFsdWUobV9sb2NhbGVJRC5kYXRhKCksIGtleS5jaGFyYWN0ZXJzKCksIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlckxlbmd0aCArIDEsICZzdGF0dXMpOworICAgIH0KKyAgICBBU1NFUlQoVV9TVUNDRVNT
KHN0YXR1cykpOworCisgICAgcmV0dXJuIFN0cmluZyh1bG9jX3RvVW5pY29kZUxvY2FsZVR5cGUo
a2V5LmNoYXJhY3RlcnMoKSwgYnVmZmVyLmRhdGEoKSkpOworfQorCisvLyBCZWNhdXNlIElDVSdz
IEMgQVBJIGRvZXNuJ3QgaGF2ZSBzZXRbTGFuZ3VhZ2V8U2NyaXB0fFJlZ2lvbl0gZnVuY3Rpb25z
Li4uCit2b2lkIEludGxMb2NhbGU6Om92ZXJyaWRlTGFuZ3VhZ2VTY3JpcHRSZWdpb24oU3RyaW5n
VmlldyBsYW5ndWFnZSwgU3RyaW5nVmlldyBzY3JpcHQsIFN0cmluZ1ZpZXcgcmVnaW9uKQorewor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fbG9jYWxlSUQubGVuZ3RoKCk7CisgICAgQVNTRVJUKGxl
bmd0aCk7CisKKyAgICBhdXRvIGxvY2FsZUlEVmlldyA9IFN0cmluZ1ZpZXcgeyBtX2xvY2FsZUlE
LmRhdGEoKSwgbGVuZ3RoIH07CisKKyAgICBhdXRvIGVuZE9mTGFuZ3VhZ2VTY3JpcHRSZWdpb25W
YXJpYW50ID0gbG9jYWxlSURWaWV3LmZpbmQoVUxPQ19LRVlXT1JEX1NFUEFSQVRPUik7CisgICAg
aWYgKGVuZE9mTGFuZ3VhZ2VTY3JpcHRSZWdpb25WYXJpYW50ID09IG5vdEZvdW5kKQorICAgICAg
ICBlbmRPZkxhbmd1YWdlU2NyaXB0UmVnaW9uVmFyaWFudCA9IGxlbmd0aDsKKworICAgIFZlY3Rv
cjxTdHJpbmdWaWV3PiBzdWJ0YWdzOworICAgIGZvciAoYXV0byBzdWJ0YWcgOiBsb2NhbGVJRFZp
ZXcubGVmdChlbmRPZkxhbmd1YWdlU2NyaXB0UmVnaW9uVmFyaWFudCkuc3BsaXRBbGxvd2luZ0Vt
cHR5RW50cmllcygnXycpKQorICAgICAgICBzdWJ0YWdzLmFwcGVuZChzdWJ0YWcpOworCisgICAg
aWYgKCFsYW5ndWFnZS5pc051bGwoKSkKKyAgICAgICAgc3VidGFnc1swXSA9IGxhbmd1YWdlOwor
CisgICAgYm9vbCBoYXNTY3JpcHQgPSBzdWJ0YWdzLnNpemUoKSA+IDEgJiYgc3VidGFnc1sxXS5s
ZW5ndGgoKSA9PSA0OworICAgIGlmICghc2NyaXB0LmlzTnVsbCgpKSB7CisgICAgICAgIGlmICho
YXNTY3JpcHQpCisgICAgICAgICAgICBzdWJ0YWdzWzFdID0gc2NyaXB0OworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIHN1YnRhZ3MuaW5zZXJ0KDEsIHNjcmlwdCk7CisgICAgICAgICAgICBo
YXNTY3JpcHQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFyZWdpb24uaXNO
dWxsKCkpIHsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0gaGFzU2NyaXB0ID8gMiA6IDE7CisgICAg
ICAgIGJvb2wgaGFzUmVnaW9uID0gc3VidGFncy5zaXplKCkgPiBpbmRleCAmJiBzdWJ0YWdzW2lu
ZGV4XS5sZW5ndGgoKSA8IDQ7CisgICAgICAgIGlmIChoYXNSZWdpb24pCisgICAgICAgICAgICBz
dWJ0YWdzW2luZGV4XSA9IHJlZ2lvbjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3VidGFn
cy5pbnNlcnQoaW5kZXgsIHJlZ2lvbik7CisgICAgfQorCisgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7IAorICAgIGJvb2wgaGFzQXBwZW5kZWQgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8gc3VidGFn
IDogc3VidGFncykgeworICAgICAgICBpZiAoaGFzQXBwZW5kZWQpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCdfJyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhhc0FwcGVuZGVkID0g
dHJ1ZTsKKworICAgICAgICByZXN1bHQuYXBwZW5kKHN1YnRhZyk7CisgICAgfQorCisgICAgaWYg
KGVuZE9mTGFuZ3VhZ2VTY3JpcHRSZWdpb25WYXJpYW50ICE9IGxlbmd0aCkKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChsb2NhbGVJRFZpZXcucmlnaHQobGVuZ3RoIC0gZW5kT2ZMYW5ndWFnZVNjcmlw
dFJlZ2lvblZhcmlhbnQpKTsKKworICAgIG1fbG9jYWxlSUQgPSByZXN1bHQudG9TdHJpbmcoKS51
dGY4KCk7Cit9CisKKy8vIHVuaWNvZGVfbGFuZ3VhZ2Vfc3VidGFnID0gYWxwaGF7MiwzfSB8IGFs
cGhhezUsOH0gOworc3RhdGljIGJvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmll
dyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CisgICAgcmV0
dXJuIGxlbmd0aCA+PSAyICYmIGxlbmd0aCA8PSA4ICYmIGxlbmd0aCAhPSA0ICYmIHN0cmluZy5p
c0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKworLy8gdW5pY29kZV9z
Y3JpcHRfc3VidGFnID0gYWxwaGF7NH0gOworc3RhdGljIGJvb2wgaXNVbmljb2RlU2NyaXB0U3Vi
dGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVybiBzdHJpbmcubGVuZ3RoKCkgPT0g
NCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCk7Cit9CisK
Ky8vIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyA9IGFscGhhezJ9IHwgZGlnaXR7M30gOworc3RhdGlj
IGJvb2wgaXNVbmljb2RlUmVnaW9uU3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGF1
dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIHJldHVybiAobGVuZ3RoID09IDIgJiYg
c3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSUFscGhhPigpKQorICAgICAgICB8
fCAobGVuZ3RoID09IDMgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJSURp
Z2l0PigpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2Fs
ZQordm9pZCBJbnRsTG9jYWxlOjppbml0aWFsaXplTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgdGFnVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJpbmcgdGFnID0gdGFnVmFsdWUuaW5oZXJpdHM8SW50
bExvY2FsZT4odm0pID8ganNDYXN0PEludGxMb2NhbGUqPih0YWdWYWx1ZSktPnRvU3RyaW5nKCkg
OiB0YWdWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVlIG9wdGlvbnMgPSBvcHRpb25zVmFs
dWU7CisgICAgaWYgKCFvcHRpb25zVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICBvcHRp
b25zID0gb3B0aW9uc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorCisgICAgaWYgKHRhZy5pc0Vt
cHR5KCkgfHwgIWluaXRpYWxpemVMb2NhbGVJRCh0YWcpKSB7CisgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsYW5ndWFnZSB0YWciX3MpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIGxhbmd1YWdlID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxhbmd1YWdlLCB7
IH0sIG51bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisgICAgaWYgKCFsYW5ndWFnZS5pc051bGwoKSAmJiAhaXNVbmljb2RlTGFuZ3VhZ2VT
dWJ0YWcobGFuZ3VhZ2UpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAibGFuZ3VhZ2UgaXMgbm90IGEgd2VsbC1mb3JtZWQgbGFuZ3VhZ2UgdmFsdWUiX3Mp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU3RyaW5nIHNjcmlwdCA9IGludGxTdHJp
bmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zY3JpcHQs
IHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICBpZiAoIXNjcmlwdC5pc051bGwoKSAmJiAhaXNVbmljb2RlU2NyaXB0U3Vi
dGFnKHNjcmlwdCkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJzY3JpcHQgaXMgbm90IGEgd2VsbC1mb3JtZWQgc2NyaXB0IHZhbHVlIl9zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyByZWdpb24gPSBpbnRsU3RyaW5nT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cmVnaW9uLCB7IH0sIG51
bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgaWYgKCFyZWdpb24uaXNOdWxsKCkgJiYgIWlzVW5pY29kZVJlZ2lvblN1YnRhZyhyZWdp
b24pKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVn
aW9uIGlzIG5vdCBhIHdlbGwtZm9ybWVkIHJlZ2lvbiB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIWxhbmd1YWdlLmlzTnVsbCgpIHx8ICFzY3JpcHQuaXNOdWxs
KCkgfHwgIXJlZ2lvbi5pc051bGwoKSkKKyAgICAgICAgb3ZlcnJpZGVMYW5ndWFnZVNjcmlwdFJl
Z2lvbihsYW5ndWFnZSwgc2NyaXB0LCByZWdpb24pOworCisgICAgU3RyaW5nIGNhbGVuZGFyID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMt
PmNhbGVuZGFyLCB7IH0sIG51bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKCFjYWxlbmRhci5pc051bGwoKSkgeworICAgICAg
ICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKGNhbGVuZGFyKSkgeworICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBpcyBu
b3QgYSB3ZWxsLWZvcm1lZCBjYWxlbmRhciB2YWx1ZSJfcyk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgc2V0S2V5d29yZCgiY2FsZW5kYXIiX3MsIGNhbGVuZGFyKTsK
KyAgICB9CisKKyAgICBTdHJpbmcgY29sbGF0aW9uID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbGxhdGlvbiwgeyB9LCBudWxscHRy
LCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAg
IGlmICghY29sbGF0aW9uLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxl
SWRlbnRpZmllclR5cGUoY29sbGF0aW9uKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90IGEgd2VsbC1mb3JtZWQgY29s
bGF0aW9uIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBzZXRLZXl3b3JkKCJjb2xsYXRpb24iX3MsIGNvbGxhdGlvbik7CisgICAgfQorCisgICAgU3Ry
aW5nIGhvdXJDeWNsZSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2
bS5wcm9wZXJ0eU5hbWVzLT5ob3VyQ3ljbGUsIHsgImgxMSIsICJoMTIiLCAiaDIzIiwgImgyNCIg
fSwgImhvdXJDeWNsZSBtdXN0IGJlIFwiaDExXCIsIFwiaDEyXCIsIFwiaDIzXCIsIG9yIFwiaDI0
XCIiLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
ICAgIGlmICghaG91ckN5Y2xlLmlzTnVsbCgpKQorICAgICAgICBzZXRLZXl3b3JkKCJob3VycyJf
cywgaG91ckN5Y2xlKTsKKworICAgIFN0cmluZyBjYXNlRmlyc3QgPSBpbnRsU3RyaW5nT3B0aW9u
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+Y2FzZUZpcnN0LCB7ICJ1
cHBlciIsICJsb3dlciIsICJmYWxzZSIgfSwgImNhc2VGaXJzdCBtdXN0IGJlIGVpdGhlciBcInVw
cGVyXCIsIFwibG93ZXJcIiwgb3IgXCJmYWxzZVwiIiwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoIWNhc2VGaXJzdC5pc051bGwoKSkK
KyAgICAgICAgc2V0S2V5d29yZCgiY29sY2FzZWZpcnN0Il9zLCBjYXNlRmlyc3QpOworCisgICAg
VHJpU3RhdGUgbnVtZXJpYyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgdm0ucHJvcGVydHlOYW1lcy0+bnVtZXJpYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICBpZiAobnVtZXJpYyAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZSkKKyAgICAgICAgc2V0S2V5d29yZCgiY29sbnVtZXJpYyJfcywgbnVtZXJpYyA9PSBUcmlTdGF0
ZTo6VHJ1ZSA/ICJ5ZXMiX3MgOiAibm8iX3MpOworCisgICAgU3RyaW5nIG51bWJlcmluZ1N5c3Rl
bSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5h
bWVzLT5udW1iZXJpbmdTeXN0ZW0sIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoIW51bWJlcmluZ1N5c3RlbS5p
c051bGwoKSkgeworICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKG51
bWJlcmluZ1N5c3RlbSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmlu
ZyBzeXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIHNldEtleXdvcmQoIm51bWJlcnMiX3MsIG51bWJlcmluZ1N5c3RlbSk7CisgICAgfQorCisg
ICAgaWYgKCFjYW5vbmljYWxpemVMb2NhbGVJRCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBMb2NhbGUiX3MpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5tYXhpbWl6ZQorU3RyaW5nIEludGxMb2NhbGU6Om1h
eGltaXplKCkKK3sKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBW
ZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcigzMik7CisgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9j
X2FkZExpa2VseVN1YnRhZ3MobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCksICZzdGF0dXMpOworICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmco
c3RhdHVzKSkgeworICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGggKyAxKTsKKyAgICAg
ICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1bG9jX2FkZExpa2VseVN1YnRhZ3Mo
bV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCArIDEsICZzdGF0
dXMpOworICAgIH0KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIHJldHVybiBsYW5ndWFnZVRhZ0Zyb21Mb2NhbGVJREJ1ZmZlcihidWZm
ZXIuZGF0YSgpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxv
Y2FsZS5wcm90b3R5cGUubWluaW1pemUKK1N0cmluZyBJbnRsTG9jYWxlOjptaW5pbWl6ZSgpCit7
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVmVjdG9yPGNoYXIs
IDMyPiBidWZmZXIoMzIpOworICAgIGF1dG8gYnVmZmVyTGVuZ3RoID0gdWxvY19taW5pbWl6ZVN1
YnRhZ3MobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZz
dGF0dXMpOworICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmcoc3RhdHVzKSkgewor
ICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGggKyAxKTsKKyAgICAgICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgICAgICB1bG9jX21pbmltaXplU3VidGFncyhtX2xvY2FsZUlELmRh
dGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoICsgMSwgJnN0YXR1cyk7CisgICAgfQor
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgcmV0dXJuIGxhbmd1YWdlVGFnRnJvbUxvY2FsZUlEQnVmZmVyKGJ1ZmZlci5kYXRhKCkpOwor
fQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlw
ZS50b1N0cmluZworU3RyaW5nIEludGxMb2NhbGU6OnRvU3RyaW5nKCkKK3sKKyAgICByZXR1cm4g
bGFuZ3VhZ2VUYWdGcm9tTG9jYWxlSURCdWZmZXIobV9sb2NhbGVJRC5kYXRhKCkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNl
TmFtZQorU3RyaW5nIEludGxMb2NhbGU6OmJhc2VOYW1lKCkKK3sKKyAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcigzMik7Cisg
ICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2dldEJhc2VOYW1lKG1fbG9jYWxlSUQuZGF0YSgp
LCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAobmVlZHNU
b0dyb3dUb1Byb2R1Y2VDU3RyaW5nKHN0YXR1cykpIHsKKyAgICAgICAgYnVmZmVyLmdyb3coYnVm
ZmVyTGVuZ3RoICsgMSk7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAg
dWxvY19nZXRCYXNlTmFtZShtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
TGVuZ3RoICsgMSwgJnN0YXR1cyk7CisgICAgfQorICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIGxhbmd1YWdlVGFnRnJvbUxv
Y2FsZUlEQnVmZmVyKGJ1ZmZlci5kYXRhKCkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZQorU3RyaW5nIEludGxMb2Nh
bGU6Omxhbmd1YWdlKCkKK3sKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICBWZWN0b3I8Y2hhciwgOD4gYnVmZmVyKDgpOworICAgIGF1dG8gYnVmZmVyTGVuZ3RoID0g
dWxvY19nZXRMYW5ndWFnZShtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSwgJnN0YXR1cyk7CisgICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0
YXR1cykpIHsKKyAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICB1bG9jX2dldExhbmd1YWdlKG1fbG9jYWxlSUQu
ZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOworICAgIH0KKyAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuc2NyaXB0CitT
dHJpbmcgSW50bExvY2FsZTo6c2NyaXB0KCkKK3sKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKyAgICBWZWN0b3I8Y2hhciwgND4gYnVmZmVyKDQpOworICAgIGF1dG8gYnVm
ZmVyTGVuZ3RoID0gdWxvY19nZXRTY3JpcHQobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCksICZzdGF0dXMpOworICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVj
ZUJ1ZmZlcihzdGF0dXMpKSB7CisgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlckxlbmd0aCk7Cisg
ICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgdWxvY19nZXRTY3JpcHQobV9s
b2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7Cisg
ICAgfQorICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgpOworfQor
CisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5y
ZWdpb24KK1N0cmluZyBJbnRsTG9jYWxlOjpyZWdpb24oKQoreworICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgIFZlY3RvcjxjaGFyLCAzPiBidWZmZXIoMyk7CisgICAg
YXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2dldENvdW50cnkobV9sb2NhbGVJRC5kYXRhKCksIGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZzdGF0dXMpOworICAgIGlmIChuZWVkc1RvR3Jv
d1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7CisgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlckxl
bmd0aCk7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgdWxvY19nZXRD
b3VudHJ5KG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsICZz
dGF0dXMpOworICAgIH0KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVu
Z3RoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTM5MjFhMmU0YmQzMGQ4OWY2ZDExYWExZjlm
ZmFlMTJlYWVjMGVmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMb2NhbGUuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEludGxMb2NhbGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PEludGxMb2Nh
bGUqPihjZWxsKS0+SW50bExvY2FsZTo6fkludGxMb2NhbGUoKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2
bS5pbnRsTG9jYWxlU3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bExvY2Fs
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgdGFnVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKTsKKyAgICBTdHJpbmcgbWF4aW1pemUo
KTsKKyAgICBTdHJpbmcgbWluaW1pemUoKTsKKyAgICBTdHJpbmcgdG9TdHJpbmcoKTsKKworICAg
IFN0cmluZyBiYXNlTmFtZSgpOworICAgIFN0cmluZyBsYW5ndWFnZSgpOworICAgIFN0cmluZyBz
Y3JpcHQoKTsKKyAgICBTdHJpbmcgcmVnaW9uKCk7CisgICAgU3RyaW5nIGtleXdvcmQoQVNDSUlM
aXRlcmFsKTsKKworcHJpdmF0ZToKKyAgICBJbnRsTG9jYWxlKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIGJvb2wgaW5pdGlhbGl6ZUxvY2FsZUlE
KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgY2Fub25pY2FsaXplTG9jYWxlSUQoKTsKKyAgICB2
b2lkIHNldEtleXdvcmQoQVNDSUlMaXRlcmFsLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIG92
ZXJyaWRlTGFuZ3VhZ2VTY3JpcHRSZWdpb24oU3RyaW5nVmlldyBsYW5ndWFnZSwgU3RyaW5nVmll
dyBzY3JpcHQsIFN0cmluZ1ZpZXcgcmVnaW9uKTsKKworICAgIENTdHJpbmcgbV9sb2NhbGVJRDsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY2OTUx
NGRjMmY4YjEwNjZlM2JjYmEyMjNjN2MyYmRiNDBhYTBmNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKQEAg
LTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNp
bmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiTG9va3VwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoSW50bExvY2FsZUNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJ
bmZvIEludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxMb2NhbGVD
b25zdHJ1Y3RvcikgfTsKKworSW50bExvY2FsZUNvbnN0cnVjdG9yKiBJbnRsTG9jYWxlQ29uc3Ry
dWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsTG9jYWxlUHJv
dG90eXBlKiBsb2NhbGVQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBJ
bnRsTG9jYWxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBsb2NhbGVQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKK30KKworU3RydWN0dXJlKiBJbnRsTG9jYWxlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRs
TG9jYWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2Fs
bEZyYW1lKik7CisKK0ludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6SW50bExvY2FsZUNvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUs
IGNhbGxJbnRsTG9jYWxlLCBjb25zdHJ1Y3RJbnRsTG9jYWxlKQoreworfQorCit2b2lkIEludGxM
b2NhbGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsTG9jYWxlUHJvdG90
eXBlKiBsb2NhbGVQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJM
b2NhbGUiX3MsIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBsb2NhbGVQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBsb2NhbGVQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQor
CisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlCitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTG9jYWxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5u
ZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXdUYXJnZXQgPT0gY2Fs
bEZyYW1lLT5qc0NhbGxlZSgpCisgICAgICAgID8gZ2xvYmFsT2JqZWN0LT5sb2NhbGVTdHJ1Y3R1
cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJl
KGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlvblJlYWxtKHZtLCBuZXdUYXJnZXQp
LT5sb2NhbGVTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIEludGxMb2NhbGUqIGxvY2FsZSA9IEludGxMb2NhbGU6OmNyZWF0ZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQobG9jYWxlKTsKKworICAgIEpTVmFsdWUgdGFnID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRhZy5pc1N0cmluZygpICYmICF0YWcuaXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEludGwuTG9jYWxlIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4g
b2JqZWN0Il9zKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBsb2NhbGUtPmluaXRpYWxp
emVMb2NhbGUoZ2xvYmFsT2JqZWN0LCB0YWcsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9jYWxlKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEludGxMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJMb2NhbGUiKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40YjM0YTg4N2IzNGRkYzEwMjM1NTA1YmFlOTk5OTMyZmUyYjcxZjE1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExv
Y2FsZUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTG9jYWxlUHJvdG90eXBl
OworCitjbGFzcyBJbnRsTG9jYWxlQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBJbnRsTG9j
YWxlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxMb2NhbGVQcm90b3R5
cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAg
IEludGxMb2NhbGVDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oVk0mLCBJbnRsTG9jYWxlUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9J
U09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExvY2FsZUNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0
aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNGU0Njhi
Y2Q0ZGQyNGVkZGU4MDQ0YzQ1ZjcwNzI3MjUzNzQ0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcApAQCAtMCww
ICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRl
ICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhpbWl6ZShKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFt
ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3Rv
dHlwZUZ1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VO
YW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDb2xsYXRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJIb3VyQ3ljbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljKEpT
R2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtKEpTR2xvYmFs
T2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJTY3JpcHQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJS
ZWdpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50
bExvY2FsZVByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBJbnRsTG9jYWxlUHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19p
bmZvLCAmbG9jYWxlUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bExvY2FsZVByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBJbnRsTG9jYWxlUHJvdG90
eXBlLmx1dC5oCitAYmVnaW4gbG9jYWxlUHJvdG90eXBlVGFibGUKKyAgbWF4aW1pemUgICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01heGltaXplICAgICAgICAgICBEb250RW51bXxGdW5j
dGlvbiAwCisgIG1pbmltaXplICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6
ZSAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b1N0cmluZyAgICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAK
KyAgYmFzZU5hbWUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUgICAg
ICAgICBEb250RW51bXxBY2Nlc3NvcgorICBjYWxlbmRhciAgICAgICAgIEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIGNhc2VGaXJz
dCAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdCAgICAgICAgRG9udEVu
dW18QWNjZXNzb3IKKyAgY29sbGF0aW9uICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
Q29sbGF0aW9uICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBob3VyQ3ljbGUgICAgICAgIElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUgICAgICAgIERvbnRFbnVtfEFjY2Vzc29y
CisgIG51bWVyaWMgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMgICAg
ICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgbnVtYmVyaW5nU3lzdGVtICBJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtICBEb250RW51bXxBY2Nlc3NvcgorICBsYW5ndWFn
ZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZSAgICAgICAgIERvbnRF
bnVtfEFjY2Vzc29yCisgIHNjcmlwdCAgICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRl
clNjcmlwdCAgICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgcmVnaW9uICAgICAgICAgICBJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uICAgICAgICAgICBEb250RW51bXxBY2Nlc3Nv
cgorQGVuZAorKi8KKworSW50bExvY2FsZVByb3RvdHlwZSogSW50bExvY2FsZVByb3RvdHlwZTo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bExvY2FsZVByb3RvdHlwZT4odm0uaGVh
cCkpIEludGxMb2NhbGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5p
c2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRs
TG9jYWxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxMb2NhbGVQcm90b3R5cGU6Oklu
dGxMb2NhbGVQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsTG9jYWxlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmlu
Z1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50bC5Mb2NhbGUiX3MpLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwor
fQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlw
ZS5tYXhpbWl6ZQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90
eXBlRnVuY01heGltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubWF4aW1pemUgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCBsb2NhbGUtPm1heGltaXplKCkpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm1pbmltaXplCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVGdW5jTWluaW1pemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS5taW5pbWl6ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGxvY2FsZS0+bWluaW1pemUoKSkpKTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUudG9T
dHJpbmcKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUZ1
bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5h
bWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGxvY2FsZS0+dG9TdHJpbmcoKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuYmFzZU5hbWUKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2Fs
ZS5wcm90b3R5cGUuYmFzZU5hbWUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbG9jYWxlLT5iYXNl
TmFtZSgpKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9j
YWxlLnByb3RvdHlwZS5jYWxlbmRhcgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRs
TG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxlbmRh
ciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBM
b2NhbGUiX3MpOworCisgICAgU3RyaW5nIGNhbGVuZGFyID0gbG9jYWxlLT5rZXl3b3JkKCJjYWxl
bmRhciJfcyk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
Y2FsZW5kYXIuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgY2FsZW5kYXIpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50
bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUu
Y2FzZUZpcnN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBTdHJpbmcgY2FzZUZpcnN0ID0gbG9jYWxlLT5rZXl3
b3JkKCJjb2xjYXNlZmlyc3QiX3MpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGNhc2VGaXJzdC5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNOb250
cml2aWFsU3RyaW5nKHZtLCBjYXNlRmlyc3QpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbgorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2Nh
bGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxv
Y2FsZS5wcm90b3R5cGUuY29sbGF0aW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBTdHJpbmcgY29sbGF0aW9u
ID0gbG9jYWxlLT5rZXl3b3JkKCJjb2xsYXRpb24iX3MpOworICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdGlvbi5pc0VtcHR5KCkgPyBqc1VuZGVmaW5l
ZCgpIDoganNOb250cml2aWFsU3RyaW5nKHZtLCBjb2xsYXRpb24pKSk7Cit9CisKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91
ckN5Y2xlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFs
b2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBTdHJp
bmcgaG91ckN5Y2xlID0gbG9jYWxlLT5rZXl3b3JkKCJob3VycyJfcyk7CisgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoaG91ckN5Y2xlLmlzRW1wdHkoKSA/IGpz
VW5kZWZpbmVkKCkgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGhvdXJDeWNsZSkpKTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubnVt
ZXJpYworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyTnVtZXJpYyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5h
bWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFN0
cmluZyBudW1lcmljID0gbG9jYWxlLT5rZXl3b3JkKCJjb2xudW1lcmljIl9zKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4obnVtZXJpYy5z
dGFydHNXaXRoKCJ0cnVlIl9zKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS5udW1iZXJpbmdTeXN0ZW0gY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFN0cmlu
ZyBudW1iZXJpbmdTeXN0ZW0gPSBsb2NhbGUtPmtleXdvcmQoIm51bWJlcnMiX3MpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlcmluZ1N5c3RlbS5p
c0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNOb250cml2aWFsU3RyaW5nKHZtLCBudW1iZXJp
bmdTeXN0ZW0pKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5M
b2NhbGUucHJvdG90eXBlLmxhbmd1YWdlCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1
YWdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBh
IExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIGxvY2FsZS0+bGFuZ3VhZ2UoKSkpKTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuc2Ny
aXB0CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0
ZXJTY3JpcHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1p
Y0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IWxvY2FsZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFN0cmlu
ZyBzY3JpcHQgPSBsb2NhbGUtPnNjcmlwdCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHNjcmlwdC5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNO
b250cml2aWFsU3RyaW5nKHZtLCBzY3JpcHQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lvbgorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5w
cm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBTdHJpbmcgcmVnaW9uID0gbG9jYWxlLT5y
ZWdpb24oKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShy
ZWdpb24uaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
cmVnaW9uKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTJi
MDAzYjU0ZGNmZTUwODg2YWNhNzY0MmEwODZiZmQ1ZjgzNTYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bExvY2FsZVByb3RvdHlw
ZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBC
YXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRh
YmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgor
ICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAg
ICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExvY2FsZVByb3RvdHlw
ZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSW50bExvY2FsZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBJbnRs
TG9jYWxlUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDJhZDdlZTZiYTkyN2MxZWY0MzRlOTRkYjJm
MDI0NzNkNmZlNjFmN2QuLjM2ZTI4NGU4NzJkOTM0Yjg0YmZkY2FmMzE3NjAwODg5NTE4ZjMzZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0z
NSw2ICszNSw5IEBACiAjaW5jbHVkZSAiSW50bENvbGxhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAi
SW50bExvY2FsZUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIklu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3Rvci5oIgpAQCAtMTM2LDYgKzEzOSwxMCBAQCBJbnRsT2JqZWN0KiBJbnRsT2JqZWN0Ojpj
cmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqCiB2
b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgaWYgKE9w
dGlvbnM6OnVzZUludGxMb2NhbGUoKSkgeworICAgICAgICBhdXRvKiBsb2NhbGVDb25zdHJ1Y3Rv
ciA9IEludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsTG9jYWxlQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bExvY2FsZVByb3RvdHlwZSo+KGdsb2JhbE9iamVj
dC0+bG9jYWxlU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CisgICAgICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Mb2NhbGUs
IGxvY2FsZUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CisgICAgfQogICAgIGlmIChPcHRpb25zOjp1c2VJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KCkpIHsKICAgICAgICAgYXV0byogcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IgPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPnJlbGF0aXZlVGltZUZvcm1h
dFN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwogICAgICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVsYXRpdmVUaW1lRm9y
bWF0LCByZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwpAQCAtMTQ3LDcgKzE1NCw3IEBAIFN0cnVj
dHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwogfQogCi1zdGF0aWMgU3RyaW5nIGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFu
Z3VhZ2VUYWcoY29uc3QgY2hhciogbG9jYWxlSUQpCitTdHJpbmcgbGFuZ3VhZ2VUYWdGcm9tTG9j
YWxlSURCdWZmZXIoY29uc3QgY2hhciogbG9jYWxlSUQsIGJvb2wgaXNJbW1vcnRhbCkKIHsKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8Y2hhciwgMzI+
IGJ1ZmZlcigzMik7CkBAIC0xNTUsMTUgKzE2MiwxNyBAQCBzdGF0aWMgU3RyaW5nIGNvbnZlcnRJ
Q1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcoY29uc3QgY2hhciogbG9jYWxlSUQpCiAgICAgaWYg
KG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKICAgICAgICAgYnVmZmVyLmdy
b3cobGVuZ3RoKTsKICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1bG9j
X3RvTGFuZ3VhZ2VUYWcobG9jYWxlSUQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGZh
bHNlLCAmc3RhdHVzKTsKKyAgICAgICAgdWxvY190b0xhbmd1YWdlVGFnKGxvY2FsZUlELCBidWZm
ZXIuZGF0YSgpLCBsZW5ndGgsIGZhbHNlLCAmc3RhdHVzKTsKICAgICB9Ci0gICAgaWYgKCFVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gc3RvcmUgaW50byBz
dGF0aWMgdmFyaWFibGVzIHRoYXQgbWF5IGJlIHNoYXJlZCBhY3Jvc3MgCi0gICAgICAgIC8vIEpT
QyBleGVjdXRpb24gdGhyZWFkcy4gVGhpcyBtdXN0IGJlIGltbW9ydGFsIHRvIG1ha2UgY29uY3Vy
cmVudCByZWYvZGVyZWYKLSAgICAgICAgLy8gc2FmZS4KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIC8vIFRoaXMgaXMgdXNlZCB0byBz
dG9yZSBpbnRvIHN0YXRpYyB2YXJpYWJsZXMgdGhhdCBtYXkgYmUgc2hhcmVkIGFjcm9zcyBKU0Mg
ZXhlY3V0aW9uIHRocmVhZHMuCisgICAgLy8gVGhpcyBtdXN0IGJlIGltbW9ydGFsIHRvIG1ha2Ug
Y29uY3VycmVudCByZWYvZGVyZWYgc2FmZS4KKyAgICBpZiAoaXNJbW1vcnRhbCkKICAgICAgICAg
cmV0dXJuIFN0cmluZyhTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGJ1ZmZlci5k
YXRhKCksIGxlbmd0aCkpOwotICAgIH0KLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1
cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKQpAQCAtMTc0LDkgKzE4MywxMCBAQCBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCkKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9u
Y2UsIFsmXSB7CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7Cisg
ICAgICAgIGNvbnN0ZXhwciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOwogICAgICAgICBpbnQzMl90
IGNvdW50ID0gdWxvY19jb3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGludDMyX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gY29udmVy
dElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1bG9jX2dldEF2YWlsYWJsZShpKSk7CisgICAg
ICAgICAgICBTdHJpbmcgbG9jYWxlID0gbGFuZ3VhZ2VUYWdGcm9tTG9jYWxlSURCdWZmZXIodWxv
Y19nZXRBdmFpbGFibGUoaSksIGlzSW1tb3J0YWwpOwogICAgICAgICAgICAgaWYgKCFsb2NhbGUu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7
CiAgICAgICAgIH0KQEAgLTE5Miw5ICsyMDIsMTAgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBp
bnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
aW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7
CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7CisgICAgICAgIGNv
bnN0ZXhwciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOwogICAgICAgICBpbnQzMl90IGNvdW50ID0g
dWNvbF9jb3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gY29udmVydElDVUxvY2Fs
ZVRvQkNQNDdMYW5ndWFnZVRhZyh1Y29sX2dldEF2YWlsYWJsZShpKSk7CisgICAgICAgICAgICBT
dHJpbmcgbG9jYWxlID0gbGFuZ3VhZ2VUYWdGcm9tTG9jYWxlSURCdWZmZXIodWNvbF9nZXRBdmFp
bGFibGUoaSksIGlzSW1tb3J0YWwpOwogICAgICAgICAgICAgaWYgKCFsb2NhbGUuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7CiAgICAgICAg
IH0KQEAgLTMzOCwxOCArMzQ5LDcgQEAgc3RhdGljIFN0cmluZyBjYW5vbmljYWxpemVMYW5ndWFn
ZVRhZyhjb25zdCBDU3RyaW5nJiBpbnB1dCkKIAogICAgIEFTU0VSVChpbnRlcm1lZGlhdGUuY29u
dGFpbnMoJ1wwJykpOwogCi0gICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFZlY3Rvcjxj
aGFyLCAzMj4gcmVzdWx0KDMyKTsKLSAgICBhdXRvIHJlc3VsdExlbmd0aCA9IHVsb2NfdG9MYW5n
dWFnZVRhZyhpbnRlcm1lZGlhdGUuZGF0YSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgp
LCBmYWxzZSwgJnN0YXR1cyk7Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0
YXR1cykpIHsKLSAgICAgICAgcmVzdWx0Lmdyb3cocmVzdWx0TGVuZ3RoKTsKLSAgICAgICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1bG9jX3RvTGFuZ3VhZ2VUYWcoaW50ZXJtZWRp
YXRlLmRhdGEoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCBmYWxzZSwgJnN0YXR1cyk7
Ci0gICAgfQotICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotCi0gICAgcmV0dXJuIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgpOwor
ICAgIHJldHVybiBsYW5ndWFnZVRhZ0Zyb21Mb2NhbGVJREJ1ZmZlcihpbnRlcm1lZGlhdGUuZGF0
YSgpKTsgICAgCiB9CiAKIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzKQpAQCAtMzY2LDcgKzM2
Niw3IEBAIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhCiAgICAgICAgIHJldHVybiBzZWVuOwogCiAg
ICAgSlNPYmplY3QqIGxvY2FsZXNPYmplY3Q7Ci0gICAgaWYgKGxvY2FsZXMuaXNTdHJpbmcoKSkg
eworICAgIGlmIChsb2NhbGVzLmlzU3RyaW5nKCkgfHwgbG9jYWxlcy5pbmhlcml0czxJbnRsTG9j
YWxlPih2bSkpIHsKICAgICAgICAgSlNBcnJheSogbG9jYWxlc0FycmF5ID0gSlNBcnJheTo6dHJ5
Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSk7CiAgICAgICAgIGlmICghbG9jYWxl
c0FycmF5KSB7CiAgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSk7CkBAIC00MDIsMTMgKzQwMiwxOCBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxp
emVMb2NhbGVMaXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQog
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IEpTU3RyaW5nKiB0YWcgPSBrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAg
ICAgICAgRXhwZWN0ZWQ8Q1N0cmluZywgVVRGOENvbnZlcnNpb25FcnJvcj4gcmF3VGFnOworICAg
ICAgICAgICAgaWYgKGtWYWx1ZS5pbmhlcml0czxJbnRsTG9jYWxlPih2bSkpCisgICAgICAgICAg
ICAgICAgcmF3VGFnID0ganNDYXN0PEludGxMb2NhbGUqPihrVmFsdWUpLT50b1N0cmluZygpLnRy
eUdldFV0ZjgoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEpTU3RyaW5n
KiB0YWcgPSBrVmFsdWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBWZWN0b3I8U3RyaW5nPigpKTsKIAotICAgICAgICAg
ICAgYXV0byB0YWdWYWx1ZSA9IHRhZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gdGFnVmFsdWUgPSB0YWctPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgVmVjdG9yPFN0cmluZz4oKSk7CiAK
LSAgICAgICAgICAgIGF1dG8gcmF3VGFnID0gdGFnVmFsdWUudHJ5R2V0VXRmOCgpOworICAgICAg
ICAgICAgICAgIHJhd1RhZyA9IHRhZ1ZhbHVlLnRyeUdldFV0ZjgoKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGlmICghcmF3VGFnKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJhd1RhZy5l
cnJvcigpID09IFVURjhDb252ZXJzaW9uRXJyb3I6Ok91dE9mTWVtb3J5KQogICAgICAgICAgICAg
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CkBAIC00
MTcsNyArNDIyLDcgQEAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgICAgICAgICAgU3Ry
aW5nIGNhbm9uaWNhbGl6ZWRUYWcgPSBjYW5vbmljYWxpemVMYW5ndWFnZVRhZyhyYXdUYWcudmFs
dWUoKSk7CiAgICAgICAgICAgICBpZiAoY2Fub25pY2FsaXplZFRhZy5pc051bGwoKSkgewotICAg
ICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSB0cnlNYWtlU3RyaW5nKCJpbnZhbGlk
IGxhbmd1YWdlIHRhZzogIiwgdGFnVmFsdWUpOworICAgICAgICAgICAgICAgIFN0cmluZyBlcnJv
ck1lc3NhZ2UgPSB0cnlNYWtlU3RyaW5nKCJpbnZhbGlkIGxhbmd1YWdlIHRhZzogIiwgcmF3VGFn
LnZhbHVlKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWVycm9yTWVz
c2FnZSkpIHsKICAgICAgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlT3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QpKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTQ4Myw3ICs0ODgsOCBAQCBTdHJpbmcgZGVmYXVs
dExvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IGljdURlZmF1bHRMb2NhbFN0cmluZzsKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9u
Y2UsIFsmXSB7Ci0gICAgICAgIGljdURlZmF1bHRMb2NhbFN0cmluZy5nZXQoKSA9IGNvbnZlcnRJ
Q1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcodWxvY19nZXREZWZhdWx0KCkpOworICAgICAgICBj
b25zdGV4cHIgYm9vbCBpc0ltbW9ydGFsID0gdHJ1ZTsKKyAgICAgICAgaWN1RGVmYXVsdExvY2Fs
U3RyaW5nLmdldCgpID0gbGFuZ3VhZ2VUYWdGcm9tTG9jYWxlSURCdWZmZXIodWxvY19nZXREZWZh
dWx0KCksIGlzSW1tb3J0YWwpOwogICAgIH0pOwogICAgIGlmICghaWN1RGVmYXVsdExvY2FsU3Ry
aW5nLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBpY3VEZWZhdWx0TG9jYWxTdHJpbmcuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggNWI3
OGViYzk4NTI4ZjE3YTUwYmNiNjQ4YzI0YWQxN2E2NmEzNWZjZi4uMzFjYTYyNGY5OTQ0ZDZlZjg0
NDg3Njk0OTM0YzU5N2FjMGFlOTQwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuaApAQCAtNjgsNiArNjgsNyBAQCBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlv
bihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lKTsKIFN0cmlu
ZyBpbnRsU3RyaW5nT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zLCBQcm9w
ZXJ0eU5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gdmFsdWVzLCBjb25z
dCBjaGFyKiBub3RGb3VuZCwgY29uc3QgY2hhciogZmFsbGJhY2spOwogdW5zaWduZWQgaW50bE51
bWJlck9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjayk7
CiB1bnNpZ25lZCBpbnRsRGVmYXVsdE51bWJlck9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSwgdW5z
aWduZWQgZmFsbGJhY2spOworU3RyaW5nIGxhbmd1YWdlVGFnRnJvbUxvY2FsZUlEQnVmZmVyKGNv
bnN0IGNoYXIqLCBib29sIGlzSW1tb3J0YWwgPSBmYWxzZSk7CiBWZWN0b3I8U3RyaW5nPiBjYW5v
bmljYWxpemVMb2NhbGVMaXN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzKTsKIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVMb2NhbGUoSlNHbG9iYWxPYmplY3QqLCBjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiByZXF1ZXN0ZWRMb2NhbGVzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgb3B0aW9u
cywgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlzW10sIHNpemVfdCByZWxl
dmFudEV4dGVuc2lvbktleUNvdW50LCBWZWN0b3I8U3RyaW5nPiAoKmxvY2FsZURhdGEpKGNvbnN0
IFN0cmluZyYsIHNpemVfdCkpOwogSlNWYWx1ZSBzdXBwb3J0ZWRMb2NhbGVzKEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA4NDQ2
NzgzYmU1OTg0YmRmZTk4MDQyNjJlOTU5ZDE4ZGM3NDY1N2M5Li42NjUxYTAyZjcyZDIzNGM5MmI3
NzE4NDkyMDdmNDMxZmQwMDI3YjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04MSw2ICs4MSw4IEBACiAjaW5jbHVkZSAiSW50
bENvbGxhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAj
aW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bExv
Y2FsZS5oIgorI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRs
TnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkludGxPYmplY3QuaCIKQEAgLTk0MywxOCArOTQ1LDI0IEBAIGNhcGl0YWxOYW1l
ICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/
IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUqIGNvbGxhdG9y
UHJvdG90eXBlID0gSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAg
ICAgIGluaXQuc2V0KEludGxDb2xsYXRvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgY29sbGF0b3JQcm90b3R5cGUpKTsKICAgICAgICAgfSk7Ci0gICAgbV9udW1iZXJG
b3JtYXRTdHJ1Y3R1cmUuaW5pdExhdGVyKAotICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
U3RydWN0dXJlPiYgaW5pdCkgewotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwotICAgICAgICAgICAg
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlID0gSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwotICAgICAgICAgICAgaW5pdC5z
ZXQoSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVj
dCwgbnVtYmVyRm9ybWF0UHJvdG90eXBlKSk7Ci0gICAgICAgIH0pOwogICAgIG1fZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8
U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwogICAgICAgICAgICAg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSA9IElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgICAgICAg
ICBpbml0LnNldChJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlKSk7CiAgICAgICAgIH0pOworICAg
IG1fbG9jYWxlU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxp
emVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAg
ICAgIEludGxMb2NhbGVQcm90b3R5cGUqIGxvY2FsZVByb3RvdHlwZSA9IEludGxMb2NhbGVQcm90
b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KSk7CisgICAgICAgICAgICBpbml0LnNldChJbnRsTG9jYWxlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgZ2xvYmFsT2JqZWN0LCBsb2NhbGVQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisgICAg
bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAg
ICAgICAgICAgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBl
ID0gSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVj
dCwgSW50bE51bWJlckZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAg
ICAgaW5pdC5zZXQoSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgbnVtYmVyRm9ybWF0UHJvdG90eXBlKSk7CisgICAgICAgIH0pOwogICAgIG1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5pdGlh
bGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMTc3
NSw4ICsxNzgzLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9kZWZhdWx0
Q29sbGF0b3IudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fbG9jYWxlU3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEwYzNiNGFhZjAwMDQ2ZDJkOTQxNmI0OTBiYTYyNTI0
NGQ5OGYzNmEuLjY2YTNjYmVlNjM5NThhNGU4ZWVkMDM4YjUyMjExOWFhZTYyYmFmMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjkx
LDggKzI5MSw5IEBAIHB1YmxpYzoKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
SW50bENvbGxhdG9yPiBtX2RlZmF1bHRDb2xsYXRvcjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jb2xsYXRvclN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1fbG9jYWxlU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZTsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1
Y3R1cmU7CiAKQEAgLTc4Niw4ICs3ODcsOSBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiB3ZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQXNz
ZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCh0aGlzKTsgfQotICAgIFN0cnVjdHVyZSogbnVt
YmVyRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuZ2V0
KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0
dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJl
KiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGxvY2FsZVN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fbG9jYWxlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdldCh0aGlzKTsg
fQogICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4g
bV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmluZGV4IGE3NWVhZmNiZGRmODE5NWE2
NzBhMWM4ZjBhYjlhZjFlNmQ1ODVlYTQuLjExNWUzMGUwMTRiZWRmMzg4MWEyMTUxMDdhMzU5YzVl
MjUxMzFiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aApAQCAtNDg0LDYgKzQ4NCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3Ry
ZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihCb29sLCB1c2VXZWJBc3NlbWJseU11bHRpVmFsdWVz
LCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBlcyBmcm9tIHRoZSB3YXNtIG11bGl0LXZhbHVlcyBz
cGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdlYWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3Nl
IHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgdHJ1
ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmlnSW50IHN1cHBvcnQuIikgXAor
ICAgIHYoQm9vbCwgdXNlSW50bExvY2FsZSwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50
bC5Mb2NhbGUgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwgdXNlSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmls
aW5nLCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5
IGFsbG9jYXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3
aWxsIGFsd2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQ
b2x5UHJvdG8sIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5
cyBjcmVhdGUgYW4gb2JqZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggNGI5NmRkNWJjODAzY2VlZWRjY2NhNWY3
ZmMzNTM0YjJmN2NjMWE1OS4uY2RjMDhiNmQ4NTgwOWI0NTg3YzhmNTQ2NDFhYjJmNTJmZjU3NGQ4
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNzUsNiArNzUsNyBAQAog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCiAjaW5j
bHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bExvY2FsZS5oIgogI2lu
Y2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIK
ICNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCkBAIC0zMzksNiArMzQwLDcgQEAg
Vk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogI2VuZGlmCiAgICAgLCBp
bnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bENvbGxh
dG9yPigpKQogICAgICwgaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEludGxEYXRlVGltZUZvcm1hdD4oKSkKKyAgICAsIGludGxMb2NhbGVIZWFw
Q2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bExvY2FsZT4oKSkKICAgICAsIGlu
dGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bE51
bWJlckZvcm1hdD4oKSkKICAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZShJc29IZWFw
Q2VsbFR5cGU6OmNyZWF0ZTxJbnRsUGx1cmFsUnVsZXM+KCkpCiAgICAgLCBpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ+KCkpCkBAIC0xNTEwLDYgKzE1MTIsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coY2FsbGJhY2tBUElXcmFwcGVyR2xvYmFsT2JqZWN0U3BhY2Us
IGNhbAogI2VuZGlmCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50
bENvbGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bENvbGxh
dG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRlVGlt
ZUZvcm1hdFNwYWNlLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxE
YXRlVGltZUZvcm1hdCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhp
bnRsTG9jYWxlU3BhY2UsIGludGxMb2NhbGVIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxMb2NhbGUp
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1h
dFNwYWNlLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9y
bWF0KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxS
dWxlc1NwYWNlLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxS
dWxlcykKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRp
dmVUaW1lRm9ybWF0U3BhY2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0
KCksIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA1MjkyOTMzYzEzZGFmYWM3ZTYxYWI4YzU3ODRhZWM1MDE2YjMwYjI3Li43YjNkMjg5NDc3
YjllZTU4MWI2MDBiODU0Njc3NGE4ZWE3ZmM3ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTEyNiw2ICsxMjYsNyBAQCBjbGFzcyBJZGVudGlmaWVyOwogY2xhc3MgSW50ZXJw
cmV0ZXI7CiBjbGFzcyBJbnRsQ29sbGF0b3I7CiBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQ7Citj
bGFzcyBJbnRsTG9jYWxlOwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVy
YWxSdWxlczsKIGNsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7CkBAIC00MDAsNiArNDAxLDcg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4g
aW50bENvbGxhdG9ySGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2Vs
bFR5cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTG9jYWxlSGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGU7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBsdXJhbFJ1bGVzSGVhcENl
bGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxSZWxhdGl2
ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CkBAIC01NTcsNiArNTU5LDcgQEAgcHVibGljOgogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2l0aFNjb3BlU3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsQ29sbGF0b3JTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bExvY2FsZVNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZv
cm1hdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBs
dXJhbFJ1bGVzU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzdkZTE4ZGEyMGZkNjBkYjZlYTM3MGMxM2EzMjRiYTlh
YTRlMTA3Ny4uYjA0YmY5MTRmYmRjMzJiYThhNmM4NTZiNTAyN2YyYmU5MmVjNDgyNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIwLTA1LTAyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4K
KworICAgICAgICBbRUNNQS00MDJdIEltcGxlbWVudCBJbnRsLkxvY2FsZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3Ry
ZXNzLXRlc3RzOgorICAgICAgICBBZGQgcnVuSW50bExvY2FsZUVuYWJsZWQuCisKIDIwMjAtMDQt
MzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0
aG5dIFJlcXVpcmUgdXNlciBnZXN0dXJlcyBmb3IgTG9jYWxBdXRoZW50aWNhdG9yCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCA2N2U0NTE1MzlmYmQwNWZmZWEwNWU4NWJhNDY2ZDhi
ODA5ZGQ5OWNhLi41ZjBmNWYxNDU3M2JkMWYwMDc5OGYwZTkzZjI0ZjUzZjBhMWJiZWM5IDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTcxNSw2ICs3MTUsMTAgQEAgZGVmIHJ1bkJp
Z0ludEVuYWJsZWRCYXNlbGluZSgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1
bigiYmlnLWludC1lbmFibGVkLWJhc2VsaW5lIiwgIi0tdXNlQmlnSW50PXRydWUiLCAiLS11c2VE
RkdKSVQ9MCIsICpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiBlbmQKIAorZGVmIHJ1bklu
dGxMb2NhbGVFbmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCisgICAgcnVuKCJp
bnRsLWxvY2FsZS1lbmFibGVkIiwgIi0tdXNlSW50bExvY2FsZT10cnVlIiAsICooRlRMX09QVElP
TlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQorZW5kCisKIGRlZiBydW5JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAg
IHJ1bigiaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQtZW5hYmxlZCIsICItLXVzZUludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNP
cHRpb25zKSkKIGVuZApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCAzNjM2YmMwOTJkNDNlMGRhNmNlNGVlODEyYmNkMmM1ZjNhZmJkYzljLi42
MjllODQxNmNiNzRmN2M0MTJjNzQ2NWUyYTg0YzhjZjc4ZGRmY2FkIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDIwLTA1LTAyICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAg
ICAgICBbRUNNQS00MDJdIEltcGxlbWVudCBJbnRsLkxvY2FsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1sb2NhbGUuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9pbnRsLWxvY2FsZS1hcy1pbnRsLXBhcmFtLmpzOiBBZGRl
ZC4KKworICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisgICAgICAgIEVuYWJsZSBJbnRs
LkxvY2FsZSBmZWF0dXJlIHdpdGggZmxhZy4KKworICAgICAgICAqIHRlc3QyNjIvZXhwZWN0YXRp
b25zLnlhbWw6CisgICAgICAgIE1hcmsga25vd24gZmFpbHVyZXMuCisgICAgICAgIE5vbmUgb2Yg
dGhlc2Ugc2hvdWxkIGJlIHNwZWNpZmljIHRvIEludGwuTG9jYWxlLgorCiAyMDIwLTA0LTMwICBD
YWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBJbnZlc3RpZ2F0ZSBz
dHJlc3MvdjgtYml0aW50MzItaW5jLmpzIGZhaWx1cmUgb24gbWlwcwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvaW50bC1sb2NhbGUtYXMtaW50bC1wYXJhbS5qcyBiL0pTVGVzdHMvc3RyZXNz
L2ludGwtbG9jYWxlLWFzLWludGwtcGFyYW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJkZmI3NjcxMWIxYzM5
YTQyMmMyNjg1MTZiNjFkZjI3ODk2NGIyMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtbG9jYWxlLWFzLWludGwtcGFyYW0uanMKQEAgLTAsMCArMSw0NSBAQAorLy9AIHJ1
bkludGxMb2NhbGVFbmFibGVkKCItLXVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQ9dHJ1ZSIpCisK
K2NvbnN0IHRhZyA9ICdqYS1IYW50LUtSLXUtY2EtYnVkZGhpc3QtY28tZW9yLWhjLWgxMS1rZi1s
b3dlci1rbi1mYWxzZS1udS10aGFpJzsKK2NvbnN0IGxvY2FsZSA9IG5ldyBJbnRsLkxvY2FsZSh0
YWcpOworCitmdW5jdGlvbiBzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUoZnVuYykgeworICAg
IGNvbnN0IGFjdHVhbCA9IGZ1bmMobG9jYWxlKTsKKyAgICBjb25zdCBleHBlY3RlZCA9IGZ1bmMo
dGFnKTsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitzaG91
bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gdGFnT3JMb2NhbGUudG9TdHJp
bmcoKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gbmV3IElu
dGwuTG9jYWxlKHRhZ09yTG9jYWxlKS50b1N0cmluZygpKTsKKworc2hvdWxkQmVTYW1lV2l0aFRh
Z09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuZ2V0Q2Fub25pY2Fs
TG9jYWxlcyh0YWdPckxvY2FsZSkpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdP
ckxvY2FsZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLmdldENhbm9uaWNhbExvY2FsZXMoWydlbics
IHRhZ09yTG9jYWxlLCAnZnInXSkpKTsKKworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxlKHRh
Z09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxl
c09mKHRhZ09yTG9jYWxlKSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxlKHRhZ09yTG9j
YWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKFsn
ZW4nLCB0YWdPckxvY2FsZSwgJ2ZyJ10pKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUo
dGFnT3JMb2NhbGUgPT4gbmV3IEludGwuQ29sbGF0b3IodGFnT3JMb2NhbGUpLnJlc29sdmVkT3B0
aW9ucygpLmxvY2FsZSk7CisKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2Fs
ZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
Zih0YWdPckxvY2FsZSkpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2Fs
ZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZihbJ2VuJywgdGFnT3JMb2NhbGUsICdmciddKSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9j
YWxlKHRhZ09yTG9jYWxlID0+IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRhZ09yTG9jYWxlKS5y
ZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUpOworCitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUo
dGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVk
TG9jYWxlc09mKHRhZ09yTG9jYWxlKSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxlKHRh
Z09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZihbJ2VuJywgdGFnT3JMb2NhbGUsICdmciddKSkpOworc2hvdWxkQmVTYW1lV2l0aFRh
Z09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0YWdPckxvY2Fs
ZSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlKTsKKworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9j
YWxlKHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuUGx1cmFsUnVsZXMuc3VwcG9y
dGVkTG9jYWxlc09mKHRhZ09yTG9jYWxlKSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxl
KHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuUGx1cmFsUnVsZXMuc3VwcG9ydGVk
TG9jYWxlc09mKFsnZW4nLCB0YWdPckxvY2FsZSwgJ2ZyJ10pKSk7CitzaG91bGRCZVNhbWVXaXRo
VGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gbmV3IEludGwuUGx1cmFsUnVsZXModGFnT3JMb2Nh
bGUpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSk7CisKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxv
Y2FsZSh0YWdPckxvY2FsZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dC5zdXBwb3J0ZWRMb2NhbGVzT2YodGFnT3JMb2NhbGUpKSk7CitzaG91bGRCZVNhbWVXaXRoVGFn
T3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFsnZW4nLCB0YWdPckxvY2FsZSwgJ2ZyJ10pKSk7Citz
aG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gbmV3IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0KHRhZ09yTG9jYWxlKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUpOworCitz
aG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gWzNdLnRvTG9jYWxlU3Ry
aW5nKHRhZ09yTG9jYWxlKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2Nh
bGUgPT4gM24udG9Mb2NhbGVTdHJpbmcodGFnT3JMb2NhbGUpKTsKK3Nob3VsZEJlU2FtZVdpdGhU
YWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiBuZXcgRGF0ZSgwKS50b0xvY2FsZVN0cmluZyh0YWdP
ckxvY2FsZSwgeyB0aW1lWm9uZTogJ1VUQycgfSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9j
YWxlKHRhZ09yTG9jYWxlID0+IDMuLnRvTG9jYWxlU3RyaW5nKHRhZ09yTG9jYWxlKSk7CitzaG91
bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gJ8OkJy5sb2NhbGVDb21wYXJl
KCdhJywgdGFnT3JMb2NhbGUpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxv
Y2FsZSA9PiAnw4YnLnRvTG9jYWxlTG93ZXJDYXNlKHRhZ09yTG9jYWxlKSk7CitzaG91bGRCZVNh
bWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gJ8OmJy50b0xvY2FsZVVwcGVyQ2FzZSh0
YWdPckxvY2FsZSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1sb2NhbGUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2FsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzFmZmE1ZjY3YzYy
NTkzNmIzMmJmMmY5NmU2MDY4YTQwZTU3NjA4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1sb2NhbGUuanMKQEAgLTAsMCArMSwyMjYgQEAKKy8vQCBydW5JbnRsTG9jYWxl
RW5hYmxlZAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQg
JHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkTm90
VGhyb3coZnVuYykgeworICAgIGZ1bmMoKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMo
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBp
ZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7Cit9CisKK3Nob3VsZEJlKEludGwuTG9j
YWxlIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoSW50bC5Mb2NhbGUubGVu
Z3RoLCAxKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5M
b2NhbGUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkxvY2FsZSwgJ3Byb3RvdHlwZScpLmVudW1lcmFi
bGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50
bC5Mb2NhbGUsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUsIGZhbHNlKTsKKworc2hvdWxkVGhy
b3coKCkgPT4gSW50bC5Mb2NhbGUoKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IElu
dGwuTG9jYWxlLmNhbGwoe30pLCBUeXBlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiBuZXcg
SW50bC5Mb2NhbGUoKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxv
Y2FsZSg1KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgn
JyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdhJyks
IFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdhYmNkZWZn
aGlqJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCcj
JCcpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4t
QC1hYmMnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUo
J2VuLXUnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUo
J2VuLXUta24tdHJ1ZS11LWtvLXRydWUnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiBuZXcgSW50bC5Mb2NhbGUoJ2VuLXgnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiBuZXcgSW50bC5Mb2NhbGUoJ2VuLSonKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiBuZXcgSW50bC5Mb2NhbGUoJ2VuLScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBJbnRsLkxvY2FsZSgnZW4tLVVTJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gbmV3IEludGwuTG9jYWxlKFsnZW4nLCAnamEnXSksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhy
b3coKCkgPT4gbmV3IEludGwuTG9jYWxlKHt9KSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiBuZXcgSW50bC5Mb2NhbGUoeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0g
fSksIEVycm9yKTsKK3Nob3VsZE5vdFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSh7IHRvU3Ry
aW5nKCkgeyByZXR1cm4gJ2VuJzsgfSB9KSk7CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRs
LkxvY2FsZSgnZW4nLCBudWxsKSwgVHlwZUVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuTG9j
YWxlKCdlbicpIGluc3RhbmNlb2YgSW50bC5Mb2NhbGUsIHRydWUpOworCit7CisgICAgY2xhc3Mg
RGVyaXZlZExvY2FsZSBleHRlbmRzIEludGwuTG9jYWxlIHt9CisKKyAgICBjb25zdCBkbCA9IG5l
dyBEZXJpdmVkTG9jYWxlKCdlbicpOworICAgIHNob3VsZEJlKGRsIGluc3RhbmNlb2YgRGVyaXZl
ZExvY2FsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoZGwgaW5zdGFuY2VvZiBJbnRsLkxvY2FsZSwg
dHJ1ZSk7CisgICAgc2hvdWxkQmUoZGwubWF4aW1pemUsIEludGwuTG9jYWxlLnByb3RvdHlwZS5t
YXhpbWl6ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldFByb3RvdHlwZU9mKGRsKSwgRGVyaXZl
ZExvY2FsZS5wcm90b3R5cGUpOworICAgIHNob3VsZEJlKE9iamVjdC5nZXRQcm90b3R5cGVPZihE
ZXJpdmVkTG9jYWxlLnByb3RvdHlwZSksIEludGwuTG9jYWxlLnByb3RvdHlwZSk7Cit9CisKK2Nv
bnN0IHZhbGlkTGFuZ3VhZ2VUYWdzID0gWworICAgICdkZScsIC8vIElTTyA2MzkgbGFuZ3VhZ2Ug
Y29kZQorICAgICdkZS1ERScsIC8vICsgSVNPIDMxNjYtMSBjb3VudHJ5IGNvZGUKKyAgICAnREUt
ZGUnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgJ2NtbicsIC8vIElTTyA2Mzkg
bGFuZ3VhZ2UgY29kZQorICAgICdjbW4tSGFucycsIC8vICsgc2NyaXB0IGNvZGUKKyAgICAnQ01O
LWhBTlMnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgJ2Ntbi1oYW5zLWNuJywg
Ly8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAgICdlcy00MTknLCAvLyArIFVOIE0uNDkg
cmVnaW9uIGNvZGUKKyAgICAnZXMtNDE5LXUtbnUtbGF0bi1jdS1ib2InLCAvLyArIFVuaWNvZGUg
bG9jYWxlIGV4dGVuc2lvbiBzZXF1ZW5jZQorICAgICdpLWtsaW5nb24nLCAvLyBncmFuZGZhdGhl
cmVkIHRhZworICAgICdjbW4taGFucy1jbi10LWNhLXUtY2EteC10LXUnLCAvLyBzaW5nbGV0b24g
c3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHByaXZhdGUgdXNlIHN1YnRhZ3MKKyAgICAnZW5v
Y2hpYW4tZW5vY2hpYW4nLCAvLyBsYW5ndWFnZSBhbmQgdmFyaWFudCBzdWJ0YWdzIG1heSBiZSB0
aGUgc2FtZQorICAgICdkZS1ncmVnb3J5LXUtY2EtZ3JlZ29yeScsIC8vIHZhcmlhbnQgYW5kIGV4
dGVuc2lvbiBzdWJ0YWdzIG1heSBiZSB0aGUgc2FtZQorICAgICdhYS1hLWZvby14LWEtZm9vLWJh
cicsIC8vIHZhcmlhbnQgc3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHByaXZhdGUgdXNlIHN1
YnRhZ3MKKyAgICAneC1lbi1VUy0xMjM0NScsIC8vIGFueXRoaW5nIGdvZXMgaW4gcHJpdmF0ZSB1
c2UgdGFncworICAgICd4LTEyMzQ1LTEyMzQ1LWVuLVVTJywKKyAgICAneC1lbi1VUy0xMjM0NS0x
MjM0NScsCisgICAgJ3gtZW4tdS1mb28nLAorICAgICd4LWVuLXUtZm9vLXUtYmFyJworXTsKK2Zv
ciAobGV0IHZhbGlkTGFuZ3VhZ2VUYWcgb2YgdmFsaWRMYW5ndWFnZVRhZ3MpCisgICAgc2hvdWxk
Tm90VGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKHZhbGlkTGFuZ3VhZ2VUYWcpKTsKKworc2hv
dWxkQmUoT2JqZWN0LmdldFByb3RvdHlwZU9mKEludGwuTG9jYWxlLnByb3RvdHlwZSksIE9iamVj
dC5wcm90b3R5cGUpOworCitzaG91bGRCZShJbnRsLkxvY2FsZS5wcm90b3R5cGUuY29uc3RydWN0
b3IsIEludGwuTG9jYWxlKTsKKworc2hvdWxkQmUoSW50bC5Mb2NhbGUucHJvdG90eXBlW1N5bWJv
bC50b1N0cmluZ1RhZ10sICdJbnRsLkxvY2FsZScpOworc2hvdWxkQmUoT2JqZWN0LnByb3RvdHlw
ZS50b1N0cmluZy5jYWxsKEludGwuTG9jYWxlLnByb3RvdHlwZSksICdbb2JqZWN0IEludGwuTG9j
YWxlXScpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkxv
Y2FsZS5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykud3JpdGFibGUsIGZhbHNlKTsKK3No
b3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Mb2NhbGUucHJvdG90
eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Mb2NhbGUucHJvdG90eXBlLCBTeW1i
b2wudG9TdHJpbmdUYWcpLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKK3Nob3VsZEJlKEludGwuTG9j
YWxlLnByb3RvdHlwZS5tYXhpbWl6ZS5sZW5ndGgsIDApOworc2hvdWxkQmUoSW50bC5Mb2NhbGUu
cHJvdG90eXBlLm1pbmltaXplLmxlbmd0aCwgMCk7CitzaG91bGRCZShJbnRsLkxvY2FsZS5wcm90
b3R5cGUudG9TdHJpbmcubGVuZ3RoLCAwKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuTG9jYWxl
LnByb3RvdHlwZS5tYXhpbWl6ZS5jYWxsKHsgdG9TdHJpbmcoKSB7IHJldHVybiAnZW4nOyB9IH0p
LCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUucHJvdG90eXBlLm1p
bmltaXplLmNhbGwoeyB0b1N0cmluZygpIHsgcmV0dXJuICdlbic7IH0gfSksIFR5cGVFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkxvY2FsZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh7
IHRvU3RyaW5nKCkgeyByZXR1cm4gJ2VuJzsgfSB9KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZSwgVHlwZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhciwgVHlwZUVycm9yKTsK
K3Nob3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QsIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0aW9u
LCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUucHJvdG90eXBlLmhv
dXJDeWNsZSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3Rv
dHlwZS5udW1lcmljLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUu
cHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IEludGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQsIFR5cGVFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBJbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uLCBUeXBlRXJyb3IpOworCitz
aG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuJykubWF4aW1pemUoKSwgJ2VuLUxhdG4tVVMnKTsK
K3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUycpLm1heGltaXplKCksICdlbi1M
YXRuLVVTJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUtbnUtdGhhaS14LWZvbycp
Lm1heGltaXplKCksICdlbi1MYXRuLVVTLXUtbnUtdGhhaS14LWZvbycpOworc2hvdWxkQmUobmV3
IEludGwuTG9jYWxlKCdqYScpLm1heGltaXplKCksICdqYS1KcGFuLUpQJyk7CitzaG91bGRCZShu
ZXcgSW50bC5Mb2NhbGUoJ3poJykubWF4aW1pemUoKSwgJ3poLUhhbnMtQ04nKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLkxvY2FsZSgnemgtSGFudCcpLm1heGltaXplKCksICd6aC1IYW50LVRXJyk7Citz
aG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ3poJywgeyBzY3JpcHQ6ICdIYW50JyB9KS5tYXhpbWl6
ZSgpLCAnemgtSGFudC1UVycpOworCitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuJykubWlu
aW1pemUoKSwgJ2VuJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxhdG4tVVMnKS5t
aW5pbWl6ZSgpLCAnZW4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUy11
LW51LXRoYWkteC1mb28nKS5taW5pbWl6ZSgpLCAnZW4tdS1udS10aGFpLXgtZm9vJyk7CitzaG91
bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2phLUpwYW4tSlAnKS5taW5pbWl6ZSgpLCAnamEnKTsKK3No
b3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnemgtSGFucy1DTicpLm1pbmltaXplKCksICd6aCcpOwor
c2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCd6aC1IYW50LVRXJykubWluaW1pemUoKSwgJ3poLVRX
Jyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ3poJywgeyBzY3JpcHQ6ICdIYW50JywgcmVn
aW9uOiAnVFcnIH0pLm1pbmltaXplKCksICd6aC1UVycpOworCitzaG91bGRCZShuZXcgSW50bC5M
b2NhbGUoJ2VuJykudG9TdHJpbmcoKSwgJ2VuJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUo
J0VuLWxhVG4tdXMtdmFyaUFudC1mT09iYXItMWFiYy1VLWtuLXRSdWUtQS1hYS1hYWEteC1SRVNF
UlZFRCcpLnRvU3RyaW5nKCksICdlbi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1h
YWEtdS1rbi10cnVlLXgtcmVzZXJ2ZWQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnY2Vs
LWdhdWxpc2gnLCB7IHNjcmlwdDogJ0FyYWInLCBudW1iZXJpbmdTeXN0ZW06ICdndWpyJyB9KS50
b1N0cmluZygpLCAneHRnLUFyYWItdS1udS1ndWpyLXgtY2VsLWdhdWxpc2gnKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUy11LWNhLWdyZWdvcnktY28tcGhvbmViay1oYy1o
MTIta2YtdXBwZXIta24tbnUtbGF0bicpLnRvU3RyaW5nKCksICdlbi1MYXRuLVVTLXUtY2EtZ3Jl
Z29yeS1jby1waG9uZWJrLWhjLWgxMi1rZi11cHBlci1rbi10cnVlLW51LWxhdG4nKTsKKworY29u
c3Qgb3B0aW9ucyA9IHsKKyAgICBjYWxlbmRhcjogJ2J1ZGRoaXN0JywKKyAgICBjYXNlRmlyc3Q6
ICdsb3dlcicsCisgICAgY29sbGF0aW9uOiAnZW9yJywKKyAgICBob3VyQ3ljbGU6ICdoMTEnLAor
ICAgIG51bWVyaWM6IGZhbHNlLAorICAgIG51bWJlcmluZ1N5c3RlbTogJ3RoYWknLAorICAgIGxh
bmd1YWdlOiAnamEnLAorICAgIHNjcmlwdDogJ0hhbnQnLAorICAgIHJlZ2lvbjogJ0tSJworfTsK
K2NvbnN0IGV4cGVjdGVkID0gJ2phLUhhbnQtS1ItdS1jYS1idWRkaGlzdC1jby1lb3ItaGMtaDEx
LWtmLWxvd2VyLWtuLWZhbHNlLW51LXRoYWknOyAKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgn
ZW4nLCBvcHRpb25zKS50b1N0cmluZygpLCBleHBlY3RlZCk7CitzaG91bGRCZShuZXcgSW50bC5M
b2NhbGUoJ2VuLUxhdG4tVVMtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDEyLWtmLXVwcGVy
LWtuLW51LWxhdG4nLCBvcHRpb25zKS50b1N0cmluZygpLCBleHBlY3RlZCk7CisKK3Nob3VsZEJl
KG5ldyBJbnRsLkxvY2FsZSgnZW4nKS5iYXNlTmFtZSwgJ2VuJyk7CitzaG91bGRCZShuZXcgSW50
bC5Mb2NhbGUoJ2VuLUxhdG4nKS5iYXNlTmFtZSwgJ2VuLUxhdG4nKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLkxvY2FsZSgnZW4tVVMnKS5iYXNlTmFtZSwgJ2VuLVVTJyk7CitzaG91bGRCZShuZXcgSW50
bC5Mb2NhbGUoJ2VuLUxhdG4tVVMnKS5iYXNlTmFtZSwgJ2VuLUxhdG4tVVMnKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLkxvY2FsZSgnZW4tdmFyaWFudC11LWtuJykuYmFzZU5hbWUsICdlbi12YXJpYW50
Jyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxhdG4tdmFyaWFudC11LWtuJykuYmFz
ZU5hbWUsICdlbi1MYXRuLXZhcmlhbnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4t
dmFyaWFudC11LWtuJywgeyBzY3JpcHQ6ICdMYXRuJyB9KS5iYXNlTmFtZSwgJ2VuLUxhdG4tdmFy
aWFudCcpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi1VUy12YXJpYW50LXUta24nKS5i
YXNlTmFtZSwgJ2VuLVVTLXZhcmlhbnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4t
dmFyaWFudC11LWtuJywgeyByZWdpb246ICdVUycgfSkuYmFzZU5hbWUsICdlbi1VUy12YXJpYW50
Jyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxhdG4tVVMtdmFyaWFudC11LWtuJyku
YmFzZU5hbWUsICdlbi1MYXRuLVVTLXZhcmlhbnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2Fs
ZSgnZW4tdmFyaWFudC11LWtuJywgeyBzY3JpcHQ6ICdMYXRuJywgcmVnaW9uOiAnVVMnIH0pLmJh
c2VOYW1lLCAnZW4tTGF0bi1VUy12YXJpYW50Jyk7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2Fs
ZSgnZW4nKS5jYWxlbmRhciwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgn
ZW4tdS1jYS1qYXBhbmVzZScpLmNhbGVuZGFyLCAnamFwYW5lc2UnKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLkxvY2FsZSgnZW4nLCB7IGNhbGVuZGFyOiAnamFwYW5lc2UnIH0pLmNhbGVuZGFyLCAnamFw
YW5lc2UnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tdS1jYS1qYXBhbmVzZScsIHsg
Y2FsZW5kYXI6ICdkYW5naScgfSkuY2FsZW5kYXIsICdkYW5naScpOworc2hvdWxkQmUobmV3IElu
dGwuTG9jYWxlKCdlbi11LWNhLWlzbGFtaWNjJykuY2FsZW5kYXIsICdpc2xhbWljLWNpdmlsJyk7
CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBjYWxlbmRhcjogJ2lzbGFtaWNjJyB9
KS5jYWxlbmRhciwgJ2lzbGFtaWMtY2l2aWwnKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRs
LkxvY2FsZSgnZW4nLCB7IGNhbGVuZGFyOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSB9IH0pLCBFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2Vu
JywgeyBjYWxlbmRhcjogJ25nJyB9KSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZEJlKG5ldyBJbnRs
LkxvY2FsZSgnZW4nKS5jb2xsYXRpb24sIHVuZGVmaW5lZCk7CitzaG91bGRCZShuZXcgSW50bC5M
b2NhbGUoJ2VuLXUtY28tcGhvbmViaycpLmNvbGxhdGlvbiwgJ3Bob25lYmsnKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IGNvbGxhdGlvbjogJ3Bob25lYmsnIH0pLmNvbGxhdGlv
biwgJ3Bob25lYmsnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tdS1jby1waG9uZWJr
JywgeyBjb2xsYXRpb246ICdlb3InIH0pLmNvbGxhdGlvbiwgJ2VvcicpOworc2hvdWxkVGhyb3co
KCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgY29sbGF0aW9uOiB7IHRvU3RyaW5nKCkgeyB0
aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pLCBFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcg
SW50bC5Mb2NhbGUoJ2VuJywgeyBjb2xsYXRpb246ICduZycgfSksIFJhbmdlRXJyb3IpOworCitz
aG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuJykuY2FzZUZpcnN0LCB1bmRlZmluZWQpOworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWtmLXVwcGVyJykuY2FzZUZpcnN0LCAndXBwZXIn
KTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IGNhc2VGaXJzdDogJ3VwcGVyJyB9
KS5jYXNlRmlyc3QsICd1cHBlcicpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWtm
LXVwcGVyJywgeyBjYXNlRmlyc3Q6ICdsb3dlcicgfSkuY2FzZUZpcnN0LCAnbG93ZXInKTsKK3No
b3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IGNhc2VGaXJzdDogeyB0b1N0
cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgY2FzZUZpcnN0OiAnYmFkJyB9KSwgUmFuZ2VF
cnJvcik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nKS5udW1lcmljLCBmYWxzZSk7
CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUta24nKS5udW1lcmljLCB0cnVlKTsKK3No
b3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tdS1rbi10cnVlJykubnVtZXJpYywgdHJ1ZSk7Citz
aG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBudW1lcmljOiB0cnVlIH0pLm51bWVyaWMs
IHRydWUpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWtuJywgeyBudW1lcmljOiBm
YWxzZSB9KS5udW1lcmljLCBmYWxzZSk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUt
a24tdHJ1ZScsIHsgbnVtZXJpYzogZmFsc2UgfSkubnVtZXJpYywgZmFsc2UpOworc2hvdWxkVGhy
b3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgZ2V0IG51bWVyaWMoKSB7IHRocm93IG5l
dyBFcnJvcigpOyB9IH0pLCBFcnJvcik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4n
KS5ob3VyQ3ljbGUsIHVuZGVmaW5lZCk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUt
aGMtaDExJykuaG91ckN5Y2xlLCAnaDExJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2Vu
JywgeyBob3VyQ3ljbGU6ICdoMTEnIH0pLmhvdXJDeWNsZSwgJ2gxMScpOworc2hvdWxkQmUobmV3
IEludGwuTG9jYWxlKCdlbi11LWhjLWgxMScsIHsgaG91ckN5Y2xlOiAnaDIzJyB9KS5ob3VyQ3lj
bGUsICdoMjMnKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IGhv
dXJDeWNsZTogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgaG91ckN5Y2xlOiAn
YmFkJyB9KSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nKS5u
dW1iZXJpbmdTeXN0ZW0sIHVuZGVmaW5lZCk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2Vu
LXUtbnUtaGFuaWRlYycpLm51bWJlcmluZ1N5c3RlbSwgJ2hhbmlkZWMnKTsKK3Nob3VsZEJlKG5l
dyBJbnRsLkxvY2FsZSgnZW4nLCB7IG51bWJlcmluZ1N5c3RlbTogJ2hhbmlkZWMnIH0pLm51bWJl
cmluZ1N5c3RlbSwgJ2hhbmlkZWMnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tdS1u
dS1oYW5pZGVjJywgeyBudW1iZXJpbmdTeXN0ZW06ICdndWpyJyB9KS5udW1iZXJpbmdTeXN0ZW0s
ICdndWpyJyk7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBudW1i
ZXJpbmdTeXN0ZW06IHsgdG9TdHJpbmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSksIEVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IG51bWJlcmlu
Z1N5c3RlbTogJ25nJyB9KSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2Fs
ZSgnZW4tTGF0bi1VUycpLmxhbmd1YWdlLCAnZW4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2Fs
ZSgnZW4nLCB7IGxhbmd1YWdlOiAnYXInIH0pLmxhbmd1YWdlLCAnYXInKTsKK3Nob3VsZEJlKG5l
dyBJbnRsLkxvY2FsZSgnY2VsLWdhdWxpc2gnKS5sYW5ndWFnZSwgJ3h0ZycpOworc2hvdWxkVGhy
b3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgbGFuZ3VhZ2U6IHsgdG9TdHJpbmcoKSB7
IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5l
dyBJbnRsLkxvY2FsZSgnZW4nLCB7IGxhbmd1YWdlOiAnZmFpbCcgfSksIFJhbmdlRXJyb3IpOwor
CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxhdG4tVVMnKS5zY3JpcHQsICdMYXRuJyk7
CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLVVTJykuc2NyaXB0LCB1bmRlZmluZWQpOwor
c2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi1MYXRuJywgeyBzY3JpcHQ6ICdLb3JlJyB9KS5z
Y3JpcHQsICdLb3JlJyk7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywg
eyBzY3JpcHQ6IHsgdG9TdHJpbmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSksIEVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IHNjcmlwdDogJ2Jh
ZCcgfSksIFJhbmdlRXJyb3IpOworCitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxhdG4t
VVMnKS5yZWdpb24sICdVUycpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi1MYXRuJyku
cmVnaW9uLCB1bmRlZmluZWQpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi1VUycsIHsg
cmVnaW9uOiAnS1InIH0pLnJlZ2lvbiwgJ0tSJyk7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50
bC5Mb2NhbGUoJ2VuJywgeyByZWdpb246IHsgdG9TdHJpbmcoKSB7IHRocm93IG5ldyBFcnJvcigp
OyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4n
LCB7IHJlZ2lvbjogJ2ZhaWwnIH0pLCBSYW5nZUVycm9yKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
dGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCBi
MTU0ODI1NzU4YzY4Y2JkMzRjNmY5YzExM2YxYzgzODE0OGI0NDQ1Li44ODVhMmU2MzQ3ZGMxZWVm
OGE3NGRlMjE3MjQ1ZWIwMmEzZTAyNTBlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29u
ZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yLDYgKzIsNyBA
QAogLS0tCiBmbGFnczoKICAgQmlnSW50OiB1c2VCaWdJbnQKKyAgSW50bC5Mb2NhbGU6IHVzZUlu
dGxMb2NhbGUKICAgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ6IHVzZUludGxSZWxhdGl2ZVRpbWVG
b3JtYXQKICAgV2Vha1JlZjogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRzLXB1YmxpYzogdXNl
UHVibGljQ2xhc3NGaWVsZHMKQEAgLTMwLDcgKzMxLDYgQEAgc2tpcDoKICAgICAtIEludGwuRGF0
ZVRpbWVGb3JtYXQtZnJhY3Rpb25hbFNlY29uZERpZ2l0cwogICAgIC0gSW50bC5EaXNwbGF5TmFt
ZXMKICAgICAtIEludGwuTGlzdEZvcm1hdAotICAgIC0gSW50bC5Mb2NhbGUKICAgICAtIEludGwu
TnVtYmVyRm9ybWF0LXVuaWZpZWQKICAgICAtIEludGwuU2VnbWVudGVyCiAgIHBhdGhzOgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IDI5OTYyNTEzYTc0MGJmNzAxZjA4YzdmOGU0ZTQw
NTUyNTM4OTI2MTYuLmE1MDZlMTQwYmMxMDgyYzQ1ODA2NzFjYjM2MmFjMWU0NjE0YTlmMDUgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3Rz
L3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE4MzksNiArMTgzOSw1NyBAQCB0ZXN0L2lu
dGw0MDIvSW50bC9nZXRDYW5vbmljYWxMb2NhbGVzL3VuaWNvZGUtZXh0LWNhbm9uaWNhbGl6ZS15
ZXMtdG8tdHJ1ZS5qczoKIHRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExvY2FsZXMvdW5p
Y29kZS1leHQta2V5LXdpdGgtZGlnaXQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhy
b3duIGF0IGFsbCcKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFu
Z2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
K3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3ItYXBwbHktb3B0aW9ucy1jYW5vbmljYWxp
emVzLXR3aWNlLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqtydS1Bcm1uLVNVwrssIMKrcnUtQXJtbi1BTcK7KSB0byBiZSB0cnVlJworICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrcnUtQXJtbi1TVcK7LCDC
q3J1LUFybW4tQU3CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0
b3Itbm9uLWlhbmEtY2Fub24uanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRs
LkxvY2FsZSgibW8iKS5tYXhpbWl6ZSgpLnRvU3RyaW5nKCkgcmV0dXJucyAicm8tTGF0bi1STyIg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrcm/Cuywgwqtyby1MYXRuLVJPwrspIHRvIGJlIHRydWUnCisg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoIm1vIikubWF4aW1p
emUoKS50b1N0cmluZygpIHJldHVybnMgInJvLUxhdG4tUk8iIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
q3JvwrssIMKrcm8tTGF0bi1ST8K7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL0xvY2FsZS9j
b25zdHJ1Y3Rvci1vcHRpb25zLWxhbmd1YWdlLXZhbGlkLXVuZGVmaW5lZC5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQg
bm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9u
IHdhcyB0aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1vcHRp
b25zLWxhbmd1YWdlLXZhbGlkLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBh
dCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJy
b3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0
L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLW9wdGlvbnMtbnVtZXJpYy11bmRlZmluZWQuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgiZW4tdS1rbi10cnVl
Iiwge251bWVyaWM6IHVuZGVmaW5lZH0pLnRvU3RyaW5nKCkgcmV0dXJucyAiZW4tdS1rbiIgRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS1rbi10cnVlwrssIMKrZW4tdS1rbsK7KSB0byBiZSB0cnVl
JworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJlbi11LWtu
LXRydWUiLCB7bnVtZXJpYzogdW5kZWZpbmVkfSkudG9TdHJpbmcoKSByZXR1cm5zICJlbi11LWtu
IiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtuLXRydWXCuywgwqtlbi11LWtuwrspIHRvIGJl
IHRydWUnCit0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLW9wdGlvbnMtbnVtZXJpYy12
YWxpZC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJlbiIs
IHtudW1lcmljOiB0cnVlfSkudG9TdHJpbmcoKSByZXR1cm5zICJ0cnVlIiBFeHBlY3RlZCBTYW1l
VmFsdWUowqtlbi11LWtuLXRydWXCuywgwqtlbi11LWtuwrspIHRvIGJlIHRydWUnCisgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoImVuIiwge251bWVyaWM6IHRy
dWV9KS50b1N0cmluZygpIHJldHVybnMgInRydWUiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUt
a24tdHJ1ZcK7LCDCq2VuLXUta27CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9Mb2NhbGUv
Y29uc3RydWN0b3Itb3B0aW9ucy1yZWdpb24tdmFsaWQuanM6CisgIGRlZmF1bHQ6ICJUZXN0MjYy
RXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7cmVnaW9uOiBcIjU1NFwifSkudG9TdHJpbmco
KSByZXR1cm5zIFwiZW4tTlpcIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi01NTTCuywgwqtlbi1O
WsK7KSB0byBiZSB0cnVlIgorICBzdHJpY3QgbW9kZTogIlRlc3QyNjJFcnJvcjogbmV3IEludGwu
TG9jYWxlKCdlbicsIHtyZWdpb246IFwiNTU0XCJ9KS50b1N0cmluZygpIHJldHVybnMgXCJlbi1O
WlwiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLTU1NMK7LCDCq2VuLU5awrspIHRvIGJlIHRydWUi
Cit0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLXBhcnNlLXR3aWNlLmpzOgorICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1
dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRp
b24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLXRh
Zy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJzbC1ST1pB
Si1CSVNLRS0xOTk0IikudG9TdHJpbmcoKSByZXR1cm5zICJzbC0xOTk0LWJpc2tlLXJvemFqIiBF
eHBlY3RlZCBTYW1lVmFsdWUowqtzbC1yb3phai1iaXNrZS0xOTk0wrssIMKrc2wtMTk5NC1iaXNr
ZS1yb3phasK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogbmV3
IEludGwuTG9jYWxlKCJzbC1ST1pBSi1CSVNLRS0xOTk0IikudG9TdHJpbmcoKSByZXR1cm5zICJz
bC0xOTk0LWJpc2tlLXJvemFqIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtzbC1yb3phai1iaXNrZS0x
OTk0wrssIMKrc2wtMTk5NC1iaXNrZS1yb3phasK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAy
L0xvY2FsZS9leHRlbnNpb25zLWdyYW5kZmF0aGVyZWQuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlv
biB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3du
IGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvZXh0ZW5zaW9ucy1wcml2YXRlLmpzOgorICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2ludGw0MDIvTG9jYWxlL2dldHRlcnMtZ3Jh
bmRmYXRoZXJlZC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBSYW5n
ZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwor
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJl
IHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAy
L0xvY2FsZS9nZXR0ZXJzLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBT
YW1lVmFsdWUowqtkZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgyMy1rZi10
cnVlLWtuLWZhbHNlLW51LWxhdG7CuywgwqtkZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1jby1waG9u
ZWJrLWhjLWgyMy1rZi1rbi1mYWxzZS1udS1sYXRuwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtkZS1MYXRuLURFLXUtY2Et
Z3JlZ29yeS1jby1waG9uZWJrLWhjLWgyMy1rZi10cnVlLWtuLWZhbHNlLW51LWxhdG7Cuywgwqtk
ZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgyMy1rZi1rbi1mYWxzZS1udS1s
YXRuwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTG9jYWxlL2ludmFsaWQtdGFnLXRocm93
cy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbm8tbnluIGlzIGFuIGludmFsaWQgdGFn
IHZhbHVlIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlv
biB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5vLW55
biBpcyBhbiBpbnZhbGlkIHRhZyB2YWx1ZSBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhy
b3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2ludGw0MDIvTG9j
YWxlL2xpa2VseS1zdWJ0YWdzLWdyYW5kZmF0aGVyZWQuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlv
biB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3du
IGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvbGlrZWx5LXN1YnRhZ3MuanM6CisgIGRlZmF1
bHQ6ICdUZXN0MjYyRXJyb3I6ICJlbi11LWNvIi5tYXhpbWl6ZSgpIHNob3VsZCBiZSAiZW4tTGF0
bi1VUy11LWNvIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi1MYXRuLVVTLXUtY28teWVzwrssIMKr
ZW4tTGF0bi1VUy11LWNvwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiAiZW4tdS1jbyIubWF4aW1pemUoKSBzaG91bGQgYmUgImVuLUxhdG4tVVMtdS1jbyIgRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrZW4tTGF0bi1VUy11LWNvLXllc8K7LCDCq2VuLUxhdG4tVVMtdS1j
b8K7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL0xvY2FsZS9wcm90b3R5cGUvbWluaW1pemUv
cmVtb3ZpbmctbGlrZWx5LXN1YnRhZ3MtZmlyc3QtYWRkcy1saWtlbHktc3VidGFncy5qczoKKyAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogInVuZCIubWluaW1pemUoKSBzaG91bGQgYmUgImVuIiBF
eHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LXZhLXBvc2l4wrssIMKrZW7CuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6ICJ1bmQiLm1pbmltaXplKCkgc2hvdWxkIGJl
ICJlbiIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS12YS1wb3NpeMK7LCDCq2VuwrspIHRvIGJl
IHRydWUnCiB0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L2NvbnN0cnVjdG9yL2NvbnN0
cnVjdG9yL2xvY2FsZXMtdmFsaWQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEdyYW5k
ZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0
aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogR3Jh
bmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398303</attachid>
            <date>2020-05-02 20:09:39 -0700</date>
            <delta_ts>2020-05-05 21:25:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209772-20200502200938.patch</filename>
            <type>text/plain</type>
            <size>100749</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MDVmYTFkZmUzNzE4NzE0YjQ1ZmE5N2ZkMDc1MjAyNzUyMmIwMmIwLi4zNmIwYTcyN2NmMGNkOTJj
YmYxMWZjMDY2YmI0Y2M0ZTFiMTE1YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAyMC0wNS0wMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5Mb2NhbGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyB0aGUgcmVjZW50IEVDTUEtNDAyIGZlYXR1cmUgSW50bC5Mb2NhbGUuCisKKyAgICAg
ICAgVGhpcyBpcyBlZmZlY3RpdmVseSBhIHdyYXBwZXIgY2xhc3MgZm9yIGFsbCB0aGUgcGllY2Vz
IG9mIHVsb2MuaCB0aGF0IEVDTUEtNDAyIGNhcmVzIGFib3V0LgorICAgICAgICAoSWYgd2UgdXNl
ZCB0aGUgQysrIEFQSSwgdGhlcmUncyBhIExvY2FsZUJ1aWxkZXIgdGhhdCB3b3VsZCBtYWtlIHRo
aXMgbXVjaCBlYXNpZXIsIGJ1dCBpbiBzdGlja2luZyB0byB0aGUgQyBBUEksCisgICAgICAgIGl0
J3MgYmFzaWNhbGx5IGFuIG9iamVjdCB0aGF0IGhhcyBhbiBJQ1UgbG9jYWxlSUQgYXMgZGF0YSBh
bmQgdWxvY18qIGZ1bmN0aW9ucyBhcyBtZXRob2RzIC8gZ2V0dGVycy4KKyAgICAgICAgRnVydGhl
cm1vcmUsIHRoZXJlJ3Mgbm8gd2F5IHRvIG1vZGlmeSBzYWlkIGRhdGEsIHNvIGV2ZXJ5IG1ldGhv
ZCAvIGdldHRlciBjYW4gYmUgbGF6eSBhbmQgY2FjaGUgaXRzIHJlc3VsdC4pCisKKyAgICAgICAg
VXNhZ2UgZXhhbXBsZToKKyAgICAgICAgICA+Pj4gbG9jYWxlID0gbmV3IEludGwuTG9jYWxlKCdq
YScsIHsgcmVnaW9uOiAnSlAnLCBjYWxlbmRhcjogJ2phcGFuZXNlJywgbnVtZXJpYzogZmFsc2Ug
fSkKKyAgICAgICAgICAiamEtSlAtdS1jYS1qYXBhbmVzZS1rbi1mYWxzZSIKKyAgICAgICAgICA+
Pj4gbG9jYWxlLmJhc2VOYW1lCisgICAgICAgICAgImphLUpQIgorCisgICAgICAgIEludGwuTG9j
YWxlIGNhbiBiZSB1c2VkIGFueXdoZXJlIHRoYXQgSW50bCBBUElzIGFjY2VwdCBsb2NhbGUgc3Ry
aW5ncyBhcyBpbnB1dCBwYXJhbWV0ZXJzLAorICAgICAgICBhbmQgaXMgbW9yZW92ZXIgaG9wZWQg
dG8gYmUgdGhlIGNsYXNzIGJ5IHdoaWNoIGZ1dHVyZSBXZWIgQVBJcyB3aWxsIGhhbmRsZSB0aGUg
Y3VycmVudCBsb2NhbGUuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHJ1bnRpbWUtZ3VhcmRl
ZCBieSB0aGUgYHVzZUludGxMb2NhbGVgIG9wdGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxMb2NhbGVDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxMb2Nh
bGVQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90
b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpsYW5n
dWFnZVRhZ0Zyb21Mb2NhbGVJREJ1ZmZlcik6IFJlbmFtZWQgZnJvbSBKU0M6OmNvbnZlcnRJQ1VM
b2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcuCisgICAgICAgIChKU0M6OmludGxBdmFpbGFibGVMb2Nh
bGVzKToKKyAgICAgICAgKEpTQzo6aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcyk6CisgICAg
ICAgIChKU0M6OmNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKToKKyAgICAgICAgKEpTQzo6Y2Fub25p
Y2FsaXplTG9jYWxlTGlzdCk6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpjb2xsYXRvclN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJGb3JtYXRTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bG9jYWxlU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9WTS5j
cHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIwLTA0LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAg
ICAgICBUcmlTdGF0ZSBzaG91bGQgYmUgYW4gZW51bSBjbGFzcyBhbmQgdXNlICJJbmRldGVybWlu
YXRlIiBpbnN0ZWFkIG9mICJNaXhlZCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAzNTcyYjZjNmJhMDk0MDVjNmIzMjk5MTcxYzQ4MmY2NWExMzZkM2RkLi40NTQ0MjRlMTdj
Mzk2ZTUzZGNmZGEyMzVlMmRlN2I5ZmViM2Y0M2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC03MCw2ICs3MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVU
X1NPVVJDRVMKICAgICBydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvSW50bExvY2FsZVByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMt
aW5wdXQueGNmaWxlbGlzdAppbmRleCBmMzUxMDQ0M2VlYzU3YzYwOGM2YTBmZWVjODU5OTI0MzRj
NTcxMTM2Li5mZWE0MDQ1ZGYzNWQ5YWRmMDQ2YTJlZmQ2Yzg4YzhkOGQwMGZiNzNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxl
bGlzdApAQCAtMTM2LDYgKzEzNiw3IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bENvbGxh
dG9yQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxDb2xsYXRvclBy
b3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNw
cAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcAog
JChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsT2JqZWN0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IGIx
YTMzZDUzZGU3OGQ5YTQ5Nzc0Yjc0ZTZmNDhjYzM0NDRjZGY0MjQuLjc5Y2RlNGVlNTA3ZTEzZjZm
ZjdmYTc4MDBkYzY0NWNiZjg5NDFjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTI3LDYgKzI3LDcgQEAg
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmx1dC4KICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxMb2Nh
bGVQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW50bE9iamVjdC5sdXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQppbmRleCAxYzIyODhkZjg1NWI4MDBiMGJlYzMzZTg1MWNhODg1YjVh
ZDQ3ZTcxLi4wMGQyYTU3YjNlZDJkYzNjMjk5NzQyOTg0ZTUwNTdhYTZhMWMzZWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTQ3LDYgKzE0Nyw3IEBA
IE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBJbnRsQ29sbGF0b3JQcm90b3R5cGUubHV0Lmgg
XAogICAgIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmggXAorICAgIEludGxMb2NhbGVQcm90b3R5cGUubHV0
LmggXAogICAgIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgSW50bE51
bWJlckZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgSW50bE9iamVjdC5sdXQuaCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIxNmM5MjdiMjQ2ZDdkZjkwYzM0YzJlY2VlYzM2
OTdiMTZhN2MzMDUuLjAyN2Y3ZWYyYWMxNTYzZDNhMGNiYzViZjcwODIwYzFmZjE0MjYzYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MzMzLDYgKzQzMzMsMTIgQEAKIAkJQTFF
MDQ1MUIxQzI1QjRCMTAwQkI2NjNDIC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5qczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGRTFFQjAxQzJDNTM3RTAwQTI4OUZGIC8qIERhdGVQcm90
b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBEYXRlUHJv
dG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMjc5NThEN0ZBMTE0MkIw
QUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21Db250ZXh0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBM0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTG9jYWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bExvY2FsZUNvbnN0cnVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQUZGOTJEMjQ1QTNDRkEwMEM5
QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEludGxMb2NhbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0FGRjky
RTI0NUEzQ0ZCMDBDOUJBM0IgLyogSW50bExvY2FsZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsTG9jYWxlUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNBRkY5MkYyNDVBM0NGQjAwQzlCQTNCIC8qIEludGxM
b2NhbGVDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBM0FGRjkzMDI0NUEzQ0ZDMDBDOUJBM0IgLyogSW50bExvY2FsZVByb3RvdHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTG9jYWxlUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQkY4ODRCMjQ0ODBCREUwMDFCOUYzNSAvKiBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBM0JGODg0QzI0NDgwQkRGMDAxQjlGMzUgLyogSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUEzQkY4ODREMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcyNTQsNiArNzI2MCwxMiBAQAogCQkJCUExNTg3RDZBMUI0REMxNDEw
MEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oICovLAogCQkJCUExNTg3
RDZCMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICov
LAogCQkJCUExNTg3RDZDMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90
b3R5cGUuaCAqLywKKwkJCQlBM0FGRjkyRDI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZS5j
cHAgKi8sCisJCQkJQTNBRkY5MkIyNDVBM0NGOTAwQzlCQTNCIC8qIEludGxMb2NhbGUuaCAqLywK
KwkJCQlBM0FGRjkyRjI0NUEzQ0ZCMDBDOUJBM0IgLyogSW50bExvY2FsZUNvbnN0cnVjdG9yLmNw
cCAqLywKKwkJCQlBM0FGRjkyQzI0NUEzQ0ZBMDBDOUJBM0IgLyogSW50bExvY2FsZUNvbnN0cnVj
dG9yLmggKi8sCisJCQkJQTNBRkY5MkUyNDVBM0NGQjAwQzlCQTNCIC8qIEludGxMb2NhbGVQcm90
b3R5cGUuY3BwICovLAorCQkJCUEzQUZGOTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxl
UHJvdG90eXBlLmggKi8sCiAJCQkJQTFENzkyRjYxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXQuY3BwICovLAogCQkJCUExRDc5MkY3MUI0Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVt
YmVyRm9ybWF0LmggKi8sCiAJCQkJQTFENzkyRjgxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5k
ZXggMGY0YzUwZGYzNjdjNjU2MDhhMGFmNjI4M2EwZGM1MjZhOTQxMGE1ZS4uZWNjZTkxM2VjNTEz
N2IwYTI5ZWE1ZDhlODk1NjhlMzliZTgzOTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dApAQCAtODEyLDYgKzgxMiw5IEBAIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAog
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3Bw
CitydW50aW1lL0ludGxMb2NhbGUuY3BwCitydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5j
cHAKK3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZDE2NGJhNGJlZjhiNGVlZmY5
MzE3MzdiMzk1M2YzNGZlMTIzMmEyOC4uOGRiYzZkN2FjMTg3YjcxOWQwNDUyNjU3MDI4MDk2MTYy
MjlkNThkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCkBAIC00MCw2ICs0MCw3IEBACiAgICAgbWFjcm8oSW5maW5pdHkpIFwKICAg
ICBtYWNybyhJbnRsKSBcCiAgICAgbWFjcm8oTG9hZGVyKSBcCisgICAgbWFjcm8oTG9jYWxlKSBc
CiAgICAgbWFjcm8oTWFwKSBcCiAgICAgbWFjcm8oTmFOKSBcCiAgICAgbWFjcm8oTnVtYmVyKSBc
CkBAIC0xMzcsNiArMTM4LDcgQEAKICAgICBtYWNybyhpc1dhdGNocG9pbnQpIFwKICAgICBtYWNy
byhqZXR0aXNvblJlYXNvbikgXAogICAgIG1hY3JvKGpvaW4pIFwKKyAgICBtYWNybyhsYW5ndWFn
ZSkgXAogICAgIG1hY3JvKGxhc3RJbmRleCkgXAogICAgIG1hY3JvKGxlbmd0aCkgXAogICAgIG1h
Y3JvKGxpbmUpIFwKQEAgLTE2Niw4ICsxNjgsMTAgQEAKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51
bWVyYWJsZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAogICAgIG1hY3JvKHJhdykgXAorICAg
IG1hY3JvKHJlZ2lvbikgXAogICAgIG1hY3JvKHJlcGxhY2UpIFwKICAgICBtYWNybyhyZXNvbHZl
KSBcCisgICAgbWFjcm8oc2NyaXB0KSBcCiAgICAgbWFjcm8oc2Vjb25kKSBcCiAgICAgbWFjcm8o
c2Vuc2l0aXZpdHkpIFwKICAgICBtYWNybyhzZXQpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExvY2FsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA5MTRhMDk4ODg0ZjNlYWRmMzUy
OWM1YWMzMDhmZTUwZDM2NDM1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCkBAIC0wLDAgKzEsNDc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisKKyNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDx1bmlj
b2RlL3Vsb2MuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9pY3UvSUNVSGVscGVycy5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxMb2NhbGU6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSW50bExvY2FsZSkgfTsKKworSW50bExvY2FsZSogSW50bExvY2FsZTo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bExvY2FsZT4odm0uaGVhcCkpIEludGxMb2NhbGUodm0s
IHN0cnVjdHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJu
IG9iamVjdDsKK30KKworU3RydWN0dXJlKiBJbnRsTG9jYWxlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0lu
dGxMb2NhbGU6OkludGxMb2NhbGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsTG9jYWxlOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VS
VChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisKK3ZvaWQgSW50bExvY2FsZTo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SW50bExvY2FsZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK2Jvb2wgSW50bExvY2FsZTo6aW5pdGlhbGl6
ZUxvY2FsZUlEKGNvbnN0IFN0cmluZyYgdGFnKQoreworICAgIENTdHJpbmcgaW5wdXQgPSB0YWcu
dXRmOCgpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVmVj
dG9yPGNoYXIsIDMyPiBidWZmZXIoMzIpOworICAgIGludDMyX3QgcGFyc2VkTGVuZ3RoOworICAg
IGF1dG8gYnVmZmVyTGVuZ3RoID0gdWxvY19mb3JMYW5ndWFnZVRhZyhpbnB1dC5kYXRhKCksIGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZwYXJzZWRMZW5ndGgsICZzdGF0dXMpOworICAg
IGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7CisgICAgICAgIGJ1ZmZl
ci5yZXNpemUoYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwor
ICAgICAgICB1bG9jX2Zvckxhbmd1YWdlVGFnKGlucHV0LmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyTGVuZ3RoLCAmcGFyc2VkTGVuZ3RoLCAmc3RhdHVzKTsKKyAgICB9CisgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpIHx8IHBhcnNlZExlbmd0aCAhPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihp
bnB1dC5sZW5ndGgoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbG9jYWxlSUQg
PSBDU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgSW50bExvY2FsZTo6Y2Fub25pY2FsaXplTG9jYWxlSUQoKQoreworICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFZlY3RvcjxjaGFyLCAzMj4gYnVm
ZmVyKDMyKTsKKyAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVsb2NfY2Fub25pY2FsaXplKG1fbG9j
YWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAg
ICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgeworICAgICAgICBidWZm
ZXIuZ3JvdyhidWZmZXJMZW5ndGgpOworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgICAgIHVsb2NfY2Fub25pY2FsaXplKG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgp
LCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbG9jYWxlSUQgPSBDU3RyaW5nKGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
SW50bExvY2FsZTo6c2V0S2V5d29yZChBU0NJSUxpdGVyYWwga2V5LCBjb25zdCBTdHJpbmcmIHZh
bHVlKQoreworICAgIENTdHJpbmcgaW5wdXQgPSB2YWx1ZS51dGY4KCk7CisKKyAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBhdXRvIGxlbmd0aCA9IHVsb2Nfc2V0S2V5
d29yZFZhbHVlKGtleS5jaGFyYWN0ZXJzKCksIGlucHV0LmRhdGEoKSwgbV9sb2NhbGVJRC5tdXRh
YmxlRGF0YSgpLCBtX2xvY2FsZUlELmxlbmd0aCgpLCAmc3RhdHVzKTsKKyAgICBpZiAobmVlZHNU
b0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgeworICAgICAgICBtX2xvY2FsZUlELmdyb3co
bGVuZ3RoICsgMSk7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgdWxv
Y19zZXRLZXl3b3JkVmFsdWUoa2V5LmNoYXJhY3RlcnMoKSwgaW5wdXQuZGF0YSgpLCBtX2xvY2Fs
ZUlELm11dGFibGVEYXRhKCksIGxlbmd0aCArIDEsICZzdGF0dXMpOworICAgIH0KKyAgICBBU1NF
UlQoVV9TVUNDRVNTKHN0YXR1cykpOworfQorCitTdHJpbmcgSW50bExvY2FsZTo6a2V5d29yZChB
U0NJSUxpdGVyYWwga2V5KSBjb25zdAoreworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgIFZlY3RvcjxjaGFyLCAzMj4gYnVmZmVyKDMyKTsKKyAgICBhdXRvIGJ1ZmZl
ckxlbmd0aCA9IHVsb2NfZ2V0S2V5d29yZFZhbHVlKG1fbG9jYWxlSUQuZGF0YSgpLCBrZXkuY2hh
cmFjdGVycygpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBp
ZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nKHN0YXR1cykpIHsKKyAgICAgICAgYnVmZmVy
Lmdyb3coYnVmZmVyTGVuZ3RoICsgMSk7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsK
KyAgICAgICAgdWxvY19nZXRLZXl3b3JkVmFsdWUobV9sb2NhbGVJRC5kYXRhKCksIGtleS5jaGFy
YWN0ZXJzKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCArIDEsICZzdGF0dXMpOworICAg
IH0KKyAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOworCisgICAgY29uc3QgY2hhciogbW9k
ZXJuaXplZCA9IHVsb2NfdG9Vbmljb2RlTG9jYWxlVHlwZShrZXkuY2hhcmFjdGVycygpLCBidWZm
ZXIuZGF0YSgpKTsKKyAgICByZXR1cm4gbW9kZXJuaXplZCA/IFN0cmluZyhtb2Rlcm5pemVkKSA6
IGVtcHR5U3RyaW5nKCk7Cit9CisKKy8vIEJlY2F1c2UgSUNVJ3MgQyBBUEkgZG9lc24ndCBoYXZl
IHNldFtMYW5ndWFnZXxTY3JpcHR8UmVnaW9uXSBmdW5jdGlvbnMuLi4KK3ZvaWQgSW50bExvY2Fs
ZTo6b3ZlcnJpZGVMYW5ndWFnZVNjcmlwdFJlZ2lvbihTdHJpbmdWaWV3IGxhbmd1YWdlLCBTdHJp
bmdWaWV3IHNjcmlwdCwgU3RyaW5nVmlldyByZWdpb24pCit7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbV9sb2NhbGVJRC5sZW5ndGgoKTsKKyAgICBBU1NFUlQobGVuZ3RoKTsKKworICAgIGF1dG8g
bG9jYWxlSURWaWV3ID0gU3RyaW5nVmlldyB7IG1fbG9jYWxlSUQuZGF0YSgpLCBsZW5ndGggfTsK
KworICAgIGF1dG8gZW5kT2ZMYW5ndWFnZVNjcmlwdFJlZ2lvblZhcmlhbnQgPSBsb2NhbGVJRFZp
ZXcuZmluZChVTE9DX0tFWVdPUkRfU0VQQVJBVE9SKTsKKyAgICBpZiAoZW5kT2ZMYW5ndWFnZVNj
cmlwdFJlZ2lvblZhcmlhbnQgPT0gbm90Rm91bmQpCisgICAgICAgIGVuZE9mTGFuZ3VhZ2VTY3Jp
cHRSZWdpb25WYXJpYW50ID0gbGVuZ3RoOworCisgICAgVmVjdG9yPFN0cmluZ1ZpZXc+IHN1YnRh
Z3M7CisgICAgZm9yIChhdXRvIHN1YnRhZyA6IGxvY2FsZUlEVmlldy5sZWZ0KGVuZE9mTGFuZ3Vh
Z2VTY3JpcHRSZWdpb25WYXJpYW50KS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdfJykpCisg
ICAgICAgIHN1YnRhZ3MuYXBwZW5kKHN1YnRhZyk7CisKKyAgICBpZiAoIWxhbmd1YWdlLmlzTnVs
bCgpKQorICAgICAgICBzdWJ0YWdzWzBdID0gbGFuZ3VhZ2U7CisKKyAgICBib29sIGhhc1Njcmlw
dCA9IHN1YnRhZ3Muc2l6ZSgpID4gMSAmJiBzdWJ0YWdzWzFdLmxlbmd0aCgpID09IDQ7CisgICAg
aWYgKCFzY3JpcHQuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGhhc1NjcmlwdCkKKyAgICAgICAg
ICAgIHN1YnRhZ3NbMV0gPSBzY3JpcHQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3Vi
dGFncy5pbnNlcnQoMSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGhhc1NjcmlwdCA9IHRydWU7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXJlZ2lvbi5pc051bGwoKSkgeworICAgICAgICBz
aXplX3QgaW5kZXggPSBoYXNTY3JpcHQgPyAyIDogMTsKKyAgICAgICAgYm9vbCBoYXNSZWdpb24g
PSBzdWJ0YWdzLnNpemUoKSA+IGluZGV4ICYmIHN1YnRhZ3NbaW5kZXhdLmxlbmd0aCgpIDwgNDsK
KyAgICAgICAgaWYgKGhhc1JlZ2lvbikKKyAgICAgICAgICAgIHN1YnRhZ3NbaW5kZXhdID0gcmVn
aW9uOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWJ0YWdzLmluc2VydChpbmRleCwgcmVn
aW9uKTsKKyAgICB9CisKKyAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsgCisgICAgYm9vbCBoYXNB
cHBlbmRlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byBzdWJ0YWcgOiBzdWJ0YWdzKSB7CisgICAg
ICAgIGlmIChoYXNBcHBlbmRlZCkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ18nKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaGFzQXBwZW5kZWQgPSB0cnVlOworCisgICAgICAgIHJl
c3VsdC5hcHBlbmQoc3VidGFnKTsKKyAgICB9CisKKyAgICBpZiAoZW5kT2ZMYW5ndWFnZVNjcmlw
dFJlZ2lvblZhcmlhbnQgIT0gbGVuZ3RoKQorICAgICAgICByZXN1bHQuYXBwZW5kKGxvY2FsZUlE
Vmlldy5yaWdodChsZW5ndGggLSBlbmRPZkxhbmd1YWdlU2NyaXB0UmVnaW9uVmFyaWFudCkpOwor
CisgICAgbV9sb2NhbGVJRCA9IHJlc3VsdC50b1N0cmluZygpLnV0ZjgoKTsKK30KKworLy8gdW5p
Y29kZV9sYW5ndWFnZV9zdWJ0YWcgPSBhbHBoYXsyLDN9IHwgYWxwaGF7NSw4fSA7CitzdGF0aWMg
Ym9vbCBpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBh
dXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICByZXR1cm4gbGVuZ3RoID49IDIgJiYg
bGVuZ3RoIDw9IDggJiYgbGVuZ3RoICE9IDQgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3Rl
cnM8aXNBU0NJSUFscGhhPigpOworfQorCisvLyB1bmljb2RlX3NjcmlwdF9zdWJ0YWcgPSBhbHBo
YXs0fSA7CitzdGF0aWMgYm9vbCBpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoU3RyaW5nVmlldyBzdHJp
bmcpCit7CisgICAgcmV0dXJuIHN0cmluZy5sZW5ndGgoKSA9PSA0ICYmIHN0cmluZy5pc0FsbFNw
ZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4oKTsKK30KKworLy8gdW5pY29kZV9yZWdpb25f
c3VidGFnID0gYWxwaGF7Mn0gfCBkaWdpdHszfSA7CitzdGF0aWMgYm9vbCBpc1VuaWNvZGVSZWdp
b25TdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5ndGggPSBzdHJpbmcu
bGVuZ3RoKCk7CisgICAgcmV0dXJuIChsZW5ndGggPT0gMiAmJiBzdHJpbmcuaXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc0FTQ0lJQWxwaGE+KCkpCisgICAgICAgIHx8IChsZW5ndGggPT0gMyAmJiBz
dHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxpc0FTQ0lJRGlnaXQ+KCkpOworfQorCisvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlCit2b2lkIEludGxMb2NhbGU6
OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0
YWdWYWx1ZSwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIFN0cmluZyB0YWcgPSB0YWdWYWx1ZS5pbmhlcml0czxJbnRsTG9jYWxlPih2bSkgPyBqc0Nh
c3Q8SW50bExvY2FsZSo+KHRhZ1ZhbHVlKS0+dG9TdHJpbmcoKSA6IHRhZ1ZhbHVlLnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKKworICAgIEpTVmFsdWUgb3B0aW9ucyA9IG9wdGlvbnNWYWx1ZTsKKyAgICBpZiAoIW9wdGlv
bnNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zVmFsdWUu
dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICB9CisKKyAgICBpZiAodGFnLmlzRW1wdHkoKSB8fCAhaW5pdGlhbGl6
ZUxvY2FsZUlEKHRhZykpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJpbnZhbGlkIGxhbmd1YWdlIHRhZyJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+bGFuZ3VhZ2UsIHsgfSwgbnVsbHB0ciwgbnVsbHB0
cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoIWxh
bmd1YWdlLmlzTnVsbCgpICYmICFpc1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhsYW5ndWFnZSkpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJsYW5ndWFnZSBp
cyBub3QgYSB3ZWxsLWZvcm1lZCBsYW5ndWFnZSB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBTdHJpbmcgc2NyaXB0ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnNjcmlwdCwgeyB9LCBudWxscHRyLCBudWxs
cHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmICgh
c2NyaXB0LmlzTnVsbCgpICYmICFpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoc2NyaXB0KSkgeworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNjcmlwdCBpcyBub3Qg
YSB3ZWxsLWZvcm1lZCBzY3JpcHQgdmFsdWUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgU3RyaW5nIHJlZ2lvbiA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yZWdpb24sIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoIXJlZ2lvbi5p
c051bGwoKSAmJiAhaXNVbmljb2RlUmVnaW9uU3VidGFnKHJlZ2lvbikpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpb24gaXMgbm90IGEgd2VsbC1m
b3JtZWQgcmVnaW9uIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghbGFuZ3VhZ2UuaXNOdWxsKCkgfHwgIXNjcmlwdC5pc051bGwoKSB8fCAhcmVnaW9uLmlzTnVs
bCgpKQorICAgICAgICBvdmVycmlkZUxhbmd1YWdlU2NyaXB0UmVnaW9uKGxhbmd1YWdlLCBzY3Jp
cHQsIHJlZ2lvbik7CisKKyAgICBTdHJpbmcgY2FsZW5kYXIgPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+Y2FsZW5kYXIsIHsgfSwgbnVs
bHB0ciwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICBpZiAoIWNhbGVuZGFyLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICghaXNVbmljb2RlTG9j
YWxlSWRlbnRpZmllclR5cGUoY2FsZW5kYXIpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNhbGVuZGFyIGlzIG5vdCBhIHdlbGwtZm9ybWVkIGNh
bGVuZGFyIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBzZXRLZXl3b3JkKCJjYWxlbmRhciJfcywgY2FsZW5kYXIpOworICAgIH0KKworICAgIFN0cmlu
ZyBjb2xsYXRpb24gPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+Y29sbGF0aW9uLCB7IH0sIG51bGxwdHIsIG51bGxwdHIpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKCFjb2xsYXRpb24uaXNO
dWxsKCkpIHsKKyAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjb2xs
YXRpb24pKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImNvbGxhdGlvbiBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjb2xsYXRpb24gdmFsdWUiX3MpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNldEtleXdvcmQoImNvbGxh
dGlvbiJfcywgY29sbGF0aW9uKTsKKyAgICB9CisKKyAgICBTdHJpbmcgaG91ckN5Y2xlID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmhv
dXJDeWNsZSwgeyAiaDExIiwgImgxMiIsICJoMjMiLCAiaDI0IiB9LCAiaG91ckN5Y2xlIG11c3Qg
YmUgXCJoMTFcIiwgXCJoMTJcIiwgXCJoMjNcIiwgb3IgXCJoMjRcIiIsIG51bGxwdHIpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKCFob3VyQ3ljbGUu
aXNOdWxsKCkpCisgICAgICAgIHNldEtleXdvcmQoImhvdXJzIl9zLCBob3VyQ3ljbGUpOworCisg
ICAgU3RyaW5nIGNhc2VGaXJzdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYXNlRmlyc3QsIHsgInVwcGVyIiwgImxvd2VyIiwgImZh
bHNlIiB9LCAiY2FzZUZpcnN0IG11c3QgYmUgZWl0aGVyIFwidXBwZXJcIiwgXCJsb3dlclwiLCBv
ciBcImZhbHNlXCIiLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOworICAgIGlmICghY2FzZUZpcnN0LmlzTnVsbCgpKQorICAgICAgICBzZXRLZXl3b3Jk
KCJjb2xjYXNlZmlyc3QiX3MsIGNhc2VGaXJzdCk7CisKKyAgICBUcmlTdGF0ZSBudW1lcmljID0g
aW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVz
LT5udW1lcmljKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAg
IGlmIChudW1lcmljICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBzZXRLZXl3
b3JkKCJjb2xudW1lcmljIl9zLCBudW1lcmljID09IFRyaVN0YXRlOjpUcnVlID8gInllcyJfcyA6
ICJubyJfcyk7CisKKyAgICBTdHJpbmcgbnVtYmVyaW5nU3lzdGVtID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3Rl
bSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOworICAgIGlmICghbnVtYmVyaW5nU3lzdGVtLmlzTnVsbCgpKSB7CisgICAgICAg
IGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUobnVtYmVyaW5nU3lzdGVtKSkgewor
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXJp
bmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJfcyk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2V0S2V5d29yZCgibnVt
YmVycyJfcywgbnVtYmVyaW5nU3lzdGVtKTsKKyAgICB9CisKKyAgICBpZiAoIWNhbm9uaWNhbGl6
ZUxvY2FsZUlEKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJv
dG90eXBlLm1heGltaXplCitjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6Om1heGltaXplKCkKK3sK
KyAgICBpZiAobV9tYXhpbWl6ZWQuaXNOdWxsKCkpIHsKKyAgICAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFZlY3RvcjxjaGFyLCAzMj4gYnVmZmVyKDMyKTsK
KyAgICAgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2FkZExpa2VseVN1YnRhZ3MobV9sb2Nh
bGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZzdGF0dXMpOworICAg
ICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nKHN0YXR1cykpIHsKKyAgICAgICAg
ICAgIGJ1ZmZlci5ncm93KGJ1ZmZlckxlbmd0aCArIDEpOworICAgICAgICAgICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgICAgICAgICAgdWxvY19hZGRMaWtlbHlTdWJ0YWdzKG1fbG9jYWxl
SUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGggKyAxLCAmc3RhdHVzKTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOworCisgICAgICAgIG1f
bWF4aW1pemVkID0gbGFuZ3VhZ2VUYWdGcm9tTG9jYWxlSURCdWZmZXIoYnVmZmVyLmRhdGEoKSk7
CisgICAgfQorICAgIHJldHVybiBtX21heGltaXplZDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubWluaW1pemUKK2NvbnN0IFN0cmlu
ZyYgSW50bExvY2FsZTo6bWluaW1pemUoKQoreworICAgIGlmIChtX21pbmltaXplZC5pc051bGwo
KSkgeworICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAg
VmVjdG9yPGNoYXIsIDMyPiBidWZmZXIoMzIpOworICAgICAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9
IHVsb2NfbWluaW1pemVTdWJ0YWdzKG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICAgICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNl
Q1N0cmluZyhzdGF0dXMpKSB7CisgICAgICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGgg
KyAxKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgICAgIHVs
b2NfbWluaW1pemVTdWJ0YWdzKG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZm
ZXJMZW5ndGggKyAxLCAmc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoVV9TVUND
RVNTKHN0YXR1cykpOworCisgICAgICAgIG1fbWluaW1pemVkID0gbGFuZ3VhZ2VUYWdGcm9tTG9j
YWxlSURCdWZmZXIoYnVmZmVyLmRhdGEoKSk7CisgICAgfQorICAgIHJldHVybiBtX21pbmltaXpl
ZDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90
b3R5cGUudG9TdHJpbmcKK2NvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6dG9TdHJpbmcoKQorewor
ICAgIGlmIChtX2Z1bGxTdHJpbmcuaXNOdWxsKCkpCisgICAgICAgIG1fZnVsbFN0cmluZyA9IGxh
bmd1YWdlVGFnRnJvbUxvY2FsZUlEQnVmZmVyKG1fbG9jYWxlSUQuZGF0YSgpKTsKKyAgICByZXR1
cm4gbV9mdWxsU3RyaW5nOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUlu
dGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZQorY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpi
YXNlTmFtZSgpCit7CisgICAgaWYgKG1fYmFzZU5hbWUuaXNOdWxsKCkpIHsKKyAgICAgICAgVUVy
cm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFZlY3RvcjxjaGFyLCAzMj4g
YnVmZmVyKDMyKTsKKyAgICAgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2dldEJhc2VOYW1l
KG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVz
KTsKKyAgICAgICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZyhzdGF0dXMpKSB7Cisg
ICAgICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGggKyAxKTsKKyAgICAgICAgICAgIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgICAgIHVsb2NfZ2V0QmFzZU5hbWUobV9sb2Nh
bGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCArIDEsICZzdGF0dXMpOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICAgICAg
bV9iYXNlTmFtZSA9IGxhbmd1YWdlVGFnRnJvbUxvY2FsZUlEQnVmZmVyKGJ1ZmZlci5kYXRhKCkp
OworICAgIH0KKyAgICByZXR1cm4gbV9iYXNlTmFtZTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3VhZ2UKK2NvbnN0IFN0cmlu
ZyYgSW50bExvY2FsZTo6bGFuZ3VhZ2UoKQoreworICAgIGlmIChtX2xhbmd1YWdlLmlzTnVsbCgp
KSB7CisgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBW
ZWN0b3I8Y2hhciwgOD4gYnVmZmVyKDgpOworICAgICAgICBhdXRvIGJ1ZmZlckxlbmd0aCA9IHVs
b2NfZ2V0TGFuZ3VhZ2UobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5z
aXplKCksICZzdGF0dXMpOworICAgICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIo
c3RhdHVzKSkgeworICAgICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyTGVuZ3RoKTsKKyAgICAg
ICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgICAgIHVsb2NfZ2V0TGFuZ3Vh
Z2UobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1
cyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAg
ICAgICBtX2xhbmd1YWdlID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCk7Cisg
ICAgfQorICAgIHJldHVybiBtX2xhbmd1YWdlOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQKK2NvbnN0IFN0cmluZyYgSW50
bExvY2FsZTo6c2NyaXB0KCkKK3sKKyAgICBpZiAobV9zY3JpcHQuaXNOdWxsKCkpIHsKKyAgICAg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFZlY3RvcjxjaGFy
LCA0PiBidWZmZXIoNCk7CisgICAgICAgIGF1dG8gYnVmZmVyTGVuZ3RoID0gdWxvY19nZXRTY3Jp
cHQobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZzdGF0
dXMpOworICAgICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgewor
ICAgICAgICAgICAgYnVmZmVyLmdyb3coYnVmZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgICAgIHVsb2NfZ2V0U2NyaXB0KG1fbG9jYWxlSUQu
ZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICAgICAgbV9zY3JpcHQg
PSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICB9CisgICAgcmV0dXJu
IG1fc2NyaXB0OworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9j
YWxlLnByb3RvdHlwZS5yZWdpb24KK2NvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6cmVnaW9uKCkK
K3sKKyAgICBpZiAobV9yZWdpb24uaXNOdWxsKCkpIHsKKyAgICAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFZlY3RvcjxjaGFyLCAzPiBidWZmZXIoMyk7Cisg
ICAgICAgIGF1dG8gYnVmZmVyTGVuZ3RoID0gdWxvY19nZXRDb3VudHJ5KG1fbG9jYWxlSUQuZGF0
YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICAgICAgaWYg
KG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKKyAgICAgICAgICAgIGJ1ZmZl
ci5ncm93KGJ1ZmZlckxlbmd0aCk7CisgICAgICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgICAgICAgICB1bG9jX2dldENvdW50cnkobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
KFVfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAgICAgICBtX3JlZ2lvbiA9IFN0cmluZyhidWZmZXIu
ZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAgIH0KKyAgICByZXR1cm4gbV9yZWdpb247Cit9CisK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNh
bGVuZGFyCitjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6OmNhbGVuZGFyKCkKK3sKKyAgICBpZiAo
bV9jYWxlbmRhci5pc051bGwoKSkKKyAgICAgICAgbV9jYWxlbmRhciA9IGtleXdvcmQoImNhbGVu
ZGFyIl9zKTsKKyAgICByZXR1cm4gbV9jYWxlbmRhcjsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0Citjb25zdCBTdHJp
bmcmIEludGxMb2NhbGU6OmNhc2VGaXJzdCgpCit7CisgICAgaWYgKG1fY2FzZUZpcnN0LmlzTnVs
bCgpKQorICAgICAgICBtX2Nhc2VGaXJzdCA9IGtleXdvcmQoImNvbGNhc2VmaXJzdCJfcyk7Cisg
ICAgcmV0dXJuIG1fY2FzZUZpcnN0OworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24KK2NvbnN0IFN0cmluZyYgSW50bExv
Y2FsZTo6Y29sbGF0aW9uKCkKK3sKKyAgICBpZiAobV9jb2xsYXRpb24uaXNOdWxsKCkpCisgICAg
ICAgIG1fY29sbGF0aW9uID0ga2V5d29yZCgiY29sbGF0aW9uIl9zKTsKKyAgICByZXR1cm4gbV9j
b2xsYXRpb247Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2Nh
bGUucHJvdG90eXBlLmhvdXJDeWNsZQorY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpob3VyQ3lj
bGUoKQoreworICAgIGlmIChtX2hvdXJDeWNsZS5pc051bGwoKSkKKyAgICAgICAgbV9ob3VyQ3lj
bGUgPSBrZXl3b3JkKCJob3VycyJfcyk7CisgICAgcmV0dXJuIG1faG91ckN5Y2xlOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1i
ZXJpbmdTeXN0ZW0KK2NvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6bnVtYmVyaW5nU3lzdGVtKCkK
K3sKKyAgICBpZiAobV9udW1iZXJpbmdTeXN0ZW0uaXNOdWxsKCkpCisgICAgICAgIG1fbnVtYmVy
aW5nU3lzdGVtID0ga2V5d29yZCgibnVtYmVycyJfcyk7CisgICAgcmV0dXJuIG1fbnVtYmVyaW5n
U3lzdGVtOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxl
LnByb3RvdHlwZS5udW1lcmljCitUcmlTdGF0ZSBJbnRsTG9jYWxlOjpudW1lcmljKCkKK3sKKyAg
ICBpZiAobV9udW1lcmljID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBtX251
bWVyaWMgPSB0cmlTdGF0ZShrZXl3b3JkKCJjb2xudW1lcmljIl9zKS5zdGFydHNXaXRoKCJ0cnVl
Il9zKSk7CisgICAgcmV0dXJuIG1fbnVtZXJpYzsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTI3
ZmJiZDM1ZjIzYjAxODZmMWJiYTJlZDUzY2MxOGYwY2QzMWIwMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaApAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxMb2NhbGUgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRy
dWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAg
ICAgIHN0YXRpY19jYXN0PEludGxMb2NhbGUqPihjZWxsKS0+SW50bExvY2FsZTo6fkludGxMb2Nh
bGUoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsTG9jYWxlU3BhY2U8bW9kZT4oKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSW50bExvY2FsZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUxvY2Fs
ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGFnVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVl
KTsKKyAgICBjb25zdCBTdHJpbmcmIG1heGltaXplKCk7CisgICAgY29uc3QgU3RyaW5nJiBtaW5p
bWl6ZSgpOworICAgIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcoKTsKKyAgICBjb25zdCBTdHJpbmcm
IGJhc2VOYW1lKCk7CisgICAgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSgpOworICAgIGNvbnN0IFN0
cmluZyYgc2NyaXB0KCk7CisgICAgY29uc3QgU3RyaW5nJiByZWdpb24oKTsKKyAgICBjb25zdCBT
dHJpbmcmIGNhbGVuZGFyKCk7CisgICAgY29uc3QgU3RyaW5nJiBjYXNlRmlyc3QoKTsKKyAgICBj
b25zdCBTdHJpbmcmIGNvbGxhdGlvbigpOworICAgIGNvbnN0IFN0cmluZyYgaG91ckN5Y2xlKCk7
CisgICAgY29uc3QgU3RyaW5nJiBudW1iZXJpbmdTeXN0ZW0oKTsKKyAgICBUcmlTdGF0ZSBudW1l
cmljKCk7CisKK3ByaXZhdGU6CisgICAgSW50bExvY2FsZShWTSYsIFN0cnVjdHVyZSopOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBib29sIGluaXRpYWxpemVMb2NhbGVJRChj
b25zdCBTdHJpbmcmKTsKKyAgICBib29sIGNhbm9uaWNhbGl6ZUxvY2FsZUlEKCk7CisgICAgdm9p
ZCBzZXRLZXl3b3JkKEFTQ0lJTGl0ZXJhbCwgY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIGtl
eXdvcmQoQVNDSUlMaXRlcmFsKSBjb25zdDsKKyAgICB2b2lkIG92ZXJyaWRlTGFuZ3VhZ2VTY3Jp
cHRSZWdpb24oU3RyaW5nVmlldyBsYW5ndWFnZSwgU3RyaW5nVmlldyBzY3JpcHQsIFN0cmluZ1Zp
ZXcgcmVnaW9uKTsKKworICAgIENTdHJpbmcgbV9sb2NhbGVJRDsKKworICAgIFN0cmluZyBtX21h
eGltaXplZDsKKyAgICBTdHJpbmcgbV9taW5pbWl6ZWQ7CisgICAgU3RyaW5nIG1fZnVsbFN0cmlu
ZzsKKyAgICBTdHJpbmcgbV9iYXNlTmFtZTsKKyAgICBTdHJpbmcgbV9sYW5ndWFnZTsKKyAgICBT
dHJpbmcgbV9zY3JpcHQ7CisgICAgU3RyaW5nIG1fcmVnaW9uOworICAgIFN0cmluZyBtX2NhbGVu
ZGFyOworICAgIFN0cmluZyBtX2Nhc2VGaXJzdDsKKyAgICBTdHJpbmcgbV9jb2xsYXRpb247Cisg
ICAgU3RyaW5nIG1faG91ckN5Y2xlOworICAgIFN0cmluZyBtX251bWJlcmluZ1N5c3RlbTsKKyAg
ICBUcmlTdGF0ZSBtX251bWVyaWMgeyBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjY5NTE0ZGMyZjhi
MTA2NmUzYmNiYTIyM2M3YzJiZGI0MGFhMGY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsx
LDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW50bExvY2FsZUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUg
IkludGxMb2NhbGUuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJMb29r
dXAuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RF
U1RSVUNUSUJMRShJbnRsTG9jYWxlQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gSW50
bExvY2FsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bExvY2FsZUNvbnN0cnVj
dG9yKSB9OworCitJbnRsTG9jYWxlQ29uc3RydWN0b3IqIEludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxMb2NhbGVQcm90b3R5cGUq
IGxvY2FsZVByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEludGxMb2NhbGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxMb2Nh
bGVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGxvY2FsZVByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQor
CitTdHJ1Y3R1cmUqIEludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
K30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxMb2NhbGUo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEludGxMb2NhbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKKworSW50bExvY2FsZUNvbnN0cnVjdG9yOjpJbnRsTG9jYWxlQ29uc3RydWN0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbElu
dGxMb2NhbGUsIGNvbnN0cnVjdEludGxMb2NhbGUpCit7Cit9CisKK3ZvaWQgSW50bExvY2FsZUNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxMb2NhbGVQcm90b3R5cGUqIGxv
Y2FsZVByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkxvY2FsZSJf
cywgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IGxvY2FsZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOworICAgIGxvY2FsZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1Rhcmdl
dCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ld1RhcmdldCA9PSBjYWxsRnJhbWUt
PmpzQ2FsbGVlKCkKKyAgICAgICAgPyBnbG9iYWxPYmplY3QtPmxvY2FsZVN0cnVjdHVyZSgpCisg
ICAgICAgIDogSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LCBuZXdUYXJnZXQsIGdldEZ1bmN0aW9uUmVhbG0odm0sIG5ld1RhcmdldCktPmxvY2Fs
ZVN0cnVjdHVyZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgSW50bExvY2FsZSogbG9jYWxlID0gSW50bExvY2FsZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIEFTU0VSVChsb2NhbGUpOworCisgICAgSlNWYWx1ZSB0YWcgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOworICAgIGlmICghdGFnLmlzU3RyaW5nKCkgJiYgIXRhZy5pc09iamVjdCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmly
c3QgYXJndW1lbnQgdG8gSW50bC5Mb2NhbGUgbXVzdCBiZSBhIHN0cmluZyBvciBhbiBvYmplY3Qi
X3MpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIGxvY2FsZS0+aW5pdGlhbGl6ZUxvY2Fs
ZShnbG9iYWxPYmplY3QsIHRhZywgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShsb2NhbGUpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLUludGwuTG9jYWxlCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
YWxsSW50bExvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkxvY2FsZSIpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRiMzRhODg3YjM0ZGRjMTAyMzU1MDViYWU5OTk5MzJmZTJiNzFmMTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlQ29u
c3RydWN0b3IuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkludGxPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxMb2NhbGVQcm90b3R5cGU7CisKK2Ns
YXNzIEludGxMb2NhbGVDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIEludGxMb2NhbGVDb25z
dHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bExvY2FsZVByb3RvdHlwZSopOwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50bExv
Y2FsZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEludGxMb2NhbGVQcm90b3R5cGUqKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJT
UEFDRV9TSEFSQUJMRShJbnRsTG9jYWxlQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQyYTZmYjQzZTg2OGJm
ZjdmZGMwMTA1MmJlMmRkOGRlMmYyZGRkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMjc1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRs
TG9jYWxlUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxM
b2NhbGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxp
bmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01heGltaXplKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9j
YWxlUHJvdG90eXBlRnVuY01pbmltaXplKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlRnVu
Y1RvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUoSlNH
bG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcihKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExv
Y2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlckNvbGxhdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJD
eWNsZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5ndWFnZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSop
Oworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlw
ZUdldHRlclNjcmlwdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbihK
U0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsTG9jYWxl
UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIElu
dGxMb2NhbGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sICZs
b2NhbGVQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTG9j
YWxlUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxMb2NhbGVQcm90b3R5cGUubHV0
LmgKK0BiZWdpbiBsb2NhbGVQcm90b3R5cGVUYWJsZQorICBtYXhpbWl6ZSAgICAgICAgIEludGxM
b2NhbGVQcm90b3R5cGVGdW5jTWF4aW1pemUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAK
KyAgbWluaW1pemUgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXplICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvU3RyaW5nICAgICAgICAgSW50bExvY2FsZVBy
b3RvdHlwZUZ1bmNUb1N0cmluZyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBiYXNl
TmFtZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZSAgICAgICAgIERv
bnRFbnVtfEFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgY2FzZUZpcnN0ICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0ICAgICAgICBEb250RW51bXxBY2Nl
c3NvcgorICBjb2xsYXRpb24gICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRp
b24gICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIGhvdXJDeWNsZSAgICAgICAgSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgbnVt
ZXJpYyAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYyAgICAgICAgICBE
b250RW51bXxBY2Nlc3NvcgorICBudW1iZXJpbmdTeXN0ZW0gIEludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJOdW1iZXJpbmdTeXN0ZW0gIERvbnRFbnVtfEFjY2Vzc29yCisgIGxhbmd1YWdlICAgICAg
ICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckxhbmd1YWdlICAgICAgICAgRG9udEVudW18QWNj
ZXNzb3IKKyAgc2NyaXB0ICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0
ICAgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICByZWdpb24gICAgICAgICAgIEludGxMb2Nh
bGVQcm90b3R5cGVHZXR0ZXJSZWdpb24gICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCitAZW5k
CisqLworCitJbnRsTG9jYWxlUHJvdG90eXBlKiBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlUHJvdG90eXBlPih2bS5oZWFwKSkgSW50
bExvY2FsZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxMb2NhbGVQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bExvY2FsZVByb3RvdHlwZTo6SW50bExvY2Fs
ZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxMb2NhbGVQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3lt
Ym9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJJbnRsLkxvY2FsZSJfcyksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKKy8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm1heGlt
aXplCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVGdW5j
TWF4aW1pemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1p
Y0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IWxvY2FsZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5tYXhpbWl6ZSBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGxvY2Fs
ZS0+bWF4aW1pemUoKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1J
bnRsLkxvY2FsZS5wcm90b3R5cGUubWluaW1pemUKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm1p
bmltaXplIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyh2bSwgbG9jYWxlLT5taW5pbWl6ZSgpKSkpOworfQorCisvLyBodHRw
czovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS50b1N0cmluZwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3Ry
aW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0
PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2Nh
bGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
bG9jYWxlLT50b1N0cmluZygpKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS5iYXNlTmFtZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBsb2NhbGUtPmJhc2VOYW1lKCkp
KSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJv
dG90eXBlLmNhbGVuZGFyCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJDYWxlbmRhcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJf
cyk7CisKKyAgICBjb25zdCBTdHJpbmcmIGNhbGVuZGFyID0gbG9jYWxlLT5jYWxlbmRhcigpOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhbGVuZGFyLmlz
RW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGNhbGVuZGFy
KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnBy
b3RvdHlwZS5jYXNlRmlyc3QKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
bG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOworCisgICAgY29uc3QgU3RyaW5nJiBjYXNlRmlyc3QgPSBsb2NhbGUtPmNhc2VGaXJz
dCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhc2VG
aXJzdC5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNOb250cml2aWFsU3RyaW5nKHZtLCBj
YXNlRmlyc3QpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5M
b2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY29s
bGF0aW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIExvY2FsZSJfcyk7CisKKyAgICBjb25zdCBTdHJpbmcmIGNvbGxhdGlvbiA9IGxvY2FsZS0+
Y29sbGF0aW9uKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY29sbGF0aW9uLmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIGNvbGxhdGlvbikpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS5ob3VyQ3ljbGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRp
YWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIGNvbnN0IFN0cmluZyYgaG91ckN5Y2xlID0g
bG9jYWxlLT5ob3VyQ3ljbGUoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShob3VyQ3ljbGUuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgaG91ckN5Y2xlKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1lcmljKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5w
cm90b3R5cGUubnVtZXJpYyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGxvY2FsZS0+bnVtZXJpYygpID09IFRyaVN0YXRl
OjpUcnVlKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9j
YWxlLnByb3RvdHlwZS5udW1iZXJpbmdTeXN0ZW0KK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLm51bWJlcmluZ1N5c3RlbSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgY29uc3QgU3RyaW5nJiBudW1i
ZXJpbmdTeXN0ZW0gPSBsb2NhbGUtPm51bWJlcmluZ1N5c3RlbSgpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlcmluZ1N5c3RlbS5pc0VtcHR5KCkg
PyBqc1VuZGVmaW5lZCgpIDoganNOb250cml2aWFsU3RyaW5nKHZtLCBudW1iZXJpbmdTeXN0ZW0p
KSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJv
dG90eXBlLmxhbmd1YWdlCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJMYW5ndWFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJf
cyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc05v
bnRyaXZpYWxTdHJpbmcodm0sIGxvY2FsZS0+bGFuZ3VhZ2UoKSkpKTsKK30KKworLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuc2NyaXB0CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4g
b2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKKworICAgIGNvbnN0IFN0cmluZyYg
c2NyaXB0ID0gbG9jYWxlLT5zY3JpcHQoKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzY3JpcHQuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgc2NyaXB0KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5yZWdpb24KK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLnJlZ2lvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgY29uc3QgU3RyaW5nJiByZWdpb24gPSBsb2Nh
bGUtPnJlZ2lvbigpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHJlZ2lvbi5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNOb250cml2aWFsU3RyaW5n
KHZtLCByZWdpb24pKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmU1MmIwMDNiNTRkY2ZlNTA4ODZhY2E3NjQyYTA4NmJmZDVmODM1NjAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgK
QEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsTG9jYWxlUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVz
aW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3Bl
cnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsTG9jYWxlUHJv
dG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
IH0KKworICAgIHN0YXRpYyBJbnRsTG9jYWxlUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAg
IEludGxMb2NhbGVQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMmFkN2VlNmJhOTI3YzFlZjQzNGU5
NGRiMmYwMjQ3M2Q2ZmU2MWY3ZC4uMzZlMjg0ZTg3MmQ5MzRiODRiZmRjYWYzMTc2MDA4ODk1MThm
MzNlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAK
QEAgLTM1LDYgKzM1LDkgQEAKICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxE
YXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKKyNpbmNs
dWRlICJJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxl
c0NvbnN0cnVjdG9yLmgiCkBAIC0xMzYsNiArMTM5LDEwIEBAIEludGxPYmplY3QqIEludGxPYmpl
Y3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSoKIHZvaWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBp
ZiAoT3B0aW9uczo6dXNlSW50bExvY2FsZSgpKSB7CisgICAgICAgIGF1dG8qIGxvY2FsZUNvbnN0
cnVjdG9yID0gSW50bExvY2FsZUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxMb2NhbGVDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsTG9jYWxlUHJvdG90eXBlKj4oZ2xvYmFs
T2JqZWN0LT5sb2NhbGVTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKKyAg
ICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkxv
Y2FsZSwgbG9jYWxlQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICB9CiAgICAgaWYgKE9wdGlvbnM6OnVzZUludGxSZWxh
dGl2ZVRpbWVGb3JtYXQoKSkgewogICAgICAgICBhdXRvKiByZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvciA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+cmVsYXRpdmVUaW1l
Rm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiAgICAgICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWxhdGl2ZVRp
bWVGb3JtYXQsIHJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CkBAIC0xNDcsNyArMTU0LDcgQEAg
U3RydWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29udmVydElDVUxvY2FsZVRvQkNQ
NDdMYW5ndWFnZVRhZyhjb25zdCBjaGFyKiBsb2NhbGVJRCkKK1N0cmluZyBsYW5ndWFnZVRhZ0Zy
b21Mb2NhbGVJREJ1ZmZlcihjb25zdCBjaGFyKiBsb2NhbGVJRCwgYm9vbCBpc0ltbW9ydGFsKQog
ewogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIFZlY3RvcjxjaGFy
LCAzMj4gYnVmZmVyKDMyKTsKQEAgLTE1NSwxNSArMTYyLDE3IEBAIHN0YXRpYyBTdHJpbmcgY29u
dmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyhjb25zdCBjaGFyKiBsb2NhbGVJRCkKICAg
ICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgewogICAgICAgICBidWZm
ZXIuZ3JvdyhsZW5ndGgpOwogICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAg
IHVsb2NfdG9MYW5ndWFnZVRhZyhsb2NhbGVJRCwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSwgZmFsc2UsICZzdGF0dXMpOworICAgICAgICB1bG9jX3RvTGFuZ3VhZ2VUYWcobG9jYWxlSUQs
IGJ1ZmZlci5kYXRhKCksIGxlbmd0aCwgZmFsc2UsICZzdGF0dXMpOwogICAgIH0KLSAgICBpZiAo
IVVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgdXNlZCB0byBzdG9yZSBp
bnRvIHN0YXRpYyB2YXJpYWJsZXMgdGhhdCBtYXkgYmUgc2hhcmVkIGFjcm9zcyAKLSAgICAgICAg
Ly8gSlNDIGV4ZWN1dGlvbiB0aHJlYWRzLiBUaGlzIG11c3QgYmUgaW1tb3J0YWwgdG8gbWFrZSBj
b25jdXJyZW50IHJlZi9kZXJlZgotICAgICAgICAvLyBzYWZlLgorICAgIGlmIChVX0ZBSUxVUkUo
c3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgLy8gVGhpcyBpcyB1c2Vk
IHRvIHN0b3JlIGludG8gc3RhdGljIHZhcmlhYmxlcyB0aGF0IG1heSBiZSBzaGFyZWQgYWNyb3Nz
IEpTQyBleGVjdXRpb24gdGhyZWFkcy4KKyAgICAvLyBUaGlzIG11c3QgYmUgaW1tb3J0YWwgdG8g
bWFrZSBjb25jdXJyZW50IHJlZi9kZXJlZiBzYWZlLgorICAgIGlmIChpc0ltbW9ydGFsKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoYnVm
ZmVyLmRhdGEoKSwgbGVuZ3RoKSk7Ci0gICAgfQotICAgIHJldHVybiBTdHJpbmcoKTsKKworICAg
IHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAogY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpCkBAIC0xNzQsOSArMTgzLDEwIEBAIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKQogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplT25jZSwgWyZdIHsKICAgICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMuaXNFbXB0eSgp
KTsKKyAgICAgICAgY29uc3RleHByIGJvb2wgaXNJbW1vcnRhbCA9IHRydWU7CiAgICAgICAgIGlu
dDMyX3QgY291bnQgPSB1bG9jX2NvdW50QXZhaWxhYmxlKCk7CiAgICAgICAgIGZvciAoaW50MzJf
dCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBj
b252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVsb2NfZ2V0QXZhaWxhYmxlKGkpKTsK
KyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBsYW5ndWFnZVRhZ0Zyb21Mb2NhbGVJREJ1ZmZl
cih1bG9jX2dldEF2YWlsYWJsZShpKSwgaXNJbW1vcnRhbCk7CiAgICAgICAgICAgICBpZiAoIWxv
Y2FsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQobG9j
YWxlKTsKICAgICAgICAgfQpAQCAtMTkyLDkgKzIwMiwxMCBAQCBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKQogICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwg
WyZdIHsKICAgICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMuaXNFbXB0eSgpKTsKKyAgICAg
ICAgY29uc3RleHByIGJvb2wgaXNJbW1vcnRhbCA9IHRydWU7CiAgICAgICAgIGludDMyX3QgY291
bnQgPSB1Y29sX2NvdW50QXZhaWxhYmxlKCk7CiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNV
TG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVjb2xfZ2V0QXZhaWxhYmxlKGkpKTsKKyAgICAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBsYW5ndWFnZVRhZ0Zyb21Mb2NhbGVJREJ1ZmZlcih1Y29sX2dl
dEF2YWlsYWJsZShpKSwgaXNJbW1vcnRhbCk7CiAgICAgICAgICAgICBpZiAoIWxvY2FsZS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQobG9jYWxlKTsKICAg
ICAgICAgfQpAQCAtMzM4LDE4ICszNDksNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZUxh
bmd1YWdlVGFnKGNvbnN0IENTdHJpbmcmIGlucHV0KQogCiAgICAgQVNTRVJUKGludGVybWVkaWF0
ZS5jb250YWlucygnXDAnKSk7CiAKLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVmVj
dG9yPGNoYXIsIDMyPiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdWxvY190
b0xhbmd1YWdlVGFnKGludGVybWVkaWF0ZS5kYXRhKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5z
aXplKCksIGZhbHNlLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZm
ZXIoc3RhdHVzKSkgewotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOwotICAgICAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVsb2NfdG9MYW5ndWFnZVRhZyhpbnRl
cm1lZGlhdGUuZGF0YSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgsIGZhbHNlLCAmc3Rh
dHVzKTsKLSAgICB9Ci0gICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
U3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0
aCk7CisgICAgcmV0dXJuIGxhbmd1YWdlVGFnRnJvbUxvY2FsZUlEQnVmZmVyKGludGVybWVkaWF0
ZS5kYXRhKCkpOyAgICAKIH0KIAogVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlz
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMpCkBAIC0zNjYs
NyArMzY2LDcgQEAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKICAgICAgICAgcmV0dXJuIHNlZW47
CiAKICAgICBKU09iamVjdCogbG9jYWxlc09iamVjdDsKLSAgICBpZiAobG9jYWxlcy5pc1N0cmlu
ZygpKSB7CisgICAgaWYgKGxvY2FsZXMuaXNTdHJpbmcoKSB8fCBsb2NhbGVzLmluaGVyaXRzPElu
dGxMb2NhbGU+KHZtKSkgewogICAgICAgICBKU0FycmF5KiBsb2NhbGVzQXJyYXkgPSBKU0FycmF5
Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKICAgICAgICAgaWYgKCFs
b2NhbGVzQXJyYXkpIHsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlKTsKQEAgLTQwMiwxMyArNDAyLDE4IEBAIFZlY3RvcjxTdHJpbmc+IGNhbm9u
aWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBs
b2NhCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgSlNTdHJpbmcqIHRhZyA9IGtWYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QpOwotICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgVmVjdG9yPFN0cmluZz4oKSk7Cisg
ICAgICAgICAgICBFeHBlY3RlZDxDU3RyaW5nLCBVVEY4Q29udmVyc2lvbkVycm9yPiByYXdUYWc7
CisgICAgICAgICAgICBpZiAoa1ZhbHVlLmluaGVyaXRzPEludGxMb2NhbGU+KHZtKSkKKyAgICAg
ICAgICAgICAgICByYXdUYWcgPSBqc0Nhc3Q8SW50bExvY2FsZSo+KGtWYWx1ZSktPnRvU3RyaW5n
KCkudHJ5R2V0VXRmOCgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgSlNT
dHJpbmcqIHRhZyA9IGtWYWx1ZS50b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFZlY3RvcjxTdHJpbmc+KCkpOwogCi0gICAg
ICAgICAgICBhdXRvIHRhZ1ZhbHVlID0gdGFnLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgVmVjdG9yPFN0cmluZz4oKSk7CisgICAg
ICAgICAgICAgICAgYXV0byB0YWdWYWx1ZSA9IHRhZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBWZWN0b3I8U3RyaW5nPigp
KTsKIAotICAgICAgICAgICAgYXV0byByYXdUYWcgPSB0YWdWYWx1ZS50cnlHZXRVdGY4KCk7Cisg
ICAgICAgICAgICAgICAgcmF3VGFnID0gdGFnVmFsdWUudHJ5R2V0VXRmOCgpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKCFyYXdUYWcpIHsKICAgICAgICAgICAgICAgICBpZiAocmF3
VGFnLmVycm9yKCkgPT0gVVRGOENvbnZlcnNpb25FcnJvcjo6T3V0T2ZNZW1vcnkpCiAgICAgICAg
ICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsK
QEAgLTQxNyw3ICs0MjIsNyBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogCiAgICAgICAgICAg
ICBTdHJpbmcgY2Fub25pY2FsaXplZFRhZyA9IGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKHJhd1Rh
Zy52YWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChjYW5vbmljYWxpemVkVGFnLmlzTnVsbCgpKSB7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IHRyeU1ha2VTdHJpbmcoImlu
dmFsaWQgbGFuZ3VhZ2UgdGFnOiAiLCB0YWdWYWx1ZSk7CisgICAgICAgICAgICAgICAgU3RyaW5n
IGVycm9yTWVzc2FnZSA9IHRyeU1ha2VTdHJpbmcoImludmFsaWQgbGFuZ3VhZ2UgdGFnOiAiLCBy
YXdUYWcudmFsdWUoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghZXJy
b3JNZXNzYWdlKSkgewogICAgICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCkpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtNDgzLDcgKzQ4OCw4IEBAIFN0cmluZyBk
ZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gaWN1RGVmYXVsdExvY2FsU3RyaW5nOwogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplT25jZSwgWyZdIHsKLSAgICAgICAgaWN1RGVmYXVsdExvY2FsU3RyaW5nLmdldCgpID0gY29u
dmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1bG9jX2dldERlZmF1bHQoKSk7CisgICAg
ICAgIGNvbnN0ZXhwciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOworICAgICAgICBpY3VEZWZhdWx0
TG9jYWxTdHJpbmcuZ2V0KCkgPSBsYW5ndWFnZVRhZ0Zyb21Mb2NhbGVJREJ1ZmZlcih1bG9jX2dl
dERlZmF1bHQoKSwgaXNJbW1vcnRhbCk7CiAgICAgfSk7CiAgICAgaWYgKCFpY3VEZWZhdWx0TG9j
YWxTdHJpbmctPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGljdURlZmF1bHRMb2NhbFN0cmlu
Zy5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRl
eCA1Yjc4ZWJjOTg1MjhmMTdhNTBiY2I2NDhjMjRhZDE3YTY2YTM1ZmNmLi4zMWNhNjI0Zjk5NDRk
NmVmODQ0ODc2OTQ5MzRjNTk3YWMwYWU5NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCkBAIC02OCw2ICs2OCw3IEBAIFRyaVN0YXRlIGludGxCb29sZWFu
T3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zLCBQcm9wZXJ0eU5hbWUpOwog
U3RyaW5nIGludGxTdHJpbmdPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMs
IFByb3BlcnR5TmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMs
IGNvbnN0IGNoYXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7CiB1bnNpZ25lZCBp
bnRsTnVtYmVyT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zLCBQcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0sIHVuc2lnbmVkIGZhbGxi
YWNrKTsKIHVuc2lnbmVkIGludGxEZWZhdWx0TnVtYmVyT3B0aW9uKEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSwgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVt
LCB1bnNpZ25lZCBmYWxsYmFjayk7CitTdHJpbmcgbGFuZ3VhZ2VUYWdGcm9tTG9jYWxlSURCdWZm
ZXIoY29uc3QgY2hhciosIGJvb2wgaXNJbW1vcnRhbCA9IGZhbHNlKTsKIFZlY3RvcjxTdHJpbmc+
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMp
OwogSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCos
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHJlcXVlc3RlZExvY2FsZXMsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBv
cHRpb25zLCBjb25zdCBjaGFyKiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNbXSwgc2l6ZV90
IHJlbGV2YW50RXh0ZW5zaW9uS2V5Q291bnQsIFZlY3RvcjxTdHJpbmc+ICgqbG9jYWxlRGF0YSko
Y29uc3QgU3RyaW5nJiwgc2l6ZV90KSk7CiBKU1ZhbHVlIHN1cHBvcnRlZExvY2FsZXMoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRMb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDg0NDY3ODNiZTU5ODRiZGZlOTgwNDI2MmU5NTlkMThkYzc0NjU3YzkuLjY2NTFhMDJmNzJkMjM0
YzkyYjc3MTg0OTIwN2Y0MzFmZDAwMjdiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTgxLDYgKzgxLDggQEAKICNpbmNsdWRl
ICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQu
aCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJ
bnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgpAQCAtOTQzLDE4ICs5NDUsMjQgQEAgY2FwaXRh
bE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVG
bGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogY29s
bGF0b3JQcm90b3R5cGUgPSBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAg
ICAgICAgICAgaW5pdC5zZXQoSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBjb2xsYXRvclByb3RvdHlwZSkpOwogICAgICAgICB9KTsKLSAgICBtX251
bWJlckZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCi0gICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7Ci0gICAgICAg
ICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUgPSBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7Ci0gICAgICAgICAgICBp
bml0LnNldChJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBudW1iZXJGb3JtYXRQcm90b3R5cGUpKTsKLSAgICAgICAgfSk7CiAgICAgbV9kYXRl
VGltZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CiAgICAgICAg
ICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBl
ID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAg
ICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKICAgICAgICAgfSk7
CisgICAgbV9sb2NhbGVTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAg
ICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZSogbG9jYWxlUHJvdG90eXBlID0gSW50bExvY2Fs
ZVByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIEludGxMb2NhbGVQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90
eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxMb2NhbGU6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGxvY2FsZVByb3RvdHlwZSkpOworICAgICAgICB9KTsK
KyAgICBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25z
dCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7
CisgICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90
b3R5cGUgPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAg
ICAgICAgICBpbml0LnNldChJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgZ2xvYmFsT2JqZWN0LCBudW1iZXJGb3JtYXRQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CiAg
ICAgbV9wbHVyYWxSdWxlc1N0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgIFtdIChjb25zdCBJ
bml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBA
IC0xNzc1LDggKzE3ODMsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2Rl
ZmF1bHRDb2xsYXRvci52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NvbGxhdG9y
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotICAgIHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0
U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3Jt
YXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9sb2NhbGVTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wbHVyYWxSdWxlc1N0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3JlbGF0aXZlVGltZUZvcm1h
dFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYTBjM2I0YWFmMDAwNDZkMmQ5NDE2YjQ5MGJh
NjI1MjQ0ZDk4ZjM2YS4uNjZhM2NiZWU2Mzk1OGE0ZThlZWQwMzhiNTIyMTE5YWFlNjJiYWYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0yOTEsOCArMjkxLDkgQEAgcHVibGljOgogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2Jq
ZWN0LCBJbnRsQ29sbGF0b3I+IG1fZGVmYXVsdENvbGxhdG9yOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NvbGxhdG9yU3RydWN0dXJlOwotICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJlckZvcm1hdFN0cnVjdHVy
ZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRlVGlt
ZUZvcm1hdFN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV9sb2NhbGVTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3JlbGF0aXZlVGltZUZvcm1h
dFN0cnVjdHVyZTsKIApAQCAtNzg2LDggKzc4Nyw5IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUq
IHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICNlbmRpZiAv
LyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1fY29sbGF0b3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0gICAgU3RydWN0dXJl
KiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkg
eyByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1
Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogbG9jYWxlU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9sb2NhbGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwbHVy
YWxSdWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUuZ2V0KHRo
aXMpOyB9CiAgICAgU3RydWN0dXJlKiByZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggYTc1ZWFmY2JkZGY4
MTk1YTY3MGExYzhmMGFiOWFmMWU2ZDU4NWVhNC4uMTE1ZTMwZTAxNGJlZGYzODgxYTIxNTEwN2Ez
NTljNWUyNTEzMWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCkBAIC00ODQsNiArNDg0LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1i
bHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlW
YWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdhc20gbXVsaXQtdmFs
dWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZhbHNlLCBOb3JtYWwsICJF
eHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwgdXNlQmlnSW50
LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJbnQgc3VwcG9ydC4i
KSBcCisgICAgdihCb29sLCB1c2VJbnRsTG9jYWxlLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRo
ZSBJbnRsLkxvY2FsZSBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Q
cm9maWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwg
YXJyYXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9m
aWxlIHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBm
b3JjZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwg
YWx3YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0Yjk2ZGQ1YmM4MDNjZWVlZGNj
Y2E1ZjdmYzM1MzRiMmY3Y2MxYTU5Li5jZGMwOGI2ZDg1ODA5YjQ1ODdjOGY1NDY0MWFiMmY1MmZm
NTc0ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC03NSw2ICs3NSw3
IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIK
ICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgi
CiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxl
cy5oIgogI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKQEAgLTMzOSw2ICszNDAs
NyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjZW5kaWYKICAg
ICAsIGludGxDb2xsYXRvckhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRs
Q29sbGF0b3I+KCkpCiAgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVh
cENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQorICAgICwgaW50bExvY2Fs
ZUhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTG9jYWxlPigpKQogICAg
ICwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsTnVtYmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKICAgICAsIGludGxSZWxh
dGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFJl
bGF0aXZlVGltZUZvcm1hdD4oKSkKQEAgLTE1MTAsNiArMTUxMiw3IEBAIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhjYWxsYmFja0FQSVdyYXBwZXJHbG9iYWxPYmplY3RT
cGFjZSwgY2FsCiAjZW5kaWYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRs
Q29sbGF0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERh
dGVUaW1lRm9ybWF0U3BhY2UsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwg
SW50bERhdGVUaW1lRm9ybWF0KQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKGludGxMb2NhbGVTcGFjZSwgaW50bExvY2FsZUhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bExv
Y2FsZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVy
Rm9ybWF0U3BhY2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1i
ZXJGb3JtYXQpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBs
dXJhbFJ1bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFBs
dXJhbFJ1bGVzKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCmluZGV4IDUyOTI5MzNjMTNkYWZhYzdlNjFhYjhjNTc4NGFlYzUwMTZiMzBiMjcuLjdiM2Qy
ODk0NzdiOWVlNTgxYjYwMGI4NTQ2Nzc0YThlYTdmYzdlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaApAQCAtMTI2LDYgKzEyNiw3IEBAIGNsYXNzIElkZW50aWZpZXI7CiBjbGFzcyBJ
bnRlcnByZXRlcjsKIGNsYXNzIEludGxDb2xsYXRvcjsKIGNsYXNzIEludGxEYXRlVGltZUZvcm1h
dDsKK2NsYXNzIEludGxMb2NhbGU7CiBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwogY2xhc3MgSW50
bFBsdXJhbFJ1bGVzOwogY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdDsKQEAgLTQwMCw2ICs0
MDEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsQ29sbGF0b3JIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hl
YXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxMb2NhbGVIZWFwQ2VsbFR5cGU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlw
ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNI
ZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFJl
bGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKQEAgLTU1Nyw2ICs1NTksNyBAQCBwdWJsaWM6
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3aXRoU2NvcGVTcGFjZSkK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxDb2xsYXRvclNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERhdGVUaW1lRm9y
bWF0U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTG9j
YWxlU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTnVt
YmVyRm9ybWF0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsUGx1cmFsUnVsZXNTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3N2RlMThkYTIwZmQ2MGRiNmVhMzcwYzEzYTMy
NGJhOWFhNGUxMDc3Li5iMDRiZjkxNGZiZGMzMmJhOGE2Yzg1NmI1MDI3ZjJiZTkyZWM0ODI1IDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjAtMDUtMDIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnku
Y29tPgorCisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuTG9jYWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpz
Yy1zdHJlc3MtdGVzdHM6CisgICAgICAgIEFkZCBydW5JbnRsTG9jYWxlRW5hYmxlZC4KKwogMjAy
MC0wNC0zMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJBdXRobl0gUmVxdWlyZSB1c2VyIGdlc3R1cmVzIGZvciBMb2NhbEF1dGhlbnRpY2F0b3IKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMgYi9Ub29scy9TY3Jp
cHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IDY3ZTQ1MTUzOWZiZDA1ZmZlYTA1ZTg1YmE0
NjZkOGI4MDlkZDk5Y2EuLjVmMGY1ZjE0NTczYmQxZjAwNzk4ZjBlOTNmMjRmNTNmMGExYmJlYzkg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKKysrIGIvVG9v
bHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNzE1LDYgKzcxNSwxMCBAQCBkZWYg
cnVuQmlnSW50RW5hYmxlZEJhc2VsaW5lKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAg
ICAgcnVuKCJiaWctaW50LWVuYWJsZWQtYmFzZWxpbmUiLCAiLS11c2VCaWdJbnQ9dHJ1ZSIsICIt
LXVzZURGR0pJVD0wIiwgKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKIGVuZAogCitkZWYg
cnVuSW50bExvY2FsZUVuYWJsZWQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBy
dW4oImludGwtbG9jYWxlLWVuYWJsZWQiLCAiLS11c2VJbnRsTG9jYWxlPXRydWUiICwgKihGVExf
T1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCitlbmQKKwogZGVmIHJ1bklu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRFbmFibGVkKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMp
CiAgICAgcnVuKCJpbnRsLXJlbGF0aXZldGltZWZvcm1hdC1lbmFibGVkIiwgIi0tdXNlSW50bFJl
bGF0aXZlVGltZUZvcm1hdD10cnVlIiAsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVj
aWZpY09wdGlvbnMpKQogZW5kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDM2MzZiYzA5MmQ0M2UwZGE2Y2U0ZWU4MTJiY2QyYzVmM2FmYmRj
OWMuLjYyOWU4NDE2Y2I3NGY3YzQxMmM3NDY1ZTJhODRjOGNmNzhkZGZjYWQgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMjAtMDUtMDIgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgor
CisgICAgICAgIFtFQ01BLTQwMl0gSW1wbGVtZW50IEludGwuTG9jYWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLWxvY2FsZS5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2ludGwtbG9jYWxlLWFzLWludGwtcGFyYW0uanM6
IEFkZGVkLgorCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKyAgICAgICAgRW5hYmxl
IEludGwuTG9jYWxlIGZlYXR1cmUgd2l0aCBmbGFnLgorCisgICAgICAgICogdGVzdDI2Mi9leHBl
Y3RhdGlvbnMueWFtbDoKKyAgICAgICAgTWFyayBrbm93biBmYWlsdXJlcy4KKyAgICAgICAgTm9u
ZSBvZiB0aGVzZSBzaG91bGQgYmUgc3BlY2lmaWMgdG8gSW50bC5Mb2NhbGUuCisKIDIwMjAtMDQt
MzAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIEludmVzdGln
YXRlIHN0cmVzcy92OC1iaXRpbnQzMi1pbmMuanMgZmFpbHVyZSBvbiBtaXBzCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2FsZS1hcy1pbnRsLXBhcmFtLmpzIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1sb2NhbGUtYXMtaW50bC1wYXJhbS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmRmYjc2NzEx
YjFjMzlhNDIyYzI2ODUxNmI2MWRmMjc4OTY0YjIxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1sb2NhbGUtYXMtaW50bC1wYXJhbS5qcwpAQCAtMCwwICsxLDQ1IEBACisv
L0AgcnVuSW50bExvY2FsZUVuYWJsZWQoIi0tdXNlSW50bFJlbGF0aXZlVGltZUZvcm1hdD10cnVl
IikKKworY29uc3QgdGFnID0gJ2phLUhhbnQtS1ItdS1jYS1idWRkaGlzdC1jby1lb3ItaGMtaDEx
LWtmLWxvd2VyLWtuLWZhbHNlLW51LXRoYWknOworY29uc3QgbG9jYWxlID0gbmV3IEludGwuTG9j
YWxlKHRhZyk7CisKK2Z1bmN0aW9uIHNob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZShmdW5jKSB7
CisgICAgY29uc3QgYWN0dWFsID0gZnVuYyhsb2NhbGUpOworICAgIGNvbnN0IGV4cGVjdGVkID0g
ZnVuYyh0YWcpOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisK
K3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiB0YWdPckxvY2FsZS50
b1N0cmluZygpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiBu
ZXcgSW50bC5Mb2NhbGUodGFnT3JMb2NhbGUpLnRvU3RyaW5nKCkpOworCitzaG91bGRCZVNhbWVX
aXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5nZXRDYW5v
bmljYWxMb2NhbGVzKHRhZ09yTG9jYWxlKSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxl
KHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuZ2V0Q2Fub25pY2FsTG9jYWxlcyhb
J2VuJywgdGFnT3JMb2NhbGUsICdmciddKSkpOworCitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2Nh
bGUodGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRM
b2NhbGVzT2YodGFnT3JMb2NhbGUpKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFn
T3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVz
T2YoWydlbicsIHRhZ09yTG9jYWxlLCAnZnInXSkpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxv
Y2FsZSh0YWdPckxvY2FsZSA9PiBuZXcgSW50bC5Db2xsYXRvcih0YWdPckxvY2FsZSkucmVzb2x2
ZWRPcHRpb25zKCkubG9jYWxlKTsKKworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxlKHRhZ09y
TG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKHRhZ09yTG9jYWxlKSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxlKHRhZ09y
TG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKFsnZW4nLCB0YWdPckxvY2FsZSwgJ2ZyJ10pKSk7CitzaG91bGRCZVNhbWVXaXRoVGFn
T3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQodGFnT3JMb2Nh
bGUpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSk7CisKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxv
Y2FsZSh0YWdPckxvY2FsZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLk51bWJlckZvcm1hdC5zdXBw
b3J0ZWRMb2NhbGVzT2YodGFnT3JMb2NhbGUpKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2Nh
bGUodGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9y
dGVkTG9jYWxlc09mKFsnZW4nLCB0YWdPckxvY2FsZSwgJ2ZyJ10pKSk7CitzaG91bGRCZVNhbWVX
aXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gbmV3IEludGwuTnVtYmVyRm9ybWF0KHRhZ09y
TG9jYWxlKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUpOworCitzaG91bGRCZVNhbWVXaXRoVGFn
T3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5QbHVyYWxSdWxlcy5z
dXBwb3J0ZWRMb2NhbGVzT2YodGFnT3JMb2NhbGUpKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JM
b2NhbGUodGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5QbHVyYWxSdWxlcy5zdXBw
b3J0ZWRMb2NhbGVzT2YoWydlbicsIHRhZ09yTG9jYWxlLCAnZnInXSkpKTsKK3Nob3VsZEJlU2Ft
ZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiBuZXcgSW50bC5QbHVyYWxSdWxlcyh0YWdP
ckxvY2FsZSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlKTsKKworc2hvdWxkQmVTYW1lV2l0aFRh
Z09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZih0YWdPckxvY2FsZSkpKTsKK3Nob3VsZEJlU2FtZVdp
dGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoWydlbicsIHRhZ09yTG9jYWxlLCAnZnInXSkp
KTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiBuZXcgSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQodGFnT3JMb2NhbGUpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSk7
CisKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiBbM10udG9Mb2Nh
bGVTdHJpbmcodGFnT3JMb2NhbGUpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdP
ckxvY2FsZSA9PiAzbi50b0xvY2FsZVN0cmluZyh0YWdPckxvY2FsZSkpOworc2hvdWxkQmVTYW1l
V2l0aFRhZ09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IG5ldyBEYXRlKDApLnRvTG9jYWxlU3RyaW5n
KHRhZ09yTG9jYWxlLCB7IHRpbWVab25lOiAnVVRDJyB9KSk7CitzaG91bGRCZVNhbWVXaXRoVGFn
T3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gMy4udG9Mb2NhbGVTdHJpbmcodGFnT3JMb2NhbGUpKTsK
K3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiAnw6QnLmxvY2FsZUNv
bXBhcmUoJ2EnLCB0YWdPckxvY2FsZSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxlKHRh
Z09yTG9jYWxlID0+ICfDhicudG9Mb2NhbGVMb3dlckNhc2UodGFnT3JMb2NhbGUpKTsKK3Nob3Vs
ZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiAnw6YnLnRvTG9jYWxlVXBwZXJD
YXNlKHRhZ09yTG9jYWxlKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2Fs
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbG9jYWxlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MWZmYTVm
NjdjNjI1OTM2YjMyYmYyZjk2ZTYwNjhhNDBlNTc2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLWxvY2FsZS5qcwpAQCAtMCwwICsxLDIyNiBAQAorLy9AIHJ1bkludGxM
b2NhbGVFbmFibGVkCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBl
Y3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91
bGROb3RUaHJvdyhmdW5jKSB7CisgICAgZnVuYygpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJv
dyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKwor
ICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKK30KKworc2hvdWxkQmUoSW50
bC5Mb2NhbGUgaW5zdGFuY2VvZiBGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShJbnRsLkxvY2Fs
ZS5sZW5ndGgsIDEpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLkxvY2FsZSwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuTG9jYWxlLCAncHJvdG90eXBlJykuZW51
bWVyYWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLkxvY2FsZSwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSwgZmFsc2UpOworCitzaG91
bGRUaHJvdygoKSA9PiBJbnRsLkxvY2FsZSgpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5Mb2NhbGUuY2FsbCh7fSksIFR5cGVFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBJbnRsLkxvY2FsZSgpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IElu
dGwuTG9jYWxlKDUpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9j
YWxlKCcnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUo
J2EnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2Fi
Y2RlZmdoaWonKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2Nh
bGUoJyMkJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxl
KCdlbi1ALWFiYycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxv
Y2FsZSgnZW4tdScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxv
Y2FsZSgnZW4tdS1rbi10cnVlLXUta28tdHJ1ZScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4teCcpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4tKicpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4tJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbi0tVVMnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoWydlbicsICdqYSddKSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoe30pLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSh7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSB9KSwgRXJyb3IpOworc2hvdWxkTm90VGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKHsg
dG9TdHJpbmcoKSB7IHJldHVybiAnZW4nOyB9IH0pKTsKKworc2hvdWxkVGhyb3coKCkgPT4gbmV3
IEludGwuTG9jYWxlKCdlbicsIG51bGwpLCBUeXBlRXJyb3IpOworCitzaG91bGRCZShuZXcgSW50
bC5Mb2NhbGUoJ2VuJykgaW5zdGFuY2VvZiBJbnRsLkxvY2FsZSwgdHJ1ZSk7CisKK3sKKyAgICBj
bGFzcyBEZXJpdmVkTG9jYWxlIGV4dGVuZHMgSW50bC5Mb2NhbGUge30KKworICAgIGNvbnN0IGRs
ID0gbmV3IERlcml2ZWRMb2NhbGUoJ2VuJyk7CisgICAgc2hvdWxkQmUoZGwgaW5zdGFuY2VvZiBE
ZXJpdmVkTG9jYWxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShkbCBpbnN0YW5jZW9mIEludGwuTG9j
YWxlLCB0cnVlKTsKKyAgICBzaG91bGRCZShkbC5tYXhpbWl6ZSwgSW50bC5Mb2NhbGUucHJvdG90
eXBlLm1heGltaXplKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoZGwpLCBE
ZXJpdmVkTG9jYWxlLnByb3RvdHlwZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldFByb3RvdHlw
ZU9mKERlcml2ZWRMb2NhbGUucHJvdG90eXBlKSwgSW50bC5Mb2NhbGUucHJvdG90eXBlKTsKK30K
KworY29uc3QgdmFsaWRMYW5ndWFnZVRhZ3MgPSBbCisgICAgJ2RlJywgLy8gSVNPIDYzOSBsYW5n
dWFnZSBjb2RlCisgICAgJ2RlLURFJywgLy8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAg
ICdERS1kZScsIC8vIHRhZ3MgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAnY21uJywgLy8gSVNP
IDYzOSBsYW5ndWFnZSBjb2RlCisgICAgJ2Ntbi1IYW5zJywgLy8gKyBzY3JpcHQgY29kZQorICAg
ICdDTU4taEFOUycsIC8vIHRhZ3MgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAnY21uLWhhbnMt
Y24nLCAvLyArIElTTyAzMTY2LTEgY291bnRyeSBjb2RlCisgICAgJ2VzLTQxOScsIC8vICsgVU4g
TS40OSByZWdpb24gY29kZQorICAgICdlcy00MTktdS1udS1sYXRuLWN1LWJvYicsIC8vICsgVW5p
Y29kZSBsb2NhbGUgZXh0ZW5zaW9uIHNlcXVlbmNlCisgICAgJ2kta2xpbmdvbicsIC8vIGdyYW5k
ZmF0aGVyZWQgdGFnCisgICAgJ2Ntbi1oYW5zLWNuLXQtY2EtdS1jYS14LXQtdScsIC8vIHNpbmds
ZXRvbiBzdWJ0YWdzIGNhbiBhbHNvIGJlIHVzZWQgYXMgcHJpdmF0ZSB1c2Ugc3VidGFncworICAg
ICdlbm9jaGlhbi1lbm9jaGlhbicsIC8vIGxhbmd1YWdlIGFuZCB2YXJpYW50IHN1YnRhZ3MgbWF5
IGJlIHRoZSBzYW1lCisgICAgJ2RlLWdyZWdvcnktdS1jYS1ncmVnb3J5JywgLy8gdmFyaWFudCBh
bmQgZXh0ZW5zaW9uIHN1YnRhZ3MgbWF5IGJlIHRoZSBzYW1lCisgICAgJ2FhLWEtZm9vLXgtYS1m
b28tYmFyJywgLy8gdmFyaWFudCBzdWJ0YWdzIGNhbiBhbHNvIGJlIHVzZWQgYXMgcHJpdmF0ZSB1
c2Ugc3VidGFncworICAgICd4LWVuLVVTLTEyMzQ1JywgLy8gYW55dGhpbmcgZ29lcyBpbiBwcml2
YXRlIHVzZSB0YWdzCisgICAgJ3gtMTIzNDUtMTIzNDUtZW4tVVMnLAorICAgICd4LWVuLVVTLTEy
MzQ1LTEyMzQ1JywKKyAgICAneC1lbi11LWZvbycsCisgICAgJ3gtZW4tdS1mb28tdS1iYXInCitd
OworZm9yIChsZXQgdmFsaWRMYW5ndWFnZVRhZyBvZiB2YWxpZExhbmd1YWdlVGFncykKKyAgICBz
aG91bGROb3RUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUodmFsaWRMYW5ndWFnZVRhZykpOwor
CitzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50bC5Mb2NhbGUucHJvdG90eXBlKSwg
T2JqZWN0LnByb3RvdHlwZSk7CisKK3Nob3VsZEJlKEludGwuTG9jYWxlLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciwgSW50bC5Mb2NhbGUpOworCitzaG91bGRCZShJbnRsLkxvY2FsZS5wcm90b3R5cGVb
U3ltYm9sLnRvU3RyaW5nVGFnXSwgJ0ludGwuTG9jYWxlJyk7CitzaG91bGRCZShPYmplY3QucHJv
dG90eXBlLnRvU3RyaW5nLmNhbGwoSW50bC5Mb2NhbGUucHJvdG90eXBlKSwgJ1tvYmplY3QgSW50
bC5Mb2NhbGVdJyk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKElu
dGwuTG9jYWxlLnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnKS53cml0YWJsZSwgZmFsc2Up
Oworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkxvY2FsZS5w
cm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hvdWxk
QmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkxvY2FsZS5wcm90b3R5cGUs
IFN5bWJvbC50b1N0cmluZ1RhZykuY29uZmlndXJhYmxlLCB0cnVlKTsKKworc2hvdWxkQmUoSW50
bC5Mb2NhbGUucHJvdG90eXBlLm1heGltaXplLmxlbmd0aCwgMCk7CitzaG91bGRCZShJbnRsLkxv
Y2FsZS5wcm90b3R5cGUubWluaW1pemUubGVuZ3RoLCAwKTsKK3Nob3VsZEJlKEludGwuTG9jYWxl
LnByb3RvdHlwZS50b1N0cmluZy5sZW5ndGgsIDApOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5M
b2NhbGUucHJvdG90eXBlLm1heGltaXplLmNhbGwoeyB0b1N0cmluZygpIHsgcmV0dXJuICdlbic7
IH0gfSksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkxvY2FsZS5wcm90b3R5
cGUubWluaW1pemUuY2FsbCh7IHRvU3RyaW5nKCkgeyByZXR1cm4gJ2VuJzsgfSB9KSwgVHlwZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS50b1N0cmluZy5j
YWxsKHsgdG9TdHJpbmcoKSB7IHJldHVybiAnZW4nOyB9IH0pLCBUeXBlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4gSW50bC5Mb2NhbGUucHJvdG90eXBlLmJhc2VOYW1lLCBUeXBlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyLCBUeXBlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdCwg
VHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xs
YXRpb24sIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkxvY2FsZS5wcm90b3R5
cGUuaG91ckN5Y2xlLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUu
cHJvdG90eXBlLm51bWVyaWMsIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkxv
Y2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4gSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlLCBUeXBlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4gSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdCwgVHlwZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5yZWdpb24sIFR5cGVFcnJvcik7
CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nKS5tYXhpbWl6ZSgpLCAnZW4tTGF0bi1V
UycpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi1MYXRuLVVTJykubWF4aW1pemUoKSwg
J2VuLUxhdG4tVVMnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tdS1udS10aGFpLXgt
Zm9vJykubWF4aW1pemUoKSwgJ2VuLUxhdG4tVVMtdS1udS10aGFpLXgtZm9vJyk7CitzaG91bGRC
ZShuZXcgSW50bC5Mb2NhbGUoJ2phJykubWF4aW1pemUoKSwgJ2phLUpwYW4tSlAnKTsKK3Nob3Vs
ZEJlKG5ldyBJbnRsLkxvY2FsZSgnemgnKS5tYXhpbWl6ZSgpLCAnemgtSGFucy1DTicpOworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCd6aC1IYW50JykubWF4aW1pemUoKSwgJ3poLUhhbnQtVFcn
KTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnemgnLCB7IHNjcmlwdDogJ0hhbnQnIH0pLm1h
eGltaXplKCksICd6aC1IYW50LVRXJyk7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4n
KS5taW5pbWl6ZSgpLCAnZW4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1V
UycpLm1pbmltaXplKCksICdlbicpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi1MYXRu
LVVTLXUtbnUtdGhhaS14LWZvbycpLm1pbmltaXplKCksICdlbi11LW51LXRoYWkteC1mb28nKTsK
K3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnamEtSnBhbi1KUCcpLm1pbmltaXplKCksICdqYScp
Oworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCd6aC1IYW5zLUNOJykubWluaW1pemUoKSwgJ3po
Jyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ3poLUhhbnQtVFcnKS5taW5pbWl6ZSgpLCAn
emgtVFcnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnemgnLCB7IHNjcmlwdDogJ0hhbnQn
LCByZWdpb246ICdUVycgfSkubWluaW1pemUoKSwgJ3poLVRXJyk7CisKK3Nob3VsZEJlKG5ldyBJ
bnRsLkxvY2FsZSgnZW4nKS50b1N0cmluZygpLCAnZW4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxv
Y2FsZSgnRW4tbGFUbi11cy12YXJpQW50LWZPT2Jhci0xYWJjLVUta24tdFJ1ZS1BLWFhLWFhYS14
LVJFU0VSVkVEJykudG9TdHJpbmcoKSwgJ2VuLUxhdG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1h
LWFhLWFhYS11LWtuLXRydWUteC1yZXNlcnZlZCcpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxl
KCdjZWwtZ2F1bGlzaCcsIHsgc2NyaXB0OiAnQXJhYicsIG51bWJlcmluZ1N5c3RlbTogJ2d1anIn
IH0pLnRvU3RyaW5nKCksICd4dGctQXJhYi11LW51LWd1anIteC1jZWwtZ2F1bGlzaCcpOworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi1MYXRuLVVTLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJr
LWhjLWgxMi1rZi11cHBlci1rbi1udS1sYXRuJykudG9TdHJpbmcoKSwgJ2VuLUxhdG4tVVMtdS1j
YS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDEyLWtmLXVwcGVyLWtuLXRydWUtbnUtbGF0bicpOwor
Citjb25zdCBvcHRpb25zID0geworICAgIGNhbGVuZGFyOiAnYnVkZGhpc3QnLAorICAgIGNhc2VG
aXJzdDogJ2xvd2VyJywKKyAgICBjb2xsYXRpb246ICdlb3InLAorICAgIGhvdXJDeWNsZTogJ2gx
MScsCisgICAgbnVtZXJpYzogZmFsc2UsCisgICAgbnVtYmVyaW5nU3lzdGVtOiAndGhhaScsCisg
ICAgbGFuZ3VhZ2U6ICdqYScsCisgICAgc2NyaXB0OiAnSGFudCcsCisgICAgcmVnaW9uOiAnS1In
Cit9OworY29uc3QgZXhwZWN0ZWQgPSAnamEtSGFudC1LUi11LWNhLWJ1ZGRoaXN0LWNvLWVvci1o
Yy1oMTEta2YtbG93ZXIta24tZmFsc2UtbnUtdGhhaSc7IAorc2hvdWxkQmUobmV3IEludGwuTG9j
YWxlKCdlbicsIG9wdGlvbnMpLnRvU3RyaW5nKCksIGV4cGVjdGVkKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLkxvY2FsZSgnZW4tTGF0bi1VUy11LWNhLWdyZWdvcnktY28tcGhvbmViay1oYy1oMTIta2Yt
dXBwZXIta24tbnUtbGF0bicsIG9wdGlvbnMpLnRvU3RyaW5nKCksIGV4cGVjdGVkKTsKKworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicpLmJhc2VOYW1lLCAnZW4nKTsKK3Nob3VsZEJlKG5l
dyBJbnRsLkxvY2FsZSgnZW4tTGF0bicpLmJhc2VOYW1lLCAnZW4tTGF0bicpOworc2hvdWxkQmUo
bmV3IEludGwuTG9jYWxlKCdlbi1VUycpLmJhc2VOYW1lLCAnZW4tVVMnKTsKK3Nob3VsZEJlKG5l
dyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUycpLmJhc2VOYW1lLCAnZW4tTGF0bi1VUycpOworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi12YXJpYW50LXUta24nKS5iYXNlTmFtZSwgJ2VuLXZh
cmlhbnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi12YXJpYW50LXUta24n
KS5iYXNlTmFtZSwgJ2VuLUxhdG4tdmFyaWFudCcpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxl
KCdlbi12YXJpYW50LXUta24nLCB7IHNjcmlwdDogJ0xhdG4nIH0pLmJhc2VOYW1lLCAnZW4tTGF0
bi12YXJpYW50Jyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLVVTLXZhcmlhbnQtdS1r
bicpLmJhc2VOYW1lLCAnZW4tVVMtdmFyaWFudCcpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxl
KCdlbi12YXJpYW50LXUta24nLCB7IHJlZ2lvbjogJ1VTJyB9KS5iYXNlTmFtZSwgJ2VuLVVTLXZh
cmlhbnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUy12YXJpYW50LXUt
a24nKS5iYXNlTmFtZSwgJ2VuLUxhdG4tVVMtdmFyaWFudCcpOworc2hvdWxkQmUobmV3IEludGwu
TG9jYWxlKCdlbi12YXJpYW50LXUta24nLCB7IHNjcmlwdDogJ0xhdG4nLCByZWdpb246ICdVUycg
fSkuYmFzZU5hbWUsICdlbi1MYXRuLVVTLXZhcmlhbnQnKTsKKworc2hvdWxkQmUobmV3IEludGwu
TG9jYWxlKCdlbicpLmNhbGVuZGFyLCB1bmRlZmluZWQpOworc2hvdWxkQmUobmV3IEludGwuTG9j
YWxlKCdlbi11LWNhLWphcGFuZXNlJykuY2FsZW5kYXIsICdqYXBhbmVzZScpOworc2hvdWxkQmUo
bmV3IEludGwuTG9jYWxlKCdlbicsIHsgY2FsZW5kYXI6ICdqYXBhbmVzZScgfSkuY2FsZW5kYXIs
ICdqYXBhbmVzZScpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWNhLWphcGFuZXNl
JywgeyBjYWxlbmRhcjogJ2RhbmdpJyB9KS5jYWxlbmRhciwgJ2RhbmdpJyk7CitzaG91bGRCZShu
ZXcgSW50bC5Mb2NhbGUoJ2VuLXUtY2EtaXNsYW1pY2MnKS5jYWxlbmRhciwgJ2lzbGFtaWMtY2l2
aWwnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IGNhbGVuZGFyOiAnaXNsYW1p
Y2MnIH0pLmNhbGVuZGFyLCAnaXNsYW1pYy1jaXZpbCcpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3
IEludGwuTG9jYWxlKCdlbicsIHsgY2FsZW5kYXI6IHsgdG9TdHJpbmcoKSB7IHRocm93IG5ldyBF
cnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2Fs
ZSgnZW4nLCB7IGNhbGVuZGFyOiAnbmcnIH0pLCBSYW5nZUVycm9yKTsKKworc2hvdWxkQmUobmV3
IEludGwuTG9jYWxlKCdlbicpLmNvbGxhdGlvbiwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLkxvY2FsZSgnZW4tdS1jby1waG9uZWJrJykuY29sbGF0aW9uLCAncGhvbmViaycpOworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicsIHsgY29sbGF0aW9uOiAncGhvbmViaycgfSkuY29s
bGF0aW9uLCAncGhvbmViaycpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWNvLXBo
b25lYmsnLCB7IGNvbGxhdGlvbjogJ2VvcicgfSkuY29sbGF0aW9uLCAnZW9yJyk7CitzaG91bGRU
aHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBjb2xsYXRpb246IHsgdG9TdHJpbmco
KSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IGNvbGxhdGlvbjogJ25nJyB9KSwgUmFuZ2VFcnJvcik7
CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nKS5jYXNlRmlyc3QsIHVuZGVmaW5lZCk7
CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUta2YtdXBwZXInKS5jYXNlRmlyc3QsICd1
cHBlcicpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicsIHsgY2FzZUZpcnN0OiAndXBw
ZXInIH0pLmNhc2VGaXJzdCwgJ3VwcGVyJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2Vu
LXUta2YtdXBwZXInLCB7IGNhc2VGaXJzdDogJ2xvd2VyJyB9KS5jYXNlRmlyc3QsICdsb3dlcicp
Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgY2FzZUZpcnN0OiB7
IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pLCBFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBjYXNlRmlyc3Q6ICdiYWQnIH0pLCBS
YW5nZUVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicpLm51bWVyaWMsIGZh
bHNlKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tdS1rbicpLm51bWVyaWMsIHRydWUp
Oworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWtuLXRydWUnKS5udW1lcmljLCB0cnVl
KTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IG51bWVyaWM6IHRydWUgfSkubnVt
ZXJpYywgdHJ1ZSk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUta24nLCB7IG51bWVy
aWM6IGZhbHNlIH0pLm51bWVyaWMsIGZhbHNlKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgn
ZW4tdS1rbi10cnVlJywgeyBudW1lcmljOiBmYWxzZSB9KS5udW1lcmljLCBmYWxzZSk7CitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBnZXQgbnVtZXJpYygpIHsgdGhy
b3cgbmV3IEVycm9yKCk7IH0gfSksIEVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuTG9jYWxl
KCdlbicpLmhvdXJDeWNsZSwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgn
ZW4tdS1oYy1oMTEnKS5ob3VyQ3ljbGUsICdoMTEnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2Fs
ZSgnZW4nLCB7IGhvdXJDeWNsZTogJ2gxMScgfSkuaG91ckN5Y2xlLCAnaDExJyk7CitzaG91bGRC
ZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUtaGMtaDExJywgeyBob3VyQ3ljbGU6ICdoMjMnIH0pLmhv
dXJDeWNsZSwgJ2gyMycpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbics
IHsgaG91ckN5Y2xlOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pLCBF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBob3VyQ3lj
bGU6ICdiYWQnIH0pLCBSYW5nZUVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdl
bicpLm51bWJlcmluZ1N5c3RlbSwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2Fs
ZSgnZW4tdS1udS1oYW5pZGVjJykubnVtYmVyaW5nU3lzdGVtLCAnaGFuaWRlYycpOworc2hvdWxk
QmUobmV3IEludGwuTG9jYWxlKCdlbicsIHsgbnVtYmVyaW5nU3lzdGVtOiAnaGFuaWRlYycgfSku
bnVtYmVyaW5nU3lzdGVtLCAnaGFuaWRlYycpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdl
bi11LW51LWhhbmlkZWMnLCB7IG51bWJlcmluZ1N5c3RlbTogJ2d1anInIH0pLm51bWJlcmluZ1N5
c3RlbSwgJ2d1anInKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7
IG51bWJlcmluZ1N5c3RlbTogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9
KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgbnVt
YmVyaW5nU3lzdGVtOiAnbmcnIH0pLCBSYW5nZUVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwu
TG9jYWxlKCdlbi1MYXRuLVVTJykubGFuZ3VhZ2UsICdlbicpOworc2hvdWxkQmUobmV3IEludGwu
TG9jYWxlKCdlbicsIHsgbGFuZ3VhZ2U6ICdhcicgfSkubGFuZ3VhZ2UsICdhcicpOworc2hvdWxk
QmUobmV3IEludGwuTG9jYWxlKCdjZWwtZ2F1bGlzaCcpLmxhbmd1YWdlLCAneHRnJyk7CitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBsYW5ndWFnZTogeyB0b1N0cmlu
ZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgbGFuZ3VhZ2U6ICdmYWlsJyB9KSwgUmFuZ2VFcnJv
cik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUycpLnNjcmlwdCwgJ0xh
dG4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tVVMnKS5zY3JpcHQsIHVuZGVmaW5l
ZCk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxhdG4nLCB7IHNjcmlwdDogJ0tvcmUn
IH0pLnNjcmlwdCwgJ0tvcmUnKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgn
ZW4nLCB7IHNjcmlwdDogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwg
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgc2NyaXB0
OiAnYmFkJyB9KSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4t
TGF0bi1VUycpLnJlZ2lvbiwgJ1VTJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxh
dG4nKS5yZWdpb24sIHVuZGVmaW5lZCk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLVVT
JywgeyByZWdpb246ICdLUicgfSkucmVnaW9uLCAnS1InKTsKK3Nob3VsZFRocm93KCgpID0+IG5l
dyBJbnRsLkxvY2FsZSgnZW4nLCB7IHJlZ2lvbjogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVy
cm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxl
KCdlbicsIHsgcmVnaW9uOiAnZmFpbCcgfSksIFJhbmdlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmlu
ZGV4IGIxNTQ4MjU3NThjNjhjYmQzNGM2ZjljMTEzZjFjODM4MTQ4YjQ0NDUuLjg4NWEyZTYzNDdk
YzFlZWY4YTc0ZGUyMTcyNDVlYjAyYTNlMDI1MGUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTIsNiAr
Miw3IEBACiAtLS0KIGZsYWdzOgogICBCaWdJbnQ6IHVzZUJpZ0ludAorICBJbnRsLkxvY2FsZTog
dXNlSW50bExvY2FsZQogICBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDogdXNlSW50bFJlbGF0aXZl
VGltZUZvcm1hdAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHVibGlj
OiB1c2VQdWJsaWNDbGFzc0ZpZWxkcwpAQCAtMzAsNyArMzEsNiBAQCBza2lwOgogICAgIC0gSW50
bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRzCiAgICAgLSBJbnRsLkRpc3Bs
YXlOYW1lcwogICAgIC0gSW50bC5MaXN0Rm9ybWF0Ci0gICAgLSBJbnRsLkxvY2FsZQogICAgIC0g
SW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAogICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0aHM6
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3Rz
L3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggMjk5NjI1MTNhNzQwYmY3MDFmMDhjN2Y4
ZTRlNDA1NTI1Mzg5MjYxNi4uYTUwNmUxNDBiYzEwODJjNDU4MDY3MWNiMzYyYWMxZTQ2MTRhOWYw
NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pT
VGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtMTgzOSw2ICsxODM5LDU3IEBAIHRl
c3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExvY2FsZXMvdW5pY29kZS1leHQtY2Fub25pY2Fs
aXplLXllcy10by10cnVlLmpzOgogdGVzdC9pbnRsNDAyL0ludGwvZ2V0Q2Fub25pY2FsTG9jYWxl
cy91bmljb2RlLWV4dC1rZXktd2l0aC1kaWdpdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
YSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQg
YWxsJwordGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1hcHBseS1vcHRpb25zLWNhbm9u
aWNhbGl6ZXMtdHdpY2UuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCq3J1LUFybW4tU1XCuywgwqtydS1Bcm1uLUFNwrspIHRvIGJlIHRydWUnCisgIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtydS1Bcm1uLVNV
wrssIMKrcnUtQXJtbi1BTcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL0xvY2FsZS9jb25z
dHJ1Y3Rvci1ub24taWFuYS1jYW5vbi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3
IEludGwuTG9jYWxlKCJtbyIpLm1heGltaXplKCkudG9TdHJpbmcoKSByZXR1cm5zICJyby1MYXRu
LVJPIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtyb8K7LCDCq3JvLUxhdG4tUk/CuykgdG8gYmUgdHJ1
ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgibW8iKS5t
YXhpbWl6ZSgpLnRvU3RyaW5nKCkgcmV0dXJucyAicm8tTGF0bi1STyIgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrcm/Cuywgwqtyby1MYXRuLVJPwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTG9j
YWxlL2NvbnN0cnVjdG9yLW9wdGlvbnMtbGFuZ3VhZ2UtdmFsaWQtdW5kZWZpbmVkLmpzOgorICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9y
LW9wdGlvbnMtbGFuZ3VhZ2UtdmFsaWQuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhy
b3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFu
Z2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
K3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itb3B0aW9ucy1udW1lcmljLXVuZGVmaW5l
ZC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJlbi11LWtu
LXRydWUiLCB7bnVtZXJpYzogdW5kZWZpbmVkfSkudG9TdHJpbmcoKSByZXR1cm5zICJlbi11LWtu
IiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtuLXRydWXCuywgwqtlbi11LWtuwrspIHRvIGJl
IHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoImVu
LXUta24tdHJ1ZSIsIHtudW1lcmljOiB1bmRlZmluZWR9KS50b1N0cmluZygpIHJldHVybnMgImVu
LXUta24iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUta27Cuykg
dG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itb3B0aW9ucy1udW1l
cmljLXZhbGlkLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUo
ImVuIiwge251bWVyaWM6IHRydWV9KS50b1N0cmluZygpIHJldHVybnMgInRydWUiIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUta27CuykgdG8gYmUgdHJ1ZScKKyAg
c3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgiZW4iLCB7bnVtZXJp
YzogdHJ1ZX0pLnRvU3RyaW5nKCkgcmV0dXJucyAidHJ1ZSIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
ZW4tdS1rbi10cnVlwrssIMKrZW4tdS1rbsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL0xv
Y2FsZS9jb25zdHJ1Y3Rvci1vcHRpb25zLXJlZ2lvbi12YWxpZC5qczoKKyAgZGVmYXVsdDogIlRl
c3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCdlbicsIHtyZWdpb246IFwiNTU0XCJ9KS50b1N0
cmluZygpIHJldHVybnMgXCJlbi1OWlwiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLTU1NMK7LCDC
q2VuLU5awrspIHRvIGJlIHRydWUiCisgIHN0cmljdCBtb2RlOiAiVGVzdDI2MkVycm9yOiBuZXcg
SW50bC5Mb2NhbGUoJ2VuJywge3JlZ2lvbjogXCI1NTRcIn0pLnRvU3RyaW5nKCkgcmV0dXJucyBc
ImVuLU5aXCIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tNTU0wrssIMKrZW4tTlrCuykgdG8gYmUg
dHJ1ZSIKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3ItcGFyc2UtdHdpY2UuanM6Cisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJv
d24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0
b3ItdGFnLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoInNs
LVJPWkFKLUJJU0tFLTE5OTQiKS50b1N0cmluZygpIHJldHVybnMgInNsLTE5OTQtYmlza2Utcm96
YWoiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3NsLXJvemFqLWJpc2tlLTE5OTTCuywgwqtzbC0xOTk0
LWJpc2tlLXJvemFqwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBuZXcgSW50bC5Mb2NhbGUoInNsLVJPWkFKLUJJU0tFLTE5OTQiKS50b1N0cmluZygpIHJldHVy
bnMgInNsLTE5OTQtYmlza2Utcm96YWoiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3NsLXJvemFqLWJp
c2tlLTE5OTTCuywgwqtzbC0xOTk0LWJpc2tlLXJvemFqwrspIHRvIGJlIHRydWUnCit0ZXN0L2lu
dGw0MDIvTG9jYWxlL2V4dGVuc2lvbnMtZ3JhbmRmYXRoZXJlZC5qczoKKyAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAyL0xvY2FsZS9leHRlbnNpb25zLXByaXZhdGUuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0
aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvZ2V0dGVy
cy1ncmFuZGZhdGhlcmVkLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBh
IFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBh
bGwnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3Ig
dG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2lu
dGw0MDIvTG9jYWxlL2dldHRlcnMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFNhbWVWYWx1ZSjCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIz
LWtmLXRydWUta24tZmFsc2UtbnUtbGF0bsK7LCDCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNv
LXBob25lYmstaGMtaDIzLWtmLWtuLWZhbHNlLW51LWxhdG7CuykgdG8gYmUgdHJ1ZScKKyAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2RlLUxhdG4tREUt
dS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLXRydWUta24tZmFsc2UtbnUtbGF0bsK7
LCDCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLWtuLWZhbHNl
LW51LWxhdG7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvaW52YWxpZC10YWct
dGhyb3dzLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuby1ueW4gaXMgYW4gaW52YWxp
ZCB0YWcgdmFsdWUgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
bm8tbnluIGlzIGFuIGludmFsaWQgdGFnIHZhbHVlIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBi
ZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQw
Mi9Mb2NhbGUvbGlrZWx5LXN1YnRhZ3MtZ3JhbmRmYXRoZXJlZC5qczoKKyAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAyL0xvY2FsZS9saWtlbHktc3VidGFncy5qczoKKyAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogImVuLXUtY28iLm1heGltaXplKCkgc2hvdWxkIGJlICJl
bi1MYXRuLVVTLXUtY28iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLUxhdG4tVVMtdS1jby15ZXPC
uywgwqtlbi1MYXRuLVVTLXUtY2/CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6ICJlbi11LWNvIi5tYXhpbWl6ZSgpIHNob3VsZCBiZSAiZW4tTGF0bi1VUy11LWNv
IiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi1MYXRuLVVTLXUtY28teWVzwrssIMKrZW4tTGF0bi1V
Uy11LWNvwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTG9jYWxlL3Byb3RvdHlwZS9taW5p
bWl6ZS9yZW1vdmluZy1saWtlbHktc3VidGFncy1maXJzdC1hZGRzLWxpa2VseS1zdWJ0YWdzLmpz
OgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAidW5kIi5taW5pbWl6ZSgpIHNob3VsZCBiZSAi
ZW4iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUtdmEtcG9zaXjCuywgwqtlbsK7KSB0byBiZSB0
cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogInVuZCIubWluaW1pemUoKSBzaG91
bGQgYmUgImVuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LXZhLXBvc2l4wrssIMKrZW7Cuykg
dG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3Iv
Y29uc3RydWN0b3IvbG9jYWxlcy12YWxpZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
R3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398585</attachid>
            <date>2020-05-05 21:25:49 -0700</date>
            <delta_ts>2020-05-05 23:01:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209772-20200505212548.patch</filename>
            <type>text/plain</type>
            <size>103146</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZTI2ZmUwMGFiYTM0YWI1MWRlMzkwZTM2N2JjMjE0ZTFjMDRlNjY3Li5lNjUzMDI4ZDE5ODk1NTIx
MjgzYjhlYTIxNWEyNmE4NWFiZDY0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MyBAQAorMjAyMC0wNS0wMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50bC5Mb2NhbGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBTYWFtIEJhcmF0aS4KKworICAgICAgICBU
aGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHJlY2VudCBFQ01BLTQwMiBmZWF0dXJlIEludGwuTG9j
YWxlLgorCisgICAgICAgIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSB3cmFwcGVyIGNsYXNzIGZvciBh
bGwgdGhlIHBpZWNlcyBvZiB1bG9jLmggdGhhdCBFQ01BLTQwMiBjYXJlcyBhYm91dC4KKyAgICAg
ICAgKElmIHdlIHVzZWQgdGhlIEMrKyBBUEksIHRoZXJlJ3MgYSBMb2NhbGVCdWlsZGVyIHRoYXQg
d291bGQgbWFrZSB0aGlzIG11Y2ggZWFzaWVyLCBidXQgaW4gc3RpY2tpbmcgdG8gdGhlIEMgQVBJ
LAorICAgICAgICBpdCdzIGJhc2ljYWxseSBhbiBvYmplY3QgdGhhdCBoYXMgYW4gSUNVIGxvY2Fs
ZUlEIGFzIGRhdGEgYW5kIHVsb2NfKiBmdW5jdGlvbnMgYXMgbWV0aG9kcyAvIGdldHRlcnMuCisg
ICAgICAgIEZ1cnRoZXJtb3JlLCB0aGVyZSdzIG5vIHdheSB0byBtb2RpZnkgc2FpZCBkYXRhLCBz
byBldmVyeSBtZXRob2QgLyBnZXR0ZXIgY2FuIGJlIGxhenkgYW5kIGNhY2hlIGl0cyByZXN1bHQu
KQorCisgICAgICAgIFVzYWdlIGV4YW1wbGU6CisgICAgICAgICAgPj4+IGxvY2FsZSA9IG5ldyBJ
bnRsLkxvY2FsZSgnamEnLCB7IHJlZ2lvbjogJ0pQJywgY2FsZW5kYXI6ICdqYXBhbmVzZScsIG51
bWVyaWM6IGZhbHNlIH0pCisgICAgICAgICAgImphLUpQLXUtY2EtamFwYW5lc2Uta24tZmFsc2Ui
CisgICAgICAgICAgPj4+IGxvY2FsZS5iYXNlTmFtZQorICAgICAgICAgICJqYS1KUCIKKworICAg
ICAgICBJbnRsLkxvY2FsZSBjYW4gYmUgdXNlZCBhbnl3aGVyZSB0aGF0IEludGwgQVBJcyBhY2Nl
cHQgbG9jYWxlIHN0cmluZ3MgYXMgaW5wdXQgcGFyYW1ldGVycywKKyAgICAgICAgYW5kIGlzIG1v
cmVvdmVyIGhvcGVkIHRvIGJlIHRoZSBjbGFzcyBieSB3aGljaCBmdXR1cmUgV2ViIEFQSXMgd2ls
bCBoYW5kbGUgdGhlIGN1cnJlbnQgbG9jYWxlLgorCisgICAgICAgIFRoaXMgZmVhdHVyZSBpcyBy
dW50aW1lLWd1YXJkZWQgYnkgdGhlIGB1c2VJbnRsTG9jYWxlYCBvcHRpb24uCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxl
LmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsTG9jYWxlLmg6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAg
ICogcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVu
dGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9J
bnRsTG9jYWxlUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6bG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZyk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKTogUmVuYW1lZCBmcm9tIEpTQzo6Y29udmVydElD
VUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZy4KKyAgICAgICAgKEpTQzo6aW50bEF2YWlsYWJsZUxv
Y2FsZXMpOgorICAgICAgICAoSlNDOjppbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKToKKyAg
ICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTGFuZ3VhZ2VUYWcpOgorICAgICAgICAoSlNDOjpjYW5v
bmljYWxpemVMb2NhbGVMaXN0KToKKyAgICAgICAgKEpTQzo6ZGVmYXVsdExvY2FsZSk6CisgICAg
ICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNvbGxhdG9y
U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om51bWJlckZvcm1hdFN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpsb2NhbGVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisK
IDIwMjAtMDUtMDUgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtJbnRsXSBBbHBoYWJldGl6ZSBleHRlbnNpb24ga2V5cyBhbmQgY29ycmVjdGx5IG1h
cmsgY29uc3QgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGJi
NGVhMTEwZGMwYzIzZWVlZDk5Njc5MDU2YzIzOTI1ZThiYmU5ZWYuLjBkMWZlMzAwMGFiMmI0YjA4
YWY0NDlkOTUzMjI3N2JlNDdhNmRjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTcwLDYgKzcwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVDVF9MVVRfU09VUkNF
UwogICAgIHJ1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXRQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUv
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0ludGxPYmplY3QuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CmluZGV4IGYzNTEwNDQzZWVjNTdjNjA4YzZhMGZlZWM4NTk5MjQzNGM1NzExMzYu
LmZlYTQwNDVkZjM1ZDlhZGYwNDZhMmVmZDZjODhjOGQ4ZDAwZmI3M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBA
IC0xMzYsNiArMTM2LDcgQEAgJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsQ29sbGF0b3JDb25z
dHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcAorJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAogJChQ
Uk9KRUNUX0RJUikvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiAkKFBS
T0pFQ1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAkKFBST0pF
Q1RfRElSKS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYjFhMzNkNTNk
ZTc4ZDlhNDk3NzRiNzRlNmY0OGNjMzQ0NGNkZjQyNC4uNzljZGU0ZWU1MDdlMTNmNmZmN2ZhNzgw
MGRjNjQ1Y2JmODk0MWM2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtMjcsNiArMjcsNyBAQCAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bENvbGxhdG9y
Q29uc3RydWN0b3IubHV0LgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0ludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxEYXRlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bExvY2FsZVByb3Rv
dHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9JbnRsT2JqZWN0Lmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDFjMjI4OGRmODU1YjgwMGIwYmVjMzNlODUxY2E4ODViNWFkNDdlNzEu
LjAwZDJhNTdiM2VkMmRjM2MyOTk3NDI5ODRlNTA1N2FhNmExYzNlZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0xNDcsNiArMTQ3LDcgQEAgT0JKRUNU
X0xVVF9IRUFERVJTID0gXAogICAgIEludGxDb2xsYXRvclByb3RvdHlwZS5sdXQuaCBcCiAgICAg
SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxEYXRlVGltZUZv
cm1hdFByb3RvdHlwZS5sdXQuaCBcCisgICAgSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaCBcCiAg
ICAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBJbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBJbnRsT2JqZWN0Lmx1dC5oIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMjE2YzkyN2IyNDZkN2RmOTBjMzRjMmVjZWVjMzY5N2IxNmE3
YzMwNS4uMDI3ZjdlZjJhYzE1NjNkM2EwY2JjNWJmNzA4MjBjMWZmMTQyNjNhNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMzMsNiArNDMzMywxMiBAQAogCQlBMUUwNDUxQjFD
MjVCNEIxMDBCQjY2M0MgLyogU3RyaW5nUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5qYXZhc2NyaXB0OyBwYXRoID0gU3RyaW5nUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMUZFMUVCMDFDMkM1MzdFMDBBMjg5RkYgLyogRGF0ZVByb3RvdHlwZS5q
cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IERhdGVQcm90b3R5cGUu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEyNzk1OEQ3RkExMTQyQjBBQzlFMzY0
RCAvKiBXYXNtQ29udGV4dElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2FzbUNvbnRleHRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEz
QUZGOTJCMjQ1QTNDRjkwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGxMb2NhbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTNBRkY5MkMyNDVBM0NGQTAwQzlCQTNCIC8qIEludGxMb2NhbGVDb25zdHJ1Y3Rvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNBRkY5MkQyNDVBM0NGQTAwQzlCQTNCIC8q
IEludGxMb2NhbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50
bExvY2FsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQUZGOTJFMjQ1QTND
RkIwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEludGxMb2NhbGVQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBM0FGRjkyRjI0NUEzQ0ZCMDBDOUJBM0IgLyogSW50bExvY2FsZUNv
bnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGxM
b2NhbGVDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQUZG
OTMwMjQ1QTNDRkMwMEM5QkEzQiAvKiBJbnRsTG9jYWxlUHJvdG90eXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxMb2NhbGVQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTNCRjg4NEIyNDQ4MEJERTAwMUI5RjM1IC8qIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEzQkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTNCRjg4NEQyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzI1NCw2ICs3MjYwLDEyIEBACiAJCQkJQTE1ODdENkExQjREQzE0MTAwRDY5ODQ5
IC8qIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCiAJCQkJQTE1ODdENkIxQjRE
QzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8sCiAJCQkJ
QTE1ODdENkMxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5o
ICovLAorCQkJCUEzQUZGOTJEMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlLmNwcCAqLywK
KwkJCQlBM0FGRjkyQjI0NUEzQ0Y5MDBDOUJBM0IgLyogSW50bExvY2FsZS5oICovLAorCQkJCUEz
QUZGOTJGMjQ1QTNDRkIwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwICovLAor
CQkJCUEzQUZGOTJDMjQ1QTNDRkEwMEM5QkEzQiAvKiBJbnRsTG9jYWxlQ29uc3RydWN0b3IuaCAq
LywKKwkJCQlBM0FGRjkyRTI0NUEzQ0ZCMDBDOUJBM0IgLyogSW50bExvY2FsZVByb3RvdHlwZS5j
cHAgKi8sCisJCQkJQTNBRkY5MzAyNDVBM0NGQzAwQzlCQTNCIC8qIEludGxMb2NhbGVQcm90b3R5
cGUuaCAqLywKIAkJCQlBMUQ3OTJGNjFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dC5jcHAgKi8sCiAJCQkJQTFENzkyRjcxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3Jt
YXQuaCAqLywKIAkJCQlBMUQ3OTJGODFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1h
dENvbnN0cnVjdG9yLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAwZjRj
NTBkZjM2N2M2NTYwOGEwYWY2MjgzYTBkYzUyNmE5NDEwYTVlLi5lY2NlOTEzZWM1MTM3YjBhMjll
YTVkOGU4OTU2OGUzOWJlODM5NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04
MTIsNiArODEyLDkgQEAgcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCiBydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5jcHAKIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IuY3BwCiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKK3J1bnRp
bWUvSW50bExvY2FsZS5jcHAKK3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAorcnVu
dGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNw
cAogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxO
dW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBkMTY0YmE0YmVmOGI0ZWVmZjkzMTczN2Iz
OTUzZjM0ZmUxMjMyYTI4Li44ZGJjNmQ3YWMxODdiNzE5ZDA0NTI2NTcwMjgwOTYxNjIyOWQ1OGRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKQEAgLTQwLDYgKzQwLDcgQEAKICAgICBtYWNybyhJbmZpbml0eSkgXAogICAgIG1hY3Jv
KEludGwpIFwKICAgICBtYWNybyhMb2FkZXIpIFwKKyAgICBtYWNybyhMb2NhbGUpIFwKICAgICBt
YWNybyhNYXApIFwKICAgICBtYWNybyhOYU4pIFwKICAgICBtYWNybyhOdW1iZXIpIFwKQEAgLTEz
Nyw2ICsxMzgsNyBAQAogICAgIG1hY3JvKGlzV2F0Y2hwb2ludCkgXAogICAgIG1hY3JvKGpldHRp
c29uUmVhc29uKSBcCiAgICAgbWFjcm8oam9pbikgXAorICAgIG1hY3JvKGxhbmd1YWdlKSBcCiAg
ICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAgICAgbWFjcm8obGlu
ZSkgXApAQCAtMTY2LDggKzE2OCwxMCBAQAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxl
KSBcCiAgICAgbWFjcm8ocHJvdG90eXBlKSBcCiAgICAgbWFjcm8ocmF3KSBcCisgICAgbWFjcm8o
cmVnaW9uKSBcCiAgICAgbWFjcm8ocmVwbGFjZSkgXAogICAgIG1hY3JvKHJlc29sdmUpIFwKKyAg
ICBtYWNybyhzY3JpcHQpIFwKICAgICBtYWNybyhzZWNvbmQpIFwKICAgICBtYWNybyhzZW5zaXRp
dml0eSkgXAogICAgIG1hY3JvKHNldCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjY0OGJkZDFlZmI0YmJjMzUzYjM2Y2UxNzRk
YWYyNDliZmE2MTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTAsMCArMSw0OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKKworI2luY2x1ZGUg
IkVycm9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWxv
Yy5oPgorI2luY2x1ZGUgPHd0Zi91bmljb2RlL2ljdS9JQ1VIZWxwZXJzLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bExvY2FsZTo6c19pbmZvID0geyAiT2JqZWN0
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJ
bnRsTG9jYWxlKSB9OworCitJbnRsTG9jYWxlKiBJbnRsTG9jYWxlOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlPih2bS5oZWFwKSkgSW50bExvY2FsZSh2bSwgc3RydWN0
dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0
OworfQorCitTdHJ1Y3R1cmUqIEludGxMb2NhbGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bExvY2Fs
ZTo6SW50bExvY2FsZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxMb2NhbGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKK30KKwordm9pZCBJbnRsTG9jYWxlOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVj
dCA9IGpzQ2FzdDxJbnRsTG9jYWxlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKK30KKworY2xhc3MgTG9jYWxlSURCdWlsZGVyIGZpbmFsIHsKK3B1
YmxpYzoKKyAgICBib29sIGluaXRpYWxpemUoY29uc3QgQ1N0cmluZyYpOworICAgIENTdHJpbmcg
dG9DYW5vbmljYWwoKTsKKworICAgIHZvaWQgb3ZlcnJpZGVMYW5ndWFnZVNjcmlwdFJlZ2lvbihT
dHJpbmdWaWV3IGxhbmd1YWdlLCBTdHJpbmdWaWV3IHNjcmlwdCwgU3RyaW5nVmlldyByZWdpb24p
OworICAgIHZvaWQgc2V0S2V5d29yZFZhbHVlKEFTQ0lJTGl0ZXJhbCBrZXksIFN0cmluZ1ZpZXcg
dmFsdWUpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxjaGFyLCAzMj4gbV9idWZmZXI7Cit9Owor
Citib29sIExvY2FsZUlEQnVpbGRlcjo6aW5pdGlhbGl6ZShjb25zdCBDU3RyaW5nJiB0YWcpCit7
CisgICAgbV9idWZmZXIgPSBsb2NhbGVJREJ1ZmZlckZvckxhbmd1YWdlVGFnKHRhZyk7CisgICAg
cmV0dXJuIG1fYnVmZmVyLnNpemUoKTsKK30KKworQ1N0cmluZyBMb2NhbGVJREJ1aWxkZXI6OnRv
Q2Fub25pY2FsKCkKK3sKKyAgICBBU1NFUlQobV9idWZmZXIuc2l6ZSgpKTsKKworICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIFZlY3RvcjxjaGFyLCAzMj4gcmVzdWx0
KDMyKTsKKyAgICBhdXRvIHJlc3VsdExlbmd0aCA9IHVsb2NfY2Fub25pY2FsaXplKG1fYnVmZmVy
LmRhdGEoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJnN0YXR1cyk7CisgICAgaWYg
KG5lZWRzVG9Hcm93VG9Qcm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKKyAgICAgICAgcmVzdWx0Lmdy
b3cocmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAg
ICB1bG9jX2Nhbm9uaWNhbGl6ZShtX2J1ZmZlci5kYXRhKCksIHJlc3VsdC5kYXRhKCksIHJlc3Vs
dExlbmd0aCwgJnN0YXR1cyk7CisgICAgfQorICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKKyAg
ICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKworICAgIHJldHVybiBDU3RyaW5nKHJlc3VsdC5kYXRh
KCksIHJlc3VsdExlbmd0aCk7Cit9CisKKy8vIEJlY2F1c2UgSUNVJ3MgQyBBUEkgZG9lc24ndCBo
YXZlIHNldFtMYW5ndWFnZXxTY3JpcHR8UmVnaW9uXSBmdW5jdGlvbnMuLi4KK3ZvaWQgTG9jYWxl
SURCdWlsZGVyOjpvdmVycmlkZUxhbmd1YWdlU2NyaXB0UmVnaW9uKFN0cmluZ1ZpZXcgbGFuZ3Vh
Z2UsIFN0cmluZ1ZpZXcgc2NyaXB0LCBTdHJpbmdWaWV3IHJlZ2lvbikKK3sKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSBzdHJsZW4obV9idWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQobGVuZ3RoKTsK
KworICAgIFN0cmluZ1ZpZXcgbG9jYWxlSURWaWV3IHsgbV9idWZmZXIuZGF0YSgpLCBsZW5ndGgg
fTsKKworICAgIGF1dG8gZW5kT2ZMYW5ndWFnZVNjcmlwdFJlZ2lvblZhcmlhbnQgPSBsb2NhbGVJ
RFZpZXcuZmluZChVTE9DX0tFWVdPUkRfU0VQQVJBVE9SKTsKKyAgICBpZiAoZW5kT2ZMYW5ndWFn
ZVNjcmlwdFJlZ2lvblZhcmlhbnQgPT0gbm90Rm91bmQpCisgICAgICAgIGVuZE9mTGFuZ3VhZ2VT
Y3JpcHRSZWdpb25WYXJpYW50ID0gbGVuZ3RoOworCisgICAgVmVjdG9yPFN0cmluZ1ZpZXc+IHN1
YnRhZ3M7CisgICAgZm9yIChhdXRvIHN1YnRhZyA6IGxvY2FsZUlEVmlldy5sZWZ0KGVuZE9mTGFu
Z3VhZ2VTY3JpcHRSZWdpb25WYXJpYW50KS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdfJykp
CisgICAgICAgIHN1YnRhZ3MuYXBwZW5kKHN1YnRhZyk7CisKKyAgICBpZiAoIWxhbmd1YWdlLmlz
TnVsbCgpKQorICAgICAgICBzdWJ0YWdzWzBdID0gbGFuZ3VhZ2U7CisKKyAgICBib29sIGhhc1Nj
cmlwdCA9IHN1YnRhZ3Muc2l6ZSgpID4gMSAmJiBzdWJ0YWdzWzFdLmxlbmd0aCgpID09IDQ7Cisg
ICAgaWYgKCFzY3JpcHQuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKGhhc1NjcmlwdCkKKyAgICAg
ICAgICAgIHN1YnRhZ3NbMV0gPSBzY3JpcHQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
c3VidGFncy5pbnNlcnQoMSwgc2NyaXB0KTsKKyAgICAgICAgICAgIGhhc1NjcmlwdCA9IHRydWU7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXJlZ2lvbi5pc051bGwoKSkgeworICAgICAg
ICBzaXplX3QgaW5kZXggPSBoYXNTY3JpcHQgPyAyIDogMTsKKyAgICAgICAgYm9vbCBoYXNSZWdp
b24gPSBzdWJ0YWdzLnNpemUoKSA+IGluZGV4ICYmIHN1YnRhZ3NbaW5kZXhdLmxlbmd0aCgpIDwg
NDsKKyAgICAgICAgaWYgKGhhc1JlZ2lvbikKKyAgICAgICAgICAgIHN1YnRhZ3NbaW5kZXhdID0g
cmVnaW9uOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdWJ0YWdzLmluc2VydChpbmRleCwg
cmVnaW9uKTsKKyAgICB9CisKKyAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBib29s
IGhhc0FwcGVuZGVkID0gZmFsc2U7CisgICAgZm9yIChhdXRvIHN1YnRhZyA6IHN1YnRhZ3MpIHsK
KyAgICAgICAgaWYgKGhhc0FwcGVuZGVkKQorICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgnXycp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBoYXNBcHBlbmRlZCA9IHRydWU7CisKKyAgICAg
ICAgQVNTRVJUKHN1YnRhZy5pczhCaXQoKSAmJiBzdWJ0YWcuaXNBbGxBU0NJSSgpKTsKKyAgICAg
ICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdWJ0YWcuY2hh
cmFjdGVyczgoKSksIHN1YnRhZy5sZW5ndGgoKSk7CisgICAgfQorCisgICAgaWYgKGVuZE9mTGFu
Z3VhZ2VTY3JpcHRSZWdpb25WYXJpYW50ICE9IGxlbmd0aCkgeworICAgICAgICBhdXRvIHJlc3Qg
PSBsb2NhbGVJRFZpZXcucmlnaHQobGVuZ3RoIC0gZW5kT2ZMYW5ndWFnZVNjcmlwdFJlZ2lvblZh
cmlhbnQpOworCisgICAgICAgIEFTU0VSVChyZXN0LmlzOEJpdCgpICYmIHJlc3QuaXNBbGxBU0NJ
SSgpKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihyZXN0LmNoYXJhY3RlcnM4KCkpLCByZXN0Lmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICBidWZm
ZXIuYXBwZW5kKCdcMCcpOworICAgIG1fYnVmZmVyLnN3YXAoYnVmZmVyKTsKK30KKwordm9pZCBM
b2NhbGVJREJ1aWxkZXI6OnNldEtleXdvcmRWYWx1ZShBU0NJSUxpdGVyYWwga2V5LCBTdHJpbmdW
aWV3IHZhbHVlKQoreworICAgIEFTU0VSVChtX2J1ZmZlci5zaXplKCkpOworCisgICAgQVNTRVJU
KHZhbHVlLmlzOEJpdCgpICYmIHZhbHVlLmlzQWxsQVNDSUkoKSk7CisgICAgQ1N0cmluZyByYXdW
YWx1ZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHZhbHVlLmNoYXJhY3RlcnM4KCkp
LCB2YWx1ZS5sZW5ndGgoKSB9OworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CisgICAgYXV0byBsZW5ndGggPSB1bG9jX3NldEtleXdvcmRWYWx1ZShrZXkuY2hhcmFjdGVy
cygpLCByYXdWYWx1ZS5kYXRhKCksIG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpLCAm
c3RhdHVzKTsKKyAgICAvLyB1bG9jX3NldEtleXdvcmRWYWx1ZSBkb2VzIG5vdCBzZXQgVV9TVFJJ
TkdfTk9UX1RFUk1JTkFURURfV0FSTklORy4KKyAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VC
dWZmZXIoc3RhdHVzKSkgeworICAgICAgICBtX2J1ZmZlci5ncm93KGxlbmd0aCArIDEpOworICAg
ICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHVsb2Nfc2V0S2V5d29yZFZhbHVl
KGtleS5jaGFyYWN0ZXJzKCksIHJhd1ZhbHVlLmRhdGEoKSwgbV9idWZmZXIuZGF0YSgpLCBsZW5n
dGggKyAxLCAmc3RhdHVzKTsKKyAgICB9CisgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsK
K30KKworU3RyaW5nIEludGxMb2NhbGU6OmtleXdvcmRWYWx1ZShBU0NJSUxpdGVyYWwga2V5LCBi
b29sIGlzQm9vbGVhbikgY29uc3QKK3sKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcigzMik7CisgICAgYXV0byBidWZmZXJM
ZW5ndGggPSB1bG9jX2dldEtleXdvcmRWYWx1ZShtX2xvY2FsZUlELmRhdGEoKSwga2V5LmNoYXJh
Y3RlcnMoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7CisgICAgaWYg
KG5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZyhzdGF0dXMpKSB7CisgICAgICAgIGJ1ZmZlci5n
cm93KGJ1ZmZlckxlbmd0aCArIDEpOworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgICAgIHVsb2NfZ2V0S2V5d29yZFZhbHVlKG1fbG9jYWxlSUQuZGF0YSgpLCBrZXkuY2hhcmFj
dGVycygpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGggKyAxLCAmc3RhdHVzKTsKKyAgICB9
CisgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAgIGNvbnN0IGNoYXIqIHZhbHVl
ID0gIWlzQm9vbGVhbiA/IHVsb2NfdG9Vbmljb2RlTG9jYWxlVHlwZShrZXkuY2hhcmFjdGVycygp
LCBidWZmZXIuZGF0YSgpKSA6IGJ1ZmZlci5kYXRhKCk7CisgICAgcmV0dXJuIHZhbHVlID8gU3Ry
aW5nKHZhbHVlKSA6IGVtcHR5U3RyaW5nKCk7Cit9CisKKy8vIHVuaWNvZGVfbGFuZ3VhZ2Vfc3Vi
dGFnID0gYWxwaGF7MiwzfSB8IGFscGhhezUsOH0gOworc3RhdGljIGJvb2wgaXNVbmljb2RlTGFu
Z3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgYXV0byBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CisgICAgcmV0dXJuIGxlbmd0aCA+PSAyICYmIGxlbmd0aCA8PSA4ICYmIGxl
bmd0aCAhPSA0ICYmIHN0cmluZy5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQVNDSUlBbHBoYT4o
KTsKK30KKworLy8gdW5pY29kZV9zY3JpcHRfc3VidGFnID0gYWxwaGF7NH0gOworc3RhdGljIGJv
b2wgaXNVbmljb2RlU2NyaXB0U3VidGFnKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVy
biBzdHJpbmcubGVuZ3RoKCkgPT0gNCAmJiBzdHJpbmcuaXNBbGxTcGVjaWFsQ2hhcmFjdGVyczxp
c0FTQ0lJQWxwaGE+KCk7Cit9CisKKy8vIHVuaWNvZGVfcmVnaW9uX3N1YnRhZyA9IGFscGhhezJ9
IHwgZGlnaXR7M30gOworc3RhdGljIGJvb2wgaXNVbmljb2RlUmVnaW9uU3VidGFnKFN0cmluZ1Zp
ZXcgc3RyaW5nKQoreworICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOworICAgIHJl
dHVybiAobGVuZ3RoID09IDIgJiYgc3RyaW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNBU0NJ
SUFscGhhPigpKQorICAgICAgICB8fCAobGVuZ3RoID09IDMgJiYgc3RyaW5nLmlzQWxsU3BlY2lh
bENoYXJhY3RlcnM8aXNBU0NJSURpZ2l0PigpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLkxvY2FsZQordm9pZCBJbnRsTG9jYWxlOjppbml0aWFsaXplTG9jYWxl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGFnVmFsdWUsIEpTVmFsdWUg
b3B0aW9uc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJpbmcgdGFnID0g
dGFnVmFsdWUuaW5oZXJpdHM8SW50bExvY2FsZT4odm0pID8ganNDYXN0PEludGxMb2NhbGUqPih0
YWdWYWx1ZSktPnRvU3RyaW5nKCkgOiB0YWdWYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU1ZhbHVl
IG9wdGlvbnMgPSBvcHRpb25zVmFsdWU7CisgICAgaWYgKCFvcHRpb25zVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICBvcHRpb25zID0gb3B0aW9uc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9i
amVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAg
fQorCisgICAgTG9jYWxlSURCdWlsZGVyIGxvY2FsZUlEOworICAgIGlmICghbG9jYWxlSUQuaW5p
dGlhbGl6ZSh0YWcudXRmOCgpKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImludmFsaWQgbGFuZ3VhZ2UgdGFnIl9zKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFN0cmluZyBsYW5ndWFnZSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sYW5ndWFnZSwgeyB9LCBudWxscHRyLCBu
dWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlm
ICghbGFuZ3VhZ2UuaXNOdWxsKCkgJiYgIWlzVW5pY29kZUxhbmd1YWdlU3VidGFnKGxhbmd1YWdl
KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImxhbmd1
YWdlIGlzIG5vdCBhIHdlbGwtZm9ybWVkIGxhbmd1YWdlIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFN0cmluZyBzY3JpcHQgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c2NyaXB0LCB7IH0sIG51bGxwdHIs
IG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAg
aWYgKCFzY3JpcHQuaXNOdWxsKCkgJiYgIWlzVW5pY29kZVNjcmlwdFN1YnRhZyhzY3JpcHQpKSB7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic2NyaXB0IGlz
IG5vdCBhIHdlbGwtZm9ybWVkIHNjcmlwdCB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBTdHJpbmcgcmVnaW9uID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJlZ2lvbiwgeyB9LCBudWxscHRyLCBudWxscHRy
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmICghcmVn
aW9uLmlzTnVsbCgpICYmICFpc1VuaWNvZGVSZWdpb25TdWJ0YWcocmVnaW9uKSkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lvbiBpcyBub3QgYSB3
ZWxsLWZvcm1lZCByZWdpb24gdmFsdWUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCFsYW5ndWFnZS5pc051bGwoKSB8fCAhc2NyaXB0LmlzTnVsbCgpIHx8ICFyZWdpb24u
aXNOdWxsKCkpCisgICAgICAgIGxvY2FsZUlELm92ZXJyaWRlTGFuZ3VhZ2VTY3JpcHRSZWdpb24o
bGFuZ3VhZ2UsIHNjcmlwdCwgcmVnaW9uKTsKKworICAgIFN0cmluZyBjYWxlbmRhciA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxl
bmRhciwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIGlmICghY2FsZW5kYXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYg
KCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjYWxlbmRhcikpIHsKKyAgICAgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY2FsZW5kYXIgaXMgbm90IGEg
d2VsbC1mb3JtZWQgY2FsZW5kYXIgdmFsdWUiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGxvY2FsZUlELnNldEtleXdvcmRWYWx1ZSgiY2FsZW5kYXIiX3MsIGNh
bGVuZGFyKTsKKyAgICB9CisKKyAgICBTdHJpbmcgY29sbGF0aW9uID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbGxhdGlvbiwgeyB9
LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworICAgIGlmICghY29sbGF0aW9uLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICghaXNVbmlj
b2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY29sbGF0aW9uKSkgeworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90IGEgd2VsbC1m
b3JtZWQgY29sbGF0aW9uIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBsb2NhbGVJRC5zZXRLZXl3b3JkVmFsdWUoImNvbGxhdGlvbiJfcywgY29sbGF0
aW9uKTsKKyAgICB9CisKKyAgICBTdHJpbmcgaG91ckN5Y2xlID0gaW50bFN0cmluZ09wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmhvdXJDeWNsZSwgeyAiaDEx
IiwgImgxMiIsICJoMjMiLCAiaDI0IiB9LCAiaG91ckN5Y2xlIG11c3QgYmUgXCJoMTFcIiwgXCJo
MTJcIiwgXCJoMjNcIiwgb3IgXCJoMjRcIiIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKCFob3VyQ3ljbGUuaXNOdWxsKCkpCisgICAg
ICAgIGxvY2FsZUlELnNldEtleXdvcmRWYWx1ZSgiaG91cnMiX3MsIGhvdXJDeWNsZSk7CisKKyAg
ICBTdHJpbmcgY2FzZUZpcnN0ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPmNhc2VGaXJzdCwgeyAidXBwZXIiLCAibG93ZXIiLCAiZmFs
c2UiIH0sICJjYXNlRmlyc3QgbXVzdCBiZSBlaXRoZXIgXCJ1cHBlclwiLCBcImxvd2VyXCIsIG9y
IFwiZmFsc2VcIiIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CisgICAgaWYgKCFjYXNlRmlyc3QuaXNOdWxsKCkpCisgICAgICAgIGxvY2FsZUlELnNl
dEtleXdvcmRWYWx1ZSgiY29sY2FzZWZpcnN0Il9zLCBjYXNlRmlyc3QpOworCisgICAgVHJpU3Rh
dGUgbnVtZXJpYyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+bnVtZXJpYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKKyAgICBpZiAobnVtZXJpYyAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAg
ICAgICAgbG9jYWxlSUQuc2V0S2V5d29yZFZhbHVlKCJjb2xudW1lcmljIl9zLCBudW1lcmljID09
IFRyaVN0YXRlOjpUcnVlID8gInllcyIgOiAibm8iKTsKKworICAgIFN0cmluZyBudW1iZXJpbmdT
eXN0ZW0gPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVy
dHlOYW1lcy0+bnVtYmVyaW5nU3lzdGVtLCB7IH0sIG51bGxwdHIsIG51bGxwdHIpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKCFudW1iZXJpbmdTeXN0
ZW0uaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlw
ZShudW1iZXJpbmdTeXN0ZW0pKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIm51bWJlcmluZ1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1i
ZXJpbmcgc3lzdGVtIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBsb2NhbGVJRC5zZXRLZXl3b3JkVmFsdWUoIm51bWJlcnMiX3MsIG51bWJlcmluZ1N5
c3RlbSk7CisgICAgfQorCisgICAgbV9sb2NhbGVJRCA9IGxvY2FsZUlELnRvQ2Fub25pY2FsKCk7
CisgICAgaWYgKG1fbG9jYWxlSUQuaXNOdWxsKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExvY2FsZSJfcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm1heGltaXplCitjb25zdCBTdHJpbmcmIEludGxMb2Nh
bGU6Om1heGltaXplKCkKK3sKKyAgICBpZiAobV9tYXhpbWl6ZWQuaXNOdWxsKCkpIHsKKyAgICAg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFZlY3RvcjxjaGFy
LCAzMj4gYnVmZmVyKDMyKTsKKyAgICAgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2FkZExp
a2VseVN1YnRhZ3MobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCksICZzdGF0dXMpOworICAgICAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VDU3RyaW5nKHN0
YXR1cykpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5ncm93KGJ1ZmZlckxlbmd0aCArIDEpOworICAg
ICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICAgICAgdWxvY19hZGRMaWtl
bHlTdWJ0YWdzKG1fbG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgg
KyAxLCAmc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1
cykpOworCisgICAgICAgIG1fbWF4aW1pemVkID0gbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRChidWZm
ZXIuZGF0YSgpKTsKKyAgICB9CisgICAgcmV0dXJuIG1fbWF4aW1pemVkOworfQorCisvLyBodHRw
czovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5taW5pbWl6ZQor
Y29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjptaW5pbWl6ZSgpCit7CisgICAgaWYgKG1fbWluaW1p
emVkLmlzTnVsbCgpKSB7CisgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICAgICAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcigzMik7CisgICAgICAgIGF1dG8gYnVm
ZmVyTGVuZ3RoID0gdWxvY19taW5pbWl6ZVN1YnRhZ3MobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZzdGF0dXMpOworICAgICAgICBpZiAobmVlZHNUb0dy
b3dUb1Byb2R1Y2VDU3RyaW5nKHN0YXR1cykpIHsKKyAgICAgICAgICAgIGJ1ZmZlci5ncm93KGJ1
ZmZlckxlbmd0aCArIDEpOworICAgICAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
ICAgICAgICAgdWxvY19taW5pbWl6ZVN1YnRhZ3MobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlckxlbmd0aCArIDEsICZzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICAgICAgbV9taW5pbWl6ZWQgPSBsYW5ndWFn
ZVRhZ0ZvckxvY2FsZUlEKGJ1ZmZlci5kYXRhKCkpOworICAgIH0KKyAgICByZXR1cm4gbV9taW5p
bWl6ZWQ7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUu
cHJvdG90eXBlLnRvU3RyaW5nCitjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6OnRvU3RyaW5nKCkK
K3sKKyAgICBpZiAobV9mdWxsU3RyaW5nLmlzTnVsbCgpKQorICAgICAgICBtX2Z1bGxTdHJpbmcg
PSBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKG1fbG9jYWxlSUQuZGF0YSgpKTsKKyAgICByZXR1cm4g
bV9mdWxsU3RyaW5nOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwu
TG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZQorY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpiYXNl
TmFtZSgpCit7CisgICAgaWYgKG1fYmFzZU5hbWUuaXNOdWxsKCkpIHsKKyAgICAgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFZlY3RvcjxjaGFyLCAzMj4gYnVm
ZmVyKDMyKTsKKyAgICAgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2dldEJhc2VOYW1lKG1f
bG9jYWxlSUQuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCAmc3RhdHVzKTsK
KyAgICAgICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZyhzdGF0dXMpKSB7CisgICAg
ICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGggKyAxKTsKKyAgICAgICAgICAgIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgICAgIHVsb2NfZ2V0QmFzZU5hbWUobV9sb2NhbGVJ
RC5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCArIDEsICZzdGF0dXMpOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICAgICAgbV9i
YXNlTmFtZSA9IGxhbmd1YWdlVGFnRm9yTG9jYWxlSUQoYnVmZmVyLmRhdGEoKSk7CisgICAgfQor
ICAgIHJldHVybiBtX2Jhc2VOYW1lOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZQorY29uc3QgU3RyaW5nJiBJbnRsTG9j
YWxlOjpsYW5ndWFnZSgpCit7CisgICAgaWYgKG1fbGFuZ3VhZ2UuaXNOdWxsKCkpIHsKKyAgICAg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIFZlY3RvcjxjaGFy
LCA4PiBidWZmZXIoOCk7CisgICAgICAgIGF1dG8gYnVmZmVyTGVuZ3RoID0gdWxvY19nZXRMYW5n
dWFnZShtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0
YXR1cyk7CisgICAgICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7
CisgICAgICAgICAgICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGgpOworICAgICAgICAgICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICAgICAgdWxvY19nZXRMYW5ndWFnZShtX2xvY2Fs
ZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoVV9TVUNDRVNTKHN0YXR1cykpOworCisgICAgICAgIG1fbGFu
Z3VhZ2UgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyTGVuZ3RoKTsKKyAgICB9CisgICAg
cmV0dXJuIG1fbGFuZ3VhZ2U7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
SW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdAorY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpz
Y3JpcHQoKQoreworICAgIGlmIChtX3NjcmlwdC5pc051bGwoKSkgeworICAgICAgICBVRXJyb3JD
b2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDQ+IGJ1ZmZl
cig0KTsKKyAgICAgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2dldFNjcmlwdChtX2xvY2Fs
ZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgJnN0YXR1cyk7CisgICAg
ICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUJ1ZmZlcihzdGF0dXMpKSB7CisgICAgICAgICAg
ICBidWZmZXIuZ3JvdyhidWZmZXJMZW5ndGgpOworICAgICAgICAgICAgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOworICAgICAgICAgICAgdWxvY19nZXRTY3JpcHQobV9sb2NhbGVJRC5kYXRhKCksIGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAgICAgICBtX3NjcmlwdCA9IFN0cmluZyhi
dWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgpOworICAgIH0KKyAgICByZXR1cm4gbV9zY3JpcHQ7
Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90
eXBlLnJlZ2lvbgorY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpyZWdpb24oKQoreworICAgIGlm
IChtX3JlZ2lvbi5pc051bGwoKSkgeworICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVS
T19FUlJPUjsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDM+IGJ1ZmZlcigzKTsKKyAgICAgICAgYXV0
byBidWZmZXJMZW5ndGggPSB1bG9jX2dldENvdW50cnkobV9sb2NhbGVJRC5kYXRhKCksIGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZzdGF0dXMpOworICAgICAgICBpZiAobmVlZHNUb0dy
b3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVzKSkgeworICAgICAgICAgICAgYnVmZmVyLmdyb3coYnVm
ZmVyTGVuZ3RoKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAg
ICAgIHVsb2NfZ2V0Q291bnRyeShtX2xvY2FsZUlELmRhdGEoKSwgYnVmZmVyLmRhdGEoKSwgYnVm
ZmVyTGVuZ3RoLCAmc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoVV9TVUNDRVNT
KHN0YXR1cykpOworCisgICAgICAgIG1fcmVnaW9uID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1
ZmZlckxlbmd0aCk7CisgICAgfQorICAgIHJldHVybiBtX3JlZ2lvbjsKK30KKworLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXIKK2Nv
bnN0IFN0cmluZyYgSW50bExvY2FsZTo6Y2FsZW5kYXIoKQoreworICAgIGlmIChtX2NhbGVuZGFy
LmlzTnVsbCgpKQorICAgICAgICBtX2NhbGVuZGFyID0ga2V5d29yZFZhbHVlKCJjYWxlbmRhciJf
cyk7CisgICAgcmV0dXJuIG1fY2FsZW5kYXI7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdAorY29uc3QgU3RyaW5nJiBJ
bnRsTG9jYWxlOjpjYXNlRmlyc3QoKQoreworICAgIGlmIChtX2Nhc2VGaXJzdC5pc051bGwoKSkK
KyAgICAgICAgbV9jYXNlRmlyc3QgPSBrZXl3b3JkVmFsdWUoImNvbGNhc2VmaXJzdCJfcyk7Cisg
ICAgcmV0dXJuIG1fY2FzZUZpcnN0OworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24KK2NvbnN0IFN0cmluZyYgSW50bExv
Y2FsZTo6Y29sbGF0aW9uKCkKK3sKKyAgICBpZiAobV9jb2xsYXRpb24uaXNOdWxsKCkpCisgICAg
ICAgIG1fY29sbGF0aW9uID0ga2V5d29yZFZhbHVlKCJjb2xsYXRpb24iX3MpOworICAgIHJldHVy
biBtX2NvbGxhdGlvbjsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRs
LkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCitjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6Omhv
dXJDeWNsZSgpCit7CisgICAgaWYgKG1faG91ckN5Y2xlLmlzTnVsbCgpKQorICAgICAgICBtX2hv
dXJDeWNsZSA9IGtleXdvcmRWYWx1ZSgiaG91cnMiX3MpOworICAgIHJldHVybiBtX2hvdXJDeWNs
ZTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90
b3R5cGUubnVtYmVyaW5nU3lzdGVtCitjb25zdCBTdHJpbmcmIEludGxMb2NhbGU6Om51bWJlcmlu
Z1N5c3RlbSgpCit7CisgICAgaWYgKG1fbnVtYmVyaW5nU3lzdGVtLmlzTnVsbCgpKQorICAgICAg
ICBtX251bWJlcmluZ1N5c3RlbSA9IGtleXdvcmRWYWx1ZSgibnVtYmVycyJfcyk7CisgICAgcmV0
dXJuIG1fbnVtYmVyaW5nU3lzdGVtOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8j
c2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljCitUcmlTdGF0ZSBJbnRsTG9jYWxlOjpu
dW1lcmljKCkKK3sKKyAgICBjb25zdGV4cHIgYm9vbCBpc0Jvb2xlYW4gPSB0cnVlOworICAgIGlm
IChtX251bWVyaWMgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAgICAgIG1fbnVtZXJp
YyA9IHRyaVN0YXRlKGtleXdvcmRWYWx1ZSgiY29sbnVtZXJpYyJfcywgaXNCb29sZWFuKSA9PSAi
eWVzIik7CisgICAgcmV0dXJuIG1fbnVtZXJpYzsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZi
NjlhMmQxZmU1YWMyNjI1MDdlOWE5YzQ5MGE5NGNhZmMwZmVjYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaApAQCAtMCwwICsxLDkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxMb2NhbGUgZmluYWwgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxP
YmplY3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRy
dWU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAg
ICAgIHN0YXRpY19jYXN0PEludGxMb2NhbGUqPihjZWxsKS0+SW50bExvY2FsZTo6fkludGxMb2Nh
bGUoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VB
Y2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkK
KyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsTG9jYWxlU3BhY2U8bW9kZT4oKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgSW50bExvY2FsZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHZvaWQgaW5pdGlhbGl6ZUxvY2Fs
ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgdGFnVmFsdWUsIEpTVmFsdWUgb3B0aW9uc1ZhbHVl
KTsKKyAgICBjb25zdCBTdHJpbmcmIG1heGltaXplKCk7CisgICAgY29uc3QgU3RyaW5nJiBtaW5p
bWl6ZSgpOworICAgIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcoKTsKKyAgICBjb25zdCBTdHJpbmcm
IGJhc2VOYW1lKCk7CisgICAgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSgpOworICAgIGNvbnN0IFN0
cmluZyYgc2NyaXB0KCk7CisgICAgY29uc3QgU3RyaW5nJiByZWdpb24oKTsKKyAgICBjb25zdCBT
dHJpbmcmIGNhbGVuZGFyKCk7CisgICAgY29uc3QgU3RyaW5nJiBjYXNlRmlyc3QoKTsKKyAgICBj
b25zdCBTdHJpbmcmIGNvbGxhdGlvbigpOworICAgIGNvbnN0IFN0cmluZyYgaG91ckN5Y2xlKCk7
CisgICAgY29uc3QgU3RyaW5nJiBudW1iZXJpbmdTeXN0ZW0oKTsKKyAgICBUcmlTdGF0ZSBudW1l
cmljKCk7CisKK3ByaXZhdGU6CisgICAgSW50bExvY2FsZShWTSYsIFN0cnVjdHVyZSopOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CisKKyAgICBTdHJpbmcga2V5d29yZFZhbHVlKEFTQ0lJ
TGl0ZXJhbCwgYm9vbCBpc0Jvb2xlYW4gPSBmYWxzZSkgY29uc3Q7CisKKyAgICBDU3RyaW5nIG1f
bG9jYWxlSUQ7CisKKyAgICBTdHJpbmcgbV9tYXhpbWl6ZWQ7CisgICAgU3RyaW5nIG1fbWluaW1p
emVkOworICAgIFN0cmluZyBtX2Z1bGxTdHJpbmc7CisgICAgU3RyaW5nIG1fYmFzZU5hbWU7Cisg
ICAgU3RyaW5nIG1fbGFuZ3VhZ2U7CisgICAgU3RyaW5nIG1fc2NyaXB0OworICAgIFN0cmluZyBt
X3JlZ2lvbjsKKyAgICBTdHJpbmcgbV9jYWxlbmRhcjsKKyAgICBTdHJpbmcgbV9jYXNlRmlyc3Q7
CisgICAgU3RyaW5nIG1fY29sbGF0aW9uOworICAgIFN0cmluZyBtX2hvdXJDeWNsZTsKKyAgICBT
dHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CisgICAgVHJpU3RhdGUgbV9udW1lcmljIHsgVHJpU3Rh
dGU6OkluZGV0ZXJtaW5hdGUgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTY2OTUxNGRjMmY4YjEwNjZlM2JjYmEyMjNjN2MyYmRiNDBhYTBmNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIgorCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSW50
bExvY2FsZVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTG9va3VwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitT
VEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bExvY2FsZUNvbnN0cnVj
dG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEludGxMb2NhbGVDb25zdHJ1Y3RvcikgfTsKKworSW50bExvY2FsZUNvbnN0cnVj
dG9yKiBJbnRsTG9jYWxlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBJbnRsTG9jYWxlUHJvdG90eXBlKiBsb2NhbGVQcm90b3R5cGUpCit7CisgICAgYXV0
byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsTG9jYWxlQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBJbnRsTG9jYWxlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7
CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBsb2NhbGVQcm90b3R5cGUpOwor
ICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRsTG9jYWxlQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGNhbGxJbnRsTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsTG9jYWxl
KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK0ludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6
SW50bExvY2FsZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxJbnRsTG9jYWxlLCBjb25zdHJ1Y3RJbnRsTG9jYWxl
KQoreworfQorCit2b2lkIEludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBJbnRsTG9jYWxlUHJvdG90eXBlKiBsb2NhbGVQcm90b3R5cGUpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sICJMb2NhbGUiX3MsIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRT
dHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBsb2NhbGVQcm90b3R5cGUsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBsb2NhbGVQ
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUlu
dGwuTG9jYWxlCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJ
bnRsTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0g
YXNPYmplY3QoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBuZXdUYXJnZXQgPT0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpCisgICAgICAgID8gZ2xvYmFs
T2JqZWN0LT5sb2NhbGVTdHJ1Y3R1cmUoKQorICAgICAgICA6IEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgbmV3VGFyZ2V0LCBnZXRGdW5jdGlv
blJlYWxtKHZtLCBuZXdUYXJnZXQpLT5sb2NhbGVTdHJ1Y3R1cmUoKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEludGxMb2NhbGUqIGxvY2FsZSA9IEludGxM
b2NhbGU6OmNyZWF0ZSh2bSwgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQobG9jYWxlKTsKKworICAg
IEpTVmFsdWUgdGFnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRhZy5pc1N0
cmluZygpICYmICF0YWcuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEludGwuTG9jYWxlIG11
c3QgYmUgYSBzdHJpbmcgb3IgYW4gb2JqZWN0Il9zKTsKKworICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICBsb2NhbGUtPmluaXRpYWxpemVMb2NhbGUoZ2xvYmFsT2JqZWN0LCB0YWcsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobG9jYWxlKTsKK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZQorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxMb2NhbGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1
bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJMb2NhbGUiKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjM0YTg4N2IzNGRkYzEwMjM1
NTA1YmFlOTk5OTMyZmUyYjcxZjE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBJbnRsTG9jYWxlUHJvdG90eXBlOworCitjbGFzcyBJbnRsTG9jYWxlQ29uc3RydWN0b3IgZmlu
YWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9
IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsK
KworICAgIHN0YXRpYyBJbnRsTG9jYWxlQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVy
ZSosIEludGxMb2NhbGVQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCitwcml2YXRlOgorICAgIEludGxMb2NhbGVDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVy
ZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsTG9jYWxlUHJvdG90eXBlKik7
Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bExvY2FsZUNvbnN0
cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRkYjU0MTdlNzBkMjMzNWI5MGE3Mjk0YmQ3N2Q5MDEwMWM1M2RhZjEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDI3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5oIgorCisjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUZ1
bmNNYXhpbWl6ZShKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNaW5pbWl6ZShKU0ds
b2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNUb1N0cmluZyhKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlckJhc2VOYW1lKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7Citz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ2FsZW5kYXIoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3Qo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24oSlNHbG9iYWxPYmpl
Y3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIElu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJIb3VyQ3ljbGUoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJOdW1lcmljKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVt
YmVyaW5nU3lzdGVtKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2Uo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJTY3JpcHQoSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
KworfQorCisjaW5jbHVkZSAiSW50bExvY2FsZVByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsTG9jYWxlUHJvdG90eXBlOjpzX2luZm8gPSB7
ICJJbnRsLkxvY2FsZSIsICZCYXNlOjpzX2luZm8sICZsb2NhbGVQcm90b3R5cGVUYWJsZSwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsTG9jYWxlUHJvdG90eXBlKSB9OworCisvKiBT
b3VyY2UgZm9yIEludGxMb2NhbGVQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBsb2NhbGVQcm90b3R5
cGVUYWJsZQorICBtYXhpbWl6ZSAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVGdW5jTWF4aW1p
emUgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgbWluaW1pemUgICAgICAgICBJbnRs
TG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXplICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAw
CisgIHRvU3RyaW5nICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNUb1N0cmluZyAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBiYXNlTmFtZSAgICAgICAgIEludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJCYXNlTmFtZSAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCisgIGNhbGVu
ZGFyICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IKKyAgY2FzZUZpcnN0ICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVyQ2FzZUZpcnN0ICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBjb2xsYXRpb24gICAgICAg
IEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24gICAgICAgIERvbnRFbnVtfEFjY2Vz
c29yCisgIGhvdXJDeWNsZSAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNs
ZSAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgbnVtZXJpYyAgICAgICAgICBJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyTnVtZXJpYyAgICAgICAgICBEb250RW51bXxBY2Nlc3NvcgorICBudW1i
ZXJpbmdTeXN0ZW0gIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0gIERv
bnRFbnVtfEFjY2Vzc29yCisgIGxhbmd1YWdlICAgICAgICAgSW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckxhbmd1YWdlICAgICAgICAgRG9udEVudW18QWNjZXNzb3IKKyAgc2NyaXB0ICAgICAgICAg
ICBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0ICAgICAgICAgICBEb250RW51bXxBY2Nl
c3NvcgorICByZWdpb24gICAgICAgICAgIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJSZWdpb24g
ICAgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yCitAZW5kCisqLworCitJbnRsTG9jYWxlUHJvdG90
eXBlKiBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJ
bnRsTG9jYWxlUHJvdG90eXBlPih2bS5oZWFwKSkgSW50bExvY2FsZVByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2Jq
ZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxMb2NhbGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
KworSW50bExvY2FsZVByb3RvdHlwZTo6SW50bExvY2FsZVByb3RvdHlwZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lk
IEludGxMb2NhbGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsK
KyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubWF4aW1pemUK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhp
bWl6ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2Fz
dDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9j
YWxlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm1heGltaXplIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgbG9jYWxlLT5t
YXhpbWl6ZSgpKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwu
TG9jYWxlLnByb3RvdHlwZS5taW5pbWl6ZQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubWluaW1p
emUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TG9jYWxlIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHZtLCBsb2NhbGUtPm1pbmltaXplKCkpKSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnRvU3RyaW5nCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50
bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBsb2Nh
bGUtPnRvU3RyaW5nKCkpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
SW50bC5Mb2NhbGUucHJvdG90eXBlLmJhc2VOYW1lCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJCYXNlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBl
LmJhc2VOYW1lIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIGxvY2FsZS0+YmFzZU5hbWUoKSkpKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5
cGUuY2FsZW5kYXIKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlckNhbGVuZGFyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUg
PSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsK
KworICAgIGNvbnN0IFN0cmluZyYgY2FsZW5kYXIgPSBsb2NhbGUtPmNhbGVuZGFyKCk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsZW5kYXIuaXNFbXB0
eSgpID8ganNVbmRlZmluZWQoKSA6IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY2FsZW5kYXIpKSk7
Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90
eXBlLmNhc2VGaXJzdAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyQ2FzZUZpcnN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2Nh
bGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0IGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJf
cyk7CisKKyAgICBjb25zdCBTdHJpbmcmIGNhc2VGaXJzdCA9IGxvY2FsZS0+Y2FzZUZpcnN0KCk7
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FzZUZpcnN0
LmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGNhc2VG
aXJzdCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2Fs
ZS5wcm90b3R5cGUuY29sbGF0aW9uCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRp
b24gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
TG9jYWxlIl9zKTsKKworICAgIGNvbnN0IFN0cmluZyYgY29sbGF0aW9uID0gbG9jYWxlLT5jb2xs
YXRpb24oKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShj
b2xsYXRpb24uaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgY29sbGF0aW9uKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUlu
dGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBl
LmhvdXJDeWNsZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6
ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgY29uc3QgU3RyaW5nJiBob3VyQ3ljbGUgPSBsb2Nh
bGUtPmhvdXJDeWNsZSgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGhvdXJDeWNsZS5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNOb250cml2aWFs
U3RyaW5nKHZtLCBob3VyQ3ljbGUpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlck51bWVyaWMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWxvY2FsZSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS5udW1lcmljIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4obG9jYWxlLT5udW1lcmljKCkgPT0gVHJpU3RhdGU6OlRy
dWUpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUu
cHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJ
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUubnVtYmVyaW5nU3lzdGVtIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBjb25zdCBTdHJpbmcmIG51bWJlcmlu
Z1N5c3RlbSA9IGxvY2FsZS0+bnVtYmVyaW5nU3lzdGVtKCk7CisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyaW5nU3lzdGVtLmlzRW1wdHkoKSA/IGpz
VW5kZWZpbmVkKCkgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG51bWJlcmluZ1N5c3RlbSkpKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5
cGUubGFuZ3VhZ2UKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3Rv
dHlwZUdldHRlckxhbmd1YWdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBsb2NhbGUg
PSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3VhZ2UgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsK
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgbG9jYWxlLT5sYW5ndWFnZSgpKSkpOworfQorCisvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2FsZVByb3RvdHlwZUdldHRlclNjcmlwdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9j
YWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghbG9jYWxlKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmpl
Y3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOworCisgICAgY29uc3QgU3RyaW5nJiBzY3Jp
cHQgPSBsb2NhbGUtPnNjcmlwdCgpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHNjcmlwdC5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNOb250cml2
aWFsU3RyaW5nKHZtLCBzY3JpcHQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLnJlZ2lvbgorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyUmVnaW9uKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFsb2NhbGUpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXpl
ZCBhcyBhIExvY2FsZSJfcyk7CisKKyAgICBjb25zdCBTdHJpbmcmIHJlZ2lvbiA9IGxvY2FsZS0+
cmVnaW9uKCk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
cmVnaW9uLmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
IHJlZ2lvbikpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTUy
YjAwM2I1NGRjZmU1MDg4NmFjYTc2NDJhMDg2YmZkNWY4MzU2MAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEludGxMb2NhbGVQcm90b3R5
cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcg
QmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlU
YWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4K
KyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAg
ICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxMb2NhbGVQcm90b3R5
cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQor
CisgICAgc3RhdGljIEludGxMb2NhbGVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgSW50
bExvY2FsZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA0YjQ2ZWE5NWZlZTIwOGQzYmZkNWUwNDNk
ODhjN2NlMmFiODU1ODg4Li41NzFhOTk3MzcyN2VjYTU1OWU4MzU5NzljNDFmNTQwZTZkYjdlOTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAt
MzUsNiArMzUsOSBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bERhdGVU
aW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSW50bExvY2FsZS5oIgorI2luY2x1ZGUg
IkludGxMb2NhbGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkludGxMb2NhbGVQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJ
bnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3IuaCIKQEAgLTEzNiw2ICsxMzksMTAgQEAgSW50bE9iamVjdCogSW50bE9iamVjdDo6
Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKgog
dm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGlmIChP
cHRpb25zOjp1c2VJbnRsTG9jYWxlKCkpIHsKKyAgICAgICAgYXV0byogbG9jYWxlQ29uc3RydWN0
b3IgPSBJbnRsTG9jYWxlQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bExvY2FsZUNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5j
dGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxMb2NhbGVQcm90b3R5cGUqPihnbG9iYWxPYmpl
Y3QtPmxvY2FsZVN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworICAgICAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+TG9jYWxl
LCBsb2NhbGVDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOworICAgIH0KICAgICBpZiAoT3B0aW9uczo6dXNlSW50bFJlbGF0aXZl
VGltZUZvcm1hdCgpKSB7CiAgICAgICAgIGF1dG8qIHJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5yZWxhdGl2ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKICAgICAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJlbGF0aXZlVGltZUZv
cm1hdCwgcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKQEAgLTE0Nyw3ICsxNTQsMjkgQEAgU3Ry
dWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29udmVydElDVUxvY2FsZVRvQkNQNDdM
YW5ndWFnZVRhZyhjb25zdCBjaGFyKiBsb2NhbGVJRCkKK1ZlY3RvcjxjaGFyLCAzMj4gbG9jYWxl
SURCdWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5nJiB0YWcpCit7CisgICAgaWYgKCF0
YWcubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1
cyA9IFVfWkVST19FUlJPUjsKKyAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcigzMik7CisgICAg
aW50MzJfdCBwYXJzZWRMZW5ndGg7CisgICAgYXV0byBidWZmZXJMZW5ndGggPSB1bG9jX2Zvckxh
bmd1YWdlVGFnKHRhZy5kYXRhKCksIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksICZwYXJz
ZWRMZW5ndGgsICZzdGF0dXMpOworICAgIGlmIChuZWVkc1RvR3Jvd1RvUHJvZHVjZUNTdHJpbmco
c3RhdHVzKSkgeworICAgICAgICAvLyBCZWZvcmUgSUNVIDY0LCB0aGVyZSdzIGEgY2hhbmNlIHVs
b2NfZm9yTGFuZ3VhZ2VUYWcgd2lsbCAiYnVmZmVyIG92ZXJmbG93IiB3aGlsZSByZXF1ZXN0aW5n
IGEgKnNtYWxsZXIqIHNpemUuCisgICAgICAgIGJ1ZmZlci5yZXNpemUoYnVmZmVyTGVuZ3RoICsg
MSk7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgdWxvY19mb3JMYW5n
dWFnZVRhZyh0YWcuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGggKyAxLCAmcGFy
c2VkTGVuZ3RoLCAmc3RhdHVzKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpIHx8
IHBhcnNlZExlbmd0aCAhPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih0YWcubGVuZ3RoKCkpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgQVNTRVJUKGJ1ZmZlci5jb250YWlucygnXDAnKSk7Cisg
ICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworU3RyaW5nIGxhbmd1YWdlVGFnRm9yTG9jYWxlSUQoY29u
c3QgY2hhciogbG9jYWxlSUQsIGJvb2wgaXNJbW1vcnRhbCkKIHsKICAgICBVRXJyb3JDb2RlIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcigzMik7CkBA
IC0xNTUsMTUgKzE4NCwxNyBAQCBzdGF0aWMgU3RyaW5nIGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3
TGFuZ3VhZ2VUYWcoY29uc3QgY2hhciogbG9jYWxlSUQpCiAgICAgaWYgKG5lZWRzVG9Hcm93VG9Q
cm9kdWNlQnVmZmVyKHN0YXR1cykpIHsKICAgICAgICAgYnVmZmVyLmdyb3cobGVuZ3RoKTsKICAg
ICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgICAgICB1bG9jX3RvTGFuZ3VhZ2VUYWco
bG9jYWxlSUQsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGZhbHNlLCAmc3RhdHVzKTsK
KyAgICAgICAgdWxvY190b0xhbmd1YWdlVGFnKGxvY2FsZUlELCBidWZmZXIuZGF0YSgpLCBsZW5n
dGgsIGZhbHNlLCAmc3RhdHVzKTsKICAgICB9Ci0gICAgaWYgKCFVX0ZBSUxVUkUoc3RhdHVzKSkg
ewotICAgICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gc3RvcmUgaW50byBzdGF0aWMgdmFyaWFibGVz
IHRoYXQgbWF5IGJlIHNoYXJlZCBhY3Jvc3MgCi0gICAgICAgIC8vIEpTQyBleGVjdXRpb24gdGhy
ZWFkcy4gVGhpcyBtdXN0IGJlIGltbW9ydGFsIHRvIG1ha2UgY29uY3VycmVudCByZWYvZGVyZWYK
LSAgICAgICAgLy8gc2FmZS4KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIC8vIFRoaXMgaXMgdXNlZCB0byBzdG9yZSBpbnRvIHN0YXRp
YyB2YXJpYWJsZXMgdGhhdCBtYXkgYmUgc2hhcmVkIGFjcm9zcyBKU0MgZXhlY3V0aW9uIHRocmVh
ZHMuCisgICAgLy8gVGhpcyBtdXN0IGJlIGltbW9ydGFsIHRvIG1ha2UgY29uY3VycmVudCByZWYv
ZGVyZWYgc2FmZS4KKyAgICBpZiAoaXNJbW1vcnRhbCkKICAgICAgICAgcmV0dXJuIFN0cmluZyhT
dHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkp
OwotICAgIH0KLSAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nKGJ1ZmZl
ci5kYXRhKCksIGxlbmd0aCk7CiB9CiAKIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bEF2YWls
YWJsZUxvY2FsZXMoKQpAQCAtMTc0LDkgKzIwNSwxMCBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxBdmFpbGFibGVMb2NhbGVzKCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlh
bGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CiAgICAg
ICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7CisgICAgICAgIGNvbnN0ZXhw
ciBib29sIGlzSW1tb3J0YWwgPSB0cnVlOwogICAgICAgICBpbnQzMl90IGNvdW50ID0gdWxvY19j
b3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gY29udmVydElDVUxvY2FsZVRvQkNQ
NDdMYW5ndWFnZVRhZyh1bG9jX2dldEF2YWlsYWJsZShpKSk7CisgICAgICAgICAgICBTdHJpbmcg
bG9jYWxlID0gbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRCh1bG9jX2dldEF2YWlsYWJsZShpKSwgaXNJ
bW1vcnRhbCk7CiAgICAgICAgICAgICBpZiAoIWxvY2FsZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQobG9jYWxlKTsKICAgICAgICAgfQpAQCAtMTkyLDkg
KzIyNCwxMCBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxv
Y2FsZXMoKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKICAgICBz
dGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKICAgICAgICAgQVNTRVJUKGF2YWls
YWJsZUxvY2FsZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgY29uc3RleHByIGJvb2wgaXNJbW1vcnRh
bCA9IHRydWU7CiAgICAgICAgIGludDMyX3QgY291bnQgPSB1Y29sX2NvdW50QXZhaWxhYmxlKCk7
CiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVj
b2xfZ2V0QXZhaWxhYmxlKGkpKTsKKyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBsYW5ndWFn
ZVRhZ0ZvckxvY2FsZUlEKHVjb2xfZ2V0QXZhaWxhYmxlKGkpLCBpc0ltbW9ydGFsKTsKICAgICAg
ICAgICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBhdmFpbGFibGVM
b2NhbGVzLmFkZChsb2NhbGUpOwogICAgICAgICB9CkBAIC0zMTYsNDAgKzM0OSwxMyBAQCBib29s
IGlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogCiAvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWlzc3RydWN0dXJhbGx5dmFsaWRsYW5ndWFnZXRh
ZwogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1jYW5vbmljYWxpemV1bmljb2RlbG9j
YWxlaWQKLXN0YXRpYyBTdHJpbmcgY2Fub25pY2FsaXplTGFuZ3VhZ2VUYWcoY29uc3QgQ1N0cmlu
ZyYgaW5wdXQpCitzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKGNvbnN0IENT
dHJpbmcmIHRhZykKIHsKLSAgICBpZiAoIWlucHV0Lmxlbmd0aCgpKQorICAgIGF1dG8gYnVmZmVy
ID0gbG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZyh0YWcpOworICAgIGlmIChidWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICAvLyBXZSBuZWVkIHRvIGJl
IGNhcmVmdWwgd2l0aCB0aGUgb3V0cHV0IG9mIHVsb2NfZm9yTGFuZ3VhZ2VUYWc6Ci0gICAgLy8g
LSB1bG9jX3RvTGFuZ3VhZ2VUYWcgZG9lc24ndCB0YWtlIGFuIGlucHV0IHNpemUgcGFyYW0gc28g
d2UgbXVzdCBlbnN1cmUgdGhlIHN0cmluZyBpcyBudWxsLXRlcm1pbmF0ZWQgb3Vyc2VsdmVzCi0g
ICAgLy8gLSBiZWZvcmUgSUNVIDY0LCB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgaXQgd2lsbCAiYnVm
ZmVyIG92ZXJmbG93IiB3aGlsZSByZXF1ZXN0aW5nIGEgKnNtYWxsZXIqIHNpemUKLSAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICBWZWN0b3I8Y2hhciwgMzI+IGludGVy
bWVkaWF0ZSgzMik7Ci0gICAgaW50MzJfdCBwYXJzZWRMZW5ndGg7Ci0gICAgYXV0byBpbnRlcm1l
ZGlhdGVMZW5ndGggPSB1bG9jX2Zvckxhbmd1YWdlVGFnKGlucHV0LmRhdGEoKSwgaW50ZXJtZWRp
YXRlLmRhdGEoKSwgaW50ZXJtZWRpYXRlLnNpemUoKSwgJnBhcnNlZExlbmd0aCwgJnN0YXR1cyk7
Ci0gICAgaWYgKG5lZWRzVG9Hcm93VG9Qcm9kdWNlQ1N0cmluZyhzdGF0dXMpKSB7Ci0gICAgICAg
IGludGVybWVkaWF0ZS5yZXNpemUoaW50ZXJtZWRpYXRlTGVuZ3RoICsgMSk7Ci0gICAgICAgIHN0
YXR1cyA9IFVfWkVST19FUlJPUjsKLSAgICAgICAgdWxvY19mb3JMYW5ndWFnZVRhZyhpbnB1dC5k
YXRhKCksIGludGVybWVkaWF0ZS5kYXRhKCksIGludGVybWVkaWF0ZUxlbmd0aCArIDEsICZwYXJz
ZWRMZW5ndGgsICZzdGF0dXMpOwotICAgIH0KLSAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykgfHwg
cGFyc2VkTGVuZ3RoICE9IHN0YXRpY19jYXN0PGludDMyX3Q+KGlucHV0Lmxlbmd0aCgpKSkKLSAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgQVNTRVJUKGludGVybWVkaWF0ZS5jb250YWlu
cygnXDAnKSk7Ci0KLSAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAgVmVjdG9yPGNoYXIs
IDMyPiByZXN1bHQoMzIpOwotICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdWxvY190b0xhbmd1YWdl
VGFnKGludGVybWVkaWF0ZS5kYXRhKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksIGZh
bHNlLCAmc3RhdHVzKTsKLSAgICBpZiAobmVlZHNUb0dyb3dUb1Byb2R1Y2VCdWZmZXIoc3RhdHVz
KSkgewotICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOwotICAgICAgICBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7Ci0gICAgICAgIHVsb2NfdG9MYW5ndWFnZVRhZyhpbnRlcm1lZGlhdGUu
ZGF0YSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgsIGZhbHNlLCAmc3RhdHVzKTsKLSAg
ICB9Ci0gICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0KLSAgICByZXR1cm4gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCk7CisgICAg
cmV0dXJuIGxhbmd1YWdlVGFnRm9yTG9jYWxlSUQoYnVmZmVyLmRhdGEoKSk7CiB9CiAKIFZlY3Rv
cjxTdHJpbmc+IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBsb2NhbGVzKQpAQCAtMzY2LDcgKzM3Miw3IEBAIFZlY3RvcjxTdHJpbmc+
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBsb2NhCiAgICAgICAgIHJldHVybiBzZWVuOwogCiAgICAgSlNPYmplY3QqIGxvY2FsZXNP
YmplY3Q7Ci0gICAgaWYgKGxvY2FsZXMuaXNTdHJpbmcoKSkgeworICAgIGlmIChsb2NhbGVzLmlz
U3RyaW5nKCkgfHwgbG9jYWxlcy5pbmhlcml0czxJbnRsTG9jYWxlPih2bSkpIHsKICAgICAgICAg
SlNBcnJheSogbG9jYWxlc0FycmF5ID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdp
dGhDb250aWd1b3VzKSk7CiAgICAgICAgIGlmICghbG9jYWxlc0FycmF5KSB7CiAgICAgICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CkBAIC00MDIsMTMg
KzQwOCwxOCBAQCBWZWN0b3I8U3RyaW5nPiBjYW5vbmljYWxpemVMb2NhbGVMaXN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogICAgICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIEpTU3RyaW5nKiB0YWcgPSBrVmFs
dWUudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAgICAgICAgRXhwZWN0ZWQ8Q1N0cmlu
ZywgVVRGOENvbnZlcnNpb25FcnJvcj4gcmF3VGFnOworICAgICAgICAgICAgaWYgKGtWYWx1ZS5p
bmhlcml0czxJbnRsTG9jYWxlPih2bSkpCisgICAgICAgICAgICAgICAgcmF3VGFnID0ganNDYXN0
PEludGxMb2NhbGUqPihrVmFsdWUpLT50b1N0cmluZygpLnRyeUdldFV0ZjgoKTsKKyAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEpTU3RyaW5nKiB0YWcgPSBrVmFsdWUudG9TdHJp
bmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBWZWN0b3I8U3RyaW5nPigpKTsKIAotICAgICAgICAgICAgYXV0byB0YWdWYWx1ZSA9IHRh
Zy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIFZlY3RvcjxTdHJpbmc+KCkpOworICAgICAgICAgICAgICAgIGF1dG8gdGFnVmFsdWUg
PSB0YWctPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKLSAgICAgICAgICAgIGF1dG8gcmF3
VGFnID0gdGFnVmFsdWUudHJ5R2V0VXRmOCgpOworICAgICAgICAgICAgICAgIHJhd1RhZyA9IHRh
Z1ZhbHVlLnRyeUdldFV0ZjgoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghcmF3
VGFnKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJhd1RhZy5lcnJvcigpID09IFVURjhDb252ZXJz
aW9uRXJyb3I6Ok91dE9mTWVtb3J5KQogICAgICAgICAgICAgICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CkBAIC00MTcsNyArNDI4LDcgQEAgVmVjdG9y
PFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgICAgICAgICAgU3RyaW5nIGNhbm9uaWNhbGl6ZWRUYWcg
PSBjYW5vbmljYWxpemVMYW5ndWFnZVRhZyhyYXdUYWcudmFsdWUoKSk7CiAgICAgICAgICAgICBp
ZiAoY2Fub25pY2FsaXplZFRhZy5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSB0cnlNYWtlU3RyaW5nKCJpbnZhbGlkIGxhbmd1YWdlIHRhZzogIiwgdGFn
VmFsdWUpOworICAgICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSB0cnlNYWtlU3Ry
aW5nKCJpbnZhbGlkIGxhbmd1YWdlIHRhZzogIiwgcmF3VGFnLT5kYXRhKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWSghZXJyb3JNZXNzYWdlKSkgewogICAgICAgICAgICAgICAgICAg
ICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVy
cm9yKGdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAt
NDgzLDcgKzQ5NCw4IEBAIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaWN1RGVmYXVsdExv
Y2FsU3RyaW5nOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKICAg
ICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgaWN1RGVmYXVs
dExvY2FsU3RyaW5nLmdldCgpID0gY29udmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1
bG9jX2dldERlZmF1bHQoKSk7CisgICAgICAgIGNvbnN0ZXhwciBib29sIGlzSW1tb3J0YWwgPSB0
cnVlOworICAgICAgICBpY3VEZWZhdWx0TG9jYWxTdHJpbmcuZ2V0KCkgPSBsYW5ndWFnZVRhZ0Zv
ckxvY2FsZUlEKHVsb2NfZ2V0RGVmYXVsdCgpLCBpc0ltbW9ydGFsKTsKICAgICB9KTsKICAgICBp
ZiAoIWljdURlZmF1bHRMb2NhbFN0cmluZy0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gaWN1
RGVmYXVsdExvY2FsU3RyaW5nLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5oCmluZGV4IDViNzhlYmM5ODUyOGYxN2E1MGJjYjY0OGMyNGFkMTdhNjZhMzVm
Y2YuLmVkOWMxZTEwYjZhZGE0ZmQ5ZDQyNTc0NjA2Y2RkOTJhOTEyMjM5YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTY4LDYgKzY4LDggQEAgVHJp
U3RhdGUgaW50bEJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMs
IFByb3BlcnR5TmFtZSk7CiBTdHJpbmcgaW50bFN0cmluZ09wdGlvbihKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29u
c3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNvbnN0IGNoYXIqIGZhbGxi
YWNrKTsKIHVuc2lnbmVkIGludGxOdW1iZXJPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IG9wdGlvbnMsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11
bSwgdW5zaWduZWQgZmFsbGJhY2spOwogdW5zaWduZWQgaW50bERlZmF1bHROdW1iZXJPcHRpb24o
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0s
IHVuc2lnbmVkIG1heGltdW0sIHVuc2lnbmVkIGZhbGxiYWNrKTsKK1ZlY3RvcjxjaGFyLCAzMj4g
bG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5nJik7CitTdHJpbmcgbGFu
Z3VhZ2VUYWdGb3JMb2NhbGVJRChjb25zdCBjaGFyKiwgYm9vbCBpc0ltbW9ydGFsID0gZmFsc2Up
OwogVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgbG9jYWxlcyk7CiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlTG9jYWxl
KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcywgY29uc3QgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4mIG9wdGlvbnMsIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2YW50RXh0ZW5z
aW9uS2V5c1tdLCBzaXplX3QgcmVsZXZhbnRFeHRlbnNpb25LZXlDb3VudCwgVmVjdG9yPFN0cmlu
Zz4gKCpsb2NhbGVEYXRhKShjb25zdCBTdHJpbmcmLCBzaXplX3QpKTsKIEpTVmFsdWUgc3VwcG9y
dGVkTG9jYWxlcyhKU0dsb2JhbE9iamVjdCosIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxh
YmxlTG9jYWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2FsZXMsIEpTVmFs
dWUgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKaW5kZXggODQ0Njc4M2JlNTk4NGJkZmU5ODA0MjYyZTk1OWQxOGRjNzQ2NTdj
OS4uNjY1MWEwMmY3MmQyMzRjOTJiNzcxODQ5MjA3ZjQzMWZkMDAyN2IyMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODEsNiAr
ODEsOCBAQAogI2luY2x1ZGUgIkludGxDb2xsYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIklu
dGxEYXRlVGltZUZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkludGxMb2NhbGUuaCIKKyNpbmNsdWRlICJJbnRsTG9jYWxlUHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxOdW1i
ZXJGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCkBAIC05NDMsMTgg
Kzk0NSwyNCBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0
cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgSW50bENvbGxh
dG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSA9IEludGxDb2xsYXRvclByb3RvdHlwZTo6
Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgSW50bENvbGxhdG9yUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBpbml0LnNldChJbnRsQ29sbGF0b3I6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGNvbGxhdG9yUHJvdG90eXBlKSk7CiAgICAg
ICAgIH0pOwotICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmluaXRMYXRlcigKLSAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKLSAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKTsKLSAgICAgICAgICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZv
cm1hdFByb3RvdHlwZSA9IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkp
KTsKLSAgICAgICAgICAgIGluaXQuc2V0KEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIG51bWJlckZvcm1hdFByb3RvdHlwZSkpOwotICAgICAg
ICB9KTsKICAgICBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0
Lm93bmVyKTsKICAgICAgICAgICAgIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50bERhdGVUaW1lRm9ybWF0OjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkYXRlVGltZUZvcm1hdFByb3RvdHlw
ZSkpOwogICAgICAgICB9KTsKKyAgICBtX2xvY2FsZVN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAg
ICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsTG9jYWxlUHJvdG90eXBlKiBsb2NhbGVQcm90
b3R5cGUgPSBJbnRsTG9jYWxlUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSW50bExvY2FsZVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQoSW50bExvY2Fs
ZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgbG9jYWxlUHJvdG90eXBl
KSk7CisgICAgICAgIH0pOworICAgIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmluaXRMYXRlcigK
KyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUq
IG51bWJlckZvcm1hdFByb3RvdHlwZSA9IEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0
ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIG51bWJlckZvcm1hdFByb3RvdHlwZSkp
OworICAgICAgICB9KTsKICAgICBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmluaXRMYXRlcigKICAg
ICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3Qq
Pihpbml0Lm93bmVyKTsKQEAgLTE3NzUsOCArMTc4Myw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIAogICAg
IHRoaXNPYmplY3QtPm1fZGVmYXVsdENvbGxhdG9yLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1fY29sbGF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdGhpc09iamVj
dC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2Jq
ZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2Jq
ZWN0LT5tX2xvY2FsZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X3BsdXJhbFJ1bGVzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBhMGMzYjRhYWYw
MDA0NmQyZDk0MTZiNDkwYmE2MjUyNDRkOThmMzZhLi42NmEzY2JlZTYzOTU4YTRlOGVlZDAzOGI1
MjIxMTlhYWU2MmJhZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTI5MSw4ICsyOTEsOSBAQCBwdWJsaWM6CiAKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1
Y3R1cmU7Ci0gICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbnVt
YmVyRm9ybWF0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlPiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2xvY2FsZVN0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlOwogCkBAIC03ODYsOCArNzg3LDkgQEAgcHVibGlj
OgogICAgIFN0cnVjdHVyZSogd2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX3dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlLmdldCh0
aGlzKTsgfQogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBTdHJ1Y3R1cmUqIGNv
bGxhdG9yU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jb2xsYXRvclN0cnVjdHVyZS5nZXQodGhpcyk7
IH0KLSAgICBTdHJ1Y3R1cmUqIG51bWJlckZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbnVt
YmVyRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCh0
aGlzKTsgfQorICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4g
bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBsb2Nh
bGVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2xvY2FsZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHBsdXJhbFJ1bGVzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbHVyYWxSdWxl
c1N0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlbGF0aXZlVGltZUZvcm1h
dFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCh0
aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApp
bmRleCAxNjdhMjExMGJmMjg5MDIwMTg5OTMwMTExZGQ0YWU2ZmJjM2U3Y2VjLi5mOWE4YmQ1NTc0
YzE1YjRiNmE4MWVjMGJkY2YyMWExMGM2MDM2YWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4Niw2ICs0ODYsNyBAQCBjb25zdGV4cHIgYm9v
bCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNl
V2ViQXNzZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0
aGUgd2FzbSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWFrUmVmcywg
ZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCiAgICAg
dihCb29sLCB1c2VCaWdJbnQsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgZW5hYmxl
IEJpZ0ludCBzdXBwb3J0LiIpIFwKKyAgICB2KEJvb2wsIHVzZUludGxMb2NhbGUsIGZhbHNlLCBO
b3JtYWwsICJFeHBvc2UgdGhlIEludGwuTG9jYWxlIGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJv
b2wsIHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhl
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0IGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVz
ZUFycmF5QWxsb2NhdGlvblByb2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2ls
bCB1c2Ugb3VyIG5vcm1hbCBhcnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRo
ZSBhbGxvY2F0aW9uIHByb2ZpbGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIp
IFwKICAgICB2KEJvb2wsIGZvcmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwg
Y3JlYXRlX3RoaXMgd2lsbCBhbHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90
byBzdHJ1Y3R1cmUuIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDRi
OTZkZDViYzgwM2NlZWVkY2NjYTVmN2ZjMzUzNGIyZjdjYzFhNTkuLmNkYzA4YjZkODU4MDliNDU4
N2M4ZjU0NjQxYWIyZjUyZmY1NzRkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKQEAgLTc1LDYgKzc1LDcgQEAKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkludGxDb2xsYXRvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgorI2luY2x1
ZGUgIkludGxMb2NhbGUuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVk
ZSAiSW50bFBsdXJhbFJ1bGVzLmgiCiAjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
IgpAQCAtMzM5LDYgKzM0MCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICNlbmRpZgogICAgICwgaW50bENvbGxhdG9ySGVhcENlbGxUeXBlKElzb0hlYXBDZWxs
VHlwZTo6Y3JlYXRlPEludGxDb2xsYXRvcj4oKSkKICAgICAsIGludGxEYXRlVGltZUZvcm1hdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkp
CisgICAgLCBpbnRsTG9jYWxlSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPElu
dGxMb2NhbGU+KCkpCiAgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCiAgICAgLCBpbnRsUGx1cmFsUnVs
ZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigp
KQogICAgICwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5
cGU6OmNyZWF0ZTxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQpAQCAtMTUxMCw2ICsxNTEyLDcg
QEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGNhbGxiYWNrQVBJV3Jh
cHBlckdsb2JhbE9iamVjdFNwYWNlLCBjYWwKICNlbmRpZgogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxDb2xsYXRvclNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEludGxDb2xsYXRvcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVUaW1lRm9ybWF0SGVh
cENlbGxUeXBlLmdldCgpLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCitEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bExvY2FsZVNwYWNlLCBpbnRsTG9jYWxlSGVhcENlbGxU
eXBlLmdldCgpLCBJbnRsTG9jYWxlKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxOdW1iZXJGb3JtYXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bE51bWJlckZvcm1hdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnRsUGx1cmFsUnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxU
eXBlLmdldCgpLCBJbnRsUGx1cmFsUnVsZXMpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNWI3YTZmNTQyMzMwNDE3MjlhZTE4NjVhNTI5Nzhj
NTgzZDk2MDA2OC4uNThmMTRmOTI3YjYwMjBlNDJmOTM3NmNhY2I3NGVkOThkNWI3ZDRjZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgSWRl
bnRpZmllcjsKIGNsYXNzIEludGVycHJldGVyOwogY2xhc3MgSW50bENvbGxhdG9yOwogY2xhc3Mg
SW50bERhdGVUaW1lRm9ybWF0OworY2xhc3MgSW50bExvY2FsZTsKIGNsYXNzIEludGxOdW1iZXJG
b3JtYXQ7CiBjbGFzcyBJbnRsUGx1cmFsUnVsZXM7CiBjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0OwpAQCAtNDAwLDYgKzQwMSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxDb2xsYXRvckhlYXBDZWxsVHlwZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5
cGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bExvY2FsZUhlYXBD
ZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVy
Rm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+
IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVh
cENlbGxUeXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwpAQCAtNTU3LDYg
KzU1OSw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHdpdGhTY29wZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bENvbGxhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGludGxMb2NhbGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxlc1NwYWNlKQogICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDliYTIzYmMwNDYw
MDE0OWYxYzc5MzZlYWQ4MGYwYjVhNzExNWJiMjIuLjEwMTE1MzdjMzQ1OGVmMzlhZGVkOGIzMzAz
MDgxNGNmOGMyYjkwZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNS0wMiAgUm9zcyBLaXJzbGluZyAgPHJv
c3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1lbnQgSW50
bC5Mb2NhbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBTYWFtIEJhcmF0
aS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHM6CisgICAgICAgIEFk
ZCBydW5JbnRsTG9jYWxlRW5hYmxlZC4KKwogMjAyMC0wNS0wNSAgRGFuaWVsIEJhdGVzICA8ZGFi
YXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU2hvdWxkIHNob3cgc2VsZWN0aW9uIGhpZ2hsaWdo
dCBkdXJpbmcgdGV4dCBpbnRlcmFjdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5k
ZXggNjdlNDUxNTM5ZmJkMDVmZmVhMDVlODViYTQ2NmQ4YjgwOWRkOTljYS4uNWYwZjVmMTQ1NzNi
ZDFmMDA3OThmMGU5M2YyNGY1M2YwYTFiYmVjOSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9y
dW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzCkBAIC03MTUsNiArNzE1LDEwIEBAIGRlZiBydW5CaWdJbnRFbmFibGVkQmFzZWxpbmUoKm9w
dGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oImJpZy1pbnQtZW5hYmxlZC1iYXNl
bGluZSIsICItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNlREZHSklUPTAiLCAqb3B0aW9uYWxUZXN0
U3BlY2lmaWNPcHRpb25zKQogZW5kCiAKK2RlZiBydW5JbnRsTG9jYWxlRW5hYmxlZCgqb3B0aW9u
YWxUZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiaW50bC1sb2NhbGUtZW5hYmxlZCIsICIt
LXVzZUludGxMb2NhbGU9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lm
aWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVuYWJsZWQo
Km9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oImludGwtcmVsYXRpdmV0aW1l
Zm9ybWF0LWVuYWJsZWQiLCAiLS11c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PXRydWUiICwgKihG
VExfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTIzMWNhZjhl
YWNmYTIyYzg1NTEwOGU3OWJmZjg3NWM0N2Q1ZTcwMi4uMThjNGYwNTFjZTcxOTQ0NTFkMTIyNTEy
MjRiM2I0Yjg2YzhhNDk4YyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNS0wMiAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbXBsZW1l
bnQgSW50bC5Mb2NhbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBTYWFt
IEJhcmF0aS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLWxvY2FsZS5qczogQWRkZWQuCisgICAg
ICAgICogc3RyZXNzL2ludGwtbG9jYWxlLWFzLWludGwtcGFyYW0uanM6IEFkZGVkLgorCisgICAg
ICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKyAgICAgICAgRW5hYmxlIEludGwuTG9jYWxlIGZl
YXR1cmUgd2l0aCBmbGFnLgorCisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoK
KyAgICAgICAgTWFyayBrbm93biBmYWlsdXJlcy4KKyAgICAgICAgTm9uZSBvZiB0aGVzZSBzaG91
bGQgYmUgc3BlY2lmaWMgdG8gSW50bC5Mb2NhbGUuCisKIDIwMjAtMDUtMDUgIFJvc3MgS2lyc2xp
bmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtJbnRsXSBBbHBoYWJldGl6
ZSBleHRlbnNpb24ga2V5cyBhbmQgY29ycmVjdGx5IG1hcmsgY29uc3QgbWV0aG9kcwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1sb2NhbGUtYXMtaW50bC1wYXJhbS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2ludGwtbG9jYWxlLWFzLWludGwtcGFyYW0uanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJkZmI3
NjcxMWIxYzM5YTQyMmMyNjg1MTZiNjFkZjI3ODk2NGIyMQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2ludGwtbG9jYWxlLWFzLWludGwtcGFyYW0uanMKQEAgLTAsMCArMSw0NSBA
QAorLy9AIHJ1bkludGxMb2NhbGVFbmFibGVkKCItLXVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQ9
dHJ1ZSIpCisKK2NvbnN0IHRhZyA9ICdqYS1IYW50LUtSLXUtY2EtYnVkZGhpc3QtY28tZW9yLWhj
LWgxMS1rZi1sb3dlci1rbi1mYWxzZS1udS10aGFpJzsKK2NvbnN0IGxvY2FsZSA9IG5ldyBJbnRs
LkxvY2FsZSh0YWcpOworCitmdW5jdGlvbiBzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUoZnVu
YykgeworICAgIGNvbnN0IGFjdHVhbCA9IGZ1bmMobG9jYWxlKTsKKyAgICBjb25zdCBleHBlY3Rl
ZCA9IGZ1bmModGFnKTsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOwor
fQorCitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gdGFnT3JMb2Nh
bGUudG9TdHJpbmcoKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUg
PT4gbmV3IEludGwuTG9jYWxlKHRhZ09yTG9jYWxlKS50b1N0cmluZygpKTsKKworc2hvdWxkQmVT
YW1lV2l0aFRhZ09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuZ2V0
Q2Fub25pY2FsTG9jYWxlcyh0YWdPckxvY2FsZSkpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxv
Y2FsZSh0YWdPckxvY2FsZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLmdldENhbm9uaWNhbExvY2Fs
ZXMoWydlbicsIHRhZ09yTG9jYWxlLCAnZnInXSkpKTsKKworc2hvdWxkQmVTYW1lV2l0aFRhZ09y
TG9jYWxlKHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuQ29sbGF0b3Iuc3VwcG9y
dGVkTG9jYWxlc09mKHRhZ09yTG9jYWxlKSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09yTG9jYWxl
KHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9j
YWxlc09mKFsnZW4nLCB0YWdPckxvY2FsZSwgJ2ZyJ10pKSk7CitzaG91bGRCZVNhbWVXaXRoVGFn
T3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gbmV3IEludGwuQ29sbGF0b3IodGFnT3JMb2NhbGUpLnJl
c29sdmVkT3B0aW9ucygpLmxvY2FsZSk7CisKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0
YWdPckxvY2FsZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZih0YWdPckxvY2FsZSkpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2FsZSh0
YWdPckxvY2FsZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZihbJ2VuJywgdGFnT3JMb2NhbGUsICdmciddKSkpOworc2hvdWxkQmVTYW1lV2l0
aFRhZ09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KHRhZ09y
TG9jYWxlKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUpOworCitzaG91bGRCZVNhbWVXaXRoVGFn
T3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5OdW1iZXJGb3JtYXQu
c3VwcG9ydGVkTG9jYWxlc09mKHRhZ09yTG9jYWxlKSkpOworc2hvdWxkQmVTYW1lV2l0aFRhZ09y
TG9jYWxlKHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuTnVtYmVyRm9ybWF0LnN1
cHBvcnRlZExvY2FsZXNPZihbJ2VuJywgdGFnT3JMb2NhbGUsICdmciddKSkpOworc2hvdWxkQmVT
YW1lV2l0aFRhZ09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IG5ldyBJbnRsLk51bWJlckZvcm1hdCh0
YWdPckxvY2FsZSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlKTsKKworc2hvdWxkQmVTYW1lV2l0
aFRhZ09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuUGx1cmFsUnVs
ZXMuc3VwcG9ydGVkTG9jYWxlc09mKHRhZ09yTG9jYWxlKSkpOworc2hvdWxkQmVTYW1lV2l0aFRh
Z09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IEpTT04uc3RyaW5naWZ5KEludGwuUGx1cmFsUnVsZXMu
c3VwcG9ydGVkTG9jYWxlc09mKFsnZW4nLCB0YWdPckxvY2FsZSwgJ2ZyJ10pKSk7CitzaG91bGRC
ZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gbmV3IEludGwuUGx1cmFsUnVsZXMo
dGFnT3JMb2NhbGUpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSk7CisKK3Nob3VsZEJlU2FtZVdp
dGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiBKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YodGFnT3JMb2NhbGUpKSk7CitzaG91bGRCZVNh
bWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFsnZW4nLCB0YWdPckxvY2FsZSwgJ2Zy
J10pKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gbmV3IElu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0KHRhZ09yTG9jYWxlKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2Nh
bGUpOworCitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gWzNdLnRv
TG9jYWxlU3RyaW5nKHRhZ09yTG9jYWxlKSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUo
dGFnT3JMb2NhbGUgPT4gM24udG9Mb2NhbGVTdHJpbmcodGFnT3JMb2NhbGUpKTsKK3Nob3VsZEJl
U2FtZVdpdGhUYWdPckxvY2FsZSh0YWdPckxvY2FsZSA9PiBuZXcgRGF0ZSgwKS50b0xvY2FsZVN0
cmluZyh0YWdPckxvY2FsZSwgeyB0aW1lWm9uZTogJ1VUQycgfSkpOworc2hvdWxkQmVTYW1lV2l0
aFRhZ09yTG9jYWxlKHRhZ09yTG9jYWxlID0+IDMuLnRvTG9jYWxlU3RyaW5nKHRhZ09yTG9jYWxl
KSk7CitzaG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gJ8OkJy5sb2Nh
bGVDb21wYXJlKCdhJywgdGFnT3JMb2NhbGUpKTsKK3Nob3VsZEJlU2FtZVdpdGhUYWdPckxvY2Fs
ZSh0YWdPckxvY2FsZSA9PiAnw4YnLnRvTG9jYWxlTG93ZXJDYXNlKHRhZ09yTG9jYWxlKSk7Citz
aG91bGRCZVNhbWVXaXRoVGFnT3JMb2NhbGUodGFnT3JMb2NhbGUgPT4gJ8OmJy50b0xvY2FsZVVw
cGVyQ2FzZSh0YWdPckxvY2FsZSkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1s
b2NhbGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2FsZS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NzYz
NTk5ZDFlNWJmOGY1NDU1NmRmMDJhNGM1MzM0YTZhZDdhMTAyCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvaW50bC1sb2NhbGUuanMKQEAgLTAsMCArMSwyMjYgQEAKKy8vQCBydW5J
bnRsTG9jYWxlRW5hYmxlZAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
ZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkTm90VGhyb3coZnVuYykgeworICAgIGZ1bmMoKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAg
ICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7Cit9CisKK3Nob3VsZEJl
KEludGwuTG9jYWxlIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoSW50bC5M
b2NhbGUubGVuZ3RoLCAxKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5Mb2NhbGUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLkxvY2FsZSwgJ3Byb3RvdHlwZScp
LmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5Mb2NhbGUsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUsIGZhbHNlKTsKKwor
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUoKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IEludGwuTG9jYWxlLmNhbGwoe30pLCBUeXBlRXJyb3IpOworCitzaG91bGRUaHJvdygo
KSA9PiBuZXcgSW50bC5Mb2NhbGUoKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5l
dyBJbnRsLkxvY2FsZSg1KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRs
LkxvY2FsZSgnJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9j
YWxlKCdhJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxl
KCdhYmNkZWZnaGlqJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwu
TG9jYWxlKCcjJCcpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxv
Y2FsZSgnZW4tQC1hYmMnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50
bC5Mb2NhbGUoJ2VuLXUnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50
bC5Mb2NhbGUoJ2VuLXUta24tdHJ1ZS11LWtvLXRydWUnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuLXgnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuLSonKSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuLScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4tLVVTJyksIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKFsnZW4nLCAnamEnXSksIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKHt9KSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVy
cm9yKCk7IH0gfSksIEVycm9yKTsKK3Nob3VsZE5vdFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2Fs
ZSh7IHRvU3RyaW5nKCkgeyByZXR1cm4gJ2VuJzsgfSB9KSk7CisKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCBudWxsKSwgVHlwZUVycm9yKTsKKworc2hvdWxkQmUobmV3
IEludGwuTG9jYWxlKCdlbicpIGluc3RhbmNlb2YgSW50bC5Mb2NhbGUsIHRydWUpOworCit7Cisg
ICAgY2xhc3MgRGVyaXZlZExvY2FsZSBleHRlbmRzIEludGwuTG9jYWxlIHt9CisKKyAgICBjb25z
dCBkbCA9IG5ldyBEZXJpdmVkTG9jYWxlKCdlbicpOworICAgIHNob3VsZEJlKGRsIGluc3RhbmNl
b2YgRGVyaXZlZExvY2FsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoZGwgaW5zdGFuY2VvZiBJbnRs
LkxvY2FsZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoZGwubWF4aW1pemUsIEludGwuTG9jYWxlLnBy
b3RvdHlwZS5tYXhpbWl6ZSk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldFByb3RvdHlwZU9mKGRs
KSwgRGVyaXZlZExvY2FsZS5wcm90b3R5cGUpOworICAgIHNob3VsZEJlKE9iamVjdC5nZXRQcm90
b3R5cGVPZihEZXJpdmVkTG9jYWxlLnByb3RvdHlwZSksIEludGwuTG9jYWxlLnByb3RvdHlwZSk7
Cit9CisKK2NvbnN0IHZhbGlkTGFuZ3VhZ2VUYWdzID0gWworICAgICdkZScsIC8vIElTTyA2Mzkg
bGFuZ3VhZ2UgY29kZQorICAgICdkZS1ERScsIC8vICsgSVNPIDMxNjYtMSBjb3VudHJ5IGNvZGUK
KyAgICAnREUtZGUnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgJ2NtbicsIC8v
IElTTyA2MzkgbGFuZ3VhZ2UgY29kZQorICAgICdjbW4tSGFucycsIC8vICsgc2NyaXB0IGNvZGUK
KyAgICAnQ01OLWhBTlMnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgJ2Ntbi1o
YW5zLWNuJywgLy8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAgICdlcy00MTknLCAvLyAr
IFVOIE0uNDkgcmVnaW9uIGNvZGUKKyAgICAnZXMtNDE5LXUtbnUtbGF0bi1jdS1ib2InLCAvLyAr
IFVuaWNvZGUgbG9jYWxlIGV4dGVuc2lvbiBzZXF1ZW5jZQorICAgICdpLWtsaW5nb24nLCAvLyBn
cmFuZGZhdGhlcmVkIHRhZworICAgICdjbW4taGFucy1jbi10LWNhLXUtY2EteC10LXUnLCAvLyBz
aW5nbGV0b24gc3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHByaXZhdGUgdXNlIHN1YnRhZ3MK
KyAgICAnZW5vY2hpYW4tZW5vY2hpYW4nLCAvLyBsYW5ndWFnZSBhbmQgdmFyaWFudCBzdWJ0YWdz
IG1heSBiZSB0aGUgc2FtZQorICAgICdkZS1ncmVnb3J5LXUtY2EtZ3JlZ29yeScsIC8vIHZhcmlh
bnQgYW5kIGV4dGVuc2lvbiBzdWJ0YWdzIG1heSBiZSB0aGUgc2FtZQorICAgICdhYS1hLWZvby14
LWEtZm9vLWJhcicsIC8vIHZhcmlhbnQgc3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHByaXZh
dGUgdXNlIHN1YnRhZ3MKKyAgICAneC1lbi1VUy0xMjM0NScsIC8vIGFueXRoaW5nIGdvZXMgaW4g
cHJpdmF0ZSB1c2UgdGFncworICAgICd4LTEyMzQ1LTEyMzQ1LWVuLVVTJywKKyAgICAneC1lbi1V
Uy0xMjM0NS0xMjM0NScsCisgICAgJ3gtZW4tdS1mb28nLAorICAgICd4LWVuLXUtZm9vLXUtYmFy
JworXTsKK2ZvciAobGV0IHZhbGlkTGFuZ3VhZ2VUYWcgb2YgdmFsaWRMYW5ndWFnZVRhZ3MpCisg
ICAgc2hvdWxkTm90VGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKHZhbGlkTGFuZ3VhZ2VUYWcp
KTsKKworc2hvdWxkQmUoT2JqZWN0LmdldFByb3RvdHlwZU9mKEludGwuTG9jYWxlLnByb3RvdHlw
ZSksIE9iamVjdC5wcm90b3R5cGUpOworCitzaG91bGRCZShJbnRsLkxvY2FsZS5wcm90b3R5cGUu
Y29uc3RydWN0b3IsIEludGwuTG9jYWxlKTsKKworc2hvdWxkQmUoSW50bC5Mb2NhbGUucHJvdG90
eXBlW1N5bWJvbC50b1N0cmluZ1RhZ10sICdJbnRsLkxvY2FsZScpOworc2hvdWxkQmUoT2JqZWN0
LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEludGwuTG9jYWxlLnByb3RvdHlwZSksICdbb2JqZWN0
IEludGwuTG9jYWxlXScpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLkxvY2FsZS5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykud3JpdGFibGUsIGZh
bHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Mb2Nh
bGUucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcpLmVudW1lcmFibGUsIGZhbHNlKTsKK3No
b3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5Mb2NhbGUucHJvdG90
eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcpLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKK3Nob3VsZEJl
KEludGwuTG9jYWxlLnByb3RvdHlwZS5tYXhpbWl6ZS5sZW5ndGgsIDApOworc2hvdWxkQmUoSW50
bC5Mb2NhbGUucHJvdG90eXBlLm1pbmltaXplLmxlbmd0aCwgMCk7CitzaG91bGRCZShJbnRsLkxv
Y2FsZS5wcm90b3R5cGUudG9TdHJpbmcubGVuZ3RoLCAwKTsKK3Nob3VsZFRocm93KCgpID0+IElu
dGwuTG9jYWxlLnByb3RvdHlwZS5tYXhpbWl6ZS5jYWxsKHsgdG9TdHJpbmcoKSB7IHJldHVybiAn
ZW4nOyB9IH0pLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUucHJv
dG90eXBlLm1pbmltaXplLmNhbGwoeyB0b1N0cmluZygpIHsgcmV0dXJuICdlbic7IH0gfSksIFR5
cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkxvY2FsZS5wcm90b3R5cGUudG9TdHJp
bmcuY2FsbCh7IHRvU3RyaW5nKCkgeyByZXR1cm4gJ2VuJzsgfSB9KSwgVHlwZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZSwgVHlwZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhciwgVHlw
ZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmly
c3QsIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkxvY2FsZS5wcm90b3R5cGUu
Y29sbGF0aW9uLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5Mb2NhbGUucHJv
dG90eXBlLmhvdXJDeWNsZSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuTG9j
YWxlLnByb3RvdHlwZS5udW1lcmljLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50
bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSwgVHlwZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZSwgVHlwZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IEludGwuTG9jYWxlLnByb3RvdHlwZS5zY3JpcHQsIFR5cGVFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uLCBUeXBlRXJy
b3IpOworCitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuJykubWF4aW1pemUoKSwgJ2VuLUxh
dG4tVVMnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUycpLm1heGltaXpl
KCksICdlbi1MYXRuLVVTJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUtbnUtdGhh
aS14LWZvbycpLm1heGltaXplKCksICdlbi1MYXRuLVVTLXUtbnUtdGhhaS14LWZvbycpOworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCdqYScpLm1heGltaXplKCksICdqYS1KcGFuLUpQJyk7Citz
aG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ3poJykubWF4aW1pemUoKSwgJ3poLUhhbnMtQ04nKTsK
K3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnemgtSGFudCcpLm1heGltaXplKCksICd6aC1IYW50
LVRXJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ3poJywgeyBzY3JpcHQ6ICdIYW50JyB9
KS5tYXhpbWl6ZSgpLCAnemgtSGFudC1UVycpOworCitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUo
J2VuJykubWluaW1pemUoKSwgJ2VuJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxh
dG4tVVMnKS5taW5pbWl6ZSgpLCAnZW4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4t
TGF0bi1VUy11LW51LXRoYWkteC1mb28nKS5taW5pbWl6ZSgpLCAnZW4tdS1udS10aGFpLXgtZm9v
Jyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2phLUpwYW4tSlAnKS5taW5pbWl6ZSgpLCAn
amEnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnemgtSGFucy1DTicpLm1pbmltaXplKCks
ICd6aCcpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCd6aC1IYW50LVRXJykubWluaW1pemUo
KSwgJ3poLVRXJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ3poJywgeyBzY3JpcHQ6ICdI
YW50JywgcmVnaW9uOiAnVFcnIH0pLm1pbmltaXplKCksICd6aC1UVycpOworCitzaG91bGRCZShu
ZXcgSW50bC5Mb2NhbGUoJ2VuJykudG9TdHJpbmcoKSwgJ2VuJyk7CitzaG91bGRCZShuZXcgSW50
bC5Mb2NhbGUoJ0VuLWxhVG4tdXMtdmFyaUFudC1mT09iYXItMWFiYy1VLWtuLXRSdWUtQS1hYS1h
YWEteC1SRVNFUlZFRCcpLnRvU3RyaW5nKCksICdlbi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFh
YmMtYS1hYS1hYWEtdS1rbi10cnVlLXgtcmVzZXJ2ZWQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxv
Y2FsZSgnY2VsLWdhdWxpc2gnLCB7IHNjcmlwdDogJ0FyYWInLCBudW1iZXJpbmdTeXN0ZW06ICdn
dWpyJyB9KS50b1N0cmluZygpLCAneHRnLUFyYWItdS1udS1ndWpyLXgtY2VsLWdhdWxpc2gnKTsK
K3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUy11LWNhLWdyZWdvcnktY28tcGhv
bmViay1oYy1oMTIta2YtdXBwZXIta24tbnUtbGF0bicpLnRvU3RyaW5nKCksICdlbi1MYXRuLVVT
LXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgxMi1rZi11cHBlci1rbi10cnVlLW51LWxhdG4n
KTsKKworY29uc3Qgb3B0aW9ucyA9IHsKKyAgICBjYWxlbmRhcjogJ2J1ZGRoaXN0JywKKyAgICBj
YXNlRmlyc3Q6ICdsb3dlcicsCisgICAgY29sbGF0aW9uOiAnZW9yJywKKyAgICBob3VyQ3ljbGU6
ICdoMTEnLAorICAgIG51bWVyaWM6IGZhbHNlLAorICAgIG51bWJlcmluZ1N5c3RlbTogJ3RoYWkn
LAorICAgIGxhbmd1YWdlOiAnamEnLAorICAgIHNjcmlwdDogJ0hhbnQnLAorICAgIHJlZ2lvbjog
J0tSJworfTsKK2NvbnN0IGV4cGVjdGVkID0gJ2phLUhhbnQtS1ItdS1jYS1idWRkaGlzdC1jby1l
b3ItaGMtaDExLWtmLWxvd2VyLWtuLWZhbHNlLW51LXRoYWknOworc2hvdWxkQmUobmV3IEludGwu
TG9jYWxlKCdlbicsIG9wdGlvbnMpLnRvU3RyaW5nKCksIGV4cGVjdGVkKTsKK3Nob3VsZEJlKG5l
dyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUy11LWNhLWdyZWdvcnktY28tcGhvbmViay1oYy1oMTIt
a2YtdXBwZXIta24tbnUtbGF0bicsIG9wdGlvbnMpLnRvU3RyaW5nKCksIGV4cGVjdGVkKTsKKwor
c2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicpLmJhc2VOYW1lLCAnZW4nKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bicpLmJhc2VOYW1lLCAnZW4tTGF0bicpOworc2hvdWxk
QmUobmV3IEludGwuTG9jYWxlKCdlbi1VUycpLmJhc2VOYW1lLCAnZW4tVVMnKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUycpLmJhc2VOYW1lLCAnZW4tTGF0bi1VUycpOwor
c2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi12YXJpYW50LXUta24nKS5iYXNlTmFtZSwgJ2Vu
LXZhcmlhbnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi12YXJpYW50LXUt
a24nKS5iYXNlTmFtZSwgJ2VuLUxhdG4tdmFyaWFudCcpOworc2hvdWxkQmUobmV3IEludGwuTG9j
YWxlKCdlbi12YXJpYW50LXUta24nLCB7IHNjcmlwdDogJ0xhdG4nIH0pLmJhc2VOYW1lLCAnZW4t
TGF0bi12YXJpYW50Jyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLVVTLXZhcmlhbnQt
dS1rbicpLmJhc2VOYW1lLCAnZW4tVVMtdmFyaWFudCcpOworc2hvdWxkQmUobmV3IEludGwuTG9j
YWxlKCdlbi12YXJpYW50LXUta24nLCB7IHJlZ2lvbjogJ1VTJyB9KS5iYXNlTmFtZSwgJ2VuLVVT
LXZhcmlhbnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUy12YXJpYW50
LXUta24nKS5iYXNlTmFtZSwgJ2VuLUxhdG4tVVMtdmFyaWFudCcpOworc2hvdWxkQmUobmV3IElu
dGwuTG9jYWxlKCdlbi12YXJpYW50LXUta24nLCB7IHNjcmlwdDogJ0xhdG4nLCByZWdpb246ICdV
UycgfSkuYmFzZU5hbWUsICdlbi1MYXRuLVVTLXZhcmlhbnQnKTsKKworc2hvdWxkQmUobmV3IElu
dGwuTG9jYWxlKCdlbicpLmNhbGVuZGFyLCB1bmRlZmluZWQpOworc2hvdWxkQmUobmV3IEludGwu
TG9jYWxlKCdlbi11LWNhLWphcGFuZXNlJykuY2FsZW5kYXIsICdqYXBhbmVzZScpOworc2hvdWxk
QmUobmV3IEludGwuTG9jYWxlKCdlbicsIHsgY2FsZW5kYXI6ICdqYXBhbmVzZScgfSkuY2FsZW5k
YXIsICdqYXBhbmVzZScpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWNhLWphcGFu
ZXNlJywgeyBjYWxlbmRhcjogJ2RhbmdpJyB9KS5jYWxlbmRhciwgJ2RhbmdpJyk7CitzaG91bGRC
ZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUtY2EtaXNsYW1pY2MnKS5jYWxlbmRhciwgJ2lzbGFtaWMt
Y2l2aWwnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IGNhbGVuZGFyOiAnaXNs
YW1pY2MnIH0pLmNhbGVuZGFyLCAnaXNsYW1pYy1jaXZpbCcpOworc2hvdWxkVGhyb3coKCkgPT4g
bmV3IEludGwuTG9jYWxlKCdlbicsIHsgY2FsZW5kYXI6IHsgdG9TdHJpbmcoKSB7IHRocm93IG5l
dyBFcnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxv
Y2FsZSgnZW4nLCB7IGNhbGVuZGFyOiAnbmcnIH0pLCBSYW5nZUVycm9yKTsKKworc2hvdWxkQmUo
bmV3IEludGwuTG9jYWxlKCdlbicpLmNvbGxhdGlvbiwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKG5l
dyBJbnRsLkxvY2FsZSgnZW4tdS1jby1waG9uZWJrJykuY29sbGF0aW9uLCAncGhvbmViaycpOwor
c2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicsIHsgY29sbGF0aW9uOiAncGhvbmViaycgfSku
Y29sbGF0aW9uLCAncGhvbmViaycpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWNv
LXBob25lYmsnLCB7IGNvbGxhdGlvbjogJ2VvcicgfSkuY29sbGF0aW9uLCAnZW9yJyk7CitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBjb2xsYXRpb246IHsgdG9TdHJp
bmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IGNvbGxhdGlvbjogJ25nJyB9KSwgUmFuZ2VFcnJv
cik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nKS5jYXNlRmlyc3QsIHVuZGVmaW5l
ZCk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUta2YtdXBwZXInKS5jYXNlRmlyc3Qs
ICd1cHBlcicpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicsIHsgY2FzZUZpcnN0OiAn
dXBwZXInIH0pLmNhc2VGaXJzdCwgJ3VwcGVyJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUo
J2VuLXUta2YtdXBwZXInLCB7IGNhc2VGaXJzdDogJ2xvd2VyJyB9KS5jYXNlRmlyc3QsICdsb3dl
cicpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgY2FzZUZpcnN0
OiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pLCBFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBjYXNlRmlyc3Q6ICdiYWQnIH0p
LCBSYW5nZUVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicpLm51bWVyaWMs
IGZhbHNlKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tdS1rbicpLm51bWVyaWMsIHRy
dWUpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdlbi11LWtuLXRydWUnKS5udW1lcmljLCB0
cnVlKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IG51bWVyaWM6IHRydWUgfSku
bnVtZXJpYywgdHJ1ZSk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUta24nLCB7IG51
bWVyaWM6IGZhbHNlIH0pLm51bWVyaWMsIGZhbHNlKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2Fs
ZSgnZW4tdS1rbi10cnVlJywgeyBudW1lcmljOiBmYWxzZSB9KS5udW1lcmljLCBmYWxzZSk7Citz
aG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBnZXQgbnVtZXJpYygpIHsg
dGhyb3cgbmV3IEVycm9yKCk7IH0gfSksIEVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuTG9j
YWxlKCdlbicpLmhvdXJDeWNsZSwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2Fs
ZSgnZW4tdS1oYy1oMTEnKS5ob3VyQ3ljbGUsICdoMTEnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxv
Y2FsZSgnZW4nLCB7IGhvdXJDeWNsZTogJ2gxMScgfSkuaG91ckN5Y2xlLCAnaDExJyk7CitzaG91
bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLXUtaGMtaDExJywgeyBob3VyQ3ljbGU6ICdoMjMnIH0p
LmhvdXJDeWNsZSwgJ2gyMycpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdl
bicsIHsgaG91ckN5Y2xlOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0p
LCBFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBob3Vy
Q3ljbGU6ICdiYWQnIH0pLCBSYW5nZUVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuTG9jYWxl
KCdlbicpLm51bWJlcmluZ1N5c3RlbSwgdW5kZWZpbmVkKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxv
Y2FsZSgnZW4tdS1udS1oYW5pZGVjJykubnVtYmVyaW5nU3lzdGVtLCAnaGFuaWRlYycpOworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCdlbicsIHsgbnVtYmVyaW5nU3lzdGVtOiAnaGFuaWRlYycg
fSkubnVtYmVyaW5nU3lzdGVtLCAnaGFuaWRlYycpOworc2hvdWxkQmUobmV3IEludGwuTG9jYWxl
KCdlbi11LW51LWhhbmlkZWMnLCB7IG51bWJlcmluZ1N5c3RlbTogJ2d1anInIH0pLm51bWJlcmlu
Z1N5c3RlbSwgJ2d1anInKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2FsZSgnZW4n
LCB7IG51bWJlcmluZ1N5c3RlbTogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0g
fSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsg
bnVtYmVyaW5nU3lzdGVtOiAnbmcnIH0pLCBSYW5nZUVycm9yKTsKKworc2hvdWxkQmUobmV3IElu
dGwuTG9jYWxlKCdlbi1MYXRuLVVTJykubGFuZ3VhZ2UsICdlbicpOworc2hvdWxkQmUobmV3IElu
dGwuTG9jYWxlKCdlbicsIHsgbGFuZ3VhZ2U6ICdhcicgfSkubGFuZ3VhZ2UsICdhcicpOworc2hv
dWxkQmUobmV3IEludGwuTG9jYWxlKCdjZWwtZ2F1bGlzaCcpLmxhbmd1YWdlLCAneHRnJyk7Citz
aG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywgeyBsYW5ndWFnZTogeyB0b1N0
cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgbGFuZ3VhZ2U6ICdmYWlsJyB9KSwgUmFuZ2VF
cnJvcik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUycpLnNjcmlwdCwg
J0xhdG4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tVVMnKS5zY3JpcHQsIHVuZGVm
aW5lZCk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxhdG4nLCB7IHNjcmlwdDogJ0tv
cmUnIH0pLnNjcmlwdCwgJ0tvcmUnKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLkxvY2Fs
ZSgnZW4nLCB7IHNjcmlwdDogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9
KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9jYWxlKCdlbicsIHsgc2Ny
aXB0OiAnYmFkJyB9KSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgn
ZW4tTGF0bi1VUycpLnJlZ2lvbiwgJ1VTJyk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2Vu
LUxhdG4nKS5yZWdpb24sIHVuZGVmaW5lZCk7CitzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2Vu
LVVTJywgeyByZWdpb246ICdLUicgfSkucmVnaW9uLCAnS1InKTsKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7IHJlZ2lvbjogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3
IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuTG9j
YWxlKCdlbicsIHsgcmVnaW9uOiAnZmFpbCcgfSksIFJhbmdlRXJyb3IpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
CmluZGV4IDNlMzhjZTE3YTdkMGRjM2UyM2VkZmMzZGM2MjBkZTQ0NWMxYTBmODcuLjM2OTE4MjI2
ZWM3YmFlNmI4YWU1ZGVlMWQ0MjY2OGRmYTBhN2U3ZDcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTIs
NiArMiw3IEBACiAtLS0KIGZsYWdzOgogICBCaWdJbnQ6IHVzZUJpZ0ludAorICBJbnRsLkxvY2Fs
ZTogdXNlSW50bExvY2FsZQogICBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDogdXNlSW50bFJlbGF0
aXZlVGltZUZvcm1hdAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHVi
bGljOiB1c2VQdWJsaWNDbGFzc0ZpZWxkcwpAQCAtMzAsNyArMzEsNiBAQCBza2lwOgogICAgIC0g
SW50bC5EYXRlVGltZUZvcm1hdC1mcmFjdGlvbmFsU2Vjb25kRGlnaXRzCiAgICAgLSBJbnRsLkRp
c3BsYXlOYW1lcwogICAgIC0gSW50bC5MaXN0Rm9ybWF0Ci0gICAgLSBJbnRsLkxvY2FsZQogICAg
IC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAogICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0
aHM6CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rl
c3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggYTVjZDRjMWY2NzY5ZTg1NTRiMzIx
OWJhNzBjZDNhNGYzYjQ2Zjc2My4uNzA1NWE3MDViY2ExNGVmNDRjZGFhOTE4ODg2NWFmODg2MWYz
ODUxMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBi
L0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtMTc3Niw2ICsxNzc2LDU3IEBA
IHRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExvY2FsZXMvdW5pY29kZS1leHQtY2Fub25p
Y2FsaXplLXllcy10by10cnVlLmpzOgogdGVzdC9pbnRsNDAyL0ludGwvZ2V0Q2Fub25pY2FsTG9j
YWxlcy91bmljb2RlLWV4dC1rZXktd2l0aC1kaWdpdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9u
IHdhcyB0aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24g
YXQgYWxsJwordGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1hcHBseS1vcHRpb25zLWNh
bm9uaWNhbGl6ZXMtdHdpY2UuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq3J1LUFybW4tU1XCuywgwqtydS1Bcm1uLUFNwrspIHRvIGJlIHRydWUnCisg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtydS1Bcm1u
LVNVwrssIMKrcnUtQXJtbi1BTcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL0xvY2FsZS9j
b25zdHJ1Y3Rvci1ub24taWFuYS1jYW5vbi5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
bmV3IEludGwuTG9jYWxlKCJtbyIpLm1heGltaXplKCkudG9TdHJpbmcoKSByZXR1cm5zICJyby1M
YXRuLVJPIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtyb8K7LCDCq3JvLUxhdG4tUk/CuykgdG8gYmUg
dHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgibW8i
KS5tYXhpbWl6ZSgpLnRvU3RyaW5nKCkgcmV0dXJucyAicm8tTGF0bi1STyIgRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrcm/Cuywgwqtyby1MYXRuLVJPwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
TG9jYWxlL2NvbnN0cnVjdG9yLW9wdGlvbnMtbGFuZ3VhZ2UtdmFsaWQtdW5kZWZpbmVkLmpzOgor
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhy
b3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCisgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVj
dG9yLW9wdGlvbnMtbGFuZ3VhZ2UtdmFsaWQuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMg
dGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEg
UmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCcKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itb3B0aW9ucy1udW1lcmljLXVuZGVm
aW5lZC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJlbi11
LWtuLXRydWUiLCB7bnVtZXJpYzogdW5kZWZpbmVkfSkudG9TdHJpbmcoKSByZXR1cm5zICJlbi11
LWtuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtuLXRydWXCuywgwqtlbi11LWtuwrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUo
ImVuLXUta24tdHJ1ZSIsIHtudW1lcmljOiB1bmRlZmluZWR9KS50b1N0cmluZygpIHJldHVybnMg
ImVuLXUta24iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUta27C
uykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itb3B0aW9ucy1u
dW1lcmljLXZhbGlkLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2Nh
bGUoImVuIiwge251bWVyaWM6IHRydWV9KS50b1N0cmluZygpIHJldHVybnMgInRydWUiIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUta27CuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgiZW4iLCB7bnVt
ZXJpYzogdHJ1ZX0pLnRvU3RyaW5nKCkgcmV0dXJucyAidHJ1ZSIgRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrZW4tdS1rbi10cnVlwrssIMKrZW4tdS1rbsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAy
L0xvY2FsZS9jb25zdHJ1Y3Rvci1vcHRpb25zLXJlZ2lvbi12YWxpZC5qczoKKyAgZGVmYXVsdDog
IlRlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCdlbicsIHtyZWdpb246IFwiNTU0XCJ9KS50
b1N0cmluZygpIHJldHVybnMgXCJlbi1OWlwiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLTU1NMK7
LCDCq2VuLU5awrspIHRvIGJlIHRydWUiCisgIHN0cmljdCBtb2RlOiAiVGVzdDI2MkVycm9yOiBu
ZXcgSW50bC5Mb2NhbGUoJ2VuJywge3JlZ2lvbjogXCI1NTRcIn0pLnRvU3RyaW5nKCkgcmV0dXJu
cyBcImVuLU5aXCIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tNTU0wrssIMKrZW4tTlrCuykgdG8g
YmUgdHJ1ZSIKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3ItcGFyc2UtdHdpY2UuanM6
CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0
aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3Ry
dWN0b3ItdGFnLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUo
InNsLVJPWkFKLUJJU0tFLTE5OTQiKS50b1N0cmluZygpIHJldHVybnMgInNsLTE5OTQtYmlza2Ut
cm96YWoiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3NsLXJvemFqLWJpc2tlLTE5OTTCuywgwqtzbC0x
OTk0LWJpc2tlLXJvemFqwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBuZXcgSW50bC5Mb2NhbGUoInNsLVJPWkFKLUJJU0tFLTE5OTQiKS50b1N0cmluZygpIHJl
dHVybnMgInNsLTE5OTQtYmlza2Utcm96YWoiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3NsLXJvemFq
LWJpc2tlLTE5OTTCuywgwqtzbC0xOTk0LWJpc2tlLXJvemFqwrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvTG9jYWxlL2V4dGVuc2lvbnMtZ3JhbmRmYXRoZXJlZC5qczoKKyAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAyL0xvY2FsZS9leHRlbnNpb25zLXByaXZhdGUu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBi
ZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0
IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvZ2V0
dGVycy1ncmFuZGZhdGhlcmVkLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBh
dCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFJhbmdlRXJy
b3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCit0ZXN0
L2ludGw0MDIvTG9jYWxlL2dldHRlcnMuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMt
aDIzLWtmLXRydWUta24tZmFsc2UtbnUtbGF0bsK7LCDCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5
LWNvLXBob25lYmstaGMtaDIzLWtmLWtuLWZhbHNlLW51LWxhdG7CuykgdG8gYmUgdHJ1ZScKKyAg
c3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2RlLUxhdG4t
REUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLXRydWUta24tZmFsc2UtbnUtbGF0
bsK7LCDCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLWtuLWZh
bHNlLW51LWxhdG7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9Mb2NhbGUvaW52YWxpZC10
YWctdGhyb3dzLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuby1ueW4gaXMgYW4gaW52
YWxpZCB0YWcgdmFsdWUgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogbm8tbnluIGlzIGFuIGludmFsaWQgdGFnIHZhbHVlIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0
byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50
bDQwMi9Mb2NhbGUvbGlrZWx5LXN1YnRhZ3MtZ3JhbmRmYXRoZXJlZC5qczoKKyAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAyL0xvY2FsZS9saWtlbHktc3VidGFncy5qczoK
KyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogImVuLXUtY28iLm1heGltaXplKCkgc2hvdWxkIGJl
ICJlbi1MYXRuLVVTLXUtY28iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLUxhdG4tVVMtdS1jby15
ZXPCuywgwqtlbi1MYXRuLVVTLXUtY2/CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6ICJlbi11LWNvIi5tYXhpbWl6ZSgpIHNob3VsZCBiZSAiZW4tTGF0bi1VUy11
LWNvIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi1MYXRuLVVTLXUtY28teWVzwrssIMKrZW4tTGF0
bi1VUy11LWNvwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvTG9jYWxlL3Byb3RvdHlwZS9t
aW5pbWl6ZS9yZW1vdmluZy1saWtlbHktc3VidGFncy1maXJzdC1hZGRzLWxpa2VseS1zdWJ0YWdz
LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAidW5kIi5taW5pbWl6ZSgpIHNob3VsZCBi
ZSAiZW4iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUtdmEtcG9zaXjCuywgwqtlbsK7KSB0byBi
ZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogInVuZCIubWluaW1pemUoKSBz
aG91bGQgYmUgImVuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LXZhLXBvc2l4wrssIMKrZW7C
uykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0
b3IvY29uc3RydWN0b3IvbG9jYWxlcy12YWxpZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBu
byBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0
IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
</data>

          </attachment>
      

    </bug>

</bugzilla>