<?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>181542</bug_id>
          
          <creation_ts>2018-01-11 10:16:47 -0800</creation_ts>
          <short_desc>Replace all use of ConstExprPoisoned with Poisoned.</short_desc>
          <delta_ts>2018-01-13 22:12:02 -0800</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 Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1388281</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 10:16:47 -0800</bug_when>
    <thetext>Benchmarks show that perf is neutral even when using Poisoned instead of ConstExprPoisoned.  Since Poisoned is better security properties than ConstExprPoisoned, let&apos;s try to convert over to using Poisoned, and obsolete ConstExprPoisoned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388284</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-11 10:18:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/36442138&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388298</commentid>
    <comment_count>2</comment_count>
      <attachid>331071</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 10:46:19 -0800</bug_when>
    <thetext>Created attachment 331071
work in progress for EWS testing only.

Let&apos;s do a viability test run on the EWS to make sure that we can actually do this on older compilers (which the EWS uses).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388311</commentid>
    <comment_count>3</comment_count>
      <attachid>331076</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 11:08:36 -0800</bug_when>
    <thetext>Created attachment 331076
work in progress for EWS testing only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388520</commentid>
    <comment_count>4</comment_count>
      <attachid>331130</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 16:02:24 -0800</bug_when>
    <thetext>Created attachment 331130
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388697</commentid>
    <comment_count>5</comment_count>
      <attachid>331168</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 21:56:04 -0800</bug_when>
    <thetext>Created attachment 331168
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388698</commentid>
    <comment_count>6</comment_count>
      <attachid>331169</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 22:21:35 -0800</bug_when>
    <thetext>Created attachment 331169
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388710</commentid>
    <comment_count>7</comment_count>
      <attachid>331171</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 22:52:16 -0800</bug_when>
    <thetext>Created attachment 331171
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388715</commentid>
    <comment_count>8</comment_count>
      <attachid>331173</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 23:01:05 -0800</bug_when>
    <thetext>Created attachment 331173
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388720</commentid>
    <comment_count>9</comment_count>
      <attachid>331176</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 23:22:56 -0800</bug_when>
    <thetext>Created attachment 331176
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388721</commentid>
    <comment_count>10</comment_count>
      <attachid>331177</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-11 23:53:21 -0800</bug_when>
    <thetext>Created attachment 331177
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389035</commentid>
    <comment_count>11</comment_count>
      <attachid>331258</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-12 17:15:36 -0800</bug_when>
    <thetext>Created attachment 331258
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389083</commentid>
    <comment_count>12</comment_count>
      <attachid>331258</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-01-12 21:43:08 -0800</bug_when>
    <thetext>Comment on attachment 331258
proposed patch.

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

Some suggestions, none major, r=me

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:486
&gt; +    unpoison(_g_CodeBlockPoison, scratch, scratch2)

You should paranoid-zero-out scratch2 here. There&apos;s a bunch more below. Maybe file a follow-up to do so?

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:758
&gt; +        xorp scratch, field

Or maybe this should just zero-out the poison? If we ever re-use it we can do so in a different macro.

&gt; Source/JavaScriptCore/runtime/JSCPoison.cpp:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

-2018

&gt; Source/JavaScriptCore/runtime/JSCPoison.cpp:35
&gt; +uintptr_t g_nativeCodePoison;

I don&apos;t understand these. They&apos;re not used with this lowercase spelling in the code you&apos;re changing? Are they just stale?

&gt; Source/JavaScriptCore/runtime/JSCPoison.cpp:2
&gt; + * Copyright (C) 2017-2018 Apple Inc. All rights reserved.

Actually I don&apos;t get it, you&apos;re adding this file above *and* modifying it here? I think this patch has some borky-bork going on!

&gt; Source/JavaScriptCore/runtime/JSCPoison.cpp:34
&gt; +#define INSTANTIATE_POISON(poisonID) \

C++ pedant: this is &quot;define&quot; (to complement header file &quot;declare&quot;).

&gt; Source/JavaScriptCore/runtime/JSCPoison.h:58
&gt; +#define POISON(_poisonID_) g_##_poisonID_##Poison

I like the style, but I&apos;d name the macro POISON_FOR so it reads better when used.

&gt; Source/JavaScriptCore/runtime/WriteBarrier.h:198
&gt; +    static auto poison() { return Traits::poison(); }

Wooh! That was easy :D

&gt; Source/WTF/wtf/Poisoned.h:69
&gt; +enum PrePoisonedTag { PrePoisoned };

I&apos;m not sure &quot;pre&quot; is super obvious. How about &quot;AlreadyPoisoned&quot;? Or &quot;DontPoison&quot;? No strong feeling on this, feel free to ignore.

&gt; Source/WTF/wtf/Poisoned.h:91
&gt; +    Poisoned(Poisoned&amp;&amp; other)

Can this be =default?

&gt; Source/WTF/wtf/Poisoned.h:132
&gt; +    bool operator&gt;=(const Poisoned&amp; b) const { return m_poisonedBits &gt;= b.m_poisonedBits; }

Do we use the relational operators? I&apos;d only add them if we do, it seems weird to order poisoned values (as opposed to just comparing them) but sometimes you gotta map stuff I guess. Seems like if you have them you&apos;d want hash too (but I&apos;m not sure you want that either!).

&gt; Source/WTF/wtf/Poisoned.h:209
&gt; +    template&lt;uintptr_t&amp;, typename, typename&gt; friend class Poisoned;

Not sure I get why this is friending itself.

&gt; Source/WTF/wtf/Poisoned.h:220
&gt;  template&lt;uintptr_t&amp; key, typename T&gt;

Shouldn&apos;t this be called poison instead of key? Since we don&apos;t do keys anymore. Here and a bunch of other places.

&gt; Tools/TestWebKitAPI/Tests/WTF/PoisonedRef.cpp:48
&gt; +        // Make sure we get 2 different poison values.

?

&gt; Tools/TestWebKitAPI/Tests/WTF/PoisonedRefPtr.cpp:50
&gt; +        // Make sure we get 2 different poison values.

?

&gt; Tools/TestWebKitAPI/Tests/WTF/PoisonedUniquePtr.cpp:42
&gt; +        // Make sure we get 2 different poison values.

This one does what it says :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389087</commentid>
    <comment_count>13</comment_count>
      <attachid>331258</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-12 22:48:56 -0800</bug_when>
    <thetext>Comment on attachment 331258
proposed patch.

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

Thanks for the review.  My responses below ...

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:486
&gt;&gt; +    unpoison(_g_CodeBlockPoison, scratch, scratch2)
&gt; 
&gt; You should paranoid-zero-out scratch2 here. There&apos;s a bunch more below. Maybe file a follow-up to do so?

I&apos;ll think about this some more and make a change in a follow up patch if needed.

&gt;&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:758
&gt;&gt; +        xorp scratch, field
&gt; 
&gt; Or maybe this should just zero-out the poison? If we ever re-use it we can do so in a different macro.

Ditto.  I&apos;ll think about it some more and follow up later if needed.

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSCPoison.cpp:2
&gt;&gt;&gt; + * Copyright (C) 2017-2018 Apple Inc. All rights reserved.
&gt;&gt; 
&gt;&gt; -2018
&gt; 
&gt; Actually I don&apos;t get it, you&apos;re adding this file above *and* modifying it here? I think this patch has some borky-bork going on!

I think you&apos;re not used to how our bugzilla present patches.  The first JSCPoison.cpp above is because JSCPoisonedPtr.cpp got renamed to JSCPoison.cpp.  This 2nd version of JSCPoison.cpp that you&apos;re commenting on is showing the code changes I made after renaming the file.  If you re-read the patch with that in mind, then everything will make sense.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPoison.cpp:34
&gt;&gt; +#define INSTANTIATE_POISON(poisonID) \
&gt; 
&gt; C++ pedant: this is &quot;define&quot; (to complement header file &quot;declare&quot;).

Sure I can change this to be DEFINE_POISON instead of INSTANTIATE_POISON.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPoison.cpp:35
&gt;&gt; +    uintptr_t POISON(poisonID);
&gt; 
&gt; I don&apos;t understand these. They&apos;re not used with this lowercase spelling in the code you&apos;re changing? Are they just stale?

See my comment above about how (our) bugzilla shows patches.  To answer your question, this is where I define (instantiate storage for) all the poison values.  The use of the POISON() macro is so that I don&apos;t have to type out g_##poisoneID##Poison.  The advantage of doing this is that the encoding of the variable name is only done in one place i.e. the POISON() macro.

&gt;&gt; Source/JavaScriptCore/runtime/JSCPoison.h:58
&gt;&gt; +#define POISON(_poisonID_) g_##_poisonID_##Poison
&gt; 
&gt; I like the style, but I&apos;d name the macro POISON_FOR so it reads better when used.

I did consider POISON_FOR(), but I settled on POISON() because:
1. it is clear enough by inference that the POISON(CodeBlock) is obviously the POISON for CodeBlock.
2. see all the places where I have to use the POISON() macro in this patch (with more to come all over the code base as we poison more things).  POISON is more concise and less typing.  That&apos;s why I prefer it.

Do you feel strongly about using POISON_FOR instead of POISON?  If not, I prefer to keep it as POISON.

&gt;&gt; Source/WTF/wtf/Poisoned.h:69
&gt;&gt; +enum PrePoisonedTag { PrePoisoned };
&gt; 
&gt; I&apos;m not sure &quot;pre&quot; is super obvious. How about &quot;AlreadyPoisoned&quot;? Or &quot;DontPoison&quot;? No strong feeling on this, feel free to ignore.

Hmmm, I like AlreadyPoisoned.  I&apos;ll apply it.

&gt;&gt; Source/WTF/wtf/Poisoned.h:91
&gt;&gt; +    Poisoned(Poisoned&amp;&amp; other)
&gt; 
&gt; Can this be =default?

Yes, I think so.  I&apos;ll apply it.

&gt;&gt; Source/WTF/wtf/Poisoned.h:132
&gt;&gt; +    bool operator&gt;=(const Poisoned&amp; b) const { return m_poisonedBits &gt;= b.m_poisonedBits; }
&gt; 
&gt; Do we use the relational operators? I&apos;d only add them if we do, it seems weird to order poisoned values (as opposed to just comparing them) but sometimes you gotta map stuff I guess. Seems like if you have them you&apos;d want hash too (but I&apos;m not sure you want that either!).

Ah yes, you are right.  It is wrong to compare the poisoned values.  I should either =delete them or change them to use unpoisoned values.  Since these are trivial to implement and I&apos;d rather have an as complete as possible smart pointer class, I&apos;ll opt for fixing the relational operators.

&gt;&gt; Source/WTF/wtf/Poisoned.h:209
&gt;&gt; +    template&lt;uintptr_t&amp;, typename, typename&gt; friend class Poisoned;
&gt; 
&gt; Not sure I get why this is friending itself.

It is friending other specializations of itself so that it can unpoison their pointers for work.  Specifically, this was motivated by line 175 in swap().

&gt;&gt; Source/WTF/wtf/Poisoned.h:220
&gt;&gt;  template&lt;uintptr_t&amp; key, typename T&gt;
&gt; 
&gt; Shouldn&apos;t this be called poison instead of key? Since we don&apos;t do keys anymore. Here and a bunch of other places.

Yeah, key is a holdover from when Poisoned used to be called ScrambledPtr.  I&apos;ll do a follow up refactoring patch to rename key to poison in all the relevant places.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/PoisonedRef.cpp:48
&gt;&gt; +        // Make sure we get 2 different poison values.
&gt; 
&gt; ?

Copy-paste error.  Will remove.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/PoisonedRefPtr.cpp:50
&gt;&gt; +        // Make sure we get 2 different poison values.
&gt; 
&gt; ?

Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389099</commentid>
    <comment_count>14</comment_count>
      <attachid>331281</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-13 02:26:59 -0800</bug_when>
    <thetext>Created attachment 331281
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389121</commentid>
    <comment_count>15</comment_count>
      <attachid>331281</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-01-13 11:20:00 -0800</bug_when>
    <thetext>Comment on attachment 331281
patch for landing.

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

All looks good. Question on relational operators can be addressed later.

&gt; Source/WTF/wtf/Poisoned.h:133
&gt; +    bool operator&gt;=(T b) const { return unpoisoned() &gt;= b; }

What I meant is that I&apos;d drop these entirely, and only keep == and !=, unless we actually use them. If we keep them, it may actually be better to compare the poisoned values because that doesn&apos;t leak any info about the underlying data, whereas comparing the underlying data definitely leaks it (albeit that&apos;s a super unlikely source of info).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389189</commentid>
    <comment_count>16</comment_count>
      <attachid>331281</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-13 21:47:54 -0800</bug_when>
    <thetext>Comment on attachment 331281
patch for landing.

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

&gt;&gt; Source/WTF/wtf/Poisoned.h:133
&gt;&gt; +    bool operator&gt;=(T b) const { return unpoisoned() &gt;= b; }
&gt; 
&gt; What I meant is that I&apos;d drop these entirely, and only keep == and !=, unless we actually use them. If we keep them, it may actually be better to compare the poisoned values because that doesn&apos;t leak any info about the underlying data, whereas comparing the underlying data definitely leaks it (albeit that&apos;s a super unlikely source of info).

Thanks.  I understood you.  However, I&apos;m choosing to support them instead.  My reason is that we intended Poisoned to be almost a drop in replacement for pointers.  So, as much as possible (with a minimum of effort),  I prefer to be able to use Poison in any way that we can use raw pointers.  Since these operators are trivial to implement, I went ahead and implemented them.

Also, today I realize that my previous implementation was not wrong; it was just incomplete.  It was also late last night when I was working on it, and I thought I had a bug where there was not.  I&apos;ll land the current patch and reinstall the original operators (for optimization reasons because similarly poisoned pointers can just compare the poisoned values) in a subsequent patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389192</commentid>
    <comment_count>17</comment_count>
      <attachid>331281</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-13 22:12:00 -0800</bug_when>
    <thetext>Comment on attachment 331281
patch for landing.

Clearing flags on attachment: 331281

Committed r226940: &lt;https://trac.webkit.org/changeset/226940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389193</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-13 22:12:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331071</attachid>
            <date>2018-01-11 10:46:19 -0800</date>
            <delta_ts>2018-01-11 10:52:41 -0800</delta_ts>
            <desc>work in progress for EWS testing only.</desc>
            <filename>bug-181542.patch</filename>
            <type>text/plain</type>
            <size>69835</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjI2Nzg0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OTQsOCArODk0LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNUYWlsQ2Fs
bHMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFzVGFpbENhbGxzKCk7IH0KIAot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfcG9pc29uID0gbWFrZUNvbnN0RXhwclBv
aXNvbihDb2RlQmxvY2tQb2lzb24pOwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5hbGl6ZUxM
SW50SW5saW5lQ2FjaGVzKCk7CiAgICAgdm9pZCBmaW5hbGl6ZUJhc2VsaW5lSklUSW5saW5lQ2Fj
aGVzKCk7CkBAIC05NzQsNyArOTcyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFdyaXRlQmFy
cmllcjxFeGVjdXRhYmxlQmFzZT4gbV9vd25lckV4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVy
PEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fb3duZXJFZGdlOwotICAgIENvbnN0RXhwclBv
aXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVkVk07CisgICAgUG9pc29uZWQ8
Q29kZUJsb2NrUG9pc29uLCBWTSo+IG1fcG9pc29uZWRWTTsKIAogICAgIFBvaXNvbmVkUmVmQ291
bnRlZEFycmF5PENvZGVCbG9ja1BvaXNvbiwgSW5zdHJ1Y3Rpb24+IG1faW5zdHJ1Y3Rpb25zOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAkocmV2aXNp
b24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsOCBAQCB2b2lkIGFkanVzdEZy
YW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxlCiAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUg
U1AgaXMgY29ycmVjdCBpbiBjYXNlIG9mIGFuIGV4Y2VwdGlvbi4KICAgICBqaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSks
IEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpqaXRDb2RlT2Zmc2V0KCkpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgaml0LnhvclB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihDb2Rl
QmxvY2s6OnNfcG9pc29uKSwgR1BSSW5mbzo6cmVnVDApOworLy8gICAgaml0LnhvclB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihDb2RlQmxvY2s6OnNfcG9pc29uKSwgR1BSSW5mbzo6
cmVnVDApOworICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29k
ZUJsb2NrUG9pc29uKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5hZGRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihKSVRDb2RlVHlwZTo6Y29tbW9uRGF0YU9mZnNldCgpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDAsIENvbW1vbkRhdGE6OmZyYW1lUmVnaXN0ZXJDb3VudE9mZnNldCgpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgIC8vIFRoaXMgZG9lcyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChm
cmFtZVJlZ2lzdGVyQ291bnQgLSAxKSpzaXplb2YoUmVnaXN0ZXIpIHdoZXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgdW5wb2lzb24oQ29kZUJsb2Nr
UG9pc29uLCBQQikKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCB0MSkKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0K
ICAgICB2YWx1ZVByb2ZpbGUocjAsIChDYWxsT3BDb2RlU2l6ZSAtIDEpLCB0MykKQEAgLTQ4MCwy
NyArNDgwLDI3IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAg
ICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAot
bWFjcm8gc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhlblN0
cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVk
Vk1bc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHNjcmF0
Y2gpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoLCBzY3JhdGNoMikKICAg
ICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlE
VGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKICAgICBsb2FkcCBbc2NyYXRjaCwgc3Ry
dWN0dXJlSURUaGVuU3RydWN0dXJlLCA4XSwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCiBlbmQK
IAotbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRj
aCkKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3Ry
dWN0dXJlCi0gICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwg
c2NyYXRjaCkKKyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJl
LCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJl
ckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHN0cnVjdHVyZQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCi0gICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bY2VsbF0sIGNlbGwKLSAgICB1bnBvaXNvbihD
b2RlQmxvY2tQb2lzb24sIGNlbGwpCi0gICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCi0gICAg
bG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQotZW5kCisjbWFjcm8gbG9hZFN0
cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisjICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisjICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisjICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2NlbGxdLCBj
ZWxsCisjICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgY2VsbCkKKyMgICAgbG9hZHAgVk06
OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3Rh
YmxlW2NlbGxdLCBjZWxsCisjICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1
cmUKKyNlbmQKIAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIApAQCAtNTYy
LDcgKzU2Miw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cKICAg
ICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIHJlc2V0IFBDLCBzaW5jZSB0aGUgc2xvd19wYXRoIGNs
b2JiZXJlZCB0aGVtLgogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbW92
ZSAwLCBQQwogICAgIGptcCBkb25lTGFiZWwKIGVuZApAQCAtNjQxLDcgKzY0MSw3IEBAIF9sbGlu
dF9vcF90b190aGlzOgogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwg
dGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmlu
YWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQz
KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIHQxLCB0MiwgLm9w
VG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b190aGlzX2xlbmd0aCkKQEAg
LTcyNCw3ICs3MjQsNyBAQCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uKCkKICAgICBtb3ZlIDAs
IHQwCiAgICAgam1wIC5kb25lCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgY3BlcSBTdHJ1Y3R1cmU6
Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2lzX3VuZGVmaW5lZF9sZW5ndGgpCiAubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZDoKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKKyAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSwgdDUpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCiAg
ICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDEsIHQwCkBAIC0xNDMzLDcg
KzE0MzMsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkOgogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWlu
OjptX3ZlY3Rvclt0M10sIHQzCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogdDMsIG9rIGVu
ZCkKIAotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEpCisgICAg
c3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSwgdDUpCiAgICAgbG9hZHEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCiAgICAgYnFlcSB0MiwgVmFsdWVOdWxsLCAu
b3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZQogLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkxv
b3A6CkBAIC0xNzQwLDcgKzE3NDAsNyBAQCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGlt
bWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCi0gICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEsIHQ1KQogICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBd
LCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIF9sbGlu
dF9vcF9jYXRjaDoKIAogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbG9h
ZHAgVk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwg
UEMKICAgICByc2hpZnRwIDMsIFBDCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV9zY29wZToKIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1Bh
dGgpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDUpCiAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCkBA
IC0yNTAwLDcgKzI1MDAsNyBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0
MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICAjIHQxIGlzIGhv
bGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIHR5cGVQcm9maWxlckxvZy4KICAgICBsb2FkcCBWTTo6
bV90eXBlUHJvZmlsZXJMb2dbdDFdLCB0MQogICAgICMgdDIgaXMgaG9sZGluZyB0aGUgcG9pbnRl
ciB0byB0aGUgY3VycmVudCBsb2cgZW50cnkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyMjY3ODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBlbHNlCiAgICAgY29uc3QgTG93ZXN0
VGFnID0gRGVsZXRlZFZhbHVlVGFnCiBlbmQKIAotY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KKyMgY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KIAogIyBQdXRCeUlkRmxhZ3MgZGF0YQogY29uc3Qg
UHV0QnlJZFByaW1hcnlUeXBlTWFzayA9IGNvbnN0ZXhwciBQdXRCeUlkUHJpbWFyeVR5cGVNYXNr
CkBAIC03NTQsOSArNzU0LDEwIEBAIG1hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChkZXMKICAgICBlbmQKIGVuZAogCi1tYWNybyB1bnBvaXNvbihwb2lzb24sIGZpZWxkKQorbWFj
cm8gdW5wb2lzb24ocG9pc29uLCBmaWVsZCwgc2NyYXRjaCkKICAgICBpZiBQT0lTT04KLSAgICAg
ICAgeG9ycCBwb2lzb24sIGZpZWxkCisgICAgICAgIGxvYWRwIF9Db2RlQmxvY2tQb2lzb24sIHNj
cmF0Y2gKKyAgICAgICAgeG9ycCBzY3JhdGNoLCBmaWVsZAogICAgIGVuZAogZW5kCiAKQEAgLTEw
MjQsNyArMTAyNSw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2MK
ICAgICAjIFNldCB1cCB0aGUgUEMuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgICAgICB1bnBvaXNvbihDb2RlQmxv
Y2tQb2lzb24sIFBCKQorICAgICAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCBQQykK
ICAgICAgICAgbW92ZSAwLCBQQwogICAgIGVsc2UKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1t0MV0sIFBDCkBAIC0xMDM1LDcgKzEwMzYsNyBAQCBtYWNybyBwcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgc3VicCBjZnIsIHQwLCB0MAogICAgIGJw
YSB0MCwgY2ZyLCAubmVlZFN0YWNrQ2hlY2sKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29u
ZWRWTVt0MV0sIHQyCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MikKKyAgICB1bnBv
aXNvbihDb2RlQmxvY2tQb2lzb24sIHQyLCB0MykKICAgICBpZiBDX0xPT1AKICAgICAgICAgYnBi
ZXEgVk06Om1fY2xvb3BTdGFja0xpbWl0W3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCiAgICAgZWxz
ZQpAQCAtMTYyMyw3ICsxNjI0LDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICBsb2FkYiBW
TTo6bV90cmFwcytWTVRyYXBzOjptX25lZWRUcmFwSGFuZGxpbmdbdDFdLCB0MAogICAgIGJ0cG56
IHQwLCAuaGFuZGxlVHJhcHMKIC5hZnRlckhhbmRsaW5nVHJhcHM6CkBAIC0xNjM5LDcgKzE2NDAs
NyBAQCBfbGxpbnRfb3BfY2hlY2tfdHJhcHM6CiBtYWNybyBhY3F1aXJlU2hhZG93Q2hpY2tlblBh
Y2tldChzbG93KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVC
bG9jazo6bV9wb2lzb25lZFZNW3QxXSwgdDEKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24s
IHQxKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEsIHQyKQogICAgIGxvYWRwIFZN
OjptX3NoYWRvd0NoaWNrZW5bdDFdLCB0MgogICAgIGxvYWRwIFNoYWRvd0NoaWNrZW46Om1fbG9n
Q3Vyc29yW3QyXSwgdDAKICAgICBicGFlcSB0MCwgU2hhZG93Q2hpY2tlbjo6bV9sb2dFbmRbdDJd
LCBzbG93CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKIAogcHJpdmF0
ZToKLSAgICBDb25zdEV4cHJQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKKyAgICBQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKIH07CiAKIGlubGluZSBBcnJheUJ1ZmZlciogdG9Qb3NzaWJseVNoYXJlZEFy
cmF5QnVmZmVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzMg
KzI1LDUgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gUG9pc29uIHsKLSAgICBOb3RQb2lzb25lZCA9IDAsIC8v
IFJlc2VydmVkIChhbmQgdW51c2VkKSBzbyB0aGF0IHBvaXNvbiBrZXlzIGFyZSBuZXZlciAwLgot
Ci0gICAgLy8gQWRkIG5ldyBwb2lzb24ga2V5cyBiZWxvdyBpbiBhbHBoYWJldGljYWwgb3JkZXIu
IFRoZSBvcmRlciBkb2Vzbid0IHJlYWxseQotICAgIC8vIG1hdHRlciwgYnV0IHdlIG1pZ2h0IGFz
IHdlbGwga2VlcCB0aGVtIGluIGFscGhhYmV0aWNhbGx5IG9yZGVyIGZvcgotICAgIC8vIGdyZWF0
ZXIgcmVhZGFiaWxpdHkuCi0gICAgQXJyYXlQcm90b3R5cGVQb2lzb24sCi0gICAgQ29kZUJsb2Nr
UG9pc29uLAotICAgIERhdGVJbnN0YW5jZVBvaXNvbiwKLSAgICBKU0FQSVdyYXBwZXJPYmplY3RQ
b2lzb24sCi0gICAgSlNBcnJheUJ1ZmZlclBvaXNvbiwKLSAgICBKU0NhbGxiYWNrT2JqZWN0UG9p
c29uLAotICAgIEpTR2xvYmFsT2JqZWN0UG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiwKLSAgICBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24s
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLAotICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZVBvaXNvbiwKLSAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24sCi19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIiAvLyBtbGFtCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJ
KHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjMgQEAgdWludHB0cl90
IGdfZ2xvYmFsRGF0YVBvaXNvbjsKIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiB1aW50cHRy
X3QgZ19uYXRpdmVDb2RlUG9pc29uOwogCit1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
Cit1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOwordWludHB0cl90IERhdGVJbnN0YW5jZVBvaXNv
bjsKK3VpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247Cit1aW50cHRyX3QgSlNBcnJh
eUJ1ZmZlclBvaXNvbjsKK3VpbnRwdHJfdCBKU0NhbGxiYWNrT2JqZWN0UG9pc29uOwordWludHB0
cl90IEpTR2xvYmFsT2JqZWN0UG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hlclBvaXNvbjsKK3VpbnRwdHJfdCBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOwordWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uOwordWludHB0
cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseVRh
YmxlUG9pc29uOwordWludHB0cl90IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbjsKK3Vp
bnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb247CisKIHZvaWQgaW5pdGlhbGl6ZVBvaXNv
bigpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKQEAg
LTQxLDYgKzU4LDIzIEBAIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpCiAgICAgICAgIGdfZ2xvYmFs
RGF0YVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19qaXRDb2RlUG9pc29uID0gbWFr
ZVBvaXNvbigpOwogICAgICAgICBnX25hdGl2ZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisK
KyAgICAgICAgQXJyYXlQcm90b3R5cGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIENv
ZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgRGF0ZUluc3RhbmNlUG9pc29u
ID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTQXJyYXlCdWZmZXJQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIEpTQ2FsbGJhY2tPYmplY3RQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1NjcmlwdEZldGNo
UGFyYW1ldGVyc1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaGVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9p
c29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24g
PSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24gPSBtYWtlUG9pc29u
KCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAg
ICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAg
ICAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAgfSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQ
dHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUG9pc29uZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMjMgQEAgZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2dsbwogZXh0ZXJuICJDIiBKU19FWFBPUlRE
QVRBIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiBleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAorZXh0ZXJuICJDIiBKU19FWFBPUlREQVRB
IHVpbnRwdHJfdCBBcnJheVByb3RvdHlwZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWlu
dHB0cl90IEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNBcnJheUJ1ZmZlclBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNDYWxsYmFja09iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgSlNHbG9iYWxPYmplY3RQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzUG9pc29uOworZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoZXJQb2lzb247CitleHRlcm4g
IkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJBc3NlbWJs
eU1lbW9yeVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJB
c3NlbWJseU1vZHVsZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3Qg
SlNXZWJBc3NlbWJseVRhYmxlUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IFVubGlua2VkU291cmNlQ29kZVBvaXNvbjsKKwogc3RydWN0IENsYXNz
SW5mbzsKIAogdXNpbmcgUG9pc29uZWRDbGFzc0luZm9QdHIgPSBQb2lzb25lZDxnX2dsb2JhbERh
dGFQb2lzb24sIGNvbnN0IENsYXNzSW5mbyo+OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlz
aW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsOCArMTg3LDggQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaW5nbGVTbG90VHJhbnNpdGlvbldlYWtP
d25lcjsKLSAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBDb25zdEV4cHJQb2lz
b25lZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKLSAg
ICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlUG9pc29uLCBXZWFrSW1wbCo+OworICAgIHVzaW5nIFBvaXNvbmVkVHJh
bnNpdGlvbk1hcFB0ciA9IFBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwg
VHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBQb2lzb25l
ZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFdlYWtJbXBsKj47CiAKICAgICBib29s
IGlzVXNpbmdTaW5nbGVTbG90KCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OCw3ICsxMTgsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlCiAg
ICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFzdFRMUygpKSB7CiAgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpz
T2Zmc2V0KSwgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRleHRJbnN0YW5jZUdQUiwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSksIHdhc21Db250ZXh0SW5z
dGFuY2VHUFIpOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQobWFrZUNvbnN0RXhwclBvaXNvbihKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24pKSwgc2Ny
YXRjaFJlZyk7CisvLyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KG1ha2VDb25zdEV4cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uKSksIHNj
cmF0Y2hSZWcpOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgICAg
ICBqaXQueG9yNjQoc2NyYXRjaFJlZywgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAg
ICAgICBqc09mZnNldCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvQmFnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSwxMCArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRz
OjpTdG9yYWdlVHlwZSBtX2hlYWQgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJf
dCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3Rl
bXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFp
dHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVk
QmFnID0gQmFnPFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFn
Tm9kZTxUPj4+OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQ
b2lzb25lZEJhZyA9IEJhZzxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFByaXZhdGU6OkJhZ05v
ZGU8VD4+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNp
b24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTAgKzM1LDkgQEAKIC8vIE9sZGVyIHZlcnNpb25zIG9mIGdjYyBhbmQgY2xhbmcgaGF2
ZSBhIGJ1ZyB3aGljaCByZXN1bHRzIGluIGJ1aWxkIGZhaWx1cmVzCiAvLyB3aGVuIHVzaW5nIHRl
bXBsYXRlIG1ldGhvZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IG9mIFBvaXNvbmVkSW1wbDxLMiwg
azIsIFQyPgogLy8gd2hlbiB0aGUgS2V5VHlwZSBpcyBhIHVpbnRwdHJfdCAoaS5lLiB3aGVuIHdl
J3JlIHVzaW5nIHRoZSBQb2lzb25lZCB2YXJpYW50Ci0vLyBvZiBQb2lzb25lZEltcGwpLiBUaGlz
IGJ1ZyBkb2VzIG5vdCBtYW5pZmVzdCBmb3IgdGhlIENvbnN0RXhwclBvaXNvbmVkIHZhcmlhbnQu
Ci0vLyBJbiBwcmFjdGljZSwgd2Ugd2lsbCBsaWtlbHkgb25seSB1c2UgdGhlc2UgbWV0aG9kcyBm
b3IgaW5zdGFudGlhdGlvbnMgb2YgdGhlCi0vLyBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LiBI
ZW5jZS4gdGhpcyBidWcgaXMgbm90IGEgc2hvdyBzdG9wcGVyLgotLy8gVGhhdCBzYWlkLCB3ZSds
bCBkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiBhY2NvcmRpbmdseSBzbyB0aGF0IHdlIGNhbiB1
c2UKKy8vIG9mIFBvaXNvbmVkSW1wbCkuCisvLworLy8gV2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhF
RF9QT0lTT04gYWNjb3JkaW5nbHkgc28gdGhhdCB3ZSBjYW4gdXNlCiAvLyBpdCB0byBkaXNhYmxl
IHRoZSBhZmZlY3RlZCB0ZXN0cyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KIAog
I2lmIE9TKERBUldJTikKQEAgLTIzMiwzNyArMjMxLDEyIEBAIGlubGluZSB2b2lkIHN3YXAoUG9p
c29uZWRJbXBsPEsxLCBrMSwgVDEKIAogV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtl
UG9pc29uKCk7CiAKLSNpZiBFTkFCTEUoUE9JU09OKQotLy8gRklYTUU6IG9uY2Ugd2UgaGF2ZSBD
KysxNywgd2UgY2FuIG1ha2UgdGhpcyBhIGxhbWJkYSBpbiBtYWtlQ29uc3RFeHByUG9pc29uKCku
Ci1pbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBjb25zdEV4cHJQb2lzb25SYW5kb20odWludHB0
cl90IHNlZWQpCi17Ci0gICAgdWludHB0cl90IHJlc3VsdDEgPSBzZWVkICogNjkwNjk2OTA2OSAr
IDEyMzQ1Njc7Ci0gICAgdWludHB0cl90IHJlc3VsdDIgPSBzZWVkICogODI1MzcyOSArIDIzOTY0
MDM7Ci0gICAgcmV0dXJuIChyZXN1bHQxIDw8IDMpIF4gKHJlc3VsdDIgPDwgMTYpOwotfQotI2Vu
ZGlmCi0KLWlubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VDb25zdEV4cHJQb2lzb24odWlu
dDMyX3Qga2V5KQotewotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgdWludHB0cl90IHBvaXNvbiA9
IGNvbnN0RXhwclBvaXNvblJhbmRvbShrZXkpOwotICAgIHBvaXNvbiAmPSB+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMHhmZmZmKSA8PCA0OCk7IC8vIEVuc3VyZSB0aGF0IHBvaXNvbmVkIGJpdHMg
bG9vayBsaWtlIGEgcG9pbnRlci4KLSAgICBwb2lzb24gfD0gKDEgPDwgMik7IC8vIEVuc3VyZSB0
aGF0IHBvaXNvbmVkIGJpdHMgY2Fubm90IGJlIDAuCi0gICAgcmV0dXJuIHBvaXNvbjsKLSNlbHNl
Ci0gICAgcmV0dXJuICh2b2lkKWtleSwgMDsKLSNlbmRpZgotfQotCiB0ZW1wbGF0ZTx1aW50cHRy
X3QmIGtleSwgdHlwZW5hbWUgVD4KIHVzaW5nIFBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRw
dHJfdCYsIGtleSwgVD47CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVz
aW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgbWFrZUNvbnN0
RXhwclBvaXNvbihrZXkpLCBUPjsKLQotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBU
Pgotc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzIHsKLSAgICB1c2luZyBTdG9yYWdl
VHlwZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+OwordGVtcGxhdGU8dWludHB0cl90JiBr
ZXksIHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHMgeworICAgIHVzaW5nIFN0
b3JhZ2VUeXBlID0gUG9pc29uZWQ8a2V5LCBUKj47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBz
dGF0aWMgQUxXQVlTX0lOTElORSBUKiBleGNoYW5nZShTdG9yYWdlVHlwZSYgcHRyLCBVJiYgbmV3
VmFsdWUpIHsgcmV0dXJuIHB0ci5leGNoYW5nZShuZXdWYWx1ZSk7IH0KIApAQCAtMjc3LDggKzI1
MSw2IEBAIHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0cyB7CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCi11c2luZyBXVEY6OkNvbnN0RXhwclBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lz
b25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWRCaXRzOwotdXNpbmcgV1RGOjptYWtlQ29uc3RFeHBy
UG9pc29uOwogdXNpbmcgV1RGOjptYWtlUG9pc29uOwpJbmRleDogU291cmNlL1dURi93dGYvUG9p
c29uZWRVbmlxdWVQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVu
aXF1ZVB0ci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVu
aXF1ZVB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5h
YmxlID0gdm9pZD4KLWNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyIDogcHVibGljIENvbnN0RXhwclBv
aXNvbmVkPGtleSwgVCo+IHsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0
eXBlbmFtZSBFbmFibGUgPSB2b2lkPgorY2xhc3MgUG9pc29uZWRVbmlxdWVQdHIgOiBwdWJsaWMg
UG9pc29uZWQ8a2V5LCBUKj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVz
aW5nIEJhc2UgPSBDb25zdEV4cHJQb2lzb25lZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0g
UG9pc29uZWQ8a2V5LCBUKj47CiBwdWJsaWM6CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9IGRl
ZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgpIHsg
fQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZSh1bmlxdWUucmVsZWFz
ZSgpKQogICAgIHsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5MiwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+
PgorICAgIHRlbXBsYXRlPHVpbnRwdHJfdCYga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+PgogICAgIFBvaXNv
bmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyPGtleTIsIFU+JiYgcHRyKQogICAgICAgICA6
IEJhc2UocHRyLnVucG9pc29uZWQoKSkKICAgICB7CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtl
eTIsIHR5cGVuYW1lIFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vf
b2Y8VCwgVT46OnZhbHVlPj4KKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleTIsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8VCwgVT46OnZh
bHVlPj4KICAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KFBvaXNvbmVkVW5pcXVlUHRy
PGtleTIsIFU+JiYgcHRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRoaXMgPT0gc3RhdGljX2Nh
c3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIudW5wb2lzb25lZCgp
KTsKQEAgLTEyMiwxOSArMTIyLDE5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyV2l0aG91
dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90LCB0
eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0
ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lz
b25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVCwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgordGVtcGxhdGU8
dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cywgdHlwZW5h
bWUgRW5hYmxlID0gdm9pZD4KIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVD4gbWFrZVBvaXNvbmVk
VW5pcXVlKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKIHsKICAgICByZXR1cm4gUG9pc29uZWRV
bmlxdWVQdHI8a2V5LCBUPjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci1jbGFzcyBQ
b2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgQ29uc3RFeHByUG9pc29uZWQ8a2V5
LCBUKj4gewordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+CitjbGFzcyBQb2lz
b25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgUG9pc29uZWQ8a2V5LCBUKj4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVzaW5nIEJhc2UgPSBDb25zdEV4cHJQb2lz
b25lZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0gUG9pc29uZWQ8a2V5LCBUKj47CiBwdWJs
aWM6CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlx
dWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgpIHsgfQpAQCAtMTQyLDcgKzE0Miw3IEBAIHB1
YmxpYzoKICAgICBQb2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1ZVB0ciYmIHB0cikgOiBC
YXNlKFdURk1vdmUocHRyKSkgeyBwdHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOyB9CiAgICAgUG9p
c29uZWRVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFRbXT4mJiB1bmlxdWUpIDogUG9pc29uZWRV
bmlxdWVQdHIodW5pcXVlLnJlbGVhc2UoKSkgeyB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBr
ZXkyPgorICAgIHRlbXBsYXRlPHVpbnRwdHJfdCYga2V5Mj4KICAgICBQb2lzb25lZFVuaXF1ZVB0
cihQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQogICAgICAgICA6IEJhc2UocHRy
LnVucG9pc29uZWQoKSkKICAgICB7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KKyAg
ICB0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleTI+CiAgICAgUG9pc29uZWRVbmlxdWVQdHImIG9wZXJh
dG9yPShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHRoaXMgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29u
ZWQoKSAhPSBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTIxMSwxMCArMjExLDEwIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAot
ICAgIHRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQ
b2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlw
ZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVp
bnQzMl90IGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgordGVtcGxhdGU8
dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIFBvaXNv
bmVkVW5pcXVlUHRyPGtleSwgVFtdPiBtYWtlUG9pc29uZWRVbmlxdWUoc2l6ZV90IGNvdW50LCBB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiB7CiAgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRy
PGtleSwgVFtdPjo6Y3JlYXRlKGNvdW50LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1JlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDEwICsyNTYsMTAgQEAgaW5saW5lIGJvb2wgaXMoY29u
c3QgUmVmPEFyZ1R5cGUsIFB0clRyYQogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJj
ZS5nZXQoKSk7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0
IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5
cGVuYW1lIFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludDMyX3Qg
a2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWRSZWYgPSBSZWY8VCwgQ29uc3RFeHByUG9p
c29uZWRQdHJUcmFpdHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5h
bWUgVD4KK3VzaW5nIFBvaXNvbmVkUmVmID0gUmVmPFQsIFBvaXNvbmVkUHRyVHJhaXRzPGtleSwg
VD4+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291
bnRlZEFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5
LmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVu
YW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9kYXRhIHsgbnVsbHB0ciB9OwogfTsKIAotdGVt
cGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQ
dHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBv
aXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11
c2luZyBQb2lzb25lZFJlZkNvdW50ZWRBcnJheSA9IFJlZkNvdW50ZWRBcnJheTxULCBDb25zdEV4
cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRSZWZDb3VudGVkQXJyYXkgPSBSZWZDb3VudGVkQXJy
YXk8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgog
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvUmVmUHRy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NiwxMCArMjc2LDEwIEBAIGlubGluZSBib29sIGlzKGNv
bnN0IFJlZlB0cjxBcmdUeXBlLCBQdHIKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3Vy
Y2UuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVj
dCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90
IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkUmVmUHRyID0gUmVmUHRyPFQsIENvbnN0
RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwordGVtcGxhdGU8dWludHB0cl90JiBrZXks
IHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJlZlB0ciA9IFJlZlB0cjxULCBQb2lzb25lZFB0
clRyYWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dU
RkFzc2VydGlvbnMuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZB
c3NlcnRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMzkgKzM1LDkgQEAgbmFtZXNwYWNl
IFdURiB7CiAKIG5hbWVzcGFjZSB7CiBzdHJ1Y3QgRHVtbXlTdHJ1Y3QgeyB9OwotY29uc3QgdWlu
dDMyX3QgZHVtbXlQb2lzb24gPSAweGZmZmY7Cit1aW50cHRyX3QgZHVtbXlQb2lzb24gPSAwOwog
fQogCi0jaWYgRU5BQkxFKFBPSVNPTikKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9p
c29uKDEpID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIu
Iik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDApID4+IDQ4KSwgInBv
aXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0
KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3Vs
ZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQ
b2lzb24oMTAwMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBv
aW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+
PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3Rh
dGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMHhmZmZmZmZmZikgPj4gNDgpLCAicG9p
c29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKLQotc3RhdGljX2Fzc2Vy
dCgobWFrZUNvbnN0RXhwclBvaXNvbigxKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVk
IGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgo
bWFrZUNvbnN0RXhwclBvaXNvbigxMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQg
Yml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQg
Yml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVk
IGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgo
bWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNv
bmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2Vy
dCgobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9m
IHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotCi1zdGF0
aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHg0KSwgImJpdCAyIHNob3VsZCBh
bHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAp
ICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgo
bWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJl
IHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApICYgMHg0
KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNv
bnN0RXhwclBvaXNvbigxMDAwMDAwKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNl
dC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMHhmZmZmZmZmZikgJiAw
eDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci0KLXN0YXRpY19hc3NlcnQoISht
YWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQg
Yml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2Vy
dCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxp
Z25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRp
Y19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApICYgMHgzKSwgImVuc3VyZSBib3R0
b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIp
Owotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApICYgMHgzKSwgImVu
c3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxh
ZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkg
JiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9y
IHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNv
bigweGZmZmZmZmZmKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJl
IGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLSNlbmRpZiAvLyBFTkFCTEUoUE9J
U09OKQotCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihCYWc8RHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yo
dm9pZCopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZEJhZzxkdW1teVBvaXNv
biwgRHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9pZCopLCAiIik7CiAKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NzY1LDcgKzc2NSw2IEBACiAJCUZFMDVGQUVDMUZEQjUxMEEwMDA5MzIzMCAvKiBQb2lzb25lZFJl
Zi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1
RkFFQjFGREI1MTAyMDAwOTMyMzAgLyogUG9pc29uZWRSZWYuY3BwICovOyB9OwogCQlGRTA1RkFF
RDFGREI1MTBFMDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUExRkRCNTEwMTAwMDkzMjMwIC8q
IFBvaXNvbmVkUmVmUHRyLmNwcCAqLzsgfTsKIAkJRkUwNUZBRUYxRkUwNjQ1QjAwMDkzMjMwIC8q
IFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi87IH07Ci0JCUZF
MDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGMDFGRTA4Q0NEMDAw
OTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovOyB9OwogCQlGRTA1RkIwNjFGRTg0RkI3
MDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZCMDUxRkU4NEZBRTAwMDkzMjMwIC8qIFBvaXNv
bmVkVW5pcXVlUHRyLmNwcCAqLzsgfTsKIAkJRkVDOEY0RTcxRkU5QzkwNTAwNTZGRDhBIC8qIFBv
aXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzhGNEU2MUZFOUM4REUw
MDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5
cy5jcHAgKi87IH07CiAJCUZFQzhGNEVCMUZFOUY1QUYwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1
ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM4RjRFQTFGRTlGNUE3MDA1NkZEOEEg
LyogUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3Bw
ICovOyB9OwpAQCAtMTg4MSw3ICsxODgwLDYgQEAKIAkJRkUwNUZBRUExRkRCNTEwMTAwMDkzMjMw
IC8qIFBvaXNvbmVkUmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBvaXNvbmVkUmVmUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUw
NUZBRUIxRkRCNTEwMjAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhw
clBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnN0
RXhwclBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwNUZCMDUx
RkU4NEZBRTAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkVW5pcXVlUHRyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2VkUHRyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8qIFBv
aXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI2NTQsNyArMjY1Miw2IEBACiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENoZWNr
ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJMEYzMENCNUIxRkNFMTc5MjAwNEI1
MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLywKIAkJCQkwRkVBRTM2NzFCN0QxOUNC
MDBDRTE3RjIgLyogQ29uZGl0aW9uLmNwcCAqLywKLQkJCQlGRTA1RkFGMDFGRTA4Q0NEMDAwOTMy
MzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovLAogCQkJCTUxNzE0RUI5MUQwODc0MTYwMDQ3
MjNDNCAvKiBDcm9zc1RocmVhZFRhc2suY3BwICovLAogCQkJCTI2QTJDNzJFMTVFMkU3M0MwMDVC
MUExNCAvKiBDU3RyaW5nLmNwcCAqLywKIAkJCQk3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0YgLyog
RGF0ZU1hdGguY3BwICovLApAQCAtMzIyMSw3ICszMjE4LDYgQEAKIAkJCQk3QzgzREVBMDFEMEE1
OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVDMzFEMEE1OTBDMDBGRUJDRjMgLyogQ29u
ZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAv
KiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBNjFEMEE1
OTBDMDBGRUJDRjMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQTkx
RDBBNTkwQzAwRkVCQ0YzIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
QUQxRDBBNTkwQzAwRkVCQ0YzIC8qIERlcXVlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNw
cAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29u
c3RFeHByUG9pc29uZWQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMzg0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgotI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZC5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBjb25zdCB1aW50MzJf
dCBQb2lzb25BID0gMHhhYWFhOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJi
YmI7Ci0KLS8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVy
aXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKLS8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIg
YW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KLQotVEVTVChXVEZfQ29uc3RFeHByUG9pc29u
ZWQsIEJhc2ljKQotewotICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwotCi0gICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7Ci0gICAgQVNTRVJUX0VRKG51
bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7Ci0KLSNpZiBFTkFCTEUoUE9JU09O
KQotICAgICAgICB1aW50cHRyX3QgcHRyQml0czsKLSAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJp
dHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMg
IT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsKLSNpZiBFTkFCTEUoUE9JU09OX0FTU0VS
VFMpCi0gICAgICAgIEFTU0VSVF9UUlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwotI2VuZGlmCi0jZW5kaWYgLy8gRU5BQkxF
KFBPSVNPTikKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBv
aXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAh
PSBwMy5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51
bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpICE9IHAzLmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMyA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dn
ZXIqPiBwNCA9IFdURk1vdmUocDMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RS
VUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIs
IFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0K
LSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFT
U0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7
Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7
Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dl
cio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAyID0gV1RGTW92ZShwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9ICZhOwot
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1v
dmUocDMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9
IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIuY2xlYXIoKTsKLSAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLX0KLQotVEVTVChXVEZfQ29uc3RFeHBy
UG9pc29uZWQsIEFzc2lnbm1lbnQpCi17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7Ci0g
ICAgUmVmTG9nZ2VyIGIoImIiKTsKLSAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKLQotICAg
IHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEp
OwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9IHAyOwotICAgICAgICBBU1NF
UlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5w
b2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dl
cio+IHA0KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzID0gcDQ7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZiLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIHB0ciA9ICZiOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBvaXNv
bmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgcHRyID0gbnVsbHB0cjsKLSAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVk
KCkpOwotICAgICAgICBwMSA9IFdURk1vdmUocDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAx
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsK
LQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7
Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRf
RVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzID0gV1RGTW92ZShwNCk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZi
LCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBw
Mi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
LSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZl
ZFJlZkxvZ2dlcio+IHAyKCZjKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAx
ID0gcDI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIHAzID0gcDQ7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRf
VFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0ciA9ICZjOwotICAgICAg
ICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwot
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYywgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMs
IHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgcDMgPSBXVEZNb3ZlKHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVF
KHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gcHRyOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSNpZiBDT01QSUxFUihDTEFORykKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdzZWxmLW1vdmUiCi0jZW5kaWYKLSAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOwotI2lm
IENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCi0g
ICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotfQotCi1URVNU
KFdURl9Db25zdEV4cHJQb2lzb25lZCwgU3dhcCkKLXsKLSAgICBSZWZMb2dnZXIgYSgiYSIpOwot
ICAgIFJlZkxvZ2dlciBiKCJiIik7Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgcDEuc3dhcChwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgp
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgcDMuc3dhcChwNCk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwg
cDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOwotICAgICAg
ICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBzd2FwKHAxLCBwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgc3dhcChwMywgcDQpOwotICAgICAgICBBU1NFUlRfRVEo
JmIsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25l
ZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKLSAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMi5i
aXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgUmVmTG9nZ2VyKiBw
MigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMik7Ci0gICAgICAgIHN3YXAocDEsIHAyKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyKTsKLQot
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
cDIpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgUmVmTG9nZ2VyKiBwMigmYik7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBw
Mik7Ci0gICAgICAgIHAxLnN3YXAocDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9p
c29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIpOwotCi0gICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwMikpOwotICAgIH0KLX0K
LQotc3RhdGljIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVk
UHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQotewotICAgIHJldHVybiBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKLX0KLQotVEVTVChXVEZfQ29uc3RFeHBy
UG9pc29uZWQsIFJldHVyblZhbHVlKQotewotICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwot
Ci0gICAgewotICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsICYq
cHRyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOwotICAgIH0KLX0K
LQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWYuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDE5ICszMSwzMSBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0
YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotc3RhdGljIGNvbnN0IHVpbnQz
Ml90IFBvaXNvbkIgPSAweGJiYmI7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQyA9IDB4
Y2NjYzsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25EID0gMHhkZGRkOwotc3RhdGljIGNv
bnN0IHVpbnQzMl90IFBvaXNvbkUgPSAweGVlZWU7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9p
c29uRiA9IDB4ZmZmZjsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQTsKK3N0YXRpYyB1aW50cHRy
X3QgcG9pc29uQjsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQzsKK3N0YXRpYyB1aW50cHRyX3Qg
cG9pc29uRDsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uRTsKK3N0YXRpYyB1aW50cHRyX3QgcG9p
c29uRjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbmVkUmVmUG9pc29ucygpCit7Cisg
ICAgcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25CID0gbWFrZVBvaXNvbigpOwor
ICAgIHBvaXNvbkMgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uRCA9IG1ha2VQb2lzb24oKTsK
KyAgICBwb2lzb25FID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkYgPSBtYWtlUG9pc29uKCk7
Cit9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9p
c29uZWRSZWZQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQSwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAg
ICAgIFBvaXNvbmVkUmVmPHBvaXNvbkEsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5u
YW1lKTsKIApAQCAtNTEsMTYgKzYzLDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykK
ICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRz
LCAmcmVmLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0gICAgICAgIEFTU0VSVF9FUShwdHJCaXRz
LCAoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOwor
ICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNvbmVkPHBvaXNvbkEsIFJlZkxvZ2dlcio+
KCZhKS5iaXRzKCkpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgIEFTU0VS
VF9UUlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPjo6aXNQb2lzb25l
ZChwdHJCaXRzKSkpOworICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWQ8cG9pc29uQSwgUmVm
TG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJM
RShQT0lTT04pCiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29u
QiwgUmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lz
b25CLCBSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihhKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwg
cmVmLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUpOwogICAg
IH0KQEAgLTY5LDEyICs4MSwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQmFzaWMpCiAKIFRF
U1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQb2lzb25l
ZFJlZlBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxv
Z2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lz
b25lZFJlZjxwb2lzb25DLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBiOwpA
QCAtODQsNyArOTgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRCwg
UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkQsIFJlZkxvZ2dl
cj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGM7CkBAIC05NCw3ICsxMDgsNyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJl
ZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRSwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAg
ICAgIFBvaXNvbmVkUmVmPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJl
ZiA9IGFkb3B0UmVmKGIpOwpAQCAtMTA0LDcgKzExOCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
LCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJl
ZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVk
UmVmPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lz
b25GLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkp
OwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBhZG9wdFJlZihjKTsKQEAg
LTExNCwyNSArMTI4LDI3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiB9CiAKLXN0YXRpYyBQb2lzb25lZFJlZjxQb2lzb25CLCBSZWZMb2dnZXI+
IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4mJiByZWZlcmVuY2Up
CitzdGF0aWMgUG9pc29uZWRSZWY8cG9pc29uQiwgUmVmTG9nZ2VyPiBwYXNzV2l0aFJlZihQb2lz
b25lZFJlZjxwb2lzb25DLCBSZWZMb2dnZXI+JiYgcmVmZXJlbmNlKQogewogICAgIHJldHVybiBX
VEZNb3ZlKHJlZmVyZW5jZSk7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5WYWx1
ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29uZWRSZWZQb2lzb25zKCk7CisKICAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZM
b2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25CLCBSZWZM
b2dnZXI+IHJlZihwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+KGEp
KSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKHBhc3NXaXRo
UmVmKFBvaXNvbmVkUmVmPHBvaXNvbkMsIFJlZkxvZ2dlcj4oYSkpKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCByZWYucHRyKCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVk
UmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lz
b25ELCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkp
OwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBwYXNzV2l0aFJlZihiKTsK
QEAgLTE0MiwyMiArMTU4LDIyIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5WYWx1ZSkK
ICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJlZihhKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25GLCBEZXJpdmVkUmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAg
ICBQb2lzb25lZFJlZlB0cjxQb2lzb25BLCBSZWZMb2dnZXI+IHB0cjIoV1RGTW92ZShwdHIpKTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgRGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQSwgUmVmTG9nZ2VyPiBwdHIyKFdURk1v
dmUocHRyKSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IGRlcml2ZWRSZWZlcmVuY2Uo
YSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4gYmFzZVJlZmVyZW5j
ZShwYXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYoKSkpOworICAgICAgICBQb2lz
b25lZFJlZjxwb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOwor
ICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25DLCBSZWZMb2dnZXI+IGJhc2VSZWZlcmVuY2UocGFz
c1dpdGhSZWYoZGVyaXZlZFJlZmVyZW5jZS5jb3B5UmVmKCkpKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBkZXJpdmVkUmVmZXJlbmNlLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBiYXNl
UmVmZXJlbmNlLnB0cigpKTsKICAgICB9CkBAIC0xNjYsMTIgKzE4MiwxNCBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZiwgUmV0dXJuVmFsdWUpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQog
eworICAgIGluaXRpYWxpemVQb2lzb25lZFJlZlBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBh
KCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWY8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMShhKTsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29u
RSwgUmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRCwgUmVmTG9n
Z2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMihi
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOwpAQCAtMTgzLDggKzIwMSw4IEBA
IFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOwotICAg
ICAgICBQb2lzb25lZFJlZjxQb2lzb25BLCBSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBQb2lz
b25lZFJlZjxwb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJlZjxw
b2lzb25BLCBSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5wdHIo
KSk7CkBAIC0xOTYsNyArMjE0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkYs
IFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxvZ2dl
cj4gcDEoYSk7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8
PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKQEAgLTIwOSw3ICsyMjcs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsK
KyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKICAgICAgICAg
UmVmPFJlZkxvZ2dlcj4gcDIoYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEucHRyKCkpOwpAQCAtMjIzLDcgKzI0MSw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkUmVmLCBTd2FwKQogfQogCiBzdHJ1Y3QgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlciA6
IFJlZkxvZ2dlciB7Ci0gICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWY8UG9pc29uQiwgUG9pc29u
ZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj47CisgICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWY8cG9p
c29uQiwgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj47CiAKICAgICBQb2lzb25lZFJlZkNo
ZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIHZvaWQgcmVmKCk7CkBAIC0y
NjEsNiArMjc5LDggQEAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRlcgog
CiBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWduQmVmb3JlRGVyZWYpCiB7CisgICAgaW5pdGlh
bGl6ZVBvaXNvbmVkUmVmUG9pc29ucygpOworCiAgICAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tp
bmdSZWZMb2dnZXIgYSgiYSIpOwogICAgIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYigi
YiIpOwogICAgIERlcml2ZWRQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGMoImMiKTsKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmUHRyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZlB0ci5j
cHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bv
aXNvbmVkUmVmUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjIgKzMzLDM0IEBACiAKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEg
PSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLXN0YXRp
YyBjb25zdCB1aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGljIGNvbnN0IHVpbnQzMl90
IFBvaXNvbkQgPSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRSA9IDB4ZWVl
ZTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZmOworc3RhdGljIHVpbnRw
dHJfdCBwb2lzb25BOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25COworc3RhdGljIHVpbnRwdHJf
dCBwb2lzb25DOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25EOworc3RhdGljIHVpbnRwdHJfdCBw
b2lzb25FOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25GOworCitzdGF0aWMgdm9pZCBpbml0aWFs
aXplUG9pc29uZWRSZWZQb2lzb25zKCkKK3sKKyAgICBwb2lzb25BID0gbWFrZVBvaXNvbigpOwor
ICAgIHBvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uQyA9IG1ha2VQb2lzb24oKTsK
KyAgICBwb2lzb25EID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkUgPSBtYWtlUG9pc29uKCk7
CisgICAgcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKK30KIAogVEVTVChXVEZfUG9pc29uZWRSZWZQ
dHIsIEJhc2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25lZFJlZlBvaXNvbnMoKTsKKwogICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCi0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQSwg
UmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25BLCBSZWZMb2dnZXI+
IGVtcHR5OwogICAgIEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CiAKICAgICB7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAg
ICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBF
WFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CkBAIC01Nyw3MCArNjksNzAg
QEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEJhc2ljKQogICAgICAgICB1aW50cHRyX3QgcHRy
Qml0czsKICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRz
KSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oJmEpKTsKLSAgICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CisgICAgICAgIEFTU0VSVF9FUShwdHJC
aXRzLCAoUG9pc29uZWQ8cG9pc29uQiwgUmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOwogI2lmIEVO
QUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJUX1RSVUUoKENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKChQb2lzb25lZDxwb2lzb25CLCBSZWZMb2dnZXIqPjo6aXNQb2lzb25lZChw
dHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICB9CiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwog
CiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHB0ciA9
ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHB0ciA9ICZh
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAyKHAxKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0K
ICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25GLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIs
IFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVm
TG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dn
ZXI+IHAyID0gcDE7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBF
WFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
cmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOwot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShw
MSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUo
cDEpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVm
UHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBFWFBFQ1Rf
RVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsK
ICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBEZXJp
dmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBS
ZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIERlcml2
ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJl
ZkxvZ2dlcj4gcDIgPSBwMTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwog
CiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2Vy
PiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAy
ID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIERlcml2ZWRS
ZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJlZkxv
Z2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgcHRyID0gbnVsbHB0cjsKICAg
ICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CkBAIC0xMzAsMTAgKzE0MiwxMiBA
QCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVm
UHRyLCBBc3NpZ25QYXNzUmVmVG9Qb2lzb25lZFJlZlB0cikKIHsKKyAgICBpbml0aWFsaXplUG9p
c29uZWRSZWZQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICB7
CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHBhc3NSZWYoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVm
UHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYp
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTE0MSwx
MyArMTU1LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25QYXNzUmVmVG8KIAog
VEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFkb3B0KQogeworICAgIGluaXRpYWxpemVQb2lzb25l
ZFJlZlBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCi0gICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lzb25lZFJlZlB0
cjxwb2lzb25DLCBSZWZMb2dnZXI+IGVtcHR5OwogICAgIEVYUEVDVF9FUShudWxscHRyLCBlbXB0
eS5nZXQoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxv
Z2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQs
IFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CiAgICAgICAgIEVYUEVDVF9F
USgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1NSw3ICsxNzEsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQWRvcHQpCiAgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUs
IFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxw
b2lzb25FLCBSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTE2MywxMyArMTc5LDE1IEBAIFRFU1QoV1RGX1BvaXNv
bmVkUmVmUHRyLCBBZG9wdCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQp
CiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbmVkUmVmUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9n
Z2VyIGMoImMiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVm
TG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dl
cj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHAx
KCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwMigmYik7
CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIs
IHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTE4MSw3ICsxOTksNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSByZWYoYikgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkMsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywg
UmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHB0ciA9ICZiOwpAQCAtMTkxLDcgKzIwOSw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dn
ZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4g
cHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2co
KSA8PCAifCAiOwogICAgICAgICBwdHIgPSBhZG9wdFJlZigmYik7CkBAIC0yMDEsNyArMjE5LDcg
QEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIo
JmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0cigmYSk7
CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgcHRyID0gbnVsbHB0
cjsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CkBAIC0yMDksOCArMjI3
LDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAgICBs
b2coKSA8PCAifCAiOwpAQCAtMjIyLDggKzI0MCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRy
LCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEp
IHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uRSwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8cG9pc29uRSwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0yMzUsNyArMjUzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRS
ZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgcmVm
KGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHB0
cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZh
KTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwogICAgICAgICBwdHIgPSAmYzsKQEAgLTI0NSw3ICsyNjMsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihj
KSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAg
ICAgcHRyID0gYWRvcHRSZWYoJmMpOwpAQCAtMjU1LDggKzI3Myw4IEBAIFRFU1QoV1RGX1BvaXNv
bmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYo
YSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTI2OCw3ICsyODYsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBk
ZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAg
cHRyID0gcHRyOwpAQCAtMjc4LDcgKzI5Niw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBB
c3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGEpIGRlcmVmKGEpIHwg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwdHIuZ2V0KCkpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKQEAgLTI5NiwxMiArMzE0LDE0IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBB
c3NpZ25tZW50KQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkKIHsKKyAgICBpbml0
aWFsaXplUG9pc29uZWRSZWZQb2lzb25zKCk7CisKICAgICBSZWZMb2dnZXIgYSgiYSIpOwogICAg
IFJlZkxvZ2dlciBiKCJiIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkIsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBS
ZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9n
Z2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4g
cDIoJmIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAx
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CkBAIC0zMTMsOCArMzMz
LDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4g
cDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyKCZi
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIpOwogICAgICAg
ICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CkBAIC0zMjgsMTEgKzM0OCwxMyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVh
c2VOb25OdWxsKQogeworICAgIGluaXRpYWxpemVQb2lzb25lZFJlZlBvaXNvbnMoKTsKKwogICAg
IFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25O
dWxsKCk7CiAgICAgfQogCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMzQwLDM3ICszNjIsMzkgQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIFJlbGVhc2VOb25OdWxsKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVs
ZWFzZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29uZWRSZWZQb2lzb25zKCk7CisKICAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRS
ZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25D
LCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJl
ZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29u
QywgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBS
ZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBw
MS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAm
YTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3Zl
KHAxKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAm
YTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3Zl
KHAxKSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAg
ICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEp
OwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNv
bkQsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBS
ZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAt
MzgyLDggKzQwNiw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNlKQogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25G
LCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgRGVy
aXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBS
ZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgRGVyaXZl
ZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBA
IC0zOTUsMTMgKzQxOSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZSkKICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAotc3RhdGljIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMs
IFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCitzdGF0aWMgUG9pc29uZWRSZWZQdHI8
cG9pc29uQywgUmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxvZ2dlcikKIHsKLSAgICByZXR1cm4g
UG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPigmbG9nZ2VyKTsKKyAgICByZXR1cm4g
UG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPigmbG9nZ2VyKTsKIH0KIAogVEVTVChX
VEZfUG9pc29uZWRSZWZQdHIsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25l
ZFJlZlBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCiAgICAgewpA
QCAtNDMyLDIwICs0NTgsMjIgQEAgc3RhdGljIENvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291
bnRlZAogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQ29uc3QpCiB7CisgICAgaW5pdGlhbGl6
ZVBvaXNvbmVkUmVmUG9pc29ucygpOworCiAgICAgLy8gVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBj
b21waWxlcyB3aXRob3V0IGFuIGVycm9yLgogICAgIGF1dG8gYSA9IENvbnN0UmVmQ291bnRlZDo6
Y3JlYXRlKCk7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYiA9IFdURk1vdmUoYSk7
Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBjID0g
Yi5wdHIoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBjb25zdCBDb25zdFJlZkNvdW50
ZWQ+IGMgPSBiLnB0cigpOwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGQgPSByZXR1
cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBjb25z
dCBDb25zdFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7Ci0gICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3Vu
dGVkOjpjcmVhdGUoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBjb25zdCBDb25zdFJl
ZkNvdW50ZWQ+IGcgPSBmOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIGNvbnN0IENvbnN0
UmVmQ291bnRlZD4gaChmKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBjb25zdCBDb25z
dFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7CisgICAgUG9pc29u
ZWRSZWZQdHI8cG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpj
cmVhdGUoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBjb25zdCBDb25zdFJlZkNvdW50
ZWQ+IGcgPSBmOworICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIGNvbnN0IENvbnN0UmVmQ291
bnRlZD4gaChmKTsKICAgICBSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBpKHJldHVyblJlZkNv
dW50ZWRSZWYoKSk7CiB9CiAKIHN0cnVjdCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2Vy
IDogUmVmTG9nZ2VyIHsKLSAgICB1c2luZyBSZWYgPSBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBQ
b2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPjsKKyAgICB1c2luZyBSZWYgPSBQb2lzb25l
ZFJlZlB0cjxwb2lzb25ELCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPjsKIAogICAg
IFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CiAgICAg
dm9pZCByZWYoKTsKQEAgLTQ3OSw2ICs1MDcsOCBAQCB2b2lkIFBvaXNvbmVkUmVmUHRyQ2hlY2tp
bmdSZWZMb2dnZXI6OmRlCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25CZWZvcmVE
ZXJlZikKIHsKKyAgICBpbml0aWFsaXplUG9pc29uZWRSZWZQb2lzb25zKCk7CisKICAgICBQb2lz
b25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKICAgICBQb2lzb25lZFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyIGIoImIiKTsKIApAQCAtNTQzLDYgKzU3Myw4IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmUHRyLCBBc3NpZ25CZWZvcmVEZXIKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIs
IFJlbGVhc2VOb25OdWxsQmVmb3JlRGVyZWYpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbmVkUmVm
UG9pc29ucygpOworCiAgICAgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7
CiAKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331076</attachid>
            <date>2018-01-11 11:08:36 -0800</date>
            <delta_ts>2018-01-11 16:02:24 -0800</delta_ts>
            <desc>work in progress for EWS testing only.</desc>
            <filename>bug-181542.patch</filename>
            <type>text/plain</type>
            <size>112015</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjI2Nzg0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OTQsOCArODk0LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNUYWlsQ2Fs
bHMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFzVGFpbENhbGxzKCk7IH0KIAot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfcG9pc29uID0gbWFrZUNvbnN0RXhwclBv
aXNvbihDb2RlQmxvY2tQb2lzb24pOwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5hbGl6ZUxM
SW50SW5saW5lQ2FjaGVzKCk7CiAgICAgdm9pZCBmaW5hbGl6ZUJhc2VsaW5lSklUSW5saW5lQ2Fj
aGVzKCk7CkBAIC05NzQsNyArOTcyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFdyaXRlQmFy
cmllcjxFeGVjdXRhYmxlQmFzZT4gbV9vd25lckV4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVy
PEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U+IG1fb3duZXJFZGdlOwotICAgIENvbnN0RXhwclBv
aXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVkVk07CisgICAgUG9pc29uZWQ8
Q29kZUJsb2NrUG9pc29uLCBWTSo+IG1fcG9pc29uZWRWTTsKIAogICAgIFBvaXNvbmVkUmVmQ291
bnRlZEFycmF5PENvZGVCbG9ja1BvaXNvbiwgSW5zdHJ1Y3Rpb24+IG1faW5zdHJ1Y3Rpb25zOwog
ICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaAkocmV2aXNp
b24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsOCBAQCB2b2lkIGFkanVzdEZy
YW1lQW5kU3RhY2tJbk9TUkV4aXRDb21waWxlCiAgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUg
U1AgaXMgY29ycmVjdCBpbiBjYXNlIG9mIGFuIGV4Y2VwdGlvbi4KICAgICBqaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6Y29kZUJsb2NrICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSks
IEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpqaXRDb2RlT2Zmc2V0KCkpLCBHUFJJbmZvOjpy
ZWdUMCk7Ci0gICAgaml0LnhvclB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihDb2Rl
QmxvY2s6OnNfcG9pc29uKSwgR1BSSW5mbzo6cmVnVDApOworLy8gICAgaml0LnhvclB0cihNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihDb2RlQmxvY2s6OnNfcG9pc29uKSwgR1BSSW5mbzo6
cmVnVDApOworICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29k
ZUJsb2NrUG9pc29uKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5hZGRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMihKSVRDb2RlVHlwZTo6Y29tbW9uRGF0YU9mZnNldCgpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDAsIENvbW1vbkRhdGE6OmZyYW1lUmVnaXN0ZXJDb3VudE9mZnNldCgpKSwgR1BS
SW5mbzo6cmVnVDApOwogICAgIC8vIFRoaXMgZG9lcyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChm
cmFtZVJlZ2lzdGVyQ291bnQgLSAxKSpzaXplb2YoUmVnaXN0ZXIpIHdoZXJlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgdW5wb2lzb24oQ29kZUJsb2Nr
UG9pc29uLCBQQikKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCB0MSkKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0K
ICAgICB2YWx1ZVByb2ZpbGUocjAsIChDYWxsT3BDb2RlU2l6ZSAtIDEpLCB0MykKQEAgLTQ4MCwy
NyArNDgwLDI3IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAg
ICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAot
bWFjcm8gc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhlblN0
cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVk
Vk1bc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHNjcmF0
Y2gpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoLCBzY3JhdGNoMikKICAg
ICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlE
VGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKICAgICBsb2FkcCBbc2NyYXRjaCwgc3Ry
dWN0dXJlSURUaGVuU3RydWN0dXJlLCA4XSwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCiBlbmQK
IAotbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRj
aCkKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3Ry
dWN0dXJlCi0gICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwg
c2NyYXRjaCkKKyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJl
LCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJl
ckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHN0cnVjdHVyZQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCi0gICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bY2VsbF0sIGNlbGwKLSAgICB1bnBvaXNvbihD
b2RlQmxvY2tQb2lzb24sIGNlbGwpCi0gICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCi0gICAg
bG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQotZW5kCisjbWFjcm8gbG9hZFN0
cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisjICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisjICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisjICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2NlbGxdLCBj
ZWxsCisjICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgY2VsbCkKKyMgICAgbG9hZHAgVk06
OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3Rh
YmxlW2NlbGxdLCBjZWxsCisjICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1
cmUKKyNlbmQKIAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIApAQCAtNTYy
LDcgKzU2Miw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cKICAg
ICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIHJlc2V0IFBDLCBzaW5jZSB0aGUgc2xvd19wYXRoIGNs
b2JiZXJlZCB0aGVtLgogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbW92
ZSAwLCBQQwogICAgIGptcCBkb25lTGFiZWwKIGVuZApAQCAtNjQxLDcgKzY0MSw3IEBAIF9sbGlu
dF9vcF90b190aGlzOgogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwg
dGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmlu
YWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQz
KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIHQxLCB0MiwgLm9w
VG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b190aGlzX2xlbmd0aCkKQEAg
LTcyNCw3ICs3MjQsNyBAQCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uKCkKICAgICBtb3ZlIDAs
IHQwCiAgICAgam1wIC5kb25lCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgY3BlcSBTdHJ1Y3R1cmU6
Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2lzX3VuZGVmaW5lZF9sZW5ndGgpCiAubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZDoKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKKyAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSwgdDUpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCiAg
ICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDEsIHQwCkBAIC0xNDMzLDcg
KzE0MzMsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkOgogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWlu
OjptX3ZlY3Rvclt0M10sIHQzCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogdDMsIG9rIGVu
ZCkKIAotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEpCisgICAg
c3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSwgdDUpCiAgICAgbG9hZHEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCiAgICAgYnFlcSB0MiwgVmFsdWVOdWxsLCAu
b3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZQogLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkxv
b3A6CkBAIC0xNzQwLDcgKzE3NDAsNyBAQCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGlt
bWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCi0gICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEsIHQ1KQogICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBd
LCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIF9sbGlu
dF9vcF9jYXRjaDoKIAogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbG9h
ZHAgVk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwg
UEMKICAgICByc2hpZnRwIDMsIFBDCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV9zY29wZToKIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1Bh
dGgpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDUpCiAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCkBA
IC0yNTAwLDcgKzI1MDAsNyBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0
MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICAjIHQxIGlzIGhv
bGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIHR5cGVQcm9maWxlckxvZy4KICAgICBsb2FkcCBWTTo6
bV90eXBlUHJvZmlsZXJMb2dbdDFdLCB0MQogICAgICMgdDIgaXMgaG9sZGluZyB0aGUgcG9pbnRl
ciB0byB0aGUgY3VycmVudCBsb2cgZW50cnkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyMjY3ODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBlbHNlCiAgICAgY29uc3QgTG93ZXN0
VGFnID0gRGVsZXRlZFZhbHVlVGFnCiBlbmQKIAotY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KKyMgY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KIAogIyBQdXRCeUlkRmxhZ3MgZGF0YQogY29uc3Qg
UHV0QnlJZFByaW1hcnlUeXBlTWFzayA9IGNvbnN0ZXhwciBQdXRCeUlkUHJpbWFyeVR5cGVNYXNr
CkBAIC03NTQsOSArNzU0LDEwIEBAIG1hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChkZXMKICAgICBlbmQKIGVuZAogCi1tYWNybyB1bnBvaXNvbihwb2lzb24sIGZpZWxkKQorbWFj
cm8gdW5wb2lzb24ocG9pc29uLCBmaWVsZCwgc2NyYXRjaCkKICAgICBpZiBQT0lTT04KLSAgICAg
ICAgeG9ycCBwb2lzb24sIGZpZWxkCisgICAgICAgIGxvYWRwIF9Db2RlQmxvY2tQb2lzb24sIHNj
cmF0Y2gKKyAgICAgICAgeG9ycCBzY3JhdGNoLCBmaWVsZAogICAgIGVuZAogZW5kCiAKQEAgLTEw
MjQsNyArMTAyNSw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2MK
ICAgICAjIFNldCB1cCB0aGUgUEMuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgICAgICB1bnBvaXNvbihDb2RlQmxv
Y2tQb2lzb24sIFBCKQorICAgICAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCBQQykK
ICAgICAgICAgbW92ZSAwLCBQQwogICAgIGVsc2UKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1t0MV0sIFBDCkBAIC0xMDM1LDcgKzEwMzYsNyBAQCBtYWNybyBwcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgc3VicCBjZnIsIHQwLCB0MAogICAgIGJw
YSB0MCwgY2ZyLCAubmVlZFN0YWNrQ2hlY2sKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29u
ZWRWTVt0MV0sIHQyCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MikKKyAgICB1bnBv
aXNvbihDb2RlQmxvY2tQb2lzb24sIHQyLCB0MykKICAgICBpZiBDX0xPT1AKICAgICAgICAgYnBi
ZXEgVk06Om1fY2xvb3BTdGFja0xpbWl0W3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCiAgICAgZWxz
ZQpAQCAtMTYyMyw3ICsxNjI0LDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICBsb2FkYiBW
TTo6bV90cmFwcytWTVRyYXBzOjptX25lZWRUcmFwSGFuZGxpbmdbdDFdLCB0MAogICAgIGJ0cG56
IHQwLCAuaGFuZGxlVHJhcHMKIC5hZnRlckhhbmRsaW5nVHJhcHM6CkBAIC0xNjM5LDcgKzE2NDAs
NyBAQCBfbGxpbnRfb3BfY2hlY2tfdHJhcHM6CiBtYWNybyBhY3F1aXJlU2hhZG93Q2hpY2tlblBh
Y2tldChzbG93KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVC
bG9jazo6bV9wb2lzb25lZFZNW3QxXSwgdDEKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24s
IHQxKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEsIHQyKQogICAgIGxvYWRwIFZN
OjptX3NoYWRvd0NoaWNrZW5bdDFdLCB0MgogICAgIGxvYWRwIFNoYWRvd0NoaWNrZW46Om1fbG9n
Q3Vyc29yW3QyXSwgdDAKICAgICBicGFlcSB0MCwgU2hhZG93Q2hpY2tlbjo6bV9sb2dFbmRbdDJd
LCBzbG93CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKIAogcHJpdmF0
ZToKLSAgICBDb25zdEV4cHJQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKKyAgICBQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKIH07CiAKIGlubGluZSBBcnJheUJ1ZmZlciogdG9Qb3NzaWJseVNoYXJlZEFy
cmF5QnVmZmVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzMg
KzI1LDUgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gUG9pc29uIHsKLSAgICBOb3RQb2lzb25lZCA9IDAsIC8v
IFJlc2VydmVkIChhbmQgdW51c2VkKSBzbyB0aGF0IHBvaXNvbiBrZXlzIGFyZSBuZXZlciAwLgot
Ci0gICAgLy8gQWRkIG5ldyBwb2lzb24ga2V5cyBiZWxvdyBpbiBhbHBoYWJldGljYWwgb3JkZXIu
IFRoZSBvcmRlciBkb2Vzbid0IHJlYWxseQotICAgIC8vIG1hdHRlciwgYnV0IHdlIG1pZ2h0IGFz
IHdlbGwga2VlcCB0aGVtIGluIGFscGhhYmV0aWNhbGx5IG9yZGVyIGZvcgotICAgIC8vIGdyZWF0
ZXIgcmVhZGFiaWxpdHkuCi0gICAgQXJyYXlQcm90b3R5cGVQb2lzb24sCi0gICAgQ29kZUJsb2Nr
UG9pc29uLAotICAgIERhdGVJbnN0YW5jZVBvaXNvbiwKLSAgICBKU0FQSVdyYXBwZXJPYmplY3RQ
b2lzb24sCi0gICAgSlNBcnJheUJ1ZmZlclBvaXNvbiwKLSAgICBKU0NhbGxiYWNrT2JqZWN0UG9p
c29uLAotICAgIEpTR2xvYmFsT2JqZWN0UG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiwKLSAgICBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24s
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLAotICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZVBvaXNvbiwKLSAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24sCi19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIiAvLyBtbGFtCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJ
KHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjMgQEAgdWludHB0cl90
IGdfZ2xvYmFsRGF0YVBvaXNvbjsKIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiB1aW50cHRy
X3QgZ19uYXRpdmVDb2RlUG9pc29uOwogCit1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
Cit1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOwordWludHB0cl90IERhdGVJbnN0YW5jZVBvaXNv
bjsKK3VpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247Cit1aW50cHRyX3QgSlNBcnJh
eUJ1ZmZlclBvaXNvbjsKK3VpbnRwdHJfdCBKU0NhbGxiYWNrT2JqZWN0UG9pc29uOwordWludHB0
cl90IEpTR2xvYmFsT2JqZWN0UG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hlclBvaXNvbjsKK3VpbnRwdHJfdCBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOwordWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uOwordWludHB0
cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseVRh
YmxlUG9pc29uOwordWludHB0cl90IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbjsKK3Vp
bnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb247CisKIHZvaWQgaW5pdGlhbGl6ZVBvaXNv
bigpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKQEAg
LTQxLDYgKzU4LDIzIEBAIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpCiAgICAgICAgIGdfZ2xvYmFs
RGF0YVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19qaXRDb2RlUG9pc29uID0gbWFr
ZVBvaXNvbigpOwogICAgICAgICBnX25hdGl2ZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisK
KyAgICAgICAgQXJyYXlQcm90b3R5cGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIENv
ZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgRGF0ZUluc3RhbmNlUG9pc29u
ID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTQXJyYXlCdWZmZXJQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIEpTQ2FsbGJhY2tPYmplY3RQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1NjcmlwdEZldGNo
UGFyYW1ldGVyc1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaGVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9p
c29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24g
PSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24gPSBtYWtlUG9pc29u
KCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAg
ICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAg
ICAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAgfSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQ
dHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUG9pc29uZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMjMgQEAgZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2dsbwogZXh0ZXJuICJDIiBKU19FWFBPUlRE
QVRBIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiBleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAorZXh0ZXJuICJDIiBKU19FWFBPUlREQVRB
IHVpbnRwdHJfdCBBcnJheVByb3RvdHlwZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWlu
dHB0cl90IEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNBcnJheUJ1ZmZlclBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNDYWxsYmFja09iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgSlNHbG9iYWxPYmplY3RQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzUG9pc29uOworZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoZXJQb2lzb247CitleHRlcm4g
IkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJBc3NlbWJs
eU1lbW9yeVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJB
c3NlbWJseU1vZHVsZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3Qg
SlNXZWJBc3NlbWJseVRhYmxlUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IFVubGlua2VkU291cmNlQ29kZVBvaXNvbjsKKwogc3RydWN0IENsYXNz
SW5mbzsKIAogdXNpbmcgUG9pc29uZWRDbGFzc0luZm9QdHIgPSBQb2lzb25lZDxnX2dsb2JhbERh
dGFQb2lzb24sIGNvbnN0IENsYXNzSW5mbyo+OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlz
aW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsOCArMTg3LDggQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaW5nbGVTbG90VHJhbnNpdGlvbldlYWtP
d25lcjsKLSAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBDb25zdEV4cHJQb2lz
b25lZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKLSAg
ICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlUG9pc29uLCBXZWFrSW1wbCo+OworICAgIHVzaW5nIFBvaXNvbmVkVHJh
bnNpdGlvbk1hcFB0ciA9IFBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwg
VHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBQb2lzb25l
ZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFdlYWtJbXBsKj47CiAKICAgICBib29s
IGlzVXNpbmdTaW5nbGVTbG90KCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OCw3ICsxMTgsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlCiAg
ICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFzdFRMUygpKSB7CiAgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpz
T2Zmc2V0KSwgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNvbnRleHRJbnN0YW5jZUdQUiwgSlNXZWJBc3Nl
bWJseUluc3RhbmNlOjpvZmZzZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSksIHdhc21Db250ZXh0SW5z
dGFuY2VHUFIpOwotICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQobWFrZUNvbnN0RXhwclBvaXNvbihKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24pKSwgc2Ny
YXRjaFJlZyk7CisvLyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KG1ha2VDb25zdEV4cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uKSksIHNj
cmF0Y2hSZWcpOworICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgICAg
ICBqaXQueG9yNjQoc2NyYXRjaFJlZywgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAg
ICAgICBqc09mZnNldCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvQmFnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSwxMCArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRz
OjpTdG9yYWdlVHlwZSBtX2hlYWQgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJf
dCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3Rl
bXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFp
dHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVk
QmFnID0gQmFnPFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFn
Tm9kZTxUPj4+OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQ
b2lzb25lZEJhZyA9IEJhZzxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFByaXZhdGU6OkJhZ05v
ZGU8VD4+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNp
b24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMTAgKzM1LDkgQEAKIC8vIE9sZGVyIHZlcnNpb25zIG9mIGdjYyBhbmQgY2xhbmcgaGF2
ZSBhIGJ1ZyB3aGljaCByZXN1bHRzIGluIGJ1aWxkIGZhaWx1cmVzCiAvLyB3aGVuIHVzaW5nIHRl
bXBsYXRlIG1ldGhvZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IG9mIFBvaXNvbmVkSW1wbDxLMiwg
azIsIFQyPgogLy8gd2hlbiB0aGUgS2V5VHlwZSBpcyBhIHVpbnRwdHJfdCAoaS5lLiB3aGVuIHdl
J3JlIHVzaW5nIHRoZSBQb2lzb25lZCB2YXJpYW50Ci0vLyBvZiBQb2lzb25lZEltcGwpLiBUaGlz
IGJ1ZyBkb2VzIG5vdCBtYW5pZmVzdCBmb3IgdGhlIENvbnN0RXhwclBvaXNvbmVkIHZhcmlhbnQu
Ci0vLyBJbiBwcmFjdGljZSwgd2Ugd2lsbCBsaWtlbHkgb25seSB1c2UgdGhlc2UgbWV0aG9kcyBm
b3IgaW5zdGFudGlhdGlvbnMgb2YgdGhlCi0vLyBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LiBI
ZW5jZS4gdGhpcyBidWcgaXMgbm90IGEgc2hvdyBzdG9wcGVyLgotLy8gVGhhdCBzYWlkLCB3ZSds
bCBkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiBhY2NvcmRpbmdseSBzbyB0aGF0IHdlIGNhbiB1
c2UKKy8vIG9mIFBvaXNvbmVkSW1wbCkuCisvLworLy8gV2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhF
RF9QT0lTT04gYWNjb3JkaW5nbHkgc28gdGhhdCB3ZSBjYW4gdXNlCiAvLyBpdCB0byBkaXNhYmxl
IHRoZSBhZmZlY3RlZCB0ZXN0cyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KIAog
I2lmIE9TKERBUldJTikKQEAgLTIzMiwzNyArMjMxLDEyIEBAIGlubGluZSB2b2lkIHN3YXAoUG9p
c29uZWRJbXBsPEsxLCBrMSwgVDEKIAogV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtl
UG9pc29uKCk7CiAKLSNpZiBFTkFCTEUoUE9JU09OKQotLy8gRklYTUU6IG9uY2Ugd2UgaGF2ZSBD
KysxNywgd2UgY2FuIG1ha2UgdGhpcyBhIGxhbWJkYSBpbiBtYWtlQ29uc3RFeHByUG9pc29uKCku
Ci1pbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBjb25zdEV4cHJQb2lzb25SYW5kb20odWludHB0
cl90IHNlZWQpCi17Ci0gICAgdWludHB0cl90IHJlc3VsdDEgPSBzZWVkICogNjkwNjk2OTA2OSAr
IDEyMzQ1Njc7Ci0gICAgdWludHB0cl90IHJlc3VsdDIgPSBzZWVkICogODI1MzcyOSArIDIzOTY0
MDM7Ci0gICAgcmV0dXJuIChyZXN1bHQxIDw8IDMpIF4gKHJlc3VsdDIgPDwgMTYpOwotfQotI2Vu
ZGlmCi0KLWlubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VDb25zdEV4cHJQb2lzb24odWlu
dDMyX3Qga2V5KQotewotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgdWludHB0cl90IHBvaXNvbiA9
IGNvbnN0RXhwclBvaXNvblJhbmRvbShrZXkpOwotICAgIHBvaXNvbiAmPSB+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMHhmZmZmKSA8PCA0OCk7IC8vIEVuc3VyZSB0aGF0IHBvaXNvbmVkIGJpdHMg
bG9vayBsaWtlIGEgcG9pbnRlci4KLSAgICBwb2lzb24gfD0gKDEgPDwgMik7IC8vIEVuc3VyZSB0
aGF0IHBvaXNvbmVkIGJpdHMgY2Fubm90IGJlIDAuCi0gICAgcmV0dXJuIHBvaXNvbjsKLSNlbHNl
Ci0gICAgcmV0dXJuICh2b2lkKWtleSwgMDsKLSNlbmRpZgotfQotCiB0ZW1wbGF0ZTx1aW50cHRy
X3QmIGtleSwgdHlwZW5hbWUgVD4KIHVzaW5nIFBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRw
dHJfdCYsIGtleSwgVD47CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVz
aW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgbWFrZUNvbnN0
RXhwclBvaXNvbihrZXkpLCBUPjsKLQotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBU
Pgotc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzIHsKLSAgICB1c2luZyBTdG9yYWdl
VHlwZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+OwordGVtcGxhdGU8dWludHB0cl90JiBr
ZXksIHR5cGVuYW1lIFQ+CitzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHMgeworICAgIHVzaW5nIFN0
b3JhZ2VUeXBlID0gUG9pc29uZWQ8a2V5LCBUKj47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBz
dGF0aWMgQUxXQVlTX0lOTElORSBUKiBleGNoYW5nZShTdG9yYWdlVHlwZSYgcHRyLCBVJiYgbmV3
VmFsdWUpIHsgcmV0dXJuIHB0ci5leGNoYW5nZShuZXdWYWx1ZSk7IH0KIApAQCAtMjc3LDggKzI1
MSw2IEBAIHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0cyB7CiAKIH0gLy8gbmFtZXNw
YWNlIFdURgogCi11c2luZyBXVEY6OkNvbnN0RXhwclBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lz
b25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWRCaXRzOwotdXNpbmcgV1RGOjptYWtlQ29uc3RFeHBy
UG9pc29uOwogdXNpbmcgV1RGOjptYWtlUG9pc29uOwpJbmRleDogU291cmNlL1dURi93dGYvUG9p
c29uZWRVbmlxdWVQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVu
aXF1ZVB0ci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVu
aXF1ZVB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAgQEAKIAogbmFtZXNwYWNl
IFdURiB7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5h
YmxlID0gdm9pZD4KLWNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyIDogcHVibGljIENvbnN0RXhwclBv
aXNvbmVkPGtleSwgVCo+IHsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0
eXBlbmFtZSBFbmFibGUgPSB2b2lkPgorY2xhc3MgUG9pc29uZWRVbmlxdWVQdHIgOiBwdWJsaWMg
UG9pc29uZWQ8a2V5LCBUKj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVz
aW5nIEJhc2UgPSBDb25zdEV4cHJQb2lzb25lZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0g
UG9pc29uZWQ8a2V5LCBUKj47CiBwdWJsaWM6CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9IGRl
ZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgpIHsg
fQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZSh1bmlxdWUucmVsZWFz
ZSgpKQogICAgIHsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5MiwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+
PgorICAgIHRlbXBsYXRlPHVpbnRwdHJfdCYga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+PgogICAgIFBvaXNv
bmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyPGtleTIsIFU+JiYgcHRyKQogICAgICAgICA6
IEJhc2UocHRyLnVucG9pc29uZWQoKSkKICAgICB7CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtl
eTIsIHR5cGVuYW1lIFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vf
b2Y8VCwgVT46OnZhbHVlPj4KKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleTIsIHR5cGVuYW1l
IFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8VCwgVT46OnZh
bHVlPj4KICAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KFBvaXNvbmVkVW5pcXVlUHRy
PGtleTIsIFU+JiYgcHRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRoaXMgPT0gc3RhdGljX2Nh
c3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIudW5wb2lzb25lZCgp
KTsKQEAgLTEyMiwxOSArMTIyLDE5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyV2l0aG91
dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90LCB0
eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0
ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lz
b25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVCwg
dHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgordGVtcGxhdGU8
dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cywgdHlwZW5h
bWUgRW5hYmxlID0gdm9pZD4KIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVD4gbWFrZVBvaXNvbmVk
VW5pcXVlKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKIHsKICAgICByZXR1cm4gUG9pc29uZWRV
bmlxdWVQdHI8a2V5LCBUPjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci1jbGFzcyBQ
b2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgQ29uc3RFeHByUG9pc29uZWQ8a2V5
LCBUKj4gewordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+CitjbGFzcyBQb2lz
b25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgUG9pc29uZWQ8a2V5LCBUKj4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVzaW5nIEJhc2UgPSBDb25zdEV4cHJQb2lz
b25lZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0gUG9pc29uZWQ8a2V5LCBUKj47CiBwdWJs
aWM6CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlx
dWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgpIHsgfQpAQCAtMTQyLDcgKzE0Miw3IEBAIHB1
YmxpYzoKICAgICBQb2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1ZVB0ciYmIHB0cikgOiBC
YXNlKFdURk1vdmUocHRyKSkgeyBwdHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOyB9CiAgICAgUG9p
c29uZWRVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFRbXT4mJiB1bmlxdWUpIDogUG9pc29uZWRV
bmlxdWVQdHIodW5pcXVlLnJlbGVhc2UoKSkgeyB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBr
ZXkyPgorICAgIHRlbXBsYXRlPHVpbnRwdHJfdCYga2V5Mj4KICAgICBQb2lzb25lZFVuaXF1ZVB0
cihQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQogICAgICAgICA6IEJhc2UocHRy
LnVucG9pc29uZWQoKSkKICAgICB7CkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KKyAg
ICB0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleTI+CiAgICAgUG9pc29uZWRVbmlxdWVQdHImIG9wZXJh
dG9yPShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHRoaXMgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29u
ZWQoKSAhPSBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTIxMSwxMCArMjExLDEwIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAot
ICAgIHRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQ
b2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlw
ZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVp
bnQzMl90IGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgordGVtcGxhdGU8
dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIFBvaXNv
bmVkVW5pcXVlUHRyPGtleSwgVFtdPiBtYWtlUG9pc29uZWRVbmlxdWUoc2l6ZV90IGNvdW50LCBB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiB7CiAgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRy
PGtleSwgVFtdPjo6Y3JlYXRlKGNvdW50LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL1JlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDEwICsyNTYsMTAgQEAgaW5saW5lIGJvb2wgaXMoY29u
c3QgUmVmPEFyZ1R5cGUsIFB0clRyYQogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJj
ZS5nZXQoKSk7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0
IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5
cGVuYW1lIFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludDMyX3Qg
a2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWRSZWYgPSBSZWY8VCwgQ29uc3RFeHByUG9p
c29uZWRQdHJUcmFpdHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5h
bWUgVD4KK3VzaW5nIFBvaXNvbmVkUmVmID0gUmVmPFQsIFBvaXNvbmVkUHRyVHJhaXRzPGtleSwg
VD4+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291
bnRlZEFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5
LmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVu
YW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9kYXRhIHsgbnVsbHB0ciB9OwogfTsKIAotdGVt
cGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQ
dHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBv
aXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11
c2luZyBQb2lzb25lZFJlZkNvdW50ZWRBcnJheSA9IFJlZkNvdW50ZWRBcnJheTxULCBDb25zdEV4
cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRSZWZDb3VudGVkQXJyYXkgPSBSZWZDb3VudGVkQXJy
YXk8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgog
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvUmVmUHRy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NiwxMCArMjc2LDEwIEBAIGlubGluZSBib29sIGlzKGNv
bnN0IFJlZlB0cjxBcmdUeXBlLCBQdHIKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3Vy
Y2UuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVj
dCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90
IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkUmVmUHRyID0gUmVmUHRyPFQsIENvbnN0
RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwordGVtcGxhdGU8dWludHB0cl90JiBrZXks
IHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJlZlB0ciA9IFJlZlB0cjxULCBQb2lzb25lZFB0
clRyYWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dU
RkFzc2VydGlvbnMuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZB
c3NlcnRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMzkgKzM1LDkgQEAgbmFtZXNwYWNl
IFdURiB7CiAKIG5hbWVzcGFjZSB7CiBzdHJ1Y3QgRHVtbXlTdHJ1Y3QgeyB9OwotY29uc3QgdWlu
dDMyX3QgZHVtbXlQb2lzb24gPSAweGZmZmY7Cit1aW50cHRyX3QgZHVtbXlQb2lzb24gPSAwOwog
fQogCi0jaWYgRU5BQkxFKFBPSVNPTikKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9p
c29uKDEpID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIu
Iik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDApID4+IDQ4KSwgInBv
aXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0
KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3Vs
ZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQ
b2lzb24oMTAwMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBv
aW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+
PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3Rh
dGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMHhmZmZmZmZmZikgPj4gNDgpLCAicG9p
c29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKLQotc3RhdGljX2Fzc2Vy
dCgobWFrZUNvbnN0RXhwclBvaXNvbigxKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVk
IGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgo
bWFrZUNvbnN0RXhwclBvaXNvbigxMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQg
Yml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQg
Yml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVk
IGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgo
bWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNv
bmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2Vy
dCgobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9m
IHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotCi1zdGF0
aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHg0KSwgImJpdCAyIHNob3VsZCBh
bHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAp
ICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgo
bWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJl
IHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApICYgMHg0
KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNv
bnN0RXhwclBvaXNvbigxMDAwMDAwKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNl
dC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMHhmZmZmZmZmZikgJiAw
eDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci0KLXN0YXRpY19hc3NlcnQoISht
YWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQg
Yml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2Vy
dCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxp
Z25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRp
Y19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApICYgMHgzKSwgImVuc3VyZSBib3R0
b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIp
Owotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApICYgMHgzKSwgImVu
c3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxh
ZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkg
JiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9y
IHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNv
bigweGZmZmZmZmZmKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJl
IGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLSNlbmRpZiAvLyBFTkFCTEUoUE9J
U09OKQotCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihCYWc8RHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yo
dm9pZCopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZEJhZzxkdW1teVBvaXNv
biwgRHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9pZCopLCAiIik7CiAKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNiBAQCBzZXQo
VGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NoZWNr
ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
VEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
VEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RlcXVl
LmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC03NjUsNyArNzY1LDYgQEAKIAkJRkUwNUZBRUMxRkRCNTEwQTAw
MDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVCMUZEQjUxMDIwMDA5MzIzMCAvKiBQb2lzb25lZFJlZi5j
cHAgKi87IH07CiAJCUZFMDVGQUVEMUZEQjUxMEUwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFF
QTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwICovOyB9OwogCQlGRTA1RkFF
RjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNv
bmVkLmNwcCAqLzsgfTsKLQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBv
aXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi87IH07
CiAJCUZFMDVGQjA2MUZFODRGQjcwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkIwNTFGRTg0
RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwICovOyB9OwogCQlGRUM4RjRFNzFG
RTlDOTA1MDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLzsgfTsKIAkJRkVDOEY0RUIxRkU5RjVBRjAwNTZG
RDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzhG
NEVBMUZFOUY1QTcwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURl
c3RydWN0aWJsZUFycmF5cy5jcHAgKi87IH07CkBAIC0xODgxLDcgKzE4ODAsNiBAQAogCQlGRTA1
RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRSZWZQdHIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTA1RkFFQjFGREI1MTAyMDAwOTMyMzAgLyogUG9pc29uZWRSZWYu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRSZWYuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAg
LyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9p
c29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTA1RkFGMDFGRTA4Q0NE
MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTA1RkIwNTFGRTg0RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQ
dHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5
RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUM4RjRFNjFG
RTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29u
ZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjY1NCw3ICsyNjUyLDYgQEAKIAkJCQlBN0E5NjZEQTE0MEVD
Q0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkw
RjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovLAog
CQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBDb25kaXRpb24uY3BwICovLAotCQkJCUZF
MDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJ
NTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJ
MjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJB
MUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBAIC0zMjIxLDcgKzMyMTgsNiBA
QAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJh
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUMxRkNFMTc5NjAwNEI1MzIzIC8q
IENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUMzMUQw
QTU5MEMwMEZFQkNGMyAvKiBDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZB
RjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERUE2MUQwQTU5MEMwMEZFQkNGMyAvKiBDb3VudGVycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBDMDBGRUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREVBRDFEMEE1OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQ
b2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q29uc3RFeHByUG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwzODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCi0j
aW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQot
c3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWlu
dDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLQotLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEg
YmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNzLiBGb3IgdGhpcyBwdXJwb3NlLAotLy8gd2Ug
cmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZlZFJlZkxvZ2dlciBjbGFzc2VzLgotCi1URVNU
KFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMpCi17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7Ci0KLSAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0
eTsKLSAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKLQotICAgIHsK
LSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCAmKnB0cik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsK
LQotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgICAgIHVpbnRwdHJfdCBwdHJCaXRzOwotICAgICAg
ICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PigmYSkpOwotI2lm
IEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJUX1RSVUUoKENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7Ci0jZW5k
aWYKLSNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyID0gJmE7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihwMSk7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQot
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0g
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0g
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92
ZShwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBv
aXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0K
LSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAx
ID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAy
KFdURk1vdmUocDEpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIu
Yml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDIgPSBwMTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDMgPSBwMTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAz
LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0ci5jbGVhcigpOwot
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotfQot
Ci1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQXNzaWdubWVudCkKLXsKLSAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKLSAgICBSZWZMb2dnZXIgYigiYiIpOwotICAgIERlcml2ZWRSZWZM
b2dnZXIgYygiYyIpOwotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAx
ID0gcDI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAz
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkp
OwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gJmI7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYiwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIgPSBudWxscHRyOwotICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAg
ewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAxID0gV1RGTW92ZShwMik7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZi
LCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMg
PSBXVEZNb3ZlKHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgcDEgPSBwMjsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNT
RVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgcHRyID0gJmM7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRS
ZWZMb2dnZXIqPiBwMigmYyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9
IFdURk1vdmUocDIpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51
bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IFdURk1vdmUocDQpOwotICAgICAgICBBU1NFUlRf
RVEoJmMsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0g
ICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBw
dHIgPSBwdHI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAg
fQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotI2lm
IENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKLSNlbmRpZgotICAgICAgICBwdHIg
PSBXVEZNb3ZlKHB0cik7Ci0jaWYgQ09NUElMRVIoQ0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCi0jZW5kaWYKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgp
KTsKLSAgICB9Ci19Ci0KLVRFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBTd2FwKQotewotICAg
IFJlZkxvZ2dlciBhKCJhIik7Ci0gICAgUmVmTG9nZ2VyIGIoImIiKTsKLQotICAgIHsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBw
Mi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMS5zd2FwKHAyKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBw
NCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMy5zd2FwKHA0KTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9
IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkp
OwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIs
IHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHN3YXAocDEsIHAyKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIq
PiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBzd2FwKHAzLCBwNCk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSAhPSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7Ci0gICAg
ICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwot
ICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyKTsKLSAgICAgICAgc3dhcChwMSwg
cDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihwMikpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBSZWZMb2dn
ZXIqIHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAyKTsKLSAgICAgICAgcDEuc3dhcChwMik7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMik7
Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHAyKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCi17Ci0gICAgcmV0
dXJuIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIpOwotfQot
Ci1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgUmV0dXJuVmFsdWUpCi17Ci0gICAgRGVyaXZl
ZFJlZkxvZ2dlciBhKCJhIik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQ
dHJGb28oYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOwotICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0
ci0+bmFtZSk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAJKHJl
dmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTkgKzMxLDMxIEBACiAKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7
Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLXN0YXRpYyBjb25zdCB1
aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkQg
PSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRSA9IDB4ZWVlZTsKLXN0YXRp
YyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZmOworc3RhdGljIHVpbnRwdHJfdCBwb2lz
b25BOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25COworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25D
Oworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25EOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25FOwor
c3RhdGljIHVpbnRwdHJfdCBwb2lzb25GOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29u
cygpCit7CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25CID0gbWFrZVBv
aXNvbigpOworICAgIHBvaXNvbkMgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uRCA9IG1ha2VQ
b2lzb24oKTsKKyAgICBwb2lzb25FID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkYgPSBtYWtl
UG9pc29uKCk7Cit9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKIHsKKyAgICBpbml0
aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkEsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAg
ICBQb2lzb25lZFJlZjxwb2lzb25BLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnJlZi0+bmFt
ZSk7CiAKQEAgLTUxLDE2ICs2MywxNiBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQmFzaWMpCiAg
ICAgICAgIHVpbnRwdHJfdCBwdHJCaXRzOwogICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywg
JnJlZiwgc2l6ZW9mKHB0ckJpdHMpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PigmYSkpOwotICAgICAgICBBU1NFUlRfRVEocHRyQml0cywg
KENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChQb2lzb25lZDxwb2lzb25BLCBSZWZMb2dnZXIqPigm
YSkuYml0cygpKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRf
VFJVRSgoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQo
cHRyQml0cykpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkPHBvaXNvbkEsIFJlZkxv
Z2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUo
UE9JU09OKQogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIs
IFJlZkxvZ2dlcj4gcmVmKGFkb3B0UmVmKGEpKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29u
QiwgUmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJl
Zi5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5uYW1lKTsKICAgICB9
CkBAIC02OSwxMiArODEsMTQgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEJhc2ljKQogCiBURVNU
KFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygp
OworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsK
ICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWY8UG9pc29uQywgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNv
bkMsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7
CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGI7CkBAIC04NCw3ICs5OCw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+IHJl
ZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRCwgUmVmTG9nZ2VyPiByZWYoYSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsK
ICAgICAgICAgcmVmID0gYzsKQEAgLTk0LDcgKzEwOCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
LCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEp
IHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZjxQb2lzb25FLCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRS
ZWY8cG9pc29uRSwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVm
LnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gYWRvcHRSZWYo
Yik7CkBAIC0xMDQsNyArMTE4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQp
CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwg
UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxvZ2dl
cj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGFkb3B0UmVmKGMpOwpAQCAtMTE0LDI1ICsxMjgs
MjcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IH0KIAotc3RhdGljIFBvaXNvbmVkUmVmPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcGFzc1dpdGhSZWYo
UG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPiYmIHJlZmVyZW5jZSkKK3N0YXRpYyBQb2lz
b25lZFJlZjxwb2lzb25CLCBSZWZMb2dnZXI+IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPHBvaXNv
bkMsIFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCiB7CiAgICAgcmV0dXJuIFdURk1vdmUocmVmZXJl
bmNlKTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIFJldHVyblZhbHVlKQogeworICAgIGlu
aXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBS
ZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25CLCBSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQ
b2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+KGEpKSk7CisgICAgICAgIFBvaXNvbmVkUmVm
PHBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPHBvaXNvbkMs
IFJlZkxvZ2dlcj4oYSkpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAg
IH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4g
cmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAi
OwogICAgICAgICByZWYgPSBwYXNzV2l0aFJlZihiKTsKQEAgLTE0MiwyMiArMTU4LDIyIEBAIFRF
U1QoV1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5WYWx1ZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIo
cGFzc1dpdGhSZWYoYSkpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dn
ZXI+IHB0cihwYXNzV2l0aFJlZihhKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgp
KTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBE
ZXJpdmVkUmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25B
LCBSZWZMb2dnZXI+IHB0cjIoV1RGTW92ZShwdHIpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
cG9pc29uRiwgRGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8cG9pc29uQSwgUmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CiAgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0
KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIERl
cml2ZWRSZWZMb2dnZXI+IGRlcml2ZWRSZWZlcmVuY2UoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVm
PFBvaXNvbkMsIFJlZkxvZ2dlcj4gYmFzZVJlZmVyZW5jZShwYXNzV2l0aFJlZihkZXJpdmVkUmVm
ZXJlbmNlLmNvcHlSZWYoKSkpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25CLCBEZXJpdmVk
UmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lz
b25DLCBSZWZMb2dnZXI+IGJhc2VSZWZlcmVuY2UocGFzc1dpdGhSZWYoZGVyaXZlZFJlZmVyZW5j
ZS5jb3B5UmVmKCkpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBkZXJpdmVkUmVmZXJlbmNlLnB0
cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBiYXNlUmVmZXJlbmNlLnB0cigpKTsKICAgICB9
CkBAIC0xNjYsMTIgKzE4MiwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgUmV0dXJuVmFsdWUp
CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25z
KCk7CisKICAgICBSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoYSk7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoYik7CisgICAgICAgIFBvaXNv
bmVkUmVmPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBv
aXNvbkUsIFJlZkxvZ2dlcj4gcDIoYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDEucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLnB0cigp
KTsKQEAgLTE4Myw4ICsyMDEsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwg
UmVmTG9nZ2VyPiBwMShhKTsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQSwgUmVmTG9nZ2Vy
PiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsK
KyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uQSwgUmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAg
bG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOwpAQCAtMTk2LDcgKzIxNCw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVy
ZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAg
ICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25l
ZFJlZjxwb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOwogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBw
MihiKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5w
dHIoKSk7CkBAIC0yMDksNyArMjI3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxv
Z2dlcj4gcDEoYSk7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2co
KSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKQEAgLTIyMyw3ICsy
NDEsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKIH0KIAogc3RydWN0IFBvaXNvbmVk
UmVmQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgewotICAgIHVzaW5nIFJlZiA9IFBvaXNv
bmVkUmVmPFBvaXNvbkIsIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+OworICAgIHVzaW5n
IFJlZiA9IFBvaXNvbmVkUmVmPHBvaXNvbkIsIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+
OwogCiAgICAgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsK
ICAgICB2b2lkIHJlZigpOwpAQCAtMjYxLDYgKzI3OSw4IEBAIERlcml2ZWRQb2lzb25lZFJlZkNo
ZWNraW5nUmVmTG9nZ2VyOjpEZXIKIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbkJlZm9y
ZURlcmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUG9pc29u
ZWRSZWZDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZDaGVja2luZ1Jl
ZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIg
YygiYyIpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQ
dHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNv
bmVkUmVmUHRyLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMiArMzMs
MzQgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgY29uc3QgdWludDMy
X3QgUG9pc29uQSA9IDB4YWFhYTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhi
YmJiOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkMgPSAweGNjY2M7Ci1zdGF0aWMgY29u
c3QgdWludDMyX3QgUG9pc29uRCA9IDB4ZGRkZDsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lz
b25FID0gMHhlZWVlOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkYgPSAweGZmZmY7Citz
dGF0aWMgdWludHB0cl90IHBvaXNvbkE7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkI7CitzdGF0
aWMgdWludHB0cl90IHBvaXNvbkM7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkQ7CitzdGF0aWMg
dWludHB0cl90IHBvaXNvbkU7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkY7CisKK3N0YXRpYyB2
b2lkIGluaXRpYWxpemVQb2lzb25zKCkKK3sKKyAgICBwb2lzb25BID0gbWFrZVBvaXNvbigpOwor
ICAgIHBvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uQyA9IG1ha2VQb2lzb24oKTsK
KyAgICBwb2lzb25EID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkUgPSBtYWtlUG9pc29uKCk7
CisgICAgcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKK30KIAogVEVTVChXVEZfUG9pc29uZWRSZWZQ
dHIsIEJhc2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKIAotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkEsIFJlZkxvZ2dlcj4g
ZW1wdHk7CisgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQSwgUmVmTG9nZ2VyPiBlbXB0eTsKICAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwdHIuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOwpAQCAtNTcsNzAgKzY5LDcwIEBAIFRFU1QoV1RG
X1BvaXNvbmVkUmVmUHRyLCBCYXNpYykKICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAgICAg
ICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAg
ICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVm
TG9nZ2VyKj4oJmEpLmJpdHMoKSkpOworICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNv
bmVkPHBvaXNvbkIsIFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKICNpZiBFTkFCTEUoUE9JU09O
X0FTU0VSVFMpCi0gICAgICAgIEFTU0VSVF9UUlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25C
LCBSZWZMb2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICBBU1NFUlRfVFJV
RSgoUG9pc29uZWQ8cG9pc29uQiwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsK
ICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgfQogICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAg
ICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
cG9pc29uRSwgUmVmTG9nZ2VyPiBwMihwMSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9n
Z2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+
IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEg
PSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwMiA9IHAx
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAg
ICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBw
Mi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25G
LCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9p
c29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25G
LCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIs
IHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dl
cj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBw
MiA9IHAxOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAy
ID0gcDE7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEp
IGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAyID0g
V1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIHB0ciA9IG51bGxwdHI7CiAgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwpAQCAtMTMwLDEwICsxNDIsMTIgQEAgVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIEJhc2ljKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdu
UGFzc1JlZlRvUG9pc29uZWRSZWZQdHIpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwog
ICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIHsKICAgICAgICAgUmVmPFJlZkxvZ2dl
cj4gcGFzc1JlZihhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2Vy
PiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25C
LCBSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTQxLDEzICsxNTUsMTUgQEAgVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIEFzc2lnblBhc3NSZWZUbwogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0
ciwgQWRvcHQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOwogCi0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBl
bXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IGVtcHR5OwogICAg
IEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCAm
KnB0cik7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1NSw3
ICsxNzEsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiAgICAgRVhQRUNUX1NU
UkVRKCJkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVm
KCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBF
Q1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTE2MywxMyAr
MTc5LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBZG9wdCkKIAogVEVTVChXVEZfUG9p
c29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwog
ICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAg
RGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25CLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwg
UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxv
Z2dlcj4gcDIoJmIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAg
RVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0xODEs
NyArMTk5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgZGVy
ZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBw
dHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBwdHIgPSAmYjsKQEAg
LTE5MSw3ICsyMDksNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRCwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25E
LCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOwpAQCAt
MjAxLDcgKzIxOSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9n
Z2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAg
IHB0ciA9IG51bGxwdHI7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwpA
QCAtMjA5LDggKzIyNyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQog
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBw
MSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIoJmIp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTIyMiw4ICsyNDAsOCBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYo
YikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAg
ICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIu
Z2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMjM1LDcgKzI1Myw3IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHJlZihjKSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwg
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZM
b2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAg
ICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gJmM7CkBAIC0yNDUsNyArMjYzLDcgQEAg
VEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4g
cHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIo
JmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CiAgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZjKTsKQEAgLTI1NSw4ICsyNzMsOCBAQCBU
RVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBw
Mi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0yNjgsNyArMjg2LDcgQEAgVEVT
VChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRy
KCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEp
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8
ICI7CiAgICAgICAgIHB0ciA9IHB0cjsKQEAgLTI3OCw3ICsyOTYsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihh
KSBkZXJlZihhKSB8IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC0yOTYsMTIgKzMxNCwxNCBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQXNzaWdubWVudCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXAp
CiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7CiAg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uQiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMs
IFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZM
b2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2Vy
PiBwMigmYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwg
cDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKQEAgLTMxMyw4ICsz
MzMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2Vy
PiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIo
JmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKQEAgLTMyOCwxMSArMzQ4LDEzIEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmUHRyLCBTd2FwKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVs
ZWFzZU5vbk51bGwpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dl
ciBhKCJhIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxv
Z2dlcj4gcmVmUHRyID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxv
Z2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CiAg
ICAgfQogCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwpAQCAtMzQwLDM3ICszNjIsMzkgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIs
IFJlbGVhc2VOb25OdWxsKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZSkKIHsK
KyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZh
OwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92
ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAm
YTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1v
dmUocDEpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBF
WFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVk
UmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBFWFBF
Q1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgp
KTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBE
ZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25D
LCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBv
aXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VR
KG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAg
ICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9n
Z2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4g
cDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZh
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAy
LmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTM4Miw4ICs0MDYsOCBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBy
ZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZj
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywg
cDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMzk1LDEzICs0MTksMTUgQEAg
VEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CiB9CiAKLXN0YXRpYyBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IGYxKFJlZkxv
Z2dlciYgbG9nZ2VyKQorc3RhdGljIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4g
ZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkMsIFJlZkxvZ2dlcj4oJmxvZ2dlcik7CisgICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPHBvaXNv
bkMsIFJlZkxvZ2dlcj4oJmxvZ2dlcik7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBS
ZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CiAKICAgICB7CkBAIC00MzIsMjAgKzQ1OCwyMiBAQCBzdGF0aWMgQ29u
c3RSZWZDb3VudGVkJiByZXR1cm5SZWZDb3VudGVkCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRy
LCBDb25zdCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgLy8gVGhpcyB0ZXN0
IHBhc3NlcyBpZiBpdCBjb21waWxlcyB3aXRob3V0IGFuIGVycm9yLgogICAgIGF1dG8gYSA9IENv
bnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4g
YiA9IFdURk1vdmUoYSk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgY29uc3QgQ29uc3RS
ZWZDb3VudGVkPiBjID0gYi5wdHIoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBjb25z
dCBDb25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNv
dW50ZWQ+IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKLSAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25FLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3Vu
dGVkUmVmKCk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBm
ID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25C
LCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkMsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaChmKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lz
b25FLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVm
KCk7CisgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29u
c3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBjb25z
dCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOworICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIGNv
bnN0IENvbnN0UmVmQ291bnRlZD4gaChmKTsKICAgICBSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVk
PiBpKHJldHVyblJlZkNvdW50ZWRSZWYoKSk7CiB9CiAKIHN0cnVjdCBQb2lzb25lZFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKLSAgICB1c2luZyBSZWYgPSBQb2lzb25lZFJl
ZlB0cjxQb2lzb25ELCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPjsKKyAgICB1c2lu
ZyBSZWYgPSBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVm
TG9nZ2VyPjsKIAogICAgIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hh
ciogbmFtZSk7CiAgICAgdm9pZCByZWYoKTsKQEAgLTQ3OSw2ICs1MDcsOCBAQCB2b2lkIFBvaXNv
bmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6OmRlCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRy
LCBBc3NpZ25CZWZvcmVEZXJlZikKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAg
UG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlciBiKCJiIik7CiAKQEAgLTU0Myw2ICs1NzMsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZlB0ciwgQXNzaWduQmVmb3JlRGVyCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVm
UHRyLCBSZWxlYXNlTm9uTnVsbEJlZm9yZURlcmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25z
KCk7CisKICAgICBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKIAogICAg
IHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25l
ZFVuaXF1ZVB0ci5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCAr
MzEsMTQgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCi1jb25z
dCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4
YmJiYjsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQTsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29u
QjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbnMoKQoreworICAgIHBvaXNvbkEgPSBt
YWtlUG9pc29uKCk7CisgICAgcG9pc29uQiA9IG1ha2VQb2lzb24oKTsKK30KIAogc3RydWN0IExv
Z2dlciB7CiAgICAgTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUsIGludCYgZGVzdHJ1Y3RDb3VudCkK
QEAgLTYxLDEzICs2NywxNSBAQCBzdHJ1Y3QgT3RoZXIgewogCiBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ciwgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBlbXB0eTsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBlbXB0eTsKICAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwg
ZW1wdHkuYml0cygpKTsKICAgICB9CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IGVtcHR5KG51bGxwdHIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxwb2lzb25BLCBMb2dnZXI+IGVtcHR5KG51bGxwdHIpOwogICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5i
aXRzKCkpOwogICAgIH0KQEAgLTc2LDcgKzg0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHIsIEJhc2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dn
ZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7
CkBAIC04Nyw3ICs5NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAg
ICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RS
VUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj46OmlzUG9pc29uZWQocHRyQml0
cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBMb2dnZXI+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFC
TEUoUE9JU09OKQogICAgICAgICB9CkBAIC05Niw3ICsxMDQsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAg
ICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENv
dW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwdHIoYik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBM
b2dnZXI+IHB0cihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYiwgJipwdHIpOwpAQCAtMTA5LDcgKzExNyw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAg
ICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIg
PSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwdHIg
PSBhOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgfQpAQCAtMTE4LDcg
KzEyNiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50
IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJp
dmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IGI7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0ciA9IGI7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHB0
ci51bnBvaXNvbmVkKCkpOwogICAgICAgICB9CkBAIC0xMjksNyArMTM3LDcgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAw
OwogICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+OjpjcmVhdGUoYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPjo6Y3JlYXRlKGFOYW1lLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xMzksNyArMTQ3LDcgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQg
PSAwOwogICAgICAgICBjb25zdCBjaGFyKiBiTmFtZSA9ICJiIjsKICAgICAgICAgewotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPjo6Y3JlYXRlKGJOYW1lLCBiRGVzdHJ1Y3RD
b3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0
ciA9IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5h
bWUsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1MSw3
ICsxNTksNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwog
ICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+
IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxwb2lzb25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xNjEsNyArMTY5LDcgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0
Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBiTmFtZSA9ICJiIjsKICAgICAgICAgewot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtl
UG9pc29uZWRVbmlxdWU8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4oYk5hbWUsIGJEZXN0cnVjdENv
dW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRy
ID0gbWFrZVBvaXNvbmVkVW5pcXVlPHBvaXNvbkEsIERlcml2ZWRMb2dnZXI+KGJOYW1lLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShiTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xNzEsNyArMTc5LDcg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgdW5pcXVl
RGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIHVuaXF1ZU5hbWUgPSAidW5p
cXVlIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
RGVyaXZlZExvZ2dlcj4gcHRyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlx
dWVOYW1lLCB1bmlxdWVEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIERlcml2ZWRMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZl
ZExvZ2dlcj4odW5pcXVlTmFtZSwgdW5pcXVlRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgdW5pcXVlRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKHVu
aXF1ZU5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTgxLDcgKzE4OSw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IHVuaXF1ZURlcml2ZWREZXN0cnVjdENv
dW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogdW5pcXVlRGVyaXZlZE5hbWUgPSAidW5pcXVl
IGRlcml2ZWQiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4odW5pcXVl
RGVyaXZlZE5hbWUsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gc3RkOjptYWtlX3VuaXF1ZTxE
ZXJpdmVkTG9nZ2VyPih1bmlxdWVEZXJpdmVkTmFtZSwgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEodW5pcXVlRGVyaXZlZE5hbWUsICZwdHItPm5hbWUpOwpA
QCAtMTk1LDE1ICsyMDMsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQog
ICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0g
YTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBX
VEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dl
cj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2Vy
PiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50
LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxwb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMo
KSk7CkBAIC0yMTksMTUgKzIyNywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFz
aWMpCiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4g
cDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBw
MihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBM
b2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExv
Z2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQiwgTG9nZ2VyPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkIsIExvZ2dlcj4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRz
KCkpOwpAQCAtMjQzLDE1ICsyNTEsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJh
c2ljKQogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExv
Z2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5i
aXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUo
cDMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMyA9
IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXI+IHA0ID0g
V1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAgLTI2NywxNSArMjc1LDE1IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBE
ZXJpdmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBEZXJpdmVkTG9nZ2Vy
KiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3Zl
KHAxKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAx
ID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIo
V1RGTW92ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5w
b2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dn
ZXI+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QiwgTG9nZ2VyPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3Ry
dWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAgLTI4OSw3ICsyOTcsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1
Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBwdHIuY2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwdHIudW5wb2lzb25lZCgpKTsKQEAgLTMwMiwxMyArMzEwLDE1IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyLCBCYXNpYykKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2ln
bm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgaW50
IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAg
ICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0cihhKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0
ci51bnBvaXNvbmVkKCkpOwpAQCAtMzI1LDcgKzMzNSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAg
ICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihh
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ciA9IG51bGxw
dHI7CkBAIC0zNDUsOCArMzU1LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2ln
bm1lbnQpCiAgICAgICAgIExvZ2dlciogYyA9IG5ldyBMb2dnZXIoImMiLCBjRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIExvZ2dlciogZCA9IG5ldyBMb2dnZXIoImQiLCBkRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDEoYSk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHAyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBw
MShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIo
Yik7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShh
LCBwMS51bnBvaXNvbmVkKCkpOwpAQCAtMzU3LDggKzM2Nyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9p
c29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgp
KTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhj
KTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQoZCk7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAzKGMpOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyPiBwNChkKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSgwLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMCwgZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVu
cG9pc29uZWQoKSk7CkBAIC0zODEsNyArMzkxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGEgPSBuZXcgRGVyaXZlZExv
Z2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5l
dyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29u
ZWQoKSk7CkBAIC00MDQsOCArNDE0LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFz
c2lnbm1lbnQpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGMgPSBuZXcgRGVyaXZlZExvZ2dlcigi
YyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExvZ2dlciogZCA9IG5ldyBEZXJp
dmVkTG9nZ2VyKCJkIiwgZERlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxKGEpOwotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcDIoYik7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxKGEpOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcDIoYik7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNv
bmVkKCkpOwpAQCAtNDE2LDggKzQyNiw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBB
c3NpZ25tZW50KQogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMu
dW5wb2lzb25lZCgpKTsKQEAgLTQzOCw3ICs0NDgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0cihhKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIgPSBhOwpAQCAt
NDUyLDcgKzQ2Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQog
ICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcg
TG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5w
b2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKQEAgLTQ3MywxNCArNDgzLDE2IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogCiBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ciwgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewog
ICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBpbnQgYkRlc3RydWN0Q291
bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQp
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAx
ID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDI7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVu
cG9pc29uZWQoKSk7CkBAIC00OTAsOCArNTAyLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHIsIFN3YXApCiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQ7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkIsIExvZ2dlcj4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC01MTEsOCArNTIz
LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCiAgICAgICAgIExvZ2dlciog
YSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9
IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMjsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShh
LCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTUyMiw4ICs1
MzQsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAy
LnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwg
TG9nZ2VyPiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dl
cj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2Vy
PiBwNDsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDQudW5wb2lzb25lZCgpKTsKQEAgLTUzOCwxMyArNTUwLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBTd2FwKQogICAgIH0KIH0KIAotc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcG9pc29uZWRQdHJGb28oTG9nZ2VyKiBsb2dnZXIpCitzdGF0aWMgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGxv
Z2dlcikKIHsKLSAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPihs
b2dnZXIpOworICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+KGxv
Z2dlcik7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBSZXR1cm5WYWx1ZSkKIHsK
KyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0
Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0
Q291bnQpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlx
dWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlE
ZXN0cnVjdGlibGVBcnJheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxNCBAQCBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IHVpbnQzMl90
IFBvaXNvbkEgPSAweGFhYWE7Ci1jb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworc3Rh
dGljIHVpbnRwdHJfdCBwb2lzb25BOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25COworCitzdGF0
aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24o
KTsKKyAgICBwb2lzb25CID0gbWFrZVBvaXNvbigpOworfQogCiBzdHJ1Y3QgTG9nZ2VyIHsKICAg
ICBMb2dnZXIoKSB7IH0KQEAgLTYyLDggKzY4LDEwIEBAIGNvbnN0IGludCBhcnJheVNpemUgPSA1
OwogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJs
ZUFycmF5cywgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IGVtcHR5OworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gZW1wdHk7CiAgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEo
MHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQpAQCAtNzIsNyArODAsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9
IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEi
LCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CkBAIC04NCw3ICs5Miw3IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgICAgIHN0
ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICAgICAg
QVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihhKSk7CiAjaWYg
RU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltd
Pjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNP
TikKICAgICAgICAgfQpAQCAtOTUsNyArMTAzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAg
ICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXJbXT4gcHRyID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkEsIExvZ2dlcltdPiBwdHIgPSBhOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTA4LDcg
KzExNiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAg
ICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAi
YSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcltdPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT46OmNyZWF0
ZShhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgTG9nZ2VyW10+OjpjcmVhdGUoYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBm
b3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTEyMSw3ICsxMjksNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVz
dHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRy
ID0gbWFrZVBvaXNvbmVkVW5pcXVlPFBvaXNvbkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1l
LCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBMb2dnZXJbXT4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPHBvaXNvbkEsIExvZ2dlcltdPihh
cnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBw
dHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5
U2l6ZTsgKytpKQpAQCAtMTM0LDcgKzE0Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
Rm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAg
Y29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9p
c29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9p
c29uZWRVbmlxdWU8cG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xNDksMTUgKzE1
NywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAg
IExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwg
ImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
USgwdSwgcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVk
KCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+
IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwg
YkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9p
c29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0xNzMs
MTUgKzE4MSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5
U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAx
KSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMHUsIHAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lz
b25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
W10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dl
cltdPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lz
b25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTE5
NywxNSArMjA1LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwK
ICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJy
YXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1v
dmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25l
ZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+
IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltd
PiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJE
ZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yMjEsMTUgKzIy
OSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAg
IExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwg
ImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNT
RVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEu
Yml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KFdURk1v
dmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltd
PiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXJb
XT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50
LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yNDMsNyArMjUxLDcgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0
Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ci5jbGVhcigpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMjU2LDEzICsyNjQs
MTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogCiBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQXNz
aWdubWVudCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBp
bnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwog
ICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJh
eVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkp
OwpAQCAtMjc5LDcgKzI4OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBh
ID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+
IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltd
PiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRy
ID0gbnVsbHB0cjsKQEAgLTI5OSw4ICszMDksOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYyA9IG1ha2VBcnJheTxMb2dnZXI+KGFy
cmF5U2l6ZSwgImMiLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogZCA9IG1ha2VB
cnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAx
LnVucG9pc29uZWQoKSk7CkBAIC0zMTEsOCArMzIxLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsK
IAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzKGMp
OwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KGQp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAzKGMp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0KGQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywg
cDMudW5wb2lzb25lZCgpKTsKQEAgLTMzMyw3ICszNDMsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAg
ICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxw
b2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIHB0ciA9IGE7CkBAIC0zNDcsNyArMzU3LDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAw
OwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8cG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQo
KSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCkBAIC0zNjgsMTQgKzM3OCwxNiBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBTd2FwKQogeworICAgIGluaXRp
YWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7
CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1h
a2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXJbXT4gcDI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBM
b2dnZXJbXT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
TG9nZ2VyW10+IHAyOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtMzg1LDggKzM5Nyw4IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
MS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQo
KSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
MyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4g
cDQ7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDMg
PSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAg
ICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51
bnBvaXNvbmVkKCkpOwpAQCAtNDA2LDggKzQxOCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4o
YXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFr
ZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0g
YTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDI7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9p
c29uZWQoKSk7CkBAIC00MTcsOCArNDI5LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJG
b3JOb25Ucml2aWFsbAogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNDsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXJbXT4gcDQ7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
NC5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBA
IC00MzMsMTMgKzQ0NSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZp
YWxsCiAgICAgfQogfQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
W10+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogYXJyYXkpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQ
dHI8cG9pc29uQSwgTG9nZ2VyW10+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogYXJyYXkpCiB7Ci0g
ICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPihhcnJheSk7Cisg
ICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPihhcnJheSk7CiB9
CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxl
QXJyYXlzLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAg
ewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBt
YWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFs
bHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJy
YXlzLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwxNCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1jb25z
dCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25BOwor
c3RhdGljIHVpbnRwdHJfdCBwb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29u
cygpCit7CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25CID0gbWFrZVBv
aXNvbigpOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgZmlsbEFycmF5
KFQmIGFycmF5LCBpbnQgc2l6ZSkKQEAgLTQ4LDEzICs1NCwxNSBAQCBzdGF0aWMgY29uc3QgaW50
IGFycmF5U2l6ZSA9IDU7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5
RGVzdHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOwor
CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gZW1wdHk7
CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBlbXB0eTsKICAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VS
VF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CiAgICAgewotICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gZW1wdHkobnVsbHB0cik7CisgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBlbXB0eShudWxscHRyKTsKICAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwg
ZW1wdHkuYml0cygpKTsKICAgICB9CkBAIC02Myw3ICs3MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlT
aXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsICYqcHRyKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsg
KytpKQpAQCAtNzQsNyArODIsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZp
YWxseURlCiAgICAgICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0
ckJpdHMpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4oYSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgICAg
IEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT46OmlzUG9pc29u
ZWQocHRyQml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0
cjxwb2lzb25BLCBpbnRbXT46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlm
IC8vIEVOQUJMRShQT0lTT04pCiAgICAgICAgIH0KQEAgLTg0LDcgKzkyLDcgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gYTsKKyAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0ciA9IGE7CiAgICAgICAgIEFTU0VSVF9F
UShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKICAg
ICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC05Miw3ICsxMDAs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+OjpjcmVhdGUoYXJyYXlTaXplKTsKKyAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0ciA9IFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIGludFtdPjo6Y3JlYXRlKGFycmF5U2l6ZSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGZpbGxBcnJheShwdHIs
IGFycmF5U2l6ZSk7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytp
KQpAQCAtMTA1LDE2ICsxMTMsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2
aWFsbHlEZQogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBm
aWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBp
bnRbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50
W10+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBv
aXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CiAgICAgICAgIEFT
U0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkg
PCBhcnJheVNpemU7ICsraSkKICAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwMltpXSk7CiAK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0ID0gV1RGTW92ZShwMyk7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIGludFtdPiBwNCA9IFdURk1vdmUocDMpOwogICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X0VRKDB1LCBwMy5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgp
KTsKQEAgLTEyOCwxNiArMTM2LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJp
dmlhbGx5RGUKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAg
ZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
aW50W10+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50
W10+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9p
c29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAgICAgQVNT
RVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8
IGFycmF5U2l6ZTsgKytpKQogICAgICAgICAgICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ldKTsKIAot
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQoV1RGTW92ZShwMykpOworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBpbnRbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VR
KDB1LCBwMy5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsK
QEAgLTE0OSw3ICsxNTcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxs
eURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxB
cnJheShhLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IGludFtdPiBwdHIoYSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtd
PiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgcHRyLmNsZWFyKCk7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsK
QEAgLTE1OSwxMyArMTY3LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGUKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAg
IHsKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgYXV0byog
YiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7
CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PHBvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lz
b25lZCgpKTsKICAgICAgICAgcHRyID0gYjsKICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBv
aXNvbmVkKCkpOwpAQCAtMTc1LDcgKzE4NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
Rm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAg
ICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVk
KCkpOwogICAgICAgICBwdHIgPSBudWxscHRyOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwg
cHRyLnVucG9pc29uZWQoKSk7CkBAIC0xOTEsMTYgKzIwMSwxNiBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGZpbGxBcnJheShjLCBhcnJheVNpemUp
OwogICAgICAgICBmaWxsQXJyYXkoZCwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIGludFtdPiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QSwgaW50W10+IHAxKGEpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRb
XT4gcDIoYik7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBBU1NFUlRfRVEoYiwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcDEgPSBXVEZNb3ZlKHAy
KTsKICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPiBwMyhjKTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQiwgaW50W10+IHA0KGQpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBp
bnRbXT4gcDMoYyk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIGludFtdPiBw
NChkKTsKICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFT
U0VSVF9FUShkLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBwMyA9IFdURk1vdmUocDQpOwpA
QCAtMjEyLDcgKzIyMiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5
RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFy
cmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
aW50W10+IHB0cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+
IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBwdHIgPSBhOwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0y
MjIsNyArMjMyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQog
ICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXko
YSwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRb
XT4gcHRyKGEpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcHRy
KGEpOwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAjaWYgQ09NUElM
RVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApAQCAtMjM5LDE0ICsyNDks
MTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogCiBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgU3dhcCkK
IHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBhdXRvKiBhID0g
bmV3IGludFthcnJheVNpemVdOwogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVd
OwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIs
IGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+
IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9F
UShwMS51bnBvaXNvbmVkKCksIGEpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsK
ICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC0yNTUsOCArMjY3LDgg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NF
UlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29u
ZWQoKSwgYSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAz
ID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBpbnRbXT4gcDQ7CiAgICAgICAgIEFTU0VSVF9FUShw
My51bnBvaXNvbmVkKCksIGIpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC0yNzIsOCArMjg0LDggQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBmaWxsQXJy
YXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxwb2lzb25BLCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCks
IGEpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RS
VUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC0yODIsOCArMjk0LDggQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxw
b2lzb25CLCBpbnRbXT4gcDQ7CiAgICAgICAgIEFTU0VSVF9FUShwMy51bnBvaXNvbmVkKCksIGIp
OwogICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
IXA0LnVucG9pc29uZWQoKSk7CkBAIC0yOTQsMTMgKzMwNiwxNSBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQogfQogCi1zdGF0aWMgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgaW50W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQorc3RhdGljIFBv
aXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwb2lzb25lZFB0ckZvbyhpbnQqIHB0cikK
IHsKLSAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+KHB0cik7Cisg
ICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPihwdHIpOwogfQogCiBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywg
UmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAg
ICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFy
cmF5U2l6ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331130</attachid>
            <date>2018-01-11 16:02:24 -0800</date>
            <delta_ts>2018-01-11 16:58:34 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>125404</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksOCAr
Mzg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lz
b25lZE1hc21QdHIoMSk7IH0KLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1
ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigyKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1h
c21QdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwg
MSk7IH0KKyAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJu
IFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwgMik7IH0KIAogICAgIFBvaXNvbmVkTWFzbVB0
ciBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODk0LDggKzg5NCw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmhhc1RhaWxDYWxscygpOyB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBz
X3BvaXNvbiA9IG1ha2VDb25zdEV4cHJQb2lzb24oQ29kZUJsb2NrUG9pc29uKTsKLQogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOwogICAgIHZvaWQgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwpAQCAtOTc0LDcgKzk3Miw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fb3duZXJFeGVj
dXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293
bmVyRWRnZTsKLSAgICBDb25zdEV4cHJQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9w
b2lzb25lZFZNOworICAgIFBvaXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVk
Vk07CiAKICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3Ry
dWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDggQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBhbiBleGNl
cHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6aml0
Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54b3JQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1Qw
KTsKKy8vICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJs
b2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQueG9yUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKENvZGVCbG9ja1BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsK
ICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSklUQ29kZVR5cGU6
OmNvbW1vbkRhdGFPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb21tb25EYXRhOjpmcmFtZVJl
Z2lzdGVyQ291bnRPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAvLyBUaGlzIGRvZXMg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVSZWdpc3RlckNvdW50IC0gMSkqc2l6ZW9mKFJl
Z2lzdGVyKSB3aGVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAgICAg
bG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQ
QgotICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJs
b2NrUG9pc29uLCBQQiwgdDEpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAg
IHN0b3JlcSByMCwgW2NmciwgdDEsIDhdCiAgICAgdmFsdWVQcm9maWxlKHIwLCAoQ2FsbE9wQ29k
ZVNpemUgLSAxKSwgdDMpCkBAIC00ODAsMjcgKzQ4MCwyNyBAQCBtYWNybyB2YWx1ZVByb2ZpbGUo
dmFsdWUsIG9wZXJhbmQsIHNjcmF0CiAgICAgc3RvcmVxIHZhbHVlLCBWYWx1ZVByb2ZpbGU6Om1f
YnVja2V0c1tzY3JhdGNoXQogZW5kCiAKLW1hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRo
U2NyYXRjaChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBzdHJ1Y3R1
cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJlSURUaGVuU3RydWN0dXJlLCBzY3Jh
dGNoLCBzY3JhdGNoMikKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaAogICAgIGxv
YWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgdW5wb2lz
b24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNv
biwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW3NjcmF0Y2hdLCBzY3JhdGNo
CiAgICAgbG9hZHAgW3NjcmF0Y2gsIHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwgOF0sIHN0cnVj
dHVyZUlEVGhlblN0cnVjdHVyZQogZW5kCiAKLW1hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2goY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoLCBzY3JhdGNoMikKICAgICBsb2FkaSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1
cmVXaXRoU2NyYXRjaChzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgc3RydWN0dXJlSURUb1N0cnVj
dHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiBlbmQKIAotbWFj
cm8gbG9hZFN0cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCi0gICAg
bG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKLSAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgY2VsbAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2Nl
bGxdLCBjZWxsCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBjZWxsKQotICAgIGxvYWRw
IFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6
bV90YWJsZVtjZWxsXSwgY2VsbAotICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1
Y3R1cmUKLWVuZAorI21hY3JvIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcoY2VsbCwg
c3RydWN0dXJlKQorIyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVj
dHVyZQorIyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY2VsbAorIyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVtjZWxsXSwgY2VsbAorIyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lz
b24sIGNlbGwpCisjICAgIGxvYWRwIFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxl
ICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtjZWxsXSwgY2VsbAorIyAgICBsb2FkcCBbY2Vs
bCwgc3RydWN0dXJlLCA4XSwgc3RydWN0dXJlCisjZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0
aGUgaW50ZXJwcmV0ZXIuCiAKQEAgLTU2Miw3ICs1NjIsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93CiAgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCByZXNldCBQ
Qywgc2luY2UgdGhlIHNsb3dfcGF0aCBjbG9iYmVyZWQgdGhlbS4KICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIK
LSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCKQorICAgIHVucG9pc29uKENvZGVCbG9j
a1BvaXNvbiwgUEIsIHQ1KQogICAgIG1vdmUgMCwgUEMKICAgICBqbXAgZG9uZUxhYmVsCiBlbmQK
QEAgLTY0MSw3ICs2NDEsNyBAQCBfbGxpbnRfb3BfdG9fdGhpczoKICAgICBsb2FkcSBbY2ZyLCB0
MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKICAgICBiYm5l
cSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAg
IGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDEsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVX
aXRoU2NyYXRjaCh0MCwgdDEsIHQyLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0
MikKICAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfdG9fdGhpc19sZW5ndGgpCkBAIC03MjQsNyArNzI0LDcgQEAgbWFjcm8gZXF1YWxOdWxs
Q29tcGFyaXNvbigpCiAgICAgbW92ZSAwLCB0MAogICAgIGptcCAuZG9uZQogLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQ6Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisg
ICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEsIHQzKQogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBd
LCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQwLCB0MApAQCAt
MTE2Myw3ICsxMTYzLDcgQEAgX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKICAgICBzdG9yZXEgdDEs
IFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc191bmRlZmluZWRfbGVu
Z3RoKQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3Jh
dGNoKHQwLCB0MywgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEs
IHQ1KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDFdLCB0MQogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVj
dFt0M10sIHQxLCB0MApAQCAtMTQzMyw3ICsxNDMzLDcgQEAgX2xsaW50X29wX3B1dF9ieV9pZDoK
ICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDNdLCB0MwogICAgIGFzc2VydCht
YWNybyAob2spIGJ0cG56IHQzLCBvayBlbmQpCiAKLSAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJl
V2l0aFNjcmF0Y2godDIsIHQxKQorICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MiwgdDEsIHQ1KQogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJdLCB0Mgog
ICAgIGJxZXEgdDIsIFZhbHVlTnVsbCwgLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkRvbmUKIC5v
cFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Mb29wOgpAQCAtMTc0MCw3ICsxNzQwLDcgQEAgbWFjcm8g
ZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYQogICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmltbWVkaWF0ZQotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAg
IGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxLCB0NSkKICAgICBjZWxsSGFuZGxl
cih0MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAgICBkaXNwYXRjaCgzKQogCkBA
IC0yMDA3LDcgKzIwMDcsNyBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAKICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW1BCXSwgUEIK
LSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCKQorICAgIHVucG9pc29uKENvZGVCbG9j
a1BvaXNvbiwgUEIsIHQ1KQogICAgIGxvYWRwIFZNOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhy
b3dbdDNdLCBQQwogICAgIHN1YnAgUEIsIFBDCiAgICAgcnNoaWZ0cCAzLCBQQwpAQCAtMjI0Nyw3
ICsyMjQ3LDcgQEAgX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiBtYWNybyBsb2FkV2l0aFN0cnVj
dHVyZUNoZWNrKG9wZXJhbmQsIHNsb3dQYXRoKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihv
cGVyYW5kLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgbG9hZFN0cnVjdHVy
ZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQw
LCB0MiwgdDEsIHQ1KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQogICAgIGJwbmVx
IHQyLCB0MSwgc2xvd1BhdGgKIGVuZApAQCAtMjUwMCw3ICsyNTAwLDcgQEAgX2xsaW50X29wX3By
b2ZpbGVfdHlwZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVu
cG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSwgdDMpCiAgICAgIyB0MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJv
ZmlsZXJMb2cuCiAgICAgbG9hZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKICAgICAj
IHQyIGlzIGhvbGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgbG9nIGVudHJ5LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcg
QEAgZWxzZQogICAgIGNvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZwogZW5kCiAKLWNv
bnN0IENvZGVCbG9ja1BvaXNvbiA9IGNvbnN0ZXhwciBDb2RlQmxvY2s6OnNfcG9pc29uCisjIGNv
bnN0IENvZGVCbG9ja1BvaXNvbiA9IGNvbnN0ZXhwciBDb2RlQmxvY2s6OnNfcG9pc29uCiAKICMg
UHV0QnlJZEZsYWdzIGRhdGEKIGNvbnN0IFB1dEJ5SWRQcmltYXJ5VHlwZU1hc2sgPSBjb25zdGV4
cHIgUHV0QnlJZFByaW1hcnlUeXBlTWFzawpAQCAtNzU0LDkgKzc1NCwxMCBAQCBtYWNybyBwcmVz
ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gdW5w
b2lzb24ocG9pc29uLCBmaWVsZCkKK21hY3JvIHVucG9pc29uKHBvaXNvbiwgZmllbGQsIHNjcmF0
Y2gpCiAgICAgaWYgUE9JU09OCi0gICAgICAgIHhvcnAgcG9pc29uLCBmaWVsZAorICAgICAgICBs
b2FkcCBfQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoCisgICAgICAgIHhvcnAgc2NyYXRjaCwgZmll
bGQKICAgICBlbmQKIGVuZAogCkBAIC0xMDI0LDcgKzEwMjUsNyBAQCBtYWNybyBwcm9sb2d1ZShj
b2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgIyBTZXQgdXAgdGhlIFBDLgogICAgIGlmIEpT
VkFMVUU2NAogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIK
LSAgICAgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQikKKyAgICAgICAgdW5wb2lzb24o
Q29kZUJsb2NrUG9pc29uLCBQQiwgUEMpCiAgICAgICAgIG1vdmUgMCwgUEMKICAgICBlbHNlCiAg
ICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQwpAQCAtMTAzNSw3
ICsxMDM2LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvYwogICAg
IHN1YnAgY2ZyLCB0MCwgdDAKICAgICBicGEgdDAsIGNmciwgLm5lZWRTdGFja0NoZWNrCiAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MgotICAgIHVucG9pc29uKENvZGVC
bG9ja1BvaXNvbiwgdDIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MiwgdDMpCiAg
ICAgaWYgQ19MT09QCiAgICAgICAgIGJwYmVxIFZNOjptX2Nsb29wU3RhY2tMaW1pdFt0Ml0sIHQw
LCAuc3RhY2tIZWlnaHRPSwogICAgIGVsc2UKQEAgLTE2MjMsNyArMTYyNCw3IEBAIF9sbGludF9v
cF9jaGVja190cmFwczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAg
IHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9p
c29uLCB0MSwgdDMpCiAgICAgbG9hZGIgVk06Om1fdHJhcHMrVk1UcmFwczo6bV9uZWVkVHJhcEhh
bmRsaW5nW3QxXSwgdDAKICAgICBidHBueiB0MCwgLmhhbmRsZVRyYXBzCiAuYWZ0ZXJIYW5kbGlu
Z1RyYXBzOgpAQCAtMTYzOSw3ICsxNjQwLDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogbWFj
cm8gYWNxdWlyZVNoYWRvd0NoaWNrZW5QYWNrZXQoc2xvdykKICAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAg
dW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lz
b24sIHQxLCB0MikKICAgICBsb2FkcCBWTTo6bV9zaGFkb3dDaGlja2VuW3QxXSwgdDIKICAgICBs
b2FkcCBTaGFkb3dDaGlja2VuOjptX2xvZ0N1cnNvclt0Ml0sIHQwCiAgICAgYnBhZXEgdDAsIFNo
YWRvd0NoaWNrZW46Om1fbG9nRW5kW3QyXSwgc2xvdwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRl
ZFNpemUoSlNDZWxsKik7CiAKIHByaXZhdGU6Ci0gICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBcnJh
eUJ1ZmZlclBvaXNvbiwgQXJyYXlCdWZmZXIqPiBtX2ltcGw7CisgICAgUG9pc29uZWQ8SlNBcnJh
eUJ1ZmZlclBvaXNvbiwgQXJyYXlCdWZmZXIqPiBtX2ltcGw7CiB9OwogCiBpbmxpbmUgQXJyYXlC
dWZmZXIqIHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcihWTSYgdm0sIEpTVmFsdWUgdmFsdWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkocmV2aXNp
b24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDMzICsyNSw1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSA8d3RmL1BvaXNvbmVkLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIFBvaXNvbiB7
Ci0gICAgTm90UG9pc29uZWQgPSAwLCAvLyBSZXNlcnZlZCAoYW5kIHVudXNlZCkgc28gdGhhdCBw
b2lzb24ga2V5cyBhcmUgbmV2ZXIgMC4KLQotICAgIC8vIEFkZCBuZXcgcG9pc29uIGtleXMgYmVs
b3cgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLiBUaGUgb3JkZXIgZG9lc24ndCByZWFsbHkKLSAgICAv
LyBtYXR0ZXIsIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGtlZXAgdGhlbSBpbiBhbHBoYWJldGljYWxs
eSBvcmRlciBmb3IKLSAgICAvLyBncmVhdGVyIHJlYWRhYmlsaXR5LgotICAgIEFycmF5UHJvdG90
eXBlUG9pc29uLAotICAgIENvZGVCbG9ja1BvaXNvbiwKLSAgICBEYXRlSW5zdGFuY2VQb2lzb24s
Ci0gICAgSlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLAotICAgIEpTQXJyYXlCdWZmZXJQb2lzb24s
Ci0gICAgSlNDYWxsYmFja09iamVjdFBvaXNvbiwKLSAgICBKU0dsb2JhbE9iamVjdFBvaXNvbiwK
LSAgICBKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1BvaXNvbiwKLSAgICBKU1NjcmlwdEZldGNoZXJQ
b2lzb24sCi0gICAgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiwKLSAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQb2lzb24sCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiwK
LSAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sCi0gICAgVW5saW5rZWRTb3VyY2VD
b2RlUG9pc29uLAotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCisjaW5jbHVkZSAiSlNDUG9pc29u
ZWRQdHIuaCIgLy8gbWxhbQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NQb2lzb25lZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDIzIEBAIHVpbnRwdHJfdCBnX2dsb2JhbERhdGFQb2lzb247CiB1aW50cHRyX3Qg
Z19qaXRDb2RlUG9pc29uOwogdWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAordWludHB0
cl90IEFycmF5UHJvdG90eXBlUG9pc29uOwordWludHB0cl90IENvZGVCbG9ja1BvaXNvbjsKK3Vp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247Cit1aW50cHRyX3QgSlNBUElXcmFwcGVyT2JqZWN0
UG9pc29uOwordWludHB0cl90IEpTQXJyYXlCdWZmZXJQb2lzb247Cit1aW50cHRyX3QgSlNDYWxs
YmFja09iamVjdFBvaXNvbjsKK3VpbnRwdHJfdCBKU0dsb2JhbE9iamVjdFBvaXNvbjsKK3VpbnRw
dHJfdCBKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1BvaXNvbjsKK3VpbnRwdHJfdCBKU1NjcmlwdEZl
dGNoZXJQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbjsKK3Vp
bnRwdHJfdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3Nl
bWJseU1lbW9yeVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uOwor
dWludHB0cl90IEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbjsKK3VpbnRwdHJfdCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGVQb2lzb247Cit1aW50cHRyX3QgVW5saW5rZWRTb3VyY2VDb2RlUG9pc29u
OworCiB2b2lkIGluaXRpYWxpemVQb2lzb24oKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBpbml0aWFsaXplT25jZUZsYWc7CkBAIC00MSw2ICs1OCwyMyBAQCB2b2lkIGluaXRpYWxpemVQ
b2lzb24oKQogICAgICAgICBnX2dsb2JhbERhdGFQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAg
ICAgIGdfaml0Q29kZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19uYXRpdmVDb2Rl
UG9pc29uID0gbWFrZVBvaXNvbigpOworCisgICAgICAgIEFycmF5UHJvdG90eXBlUG9pc29uID0g
bWFrZVBvaXNvbigpOworICAgICAgICBDb2RlQmxvY2tQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIERhdGVJbnN0YW5jZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNBUElX
cmFwcGVyT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FycmF5QnVmZmVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0UG9pc29uID0g
bWFrZVBvaXNvbigpOworICAgICAgICBKU0dsb2JhbE9iamVjdFBvaXNvbiA9IG1ha2VQb2lzb24o
KTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnNQb2lzb24gPSBtYWtlUG9pc29uKCk7
CisgICAgICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAg
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5
TW9kdWxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGVQ
b2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBv
aXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlUG9pc29uID0g
bWFrZVBvaXNvbigpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDIzIEBAIGV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19n
bG8KIGV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19qaXRDb2RlUG9pc29uOwog
ZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX25hdGl2ZUNvZGVQb2lzb247CiAK
K2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IENvZGVCbG9ja1BvaXNvbjsKK2V4
dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgRGF0ZUluc3RhbmNlUG9pc29uOworZXh0
ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTQXJyYXlCdWZmZXJQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTQ2FsbGJhY2tPYmplY3RQb2lz
b247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTR2xvYmFsT2JqZWN0UG9p
c29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoUGFy
YW1ldGVyc1BvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNTY3Jp
cHRGZXRjaGVyUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERB
VEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb247CitleHRlcm4gIkMiIEpTX0VY
UE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247CitleHRlcm4gIkMi
IEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbjsKK2V4dGVy
biAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9p
c29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNv
ZGVQb2lzb247CisKIHN0cnVjdCBDbGFzc0luZm87CiAKIHVzaW5nIFBvaXNvbmVkQ2xhc3NJbmZv
UHRyID0gUG9pc29uZWQ8Z19nbG9iYWxEYXRhUG9pc29uLCBjb25zdCBDbGFzc0luZm8qPjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZS5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
U2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0
aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9p
c29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IENv
bnN0RXhwclBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwgV2Vha0ltcGwq
PjsKKyAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBQb2lzb25lZDxTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKKyAgICB1c2luZyBQb2lz
b25lZFdlYWtJbXBsUHRyID0gUG9pc29uZWQ8U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29u
LCBXZWFrSW1wbCo+OwogCiAgICAgYm9vbCBpc1VzaW5nU2luZ2xlU2xvdCgpIGNvbnN0CiAgICAg
ewpAQCAtMTk4LDEzICsxOTgsMTMgQEAgcHJpdmF0ZToKICAgICBUcmFuc2l0aW9uTWFwKiBtYXAo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAg
ICAgICAgcmV0dXJuIFBvaXNvbmVkVHJhbnNpdGlvbk1hcFB0cihtX2RhdGEpLnVucG9pc29uZWQo
KTsKKyAgICAgICAgcmV0dXJuIFBvaXNvbmVkVHJhbnNpdGlvbk1hcFB0cihQcmVQb2lzb25lZCwg
bV9kYXRhKS51bnBvaXNvbmVkKCk7CiAgICAgfQogCiAgICAgV2Vha0ltcGwqIHdlYWtJbXBsKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAgICAg
ICAgcmV0dXJuIFBvaXNvbmVkV2Vha0ltcGxQdHIobV9kYXRhICYgflVzaW5nU2luZ2xlU2xvdEZs
YWcpLnVucG9pc29uZWQoKTsKKyAgICAgICAgcmV0dXJuIFBvaXNvbmVkV2Vha0ltcGxQdHIoUHJl
UG9pc29uZWQsIG1fZGF0YSAmIH5Vc2luZ1NpbmdsZVNsb3RGbGFnKS51bnBvaXNvbmVkKCk7CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRNYXAoVHJhbnNpdGlvbk1hcCogbWFwKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAkocmV2aXNpb24gMjI2Nzg0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsNyArMTE4LDggQEAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+
IGNyZWF0ZQogICAgICAgICBpZiAoIUNvbnRleHQ6OnVzZUZhc3RUTFMoKSkgewogICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBqc09mZnNldCksIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0SW5zdGFuY2VHUFIs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZQb2lzb25lZEluc3RhbmNlKCkpLCB3YXNt
Q29udGV4dEluc3RhbmNlR1BSKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KG1ha2VDb25zdEV4cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9p
c29uKSksIHNjcmF0Y2hSZWcpOworLy8gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW02NChtYWtlQ29uc3RFeHByUG9pc29uKEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBv
aXNvbikpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiksIHNjcmF0Y2hSZWcpOwog
ICAgICAgICAgICAgaml0LnhvcjY0KHNjcmF0Y2hSZWcsIHdhc21Db250ZXh0SW5zdGFuY2VHUFIp
OwogICAgICAgICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL1dURi93dGYvQmFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvQmFnLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL0JhZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1l
IFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9oZWFkIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxh
dGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJU
cmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNv
bmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2lu
ZyBQb2lzb25lZEJhZyA9IEJhZzxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFBy
aXZhdGU6OkJhZ05vZGU8VD4+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBU
PgordXNpbmcgUG9pc29uZWRCYWcgPSBCYWc8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBQcml2
YXRlOjpCYWdOb2RlPFQ+Pj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9Qb2lzb25lZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVk
LmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDM3ICszMiw2IEBACiAjZGVmaW5lIEVOQUJMRV9QT0lTT04gMQogI2Rl
ZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCi0vLyBPbGRlciB2ZXJzaW9ucyBvZiBnY2Mg
YW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBpbiBidWlsZCBmYWlsdXJlcwotLy8g
d2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFrZSBhbiBhcmd1bWVudCBvZiBQb2lz
b25lZEltcGw8SzIsIGsyLCBUMj4KLS8vIHdoZW4gdGhlIEtleVR5cGUgaXMgYSB1aW50cHRyX3Qg
KGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQgdmFyaWFudAotLy8gb2YgUG9pc29u
ZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3QgZm9yIHRoZSBDb25zdEV4cHJQb2lz
b25lZCB2YXJpYW50LgotLy8gSW4gcHJhY3RpY2UsIHdlIHdpbGwgbGlrZWx5IG9ubHkgdXNlIHRo
ZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRoZQotLy8gQ29uc3RFeHByUG9pc29u
ZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBhIHNob3cgc3RvcHBlci4KLS8vIFRo
YXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gYWNjb3JkaW5nbHkgc28g
dGhhdCB3ZSBjYW4gdXNlCi0vLyBpdCB0byBkaXNhYmxlIHRoZSBhZmZlY3RlZCB0ZXN0cyB3aGVu
IGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KLQotI2lmIE9TKERBUldJTikKLSNkZWZpbmUg
RU5BQkxFX01JWEVEX1BPSVNPTiAoX19jbGFuZ19tYWpvcl9fID49IDkpCi0jZWxpZiBkZWZpbmVk
KF9fY2xhbmdfbWFqb3JfXykKLSNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiAoX19jbGFuZ19t
YWpvcl9fID49IDQpCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotI2luY2x1ZGUgPGZlYXR1cmVz
Lmg+Ci0jZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gKF9fR05VQ19QUkVSRVEoNywgMikpCi0j
ZW5kaWYgLy8gIWRlZmluZWQoX19HTlVDX18pCi0KLSNpZm5kZWYgRU5BQkxFX01JWEVEX1BPSVNP
TgotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIDAgLy8gRGlzYWJsZSBmb3IgZXZlcnl0aGlu
ZyBlbHNlLgotI2VuZGlmCi0KLS8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQg
b3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9ydCku
Ci0vLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBP
UyhXSU5ET1dTKQotI3VuZGVmIEVOQUJMRV9QT0lTT04KLSNkZWZpbmUgRU5BQkxFX1BPSVNPTiAw
Ci0jdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCi0jZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNT
RVJUUyAwCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdURiB7CiAKIHVzaW5nIFBvaXNvbmVkQml0cyA9
IHVpbnRwdHJfdDsKQEAgLTg4LDMwICs1NywzMSBAQCBhc1JlZmVyZW5jZShUIHB0cikgeyByZXR1
cm4gKnB0cjsgfQogCiB9IC8vIG5hbWVzcGFjZSBQb2lzb25lZEltcGxIZWxwZXIKIAotLy8gRklY
TUU6IG9uY2Ugd2UgaGF2ZSBDKysxNywgd2UgY2FuIG1ha2UgdGhlIGtleSBvZiB0eXBlIGF1dG8g
YW5kIHJlbW92ZSB0aGUgbmVlZCBmb3IgS2V5VHlwZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEtleVR5
cGUsIEtleVR5cGUga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+Ci1jbGFzcyBQb2lzb25lZEltcGwgeworZW51bSBQ
cmVQb2lzb25lZFRhZyB7IFByZVBvaXNvbmVkIH07CisKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5
LCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVy
PFQ+Ojp2YWx1ZT4+CitjbGFzcyBQb2lzb25lZCB7CiBwdWJsaWM6Ci0gICAgUG9pc29uZWRJbXBs
KCkgeyB9CisgICAgUG9pc29uZWQoKSB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChzdGQ6Om51bGxw
dHJfdCkgeyB9CisgICAgUG9pc29uZWQoc3RkOjpudWxscHRyX3QpIHsgfQogCi0gICAgUG9pc29u
ZWRJbXBsKFQgcHRyKQorICAgIFBvaXNvbmVkKFQgcHRyKQogICAgICAgICA6IG1fcG9pc29uZWRC
aXRzKHBvaXNvbihwdHIpKQogICAgIHsgfQogCi0gICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNv
bmVkSW1wbCYpID0gZGVmYXVsdDsKKyAgICBQb2lzb25lZChjb25zdCBQb2lzb25lZCYpID0gZGVm
YXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0g
ICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX2NsYXNzPE90aGVyPjo6dmFsdWU+PgorICAgIFBvaXNvbmVkKGNvbnN0IE90aGVyJiBv
dGhlcikKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb248VD4ob3RoZXIudW5wb2lzb25l
ZCgpKSkKICAgICB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChQb2lzb25lZEltcGwmJiBvdGhlcikK
KyAgICBQb2lzb25lZChQb2lzb25lZCYmIG90aGVyKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRz
KFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQogICAgIHsgfQogCi0gICAgZXhwbGljaXQg
UG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCisgICAgZXhwbGljaXQgUG9p
c29uZWQoUHJlUG9pc29uZWRUYWcsIFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCiAgICAgICAg
IDogbV9wb2lzb25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQogCkBAIC0xNDMsMTIgKzEx
MywxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9w
b2lzb25lZEJpdHM7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gISFtX3BvaXNvbmVkQml0czsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNv
bmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVk
Qml0czsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0
IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7IH0KLSAgICBib29s
IG9wZXJhdG9yPChjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29u
ZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQ
b2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDw9IGIubV9wb2lz
b25lZEJpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25lZEltcGwmIGIpIGNv
bnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
c29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID09IGIubV9wb2lz
b25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0
IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29s
IG9wZXJhdG9yPChjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJp
dHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvaXNv
bmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8PSBiLm1fcG9pc29uZWRCaXRz
OyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJu
IG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPj0gYi5t
X3BvaXNvbmVkQml0czsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRv
cj09KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7IH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBv
aXNvbmVkPFU+KCkgIT0gYjsgfQpAQCAtMTU3LDI3ICsxMjcsMzcgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29uc3QgeyByZXR1cm4gdW5w
b2lzb25lZDxVPigpID4gYjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0
b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+PSBiOyB9CiAKLSAgICBQ
b2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICBQb2lzb25lZCYgb3BlcmF0b3I9KFQg
cHRyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24ocHRyKTsKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25z
dCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQmIG9wZXJhdG9yPShjb25z
dCBQb2lzb25lZCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBr
MiwgdHlwZW5hbWUgVDI+Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29u
ZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICBQb2lzb25lZCYgb3BlcmF0b3I9KHN0ZDo6
bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19jbGFzczxPdGhlcj46OnZhbHVlPj4KKyAgICBQb2lzb25lZCYg
b3BlcmF0b3I9KGNvbnN0IE90aGVyJiBvdGhlcikKICAgICB7CiAgICAgICAgIG1fcG9pc29uZWRC
aXRzID0gcG9pc29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAKLSAgICB2b2lkIHN3YXAoUG9pc29uZWRJbXBsJiBvKQorICAgIHZvaWQgc3dh
cChQb2lzb25lZCYgbykKICAgICB7CiAgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywg
by5tX3BvaXNvbmVkQml0cyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsy
IGsyLCB0eXBlbmFtZSBUMj4KLSAgICB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+
JiBvKQorICAgIHZvaWQgc3dhcChzdGQ6Om51bGxwdHJfdCkgeyBjbGVhcigpOyB9CisKKy8vICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19jbGFzczxPdGhlcj46OnZhbHVlPj4KKy8vICAgIHZvaWQgc3dhcChPdGhlciYgbykKKyAg
ICB0ZW1wbGF0ZTx1aW50cHRyX3QmIGsyLCB0eXBlbmFtZSBUMj4KKyAgICB2b2lkIHN3YXAoUG9p
c29uZWQ8azIsIFQyPiYgbykKICAgICB7CiAgICAgICAgIFQgdDEgPSB0aGlzLT51bnBvaXNvbmVk
KCk7CiAgICAgICAgIFQyIHQyID0gby51bnBvaXNvbmVkKCk7CkBAIC0yMTgsNjcgKzE5OCwyOSBA
QCBwcml2YXRlOgogICAgIFBvaXNvbmVkQml0cyBtX3BvaXNvbmVkQml0cyB7IDAgfTsKIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIEsyLCBL
MiBrMiwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEs
IFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBiKQotewotICAgIGEuc3dhcChiKTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMT4KLWlubGluZSB2
b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBUMSYgYikKK3RlbXBsYXRlPHVp
bnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIHZvaWQgc3dhcChQ
b2lzb25lZDxrZXksIFQ+JiBhLCBVJiBiKQogewogICAgIGEuc3dhcChiKTsKIH0KIAogV1RGX0VY
UE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7CiAKLSNpZiBFTkFCTEUoUE9JU09O
KQotLy8gRklYTUU6IG9uY2Ugd2UgaGF2ZSBDKysxNywgd2UgY2FuIG1ha2UgdGhpcyBhIGxhbWJk
YSBpbiBtYWtlQ29uc3RFeHByUG9pc29uKCkuCi1pbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBj
b25zdEV4cHJQb2lzb25SYW5kb20odWludHB0cl90IHNlZWQpCi17Ci0gICAgdWludHB0cl90IHJl
c3VsdDEgPSBzZWVkICogNjkwNjk2OTA2OSArIDEyMzQ1Njc7Ci0gICAgdWludHB0cl90IHJlc3Vs
dDIgPSBzZWVkICogODI1MzcyOSArIDIzOTY0MDM7Ci0gICAgcmV0dXJuIChyZXN1bHQxIDw8IDMp
IF4gKHJlc3VsdDIgPDwgMTYpOwotfQotI2VuZGlmCi0KLWlubGluZSBjb25zdGV4cHIgdWludHB0
cl90IG1ha2VDb25zdEV4cHJQb2lzb24odWludDMyX3Qga2V5KQotewotI2lmIEVOQUJMRShQT0lT
T04pCi0gICAgdWludHB0cl90IHBvaXNvbiA9IGNvbnN0RXhwclBvaXNvblJhbmRvbShrZXkpOwot
ICAgIHBvaXNvbiAmPSB+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhmZmZmKSA8PCA0OCk7IC8v
IEVuc3VyZSB0aGF0IHBvaXNvbmVkIGJpdHMgbG9vayBsaWtlIGEgcG9pbnRlci4KLSAgICBwb2lz
b24gfD0gKDEgPDwgMik7IC8vIEVuc3VyZSB0aGF0IHBvaXNvbmVkIGJpdHMgY2Fubm90IGJlIDAu
Ci0gICAgcmV0dXJuIHBvaXNvbjsKLSNlbHNlCi0gICAgcmV0dXJuICh2b2lkKWtleSwgMDsKLSNl
bmRpZgotfQotCiB0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBv
aXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47Ci0KLXRlbXBsYXRlPHVp
bnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29u
ZWRJbXBsPHVpbnRwdHJfdCwgbWFrZUNvbnN0RXhwclBvaXNvbihrZXkpLCBUPjsKLQotdGVtcGxh
dGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRy
VHJhaXRzIHsKLSAgICB1c2luZyBTdG9yYWdlVHlwZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwg
VCo+Oworc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzIHsKKyAgICB1c2luZyBTdG9yYWdlVHlwZSA9
IFBvaXNvbmVkPGtleSwgVCo+OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RhdGljIEFMV0FZ
U19JTkxJTkUgVCogZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVlKSB7IHJl
dHVybiBwdHIuZXhjaGFuZ2UobmV3VmFsdWUpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
MSwgSzEgazEsIHR5cGVuYW1lIFQxPgotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dh
cChQb2lzb25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFQxJiBiKSB7IGEuc3dhcChiKTsgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIs
IEsyIGsyLCB0eXBlbmFtZSBUMj4KLSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAo
UG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIGIp
IHsgYS5zd2FwKGIpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+CisgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkPGtleSwgVCo+JiBhLCBPdGhlciYgYikg
eyBhLnN3YXAoYik7IH0KIAogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFQqIHVud3JhcChjb25z
dCBTdG9yYWdlVHlwZSYgcHRyKSB7IHJldHVybiBwdHIudW5wb2lzb25lZCgpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKK3VzaW5n
IFdURjo6UHJlUG9pc29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lz
b25lZEJpdHM7Ci11c2luZyBXVEY6Om1ha2VDb25zdEV4cHJQb2lzb247CiB1c2luZyBXVEY6Om1h
a2VQb2lzb247CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgJKHJldmlzaW9uIDIy
Njc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDEwICszMiwxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dWlu
dDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgotY2xhc3MgUG9p
c29uZWRVbmlxdWVQdHIgOiBwdWJsaWMgQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj4gewordGVt
cGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+
CitjbGFzcyBQb2lzb25lZFVuaXF1ZVB0ciA6IHB1YmxpYyBQb2lzb25lZDxrZXksIFQqPiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBv
aXNvbmVkPGtleSwgVCo+OworICAgIHVzaW5nIEJhc2UgPSBQb2lzb25lZDxrZXksIFQqPjsKIHB1
YmxpYzoKICAgICBQb2lzb25lZFVuaXF1ZVB0cigpID0gZGVmYXVsdDsKICAgICBQb2lzb25lZFVu
aXF1ZVB0cihzdGQ6Om51bGxwdHJfdCkgOiBCYXNlKCkgeyB9CkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgOiBCYXNlKHVuaXF1ZS5yZWxlYXNlKCkpCiAgICAgeyB9CiAKLSAgICB0
ZW1wbGF0ZTx1aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+CisgICAgdGVtcGxhdGU8dWludHB0
cl90JiBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRV
bmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCiAgICAgICAgIDogQmFzZShwdHIudW5wb2lzb25lZCgp
KQogICAgIHsKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7
CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+PgorICAg
IHRlbXBsYXRlPHVpbnRwdHJfdCYga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+PgogICAgIFBvaXNvbmVkVW5p
cXVlUHRyJiBvcGVyYXRvcj0oUG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCiAgICAg
ewogICAgICAgICBBU1NFUlQodGhpcyA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oJnB0cikgfHwgdGhp
cy0+dW5wb2lzb25lZCgpICE9IHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTIyLDE5ICsxMjIsMTkg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJXaXRob3V0RGVzdHJveSgpIHsgQmFzZTo6Y2xl
YXIoKTsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3QsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJp
ZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOworICAgIHRlbXBsYXRlPHVpbnRwdHJfdCYsIHR5
cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOwogfTsKIAot
dGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHMs
IHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5h
bWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgogUG9p
c29uZWRVbmlxdWVQdHI8a2V5LCBUPiBtYWtlUG9pc29uZWRVbmlxdWUoQXJndW1lbnRzJiYuLi4g
YXJndW1lbnRzKQogewogICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFQ+OjpjcmVh
dGUoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiB9CiAKLXRlbXBsYXRl
PHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLWNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwg
VFtdPiA6IHB1YmxpYyBDb25zdEV4cHJQb2lzb25lZDxrZXksIFQqPiB7Cit0ZW1wbGF0ZTx1aW50
cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK2NsYXNzIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVFtd
PiA6IHB1YmxpYyBQb2lzb25lZDxrZXksIFQqPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci0gICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+OworICAgIHVz
aW5nIEJhc2UgPSBQb2lzb25lZDxrZXksIFQqPjsKIHB1YmxpYzoKICAgICBQb2lzb25lZFVuaXF1
ZVB0cigpID0gZGVmYXVsdDsKICAgICBQb2lzb25lZFVuaXF1ZVB0cihzdGQ6Om51bGxwdHJfdCkg
OiBCYXNlKCkgeyB9CkBAIC0xNDIsNyArMTQyLDcgQEAgcHVibGljOgogICAgIFBvaXNvbmVkVW5p
cXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyJiYgcHRyKSA6IEJhc2UoV1RGTW92ZShwdHIpKSB7IHB0
ci5jbGVhcldpdGhvdXREZXN0cm95KCk7IH0KICAgICBQb2lzb25lZFVuaXF1ZVB0cihzdGQ6OnVu
aXF1ZV9wdHI8VFtdPiYmIHVuaXF1ZSkgOiBQb2lzb25lZFVuaXF1ZVB0cih1bmlxdWUucmVsZWFz
ZSgpKSB7IH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtleTI+CisgICAgdGVtcGxhdGU8dWlu
dHB0cl90JiBrZXkyPgogICAgIFBvaXNvbmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyPGtl
eTIsIFRbXT4mJiBwdHIpCiAgICAgICAgIDogQmFzZShwdHIudW5wb2lzb25lZCgpKQogICAgIHsK
QEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBrZXkyPgorICAgIHRlbXBsYXRlPHVpbnRwdHJfdCYg
a2V5Mj4KICAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KFBvaXNvbmVkVW5pcXVlUHRy
PGtleTIsIFRbXT4mJiBwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQodGhpcyA9PSBzdGF0aWNf
Y2FzdDx2b2lkKj4oJnB0cikgfHwgdGhpcy0+dW5wb2lzb25lZCgpICE9IHB0ci51bnBvaXNvbmVk
KCkpOwpAQCAtMjExLDEwICsyMTEsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJXaXRo
b3V0RGVzdHJveSgpIHsgQmFzZTo6Y2xlYXIoKTsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qs
IHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOworICAg
IHRlbXBsYXRlPHVpbnRwdHJfdCYsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBv
aXNvbmVkVW5pcXVlUHRyOwogfTsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBU
LCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5h
bWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgogUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUW10+
IG1ha2VQb2lzb25lZFVuaXF1ZShzaXplX3QgY291bnQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKIHsKICAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUW10+OjpjcmVhdGUoY291
bnQsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwpJbmRleDogU291cmNl
L1dURi93dGYvUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmLmgJKHJldmlz
aW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTYsMTAgKzI1NiwxMCBAQCBpbmxpbmUgYm9vbCBpcyhjb25zdCBSZWY8QXJnVHlwZSwgUHRyVHJh
CiAgICAgcmV0dXJuIGlzPEV4cGVjdGVkVHlwZT4oc291cmNlLmdldCgpKTsKIH0KIAotdGVtcGxh
dGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJU
cmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNv
bmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2lu
ZyBQb2lzb25lZFJlZiA9IFJlZjxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+
PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRS
ZWYgPSBSZWY8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAkocmV2aXNpb24gMjI2Nzg0KQor
KysgU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShzaXplX3Qg
c2l6ZSkKICAgICB7CiAgICAgICAgIGlmICghc2l6ZSkgewotICAgICAgICAgICAgbV9kYXRhID0g
MDsKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVmQ291
bnRlZEFycmF5KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
PiYgb3RoZXIpCiAgICAgewogICAgICAgICBpZiAob3RoZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBtX2RhdGEgPSAwOworICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIzOCwxMCArMjM4LDEwIEBAIHBy
aXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9yYWdlVHlwZSBtX2RhdGEgeyBudWxs
cHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBD
b25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBl
bmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtl
eSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkUmVmQ291bnRlZEFycmF5ID0gUmVmQ291bnRl
ZEFycmF5PFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwordGVtcGxhdGU8
dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJlZkNvdW50ZWRBcnJh
eSA9IFJlZkNvdW50ZWRBcnJheTxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDEwICsyNzYsMTAgQEAg
aW5saW5lIGJvb2wgaXMoY29uc3QgUmVmUHRyPEFyZ1R5cGUsIFB0cgogICAgIHJldHVybiBpczxF
eHBlY3RlZFR5cGU+KHNvdXJjZS5nZXQoKSk7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwg
dHlwZW5hbWUgVD4gc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzOwordGVtcGxhdGU8
dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAot
dGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWRSZWZQdHIg
PSBSZWZQdHI8VCwgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47Cit0ZW1wbGF0
ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIFBvaXNvbmVkUmVmUHRyID0gUmVm
UHRyPFQsIFBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IApJbmRleDogU291cmNlL1dURi93dGYvV1RGQXNzZXJ0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvV1RGQXNzZXJ0aW9ucy5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNv
dXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwzOSAr
MzUsOSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogbmFtZXNwYWNlIHsKIHN0cnVjdCBEdW1teVN0cnVj
dCB7IH07Ci1jb25zdCB1aW50MzJfdCBkdW1teVBvaXNvbiA9IDB4ZmZmZjsKK3VpbnRwdHJfdCBk
dW1teVBvaXNvbiA9IDA7CiB9CiAKLSNpZiBFTkFCTEUoUE9JU09OKQotc3RhdGljX2Fzc2VydCgh
KG1ha2VDb25zdEV4cHJQb2lzb24oMSkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9v
ayBsaWtlIGEgcG9pbnRlci4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29u
KDEwMCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4i
KTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDQ4KSwgInBv
aXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0
KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91
bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHBy
UG9pc29uKDEwMDAwMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBh
IHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZm
ZmZmKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIp
OwotCi1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEpID4+IDMyKSwgImJpdHMg
MzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7
Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMCkgPj4gMzIpLCAiYml0cyAz
Mi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsK
LXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMCkgPj4gMzIpLCAiYml0cyAz
Mi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsK
LXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApID4+IDMyKSwgImJpdHMg
MzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7
Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApID4+IDMyKSwgImJp
dHMgMzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAu
Iik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpID4+IDMy
KSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0
ZWx5IDAuIik7Ci0KLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMSkgJiAweDQp
LCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29u
c3RFeHByUG9pc29uKDEwMCkgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7
Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApICYgMHg0KSwgImJpdCAy
IHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBv
aXNvbigxMDAwMCkgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0
aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApICYgMHg0KSwgImJpdCAyIHNo
b3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNv
bigweGZmZmZmZmZmKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLQot
c3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMSkgJiAweDMpLCAiZW5zdXJlIGJv
dHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMu
Iik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDApICYgMHgzKSwgImVu
c3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxh
ZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMCkgJiAw
eDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVz
ZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigx
MDAwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFi
bGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhw
clBvaXNvbigxMDAwMDAwKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMg
YXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoISht
YWtlQ29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBh
bGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotI2Vu
ZGlmIC8vIEVOQUJMRShQT0lTT04pCi0KIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEJhZzxEdW1teVN0
cnVjdD4pID09IHNpemVvZih2b2lkKiksICIiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNv
bmVkQmFnPGR1bW15UG9pc29uLCBEdW1teVN0cnVjdD4pID09IHNpemVvZih2b2lkKiksICIiKTsK
IApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjY3ODQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05
NSw3ICs5NSw2IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAotICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9EYXRlTWF0aC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvRGVxdWUuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc2NSw3ICs3NjUsNiBAQAogCQlG
RTA1RkFFQzFGREI1MTBBMDAwOTMyMzAgLyogUG9pc29uZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUIxRkRCNTEwMjAwMDkzMjMw
IC8qIFBvaXNvbmVkUmVmLmNwcCAqLzsgfTsKIAkJRkUwNUZBRUQxRkRCNTEwRTAwMDkzMjMwIC8q
IFBvaXNvbmVkUmVmUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMDVGQUVBMUZEQjUxMDEwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5jcHAg
Ki87IH07CiAJCUZFMDVGQUVGMUZFMDY0NUIwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNE
MDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovOyB9OwotCQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMy
MzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBv
aXNvbmVkLmNwcCAqLzsgfTsKIAkJRkUwNUZCMDYxRkU4NEZCNzAwMDkzMjMwIC8qIFBvaXNvbmVk
VW5pcXVlUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMDVGQjA1MUZFODRGQUUwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgKi87
IH07CiAJCUZFQzhGNEU3MUZFOUM5MDUwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRy
aXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM4RjRFNjFGRTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRV
bmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwICovOyB9OwogCQlGRUM4
RjRFQjFGRTlGNUFGMDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlE
ZXN0cnVjdGlibGVBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVDOEY0RUExRkU5RjVBNzAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRy
Rm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLzsgfTsKQEAgLTE4ODEsNyAr
MTg4MCw2IEBACiAJCUZFMDVGQUVBMUZEQjUxMDEwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZFJlZlB0ci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMDVGQUVCMUZEQjUxMDIwMDA5MzIz
MCAvKiBQb2lzb25lZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQb2lzb25lZFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMDVGQUVF
MUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdEV4cHJQb2lzb25lZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMDVGQjA1MUZFODRGQUUwMDA5MzIzMCAvKiBQ
b2lzb25lZFVuaXF1ZVB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQb2lzb25lZFVuaXF1ZVB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
QjZGNzRFMUIyQkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOYWtlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFQzhGNEU2MUZFOUM4REUwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRy
aXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjU0LDcgKzI2NTIsNiBAQAog
CQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlv
bnMuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRy
SGFzaFNldC5jcHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlv
bi5jcHAgKi8sCi0JCQkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNv
bmVkLmNwcCAqLywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRU
YXNrLmNwcCAqLywKIAkJCQkyNkEyQzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmluZy5jcHAg
Ki8sCiAJCQkJN0FBMDIxQkExQUIwOUVBNzAwNTI5NTNGIC8qIERhdGVNYXRoLmNwcCAqLywKQEAg
LTMyMjEsNyArMzIxOCw2IEBACiAJCQkJN0M4M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENoZWNr
ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMwQ0I1QzFG
Q0UxNzk2MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFQzMxRDBBNTkwQzAwRkVCQ0YzIC8qIENvbmRpdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQTYxRDBBNTkwQzAwRkVCQ0YzIC8qIENvdW50
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUE5MUQwQTU5MEMwMEZFQkNGMyAvKiBD
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUFEMUQwQTU5MEMwMEZFQkNGMyAv
KiBEZXF1ZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNjc4NCkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAko
bm9uZXhpc3RlbnQpCkBAIC0xLDM4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRl
ICJSZWZMb2dnZXIuaCIKLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQotbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewotCi1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsK
LXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOwotCi0vLyBGb3IgdGhlc2Ug
dGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZvciB0aGlz
IHB1cnBvc2UsCi0vLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVmTG9nZ2Vy
IGNsYXNzZXMuCi0KLVRFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBCYXNpYykKLXsKLSAgICBE
ZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKLQotICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IGVtcHR5OwotICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNv
bmVkKCkpOwotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLm5h
bWUsICZwdHItPm5hbWUpOwotCi0jaWYgRU5BQkxFKFBPSVNPTikKLSAgICAgICAgdWludHB0cl90
IHB0ckJpdHM7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRy
Qml0cykpOwotICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KCZhKSk7Ci0jaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRf
VFJVRSgoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQo
cHRyQml0cykpKTsKLSNlbmRpZgotI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCi0gICAgfQotCi0g
ICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIg
PSAmYTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0K
LSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAx
ID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAy
KHAxKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMo
cDEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRz
KCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAyID0gcDE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+
IHAzID0gcDE7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAz
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5i
aXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAx
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsK
LQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZh
OwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZN
b3ZlKHAzKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkg
IT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotCi0gICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgcHRyLmNsZWFyKCk7Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25l
ZCgpKTsKLSAgICB9Ci19Ci0KLVRFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3NpZ25tZW50
KQotewotICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwotICAgIFJlZkxvZ2dlciBiKCJiIik7
Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgcDEgPSBwMjsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBw
NC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IHA0OwotICAgICAgICBBU1NFUlRfRVEoJmIs
IHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgp
KTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAg
ICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewot
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwot
ICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIgPSAm
YjsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0KLSAg
ICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigm
YSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0
ciA9IG51bGxwdHI7Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgp
KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBX
VEZNb3ZlKHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVk
KCkpOwotICAgICAgICBwMyA9IFdURk1vdmUocDQpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAz
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsK
LQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9IHAyOwotICAgICAgICBBU1NF
UlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5w
b2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRS
ZWZMb2dnZXIqPiBwNCgmYyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgp
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9
IHA0OwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0
LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBv
aXNvbmVkKCkpOwotICAgICAgICBwdHIgPSAmYzsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIu
dW5wb2lzb25lZCgpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIHAxID0gV1RGTW92ZShwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDEu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwot
Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsK
LSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0
KCZjKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBB
U1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzID0gV1RGTW92ZShwNCk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIHB0ciA9IHB0cjsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVu
cG9pc29uZWQoKSk7Ci0jaWYgQ09NUElMRVIoQ0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFn
bWFzIgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgotI2Vu
ZGlmCi0gICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKLSNpZiBDT01QSUxFUihDTEFORykKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgotICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLX0KLQotVEVTVChXVEZfQ29uc3RFeHByUG9pc29u
ZWQsIFN3YXApCi17Ci0gICAgUmVmTG9nZ2VyIGEoImEiKTsKLSAgICBSZWZMb2dnZXIgYigiYiIp
OwotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAxLnN3YXAocDIpOwot
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAg
IHAzLnN3YXAocDQpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0
cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5i
aXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAg
ICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgc3dhcChwMSwgcDIp
OwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIHN3YXAocDMsIHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0g
cDMuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7
Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIFJlZkxvZ2dlciogcDIoJmIpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIpOwot
ICAgICAgICBzd2FwKHAxLCBwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMik7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7Ci0gICAgfQotCi0gICAg
ewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
Ci0gICAgICAgIFJlZkxvZ2dlciogcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIpOwotICAgICAgICBwMS5zd2Fw
KHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAyKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4ocDIpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxv
Z2dlcikKLXsKLSAgICByZXR1cm4gQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4oJmxvZ2dlcik7Ci19Ci0KLVRFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBSZXR1cm5WYWx1
ZSkKLXsKLSAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKLQotICAgIHsKLSAgICAgICAgYXV0
byBwdHIgPSBwb2lzb25lZFB0ckZvbyhhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKLQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29u
ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNv
bmVkLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MiwxMSArOTIsOSBAQCBURVNUKFdU
Rl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBF
TkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZM
b2dnZXIqPiBwMyhwMSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0jZW5kaWYKICAg
ICB9CiAKICAgICB7CkBAIC0xMDYsMTEgKzEwNCw5IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNp
YykKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lT
T04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBA
IC0xMjAsMTMgKzExNiwxMSBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOwogICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJp
dHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0xMzYsMTYgKzEzMCwxMyBAQCBURVNU
KFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNp
ZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMyA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAot
I2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKICAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKQEAgLTE1Nyw5ICsxNDgsNyBAQCBURVNU
KFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CiAgICAg
fQotI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CiAgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CkBA
IC0xNzMsNyArMTYyLDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOwogICAgIH0KLSNlbmRpZgogCiAgICAgewogICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwpAQCAtMjAwLDcgKzE4OCw2IEBA
IFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRz
KCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKQEAgLTIwOSw3ICsxOTYsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVu
dCkKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMjM2LDcgKzIyMiw2
IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIs
IHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5i
aXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKQEAgLTI0NSwxMCArMjMwLDggQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2ln
bm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAg
QVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9Q
T0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMSgmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dn
ZXIqPiBwMigmYyk7CkBAIC0yNjgsNyArMjUxLDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2ln
bm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAg
QVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CiAgICAgfQotI2VuZGlmCiAKICAg
ICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7
CkBAIC0yNzcsNyArMjU5LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAg
ICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgfQogCi0jaWYgRU5BQkxF
KE1JWEVEX1BPSVNPTikKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZl
ZFJlZkxvZ2dlcio+IHAyKCZjKTsKQEAgLTI5Nyw3ICsyNzgsNiBAQCBURVNUKFdURl9Qb2lzb25l
ZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwog
ICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICB9Ci0jZW5k
aWYKIAogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKQEAgLTMzOSw3ICszMTksNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKIAog
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJM
RShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4g
cDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zNTEs
NyArMzMwLDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAgICAgICAgIEFTU0VSVF9UUlVF
KHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDMuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMo
KSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0zNTksMTcgKzMzNywxMiBAQCBURVNUKFdU
Rl9Qb2lzb25lZCwgU3dhcCkKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLSNpZiBFTkFCTEUoTUlYRURf
UE9JU09OKQogICAgICAgICBzd2FwKHAxLCBwMik7Ci0jZWxzZQotICAgICAgICBzdGQ6OnN3YXAo
cDEsIHAyKTsKLSNlbmRpZgogICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKIAogICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lT
T04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsK
ICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zODEsMTAgKzM1NCw4IEBA
IFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkg
IT0gcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMo
KSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotI2VuZGlm
CiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7CiAgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKICAgICAgICAgUmVmTG9nZ2Vy
KiBwMigmYik7CkBAIC00MDgsNyArMzc5LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAK
ICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHAyKSk7CiAgICAgfQotI2VuZGlmCiB9CiAKIHN0YXRpYyBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dlcikKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAJKHJldmlzaW9u
IDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTkgKzMxLDMxIEBACiAKIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0
aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLXN0YXRpYyBjb25zdCB1aW50MzJf
dCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkQgPSAweGRk
ZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRSA9IDB4ZWVlZTsKLXN0YXRpYyBjb25z
dCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZmOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25BOwor
c3RhdGljIHVpbnRwdHJfdCBwb2lzb25COworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25DOworc3Rh
dGljIHVpbnRwdHJfdCBwb2lzb25EOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25FOworc3RhdGlj
IHVpbnRwdHJfdCBwb2lzb25GOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7
CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25CID0gbWFrZVBvaXNvbigp
OworICAgIHBvaXNvbkMgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uRCA9IG1ha2VQb2lzb24o
KTsKKyAgICBwb2lzb25FID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkYgPSBtYWtlUG9pc29u
KCk7Cit9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXpl
UG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmPFBvaXNvbkEsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lz
b25lZFJlZjxwb2lzb25BLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCByZWYucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnJlZi0+bmFtZSk7CiAK
QEAgLTUxLDE2ICs2MywxNiBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQmFzaWMpCiAgICAgICAg
IHVpbnRwdHJfdCBwdHJCaXRzOwogICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnJlZiwg
c2l6ZW9mKHB0ckJpdHMpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PigmYSkpOwotICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKKyAgICAgICAg
QVNTRVJUX0VRKHB0ckJpdHMsIChQb2lzb25lZDxwb2lzb25BLCBSZWZMb2dnZXIqPigmYSkuYml0
cygpKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRfVFJVRSgo
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0
cykpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkPHBvaXNvbkEsIFJlZkxvZ2dlcio+
Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09O
KQogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIFJlZkxv
Z2dlcj4gcmVmKGFkb3B0UmVmKGEpKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uQiwgUmVm
TG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5uYW1lKTsKICAgICB9CkBAIC02
OSwxMiArODEsMTQgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEJhc2ljKQogCiBURVNUKFdURl9Q
b2lzb25lZFJlZiwgQXNzaWdubWVudCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAg
ICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBE
ZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9p
c29uQywgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkMsIFJl
ZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGI7CkBAIC04NCw3ICs5OCw3IEBAIFRF
U1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwog
CiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsK
KyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRCwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAg
ICAgcmVmID0gYzsKQEAgLTk0LDcgKzEwOCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3Np
Z25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVy
ZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZjxQb2lzb25FLCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9p
c29uRSwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gYWRvcHRSZWYoYik7CkBA
IC0xMDQsNyArMTE4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9n
Z2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcmVm
KGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CiAgICAgICAgIHJlZiA9IGFkb3B0UmVmKGMpOwpAQCAtMTE0LDI1ICsxMjgsMjcgQEAg
VEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAot
c3RhdGljIFBvaXNvbmVkUmVmPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcGFzc1dpdGhSZWYoUG9pc29u
ZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPiYmIHJlZmVyZW5jZSkKK3N0YXRpYyBQb2lzb25lZFJl
Zjxwb2lzb25CLCBSZWZMb2dnZXI+IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPHBvaXNvbkMsIFJl
ZkxvZ2dlcj4mJiByZWZlcmVuY2UpCiB7CiAgICAgcmV0dXJuIFdURk1vdmUocmVmZXJlbmNlKTsK
IH0KIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dn
ZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAg
ICBQb2lzb25lZFJlZjxQb2lzb25CLCBSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQb2lzb25l
ZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+KGEpKSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNv
bkIsIFJlZkxvZ2dlcj4gcmVmKHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPHBvaXNvbkMsIFJlZkxv
Z2dlcj4oYSkpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgIH0KICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEp
OworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAg
ICAgICByZWYgPSBwYXNzV2l0aFJlZihiKTsKQEAgLTE0MiwyMiArMTU4LDIyIEBAIFRFU1QoV1RG
X1BvaXNvbmVkUmVmLCBSZXR1cm5WYWx1ZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJl
ZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIocGFzc1dp
dGhSZWYoYSkpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0
cihwYXNzV2l0aFJlZihhKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAg
ICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBEZXJpdmVk
UmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25BLCBSZWZM
b2dnZXI+IHB0cjIoV1RGTW92ZShwdHIpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29u
RiwgRGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9p
c29uQSwgUmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CiAgICAgICAgIEVYUEVDVF9FUShu
dWxscHRyLCBwdHIuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0KCkpOwog
ICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIERlcml2ZWRS
ZWZMb2dnZXI+IGRlcml2ZWRSZWZlcmVuY2UoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNv
bkMsIFJlZkxvZ2dlcj4gYmFzZVJlZmVyZW5jZShwYXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNl
LmNvcHlSZWYoKSkpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25CLCBEZXJpdmVkUmVmTG9n
Z2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25DLCBS
ZWZMb2dnZXI+IGJhc2VSZWZlcmVuY2UocGFzc1dpdGhSZWYoZGVyaXZlZFJlZmVyZW5jZS5jb3B5
UmVmKCkpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBkZXJpdmVkUmVmZXJlbmNlLnB0cigpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBiYXNlUmVmZXJlbmNlLnB0cigpKTsKICAgICB9CkBAIC0x
NjYsMTIgKzE4MiwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgUmV0dXJuVmFsdWUpCiAKIFRF
U1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisK
ICAgICBSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAKICAgICB7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoYSk7Ci0gICAgICAgIFBv
aXNvbmVkUmVmPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoYik7CisgICAgICAgIFBvaXNvbmVkUmVm
PHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkUs
IFJlZkxvZ2dlcj4gcDIoYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLnB0cigpKTsKQEAg
LTE4Myw4ICsyMDEsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9n
Z2VyPiBwMShhKTsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQSwgUmVmTG9nZ2VyPiBwMihi
KTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKKyAgICAg
ICAgUG9pc29uZWRSZWY8cG9pc29uQSwgUmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkg
PDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYiwgcDIucHRyKCkpOwpAQCAtMTk2LDcgKzIxNCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
UmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkg
ZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJlZjxw
b2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOwogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwMihiKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7
CkBAIC0yMDksNyArMjI3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkYsIFJl
ZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxvZ2dlcj4g
cDEoYSk7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKQEAgLTIyMyw3ICsyNDEsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKIH0KIAogc3RydWN0IFBvaXNvbmVkUmVmQ2hl
Y2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgewotICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVm
PFBvaXNvbkIsIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+OworICAgIHVzaW5nIFJlZiA9
IFBvaXNvbmVkUmVmPHBvaXNvbkIsIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+OwogCiAg
ICAgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsKICAgICB2
b2lkIHJlZigpOwpAQCAtMjYxLDYgKzI3OSw4IEBAIERlcml2ZWRQb2lzb25lZFJlZkNoZWNraW5n
UmVmTG9nZ2VyOjpEZXIKIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbkJlZm9yZURlcmVm
KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUG9pc29uZWRSZWZD
aGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dl
ciBiKCJiIik7CiAgICAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYygiYyIp
OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVm
UHRyLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUG9pc29uZWRSZWZQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMiArMzMsMzQgQEAK
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9p
c29uQSA9IDB4YWFhYTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOwot
c3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkMgPSAweGNjY2M7Ci1zdGF0aWMgY29uc3QgdWlu
dDMyX3QgUG9pc29uRCA9IDB4ZGRkZDsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25FID0g
MHhlZWVlOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkYgPSAweGZmZmY7CitzdGF0aWMg
dWludHB0cl90IHBvaXNvbkE7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkI7CitzdGF0aWMgdWlu
dHB0cl90IHBvaXNvbkM7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkQ7CitzdGF0aWMgdWludHB0
cl90IHBvaXNvbkU7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkY7CisKK3N0YXRpYyB2b2lkIGlu
aXRpYWxpemVQb2lzb25zKCkKK3sKKyAgICBwb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgIHBv
aXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uQyA9IG1ha2VQb2lzb24oKTsKKyAgICBw
b2lzb25EID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkUgPSBtYWtlUG9pc29uKCk7CisgICAg
cG9pc29uRiA9IG1ha2VQb2lzb24oKTsKK30KIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEJh
c2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGEoImEiKTsKIAotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkEsIFJlZkxvZ2dlcj4gZW1wdHk7
CisgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQSwgUmVmTG9nZ2VyPiBlbXB0eTsKICAgICBFWFBF
Q1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PHBvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIu
Z2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLm5hbWUsICZwdHItPm5hbWUpOwpAQCAtNTcsNzAgKzY5LDcwIEBAIFRFU1QoV1RGX1BvaXNv
bmVkUmVmUHRyLCBCYXNpYykKICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAgICAgICAgIHN0
ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICBBU1NF
UlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0gICAgICAg
IEFTU0VSVF9FUShwdHJCaXRzLCAoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4oJmEpLmJpdHMoKSkpOworICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNvbmVkPHBv
aXNvbkIsIFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VS
VFMpCi0gICAgICAgIEFTU0VSVF9UUlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICBBU1NFUlRfVFJVRSgoUG9p
c29uZWQ8cG9pc29uQiwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRp
ZgogI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVk
UmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBv
aXNvbkQsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29u
RSwgUmVmTG9nZ2VyPiBwMihwMSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBw
MSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAyID0g
cDE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEgPSAmYTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwMiA9IHAxOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5n
ZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQ
RUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQo
KSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwg
UmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZM
b2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwg
UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZM
b2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEg
PSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMiA9IHAx
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9
ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAyID0gcDE7
CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZh
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92
ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHB0ci5nZXQoKSk7CiAgICAgICAgIHB0ciA9IG51bGxwdHI7CiAgICAgICAgIEVYUEVDVF9FUShu
dWxscHRyLCBwdHIuZ2V0KCkpOwpAQCAtMTMwLDEwICsxNDIsMTIgQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIEJhc2ljKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWduUGFzc1Jl
ZlRvUG9pc29uZWRSZWZQdHIpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERl
cml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIHsKICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFz
c1JlZihhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIg
PSBXVEZNb3ZlKHBhc3NSZWYpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZM
b2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTQxLDEzICsxNTUsMTUgQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIEFzc2lnblBhc3NSZWZUbwogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQWRv
cHQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIg
YSgiYSIpOwogCi0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBlbXB0eTsK
KyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IGVtcHR5OwogICAgIEVYUEVD
VF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVm
UHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIFBvaXNv
bmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7
CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1NSw3ICsxNzEs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiAgICAgRVhQRUNUX1NUUkVRKCJk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RS
RVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTE2MywxMyArMTc5LDE1
IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBZG9wdCkKIAogVEVTVChXVEZfUG9pc29uZWRS
ZWZQdHIsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERl
cml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZl
ZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBS
ZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9n
Z2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4g
cDIoJmIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNU
X0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0xODEsNyArMTk5
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgcmVmKGIpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgZGVyZWYoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25DLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBv
aXNvbkMsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0
KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBwdHIgPSAmYjsKQEAgLTE5MSw3
ICsyMDksNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwg
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBSZWZM
b2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAg
ICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOwpAQCAtMjAxLDcg
KzIxOSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dl
cj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBw
dHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIHB0ciA9
IG51bGxwdHI7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwpAQCAtMjA5
LDggKzIyNyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwMSgmYSk7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTIyMiw4ICsyNDAsOCBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBk
ZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAg
ICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPHBvaXNvbkUsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkp
OwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMjM1LDcgKzI1Myw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihj
KSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9n
Z2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+
IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9n
KCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gJmM7CkBAIC0yNDUsNyArMjYzLDcgQEAgVEVTVChX
VEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
fCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZh
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7
CiAgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZjKTsKQEAgLTI1NSw4ICsyNzMsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8
IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8cG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQo
KSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0yNjgsNyArMjg2LDcgQEAgVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVm
KGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAg
ICAgICAgIHB0ciA9IHB0cjsKQEAgLTI3OCw3ICsyOTYsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJl
ZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihhKSBkZXJl
ZihhKSB8IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCkBAIC0yOTYsMTIgKzMxNCwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJl
ZlB0ciwgQXNzaWdubWVudCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiB7Cisg
ICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVm
TG9nZ2VyIGIoImIiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwg
UmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxv
Z2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+
IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMigm
Yik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKQEAgLTMxMyw4ICszMzMsOCBA
QCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgm
YSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAg
ICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKQEAgLTMyOCwxMSArMzQ4LDEzIEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmUHRyLCBTd2FwKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZU5v
bk51bGwpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJh
Iik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4g
cmVmUHRyID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4g
cmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBv
aXNvbkYsIFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBv
aXNvbkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgfQog
CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwpAQCAtMzQwLDM3ICszNjIsMzkgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVh
c2VOb25OdWxsKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZSkKIHsKKyAgICBp
bml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAg
UmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEp
OwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBFWFBFQ1RfRVEo
bnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAg
ICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBEZXJpdmVk
UmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZM
b2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIs
IERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNv
bkMsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxw
dHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQog
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBw
MSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTM4Miw4ICs0MDYsOCBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZlB0ciwgUmVsZWFzZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikg
fCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0
KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMzk1LDEzICs0MTksMTUgQEAgVEVTVChX
VEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVm
KGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAK
LXN0YXRpYyBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYg
bG9nZ2VyKQorc3RhdGljIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gZjEoUmVm
TG9nZ2VyJiBsb2dnZXIpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJl
ZkxvZ2dlcj4oJmxvZ2dlcik7CisgICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJl
ZkxvZ2dlcj4oJmxvZ2dlcik7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZXR1cm5W
YWx1ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dl
ciBhKCJhIik7CiAKICAgICB7CkBAIC00MzIsMjAgKzQ1OCwyMiBAQCBzdGF0aWMgQ29uc3RSZWZD
b3VudGVkJiByZXR1cm5SZWZDb3VudGVkCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBDb25z
dCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgLy8gVGhpcyB0ZXN0IHBhc3Nl
cyBpZiBpdCBjb21waWxlcyB3aXRob3V0IGFuIGVycm9yLgogICAgIGF1dG8gYSA9IENvbnN0UmVm
Q291bnRlZDo6Y3JlYXRlKCk7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYiA9IFdU
Rk1vdmUoYSk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgY29uc3QgQ29uc3RSZWZDb3Vu
dGVkPiBjID0gYi5wdHIoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBjb25zdCBDb25z
dFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+
IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25FLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVm
KCk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29u
c3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBjb25z
dCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIGNv
bnN0IENvbnN0UmVmQ291bnRlZD4gaChmKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBj
b25zdCBDb25zdFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7Cisg
ICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZD
b3VudGVkOjpjcmVhdGUoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBjb25zdCBDb25z
dFJlZkNvdW50ZWQ+IGcgPSBmOworICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIGNvbnN0IENv
bnN0UmVmQ291bnRlZD4gaChmKTsKICAgICBSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBpKHJl
dHVyblJlZkNvdW50ZWRSZWYoKSk7CiB9CiAKIHN0cnVjdCBQb2lzb25lZFJlZlB0ckNoZWNraW5n
UmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKLSAgICB1c2luZyBSZWYgPSBQb2lzb25lZFJlZlB0cjxQ
b2lzb25ELCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPjsKKyAgICB1c2luZyBSZWYg
PSBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2Vy
PjsKIAogICAgIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFt
ZSk7CiAgICAgdm9pZCByZWYoKTsKQEAgLTQ3OSw2ICs1MDcsOCBAQCB2b2lkIFBvaXNvbmVkUmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXI6OmRlCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3Np
Z25CZWZvcmVEZXJlZikKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUG9pc29u
ZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZQdHJDaGVj
a2luZ1JlZkxvZ2dlciBiKCJiIik7CiAKQEAgLTU0Myw2ICs1NzMsOCBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQXNzaWduQmVmb3JlRGVyCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBS
ZWxlYXNlTm9uTnVsbEJlZm9yZURlcmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisK
ICAgICBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1
ZVB0ci5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsMTQg
QEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCB1aW50
MzJfdCBQb2lzb25BID0gMHhhYWFhOwotY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsK
K3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQTsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQjsKKwor
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbnMoKQoreworICAgIHBvaXNvbkEgPSBtYWtlUG9p
c29uKCk7CisgICAgcG9pc29uQiA9IG1ha2VQb2lzb24oKTsKK30KIAogc3RydWN0IExvZ2dlciB7
CiAgICAgTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUsIGludCYgZGVzdHJ1Y3RDb3VudCkKQEAgLTYx
LDEzICs2NywxNSBAQCBzdHJ1Y3QgT3RoZXIgewogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ciwgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBlbXB0eTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHku
Yml0cygpKTsKICAgICB9CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IGVtcHR5KG51bGxwdHIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lz
b25BLCBMb2dnZXI+IGVtcHR5KG51bGxwdHIpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwg
ZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkp
OwogICAgIH0KQEAgLTc2LDcgKzg0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJh
c2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEg
PSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBw
dHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CkBAIC04
Nyw3ICs5NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAg
ICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihhKSk7
CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj46OmlzUG9pc29uZWQocHRyQml0cykpKTsK
KyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dn
ZXI+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9J
U09OKQogICAgICAgICB9CkBAIC05Niw3ICsxMDQsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIERl
cml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
PiBwdHIoYik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+
IHB0cihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoYiwgJipwdHIpOwpAQCAtMTA5LDcgKzExNyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAg
TG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBhOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBhOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgfQpAQCAtMTE4LDcgKzEyNiw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGJEZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9n
Z2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IGI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0ciA9IGI7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBv
aXNvbmVkKCkpOwogICAgICAgICB9CkBAIC0xMjksNyArMTM3LDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAg
ICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+OjpjcmVhdGUoYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlx
dWVQdHI8cG9pc29uQSwgTG9nZ2VyPjo6Y3JlYXRlKGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNT
RVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xMzksNyArMTQ3LDcgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwog
ICAgICAgICBjb25zdCBjaGFyKiBiTmFtZSA9ICJiIjsKICAgICAgICAgewotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPjo6Y3JlYXRlKGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0ciA9IFBv
aXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5hbWUsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1MSw3ICsxNTks
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVz
dHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9
IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0ciA9
IG1ha2VQb2lzb25lZFVuaXF1ZTxwb2lzb25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xNjEsNyArMTY5LDcgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQg
PSAwOwogICAgICAgICBjb25zdCBjaGFyKiBiTmFtZSA9ICJiIjsKICAgICAgICAgewotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29u
ZWRVbmlxdWU8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4oYk5hbWUsIGJEZXN0cnVjdENvdW50KTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFr
ZVBvaXNvbmVkVW5pcXVlPHBvaXNvbkEsIERlcml2ZWRMb2dnZXI+KGJOYW1lLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShiTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xNzEsNyArMTc5LDcgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgdW5pcXVlRGVzdHJ1
Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIHVuaXF1ZU5hbWUgPSAidW5pcXVlIjsK
ICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgRGVyaXZl
ZExvZ2dlcj4gcHRyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVOYW1l
LCB1bmlxdWVEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBv
aXNvbkEsIERlcml2ZWRMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dl
cj4odW5pcXVlTmFtZSwgdW5pcXVlRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgdW5pcXVlRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxs
cHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKHVuaXF1ZU5h
bWUsICZwdHItPm5hbWUpOwpAQCAtMTgxLDcgKzE4OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50ID0g
MDsKICAgICAgICAgY29uc3QgY2hhciogdW5pcXVlRGVyaXZlZE5hbWUgPSAidW5pcXVlIGRlcml2
ZWQiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4odW5pcXVlRGVyaXZl
ZE5hbWUsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVk
TG9nZ2VyPih1bmlxdWVEZXJpdmVkTmFtZSwgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEodW5pcXVlRGVyaXZlZE5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTk1
LDE1ICsyMDMsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAg
ICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBM
b2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3Zl
KHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDEg
PSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMiA9
IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEs
IHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8cG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxwb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAz
LnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBA
IC0yMTksMTUgKzIyNywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAg
ICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBh
OwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZN
b3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+
IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4g
cDIoV1RGTW92ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQiwgTG9nZ2VyPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkIsIExvZ2dlcj4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBw
My51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwpA
QCAtMjQzLDE1ICsyNTEsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQog
ICAgICAgICBEZXJpdmVkTG9nZ2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigi
YiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUocDMpOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92
ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDMuYml0cygpKTsKQEAgLTI2NywxNSArMjc1LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVk
TG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0g
bmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxID0gYTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92
ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25l
ZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBw
MyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0
KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExv
Z2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9n
Z2VyPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291
bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAgLTI4OSw3ICsyOTcsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3Vu
dCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9n
Z2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBwdHIuY2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIu
dW5wb2lzb25lZCgpKTsKQEAgLTMwMiwxMyArMzEwLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBCYXNpYykKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQp
CiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgaW50IGFEZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAg
TG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9n
Z2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBv
aXNvbmVkKCkpOwpAQCAtMzI1LDcgKzMzNSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
LCBBc3NpZ25tZW50KQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBM
b2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ciA9IG51bGxwdHI7CkBA
IC0zNDUsOCArMzU1LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQp
CiAgICAgICAgIExvZ2dlciogYyA9IG5ldyBMb2dnZXIoImMiLCBjRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgIExvZ2dlciogZCA9IG5ldyBMb2dnZXIoImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEo
YSk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKGIp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMShhKTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIoYik7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51
bnBvaXNvbmVkKCkpOwpAQCAtMzU3LDggKzM2Nyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyLCBBc3NpZ25tZW50KQogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQoZCk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAzKGMpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyPiBwNChkKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9pc29u
ZWQoKSk7CkBAIC0zODEsNyArMzkxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFz
c2lnbm1lbnQpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGEgPSBuZXcgRGVyaXZlZExvZ2dlcigi
YSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJp
dmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7
CkBAIC00MDQsOCArNDE0LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1l
bnQpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGMgPSBuZXcgRGVyaXZlZExvZ2dlcigiYyIsIGNE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExvZ2dlciogZCA9IG5ldyBEZXJpdmVkTG9n
Z2VyKCJkIiwgZERlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxKGEpOwotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcDIoYik7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxKGEpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcDIoYik7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkp
OwpAQCAtNDE2LDggKzQyNiw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25t
ZW50KQogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKDAsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lz
b25lZCgpKTsKQEAgLTQzOCw3ICs0NDgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwg
QXNzaWdubWVudCkKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9n
Z2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIgPSBhOwpAQCAtNDUyLDcg
KzQ2Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAg
ICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2Vy
KCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25l
ZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKQEAgLTQ3MywxNCArNDgzLDE2IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ciwgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAg
ICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAw
OwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAx
ID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDI7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxID0gYTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDI7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29u
ZWQoKSk7CkBAIC00OTAsOCArNTAyLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3
YXApCiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQ7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkIsIExvZ2dlcj4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC01MTEsOCArNTIzLDggQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCiAgICAgICAgIExvZ2dlciogYSA9IG5l
dyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBM
b2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTUyMiw4ICs1MzQsOCBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9p
c29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2Vy
PiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDMg
PSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyPiBwNDsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5w
b2lzb25lZCgpKTsKQEAgLTUzOCwxMyArNTUwLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyLCBTd2FwKQogICAgIH0KIH0KIAotc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcG9pc29uZWRQdHJGb28oTG9nZ2VyKiBsb2dnZXIpCitzdGF0aWMgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGxvZ2dlcikK
IHsKLSAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPihsb2dnZXIp
OworICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+KGxvZ2dlcik7
CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBp
bml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQg
PSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQp
OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJG
b3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5
RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxNCBAQCBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IHVpbnQzMl90IFBvaXNv
bkEgPSAweGFhYWE7Ci1jb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworc3RhdGljIHVp
bnRwdHJfdCBwb2lzb25BOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25COworCitzdGF0aWMgdm9p
ZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAg
ICBwb2lzb25CID0gbWFrZVBvaXNvbigpOworfQogCiBzdHJ1Y3QgTG9nZ2VyIHsKICAgICBMb2dn
ZXIoKSB7IH0KQEAgLTYyLDggKzY4LDEwIEBAIGNvbnN0IGludCBhcnJheVNpemUgPSA1OwogCiBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5
cywgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IGVtcHR5OworICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gZW1wdHk7CiAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVt
cHR5LmJpdHMoKSk7CiAgICAgfQpAQCAtNzIsNyArODAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAg
ICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxw
b2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CkBAIC04NCw3ICs5Miw3IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgICAgIHN0ZDo6bWVt
Y3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICAgICAgQVNTRVJU
X1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihhKSk7CiAjaWYgRU5BQkxF
KFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPjo6aXNQ
b2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAg
ICAgICAgfQpAQCAtOTUsNyArMTAzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dn
ZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcHRyID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExv
Z2dlcltdPiBwdHIgPSBhOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTA4LDcgKzExNiw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50
IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltd
PiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT46OmNyZWF0ZShhcnJh
eVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
TG9nZ2VyW10+OjpjcmVhdGUoYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBmb3IgKGF1
dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTEyMSw3ICsxMjksNyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RD
b3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gbWFr
ZVBvaXNvbmVkVW5pcXVlPFBvaXNvbkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1lLCBhRGVz
dHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dn
ZXJbXT4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPHBvaXNvbkEsIExvZ2dlcltdPihhcnJheVNp
emUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsg
KytpKQpAQCAtMTM0LDcgKzE0Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9u
VHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3Qg
Y2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwg
TG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRV
bmlxdWU8cG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAg
ICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAg
Zm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xNDksMTUgKzE1NywxNSBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dl
ciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBi
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwg
cDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwog
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBi
OwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0ID0g
V1RGTW92ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dn
ZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9n
Z2VyW10+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3Ry
dWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0xNzMsMTUgKzE4
MSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAg
IExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwg
ImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MHUsIHAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgp
KTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAz
ID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBw
NChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBM
b2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwg
TG9nZ2VyW10+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTE5NywxNSAr
MjA1LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAg
ICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXpl
LCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUo
IXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsK
IAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0g
YjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNCA9
IFdURk1vdmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9n
Z2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIExv
Z2dlcltdPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVj
dENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yMjEsMTUgKzIyOSwxNSBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dl
ciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBi
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0cygp
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUocDMp
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMyA9
IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXJbXT4gcDQo
V1RGTW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yNDMsNyArMjUxLDcgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQg
PSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJh
IiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShh
LCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ci5jbGVhcigpOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMjU2LDEzICsyNjQsMTUgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogCiBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQXNzaWdubWVu
dCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURl
c3RydWN0Q291bnQgPSAwOwogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAg
ICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUs
ICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAt
Mjc5LDcgKzI4OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwK
ICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFr
ZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihh
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwdHIo
YSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gbnVs
bHB0cjsKQEAgLTI5OSw4ICszMDksOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5v
blRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYyA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6
ZSwgImMiLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogZCA9IG1ha2VBcnJheTxM
b2dnZXI+KGFycmF5U2l6ZSwgImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9p
c29uZWQoKSk7CkBAIC0zMTEsOCArMzIxLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJG
b3JOb25Ucml2aWFsbAogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzKGMpOwotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KGQpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAzKGMpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0KGQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5w
b2lzb25lZCgpKTsKQEAgLTMzMyw3ICszNDMsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAg
IExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBMb2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENv
dW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgICAgIHB0ciA9IGE7CkBAIC0zNDcsNyArMzU3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAg
ICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3Ry
dWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAj
aWYgQ09NUElMRVIoQ0xBTkcpCkBAIC0zNjgsMTQgKzM3OCwxNiBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAg
ICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dl
ciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcDI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJb
XT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2Vy
W10+IHAyOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtMzg1LDggKzM5Nyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQ7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0OwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNv
bmVkKCkpOwpAQCAtNDA2LDggKzQxOCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlT
aXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDI7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQo
KSk7CkBAIC00MTcsOCArNDI5LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25U
cml2aWFsbAogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNDsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXJbXT4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRz
KCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC00MzMs
MTMgKzQ0NSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgfQogfQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHBv
aXNvbmVkUHRyRm9vKExvZ2dlciogYXJyYXkpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgTG9nZ2VyW10+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogYXJyYXkpCiB7Ci0gICAgcmV0
dXJuIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPihhcnJheSk7CisgICAgcmV0
dXJuIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPihhcnJheSk7CiB9CiAKIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlz
LCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAg
ICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJy
YXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0
cnVjdGlibGVBcnJheXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNw
cAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9p
c29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw4ICszMiwxNCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5h
bWVzcGFjZSB7CiAKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1jb25zdCB1aW50
MzJfdCBQb2lzb25CID0gMHhiYmJiOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25BOworc3RhdGlj
IHVpbnRwdHJfdCBwb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7
CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25CID0gbWFrZVBvaXNvbigp
OworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgZmlsbEFycmF5KFQmIGFy
cmF5LCBpbnQgc2l6ZSkKQEAgLTQ4LDEzICs1NCwxNSBAQCBzdGF0aWMgY29uc3QgaW50IGFycmF5
U2l6ZSA9IDU7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1
Y3RpYmxlQXJyYXlzLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAg
ewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gZW1wdHk7CisgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBlbXB0eTsKICAgICAgICAgQVNT
RVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgw
dSwgZW1wdHkuYml0cygpKTsKICAgICB9CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBpbnRbXT4gZW1wdHkobnVsbHB0cik7CisgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIGludFtdPiBlbXB0eShudWxscHRyKTsKICAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHku
Yml0cygpKTsKICAgICB9CkBAIC02Myw3ICs3MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsK
ICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsICYq
cHRyKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpA
QCAtNzQsNyArODIsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURl
CiAgICAgICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMp
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4oYSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgICAgIEFTU0VS
VF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT46OmlzUG9pc29uZWQocHRy
Qml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxwb2lz
b25BLCBpbnRbXT46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVO
QUJMRShQT0lTT04pCiAgICAgICAgIH0KQEAgLTg0LDcgKzkyLDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJh
eVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gYTsKKyAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0ciA9IGE7CiAgICAgICAgIEFTU0VSVF9FUShhLCBw
dHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKICAgICAgICAg
Zm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC05Miw3ICsxMDAsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgaW50W10+OjpjcmVhdGUoYXJyYXlTaXplKTsKKyAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPHBv
aXNvbkEsIGludFtdPjo6Y3JlYXRlKGFycmF5U2l6ZSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKG51
bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGZpbGxBcnJheShwdHIsIGFycmF5
U2l6ZSk7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAt
MTA1LDE2ICsxMTMsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlE
ZQogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJy
YXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBp
bnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4g
cDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50
W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHAy
ID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVk
KCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9F
UShhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJh
eVNpemU7ICsraSkKICAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwMltpXSk7CiAKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkIsIGludFtdPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICBB
U1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1
LCBwMy5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKQEAg
LTEyOCwxNiArMTM2LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5
RGUKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFy
cmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
aW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+
IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50
W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHAy
KFdURk1vdmUocDEpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQo
KSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAgICAgQVNTRVJUX0VR
KGEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5
U2l6ZTsgKytpKQogICAgICAgICAgICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ldKTsKIAotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQoV1RGTW92ZShwMykpOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25CLCBpbnRbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBw
My5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKQEAgLTE0
OSw3ICsxNTcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAg
ICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShh
LCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtd
PiBwdHIoYSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwdHIo
YSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRy
LmNsZWFyKCk7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKQEAgLTE1
OSwxMyArMTY3LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUK
IAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJh
eXMsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAg
ICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgYXV0byogYiA9IG5l
dyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAg
ICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgp
KTsKICAgICAgICAgcHRyID0gYjsKICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVk
KCkpOwpAQCAtMTc1LDcgKzE4NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJp
dmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAg
ZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
aW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgICAgICBwdHIgPSBudWxscHRyOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVu
cG9pc29uZWQoKSk7CkBAIC0xOTEsMTYgKzIwMSwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGZpbGxBcnJheShjLCBhcnJheVNpemUpOwogICAg
ICAgICBmaWxsQXJyYXkoZCwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBpbnRbXT4gcDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIGludFtdPiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50
W10+IHAxKGEpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDIo
Yik7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfRVEoYiwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKICAg
ICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIGludFtdPiBwMyhjKTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwg
aW50W10+IHA0KGQpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4g
cDMoYyk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIGludFtdPiBwNChkKTsK
ICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9F
UShkLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBwMyA9IFdURk1vdmUocDQpOwpAQCAtMjEy
LDcgKzIyMiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAg
ICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEs
IGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+
IHB0cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0cihh
KTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIg
PSBhOwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0yMjIsNyAr
MjMyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAg
ICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJy
YXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRy
KGEpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcHRyKGEpOwog
ICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAjaWYgQ09NUElMRVIoQ0xB
TkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApAQCAtMjM5LDE0ICsyNDksMTYgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogCiBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgU3dhcCkKIHsKKyAg
ICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOwogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwogICAg
ICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5
U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0g
YTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51
bnBvaXNvbmVkKCksIGEpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC0yNTUsOCArMjY3LDggQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJV
RSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwg
YSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25CLCBpbnRbXT4gcDQ7CiAgICAgICAgIEFTU0VSVF9FUShwMy51bnBv
aXNvbmVkKCksIGIpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAg
QVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC0yNzIsOCArMjg0LDggQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBmaWxsQXJyYXkoYSwg
YXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxwb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lz
b25BLCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCksIGEpOwog
ICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAy
LnVucG9pc29uZWQoKSk7CkBAIC0yODIsOCArMjk0LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxw
b2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25C
LCBpbnRbXT4gcDQ7CiAgICAgICAgIEFTU0VSVF9FUShwMy51bnBvaXNvbmVkKCksIGIpOwogICAg
ICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVu
cG9pc29uZWQoKSk7CkBAIC0yOTQsMTMgKzMwNiwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQogfQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgaW50W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQorc3RhdGljIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwb2lzb25lZFB0ckZvbyhpbnQqIHB0cikKIHsKLSAg
ICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+KHB0cik7CisgICAgcmV0
dXJuIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPihwdHIpOwogfQogCiBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgUmV0dXJu
VmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgYXV0
byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6
ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331168</attachid>
            <date>2018-01-11 21:56:04 -0800</date>
            <delta_ts>2018-01-11 22:21:35 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>126580</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksOCAr
Mzg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lz
b25lZE1hc21QdHIoMSk7IH0KLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1
ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigyKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1h
c21QdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwg
MSk7IH0KKyAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJu
IFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwgMik7IH0KIAogICAgIFBvaXNvbmVkTWFzbVB0
ciBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODk0LDggKzg5NCw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmhhc1RhaWxDYWxscygpOyB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBz
X3BvaXNvbiA9IG1ha2VDb25zdEV4cHJQb2lzb24oQ29kZUJsb2NrUG9pc29uKTsKLQogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOwogICAgIHZvaWQgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwpAQCAtOTc0LDcgKzk3Miw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fb3duZXJFeGVj
dXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293
bmVyRWRnZTsKLSAgICBDb25zdEV4cHJQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9w
b2lzb25lZFZNOworICAgIFBvaXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVk
Vk07CiAKICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3Ry
dWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDggQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBhbiBleGNl
cHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6aml0
Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54b3JQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1Qw
KTsKKy8vICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJs
b2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQueG9yUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKENvZGVCbG9ja1BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsK
ICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSklUQ29kZVR5cGU6
OmNvbW1vbkRhdGFPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb21tb25EYXRhOjpmcmFtZVJl
Z2lzdGVyQ291bnRPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAvLyBUaGlzIGRvZXMg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVSZWdpc3RlckNvdW50IC0gMSkqc2l6ZW9mKFJl
Z2lzdGVyKSB3aGVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAgICAg
bG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQ
QgotICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJs
b2NrUG9pc29uLCBQQiwgdDEpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAg
IHN0b3JlcSByMCwgW2NmciwgdDEsIDhdCiAgICAgdmFsdWVQcm9maWxlKHIwLCAoQ2FsbE9wQ29k
ZVNpemUgLSAxKSwgdDMpCkBAIC00ODAsMjcgKzQ4MCwyNyBAQCBtYWNybyB2YWx1ZVByb2ZpbGUo
dmFsdWUsIG9wZXJhbmQsIHNjcmF0CiAgICAgc3RvcmVxIHZhbHVlLCBWYWx1ZVByb2ZpbGU6Om1f
YnVja2V0c1tzY3JhdGNoXQogZW5kCiAKLW1hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRo
U2NyYXRjaChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBzdHJ1Y3R1
cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJlSURUaGVuU3RydWN0dXJlLCBzY3Jh
dGNoLCBzY3JhdGNoMikKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaAogICAgIGxv
YWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgdW5wb2lz
b24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNv
biwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW3NjcmF0Y2hdLCBzY3JhdGNo
CiAgICAgbG9hZHAgW3NjcmF0Y2gsIHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwgOF0sIHN0cnVj
dHVyZUlEVGhlblN0cnVjdHVyZQogZW5kCiAKLW1hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2goY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoLCBzY3JhdGNoMikKICAgICBsb2FkaSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1
cmVXaXRoU2NyYXRjaChzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgc3RydWN0dXJlSURUb1N0cnVj
dHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiBlbmQKIAotbWFj
cm8gbG9hZFN0cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCi0gICAg
bG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKLSAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgY2VsbAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2Nl
bGxdLCBjZWxsCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBjZWxsKQotICAgIGxvYWRw
IFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6
bV90YWJsZVtjZWxsXSwgY2VsbAotICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1
Y3R1cmUKLWVuZAorI21hY3JvIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcoY2VsbCwg
c3RydWN0dXJlKQorIyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVj
dHVyZQorIyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY2VsbAorIyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVtjZWxsXSwgY2VsbAorIyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lz
b24sIGNlbGwpCisjICAgIGxvYWRwIFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxl
ICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtjZWxsXSwgY2VsbAorIyAgICBsb2FkcCBbY2Vs
bCwgc3RydWN0dXJlLCA4XSwgc3RydWN0dXJlCisjZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0
aGUgaW50ZXJwcmV0ZXIuCiAKQEAgLTU2Miw3ICs1NjIsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93CiAgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCByZXNldCBQ
Qywgc2luY2UgdGhlIHNsb3dfcGF0aCBjbG9iYmVyZWQgdGhlbS4KICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIK
LSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCKQorICAgIHVucG9pc29uKENvZGVCbG9j
a1BvaXNvbiwgUEIsIHQ1KQogICAgIG1vdmUgMCwgUEMKICAgICBqbXAgZG9uZUxhYmVsCiBlbmQK
QEAgLTY0MSw3ICs2NDEsNyBAQCBfbGxpbnRfb3BfdG9fdGhpczoKICAgICBsb2FkcSBbY2ZyLCB0
MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKICAgICBiYm5l
cSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAg
IGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDEsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVX
aXRoU2NyYXRjaCh0MCwgdDEsIHQyLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0
MikKICAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfdG9fdGhpc19sZW5ndGgpCkBAIC03MjQsNyArNzI0LDcgQEAgbWFjcm8gZXF1YWxOdWxs
Q29tcGFyaXNvbigpCiAgICAgbW92ZSAwLCB0MAogICAgIGptcCAuZG9uZQogLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQ6Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisg
ICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEsIHQzKQogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBd
LCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQwLCB0MApAQCAt
MTE2Myw3ICsxMTYzLDcgQEAgX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKICAgICBzdG9yZXEgdDEs
IFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc191bmRlZmluZWRfbGVu
Z3RoKQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3Jh
dGNoKHQwLCB0MywgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEs
IHQ1KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDFdLCB0MQogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVj
dFt0M10sIHQxLCB0MApAQCAtMTQzMyw3ICsxNDMzLDcgQEAgX2xsaW50X29wX3B1dF9ieV9pZDoK
ICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDNdLCB0MwogICAgIGFzc2VydCht
YWNybyAob2spIGJ0cG56IHQzLCBvayBlbmQpCiAKLSAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJl
V2l0aFNjcmF0Y2godDIsIHQxKQorICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MiwgdDEsIHQ1KQogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJdLCB0Mgog
ICAgIGJxZXEgdDIsIFZhbHVlTnVsbCwgLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkRvbmUKIC5v
cFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Mb29wOgpAQCAtMTc0MCw3ICsxNzQwLDcgQEAgbWFjcm8g
ZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYQogICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmltbWVkaWF0ZQotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAg
IGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxLCB0NSkKICAgICBjZWxsSGFuZGxl
cih0MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAgICBkaXNwYXRjaCgzKQogCkBA
IC0yMDA3LDcgKzIwMDcsNyBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAKICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW1BCXSwgUEIK
LSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCKQorICAgIHVucG9pc29uKENvZGVCbG9j
a1BvaXNvbiwgUEIsIHQ1KQogICAgIGxvYWRwIFZNOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhy
b3dbdDNdLCBQQwogICAgIHN1YnAgUEIsIFBDCiAgICAgcnNoaWZ0cCAzLCBQQwpAQCAtMjI0Nyw3
ICsyMjQ3LDcgQEAgX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiBtYWNybyBsb2FkV2l0aFN0cnVj
dHVyZUNoZWNrKG9wZXJhbmQsIHNsb3dQYXRoKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihv
cGVyYW5kLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgbG9hZFN0cnVjdHVy
ZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQw
LCB0MiwgdDEsIHQ1KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQogICAgIGJwbmVx
IHQyLCB0MSwgc2xvd1BhdGgKIGVuZApAQCAtMjUwMCw3ICsyNTAwLDcgQEAgX2xsaW50X29wX3By
b2ZpbGVfdHlwZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVu
cG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSwgdDMpCiAgICAgIyB0MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJv
ZmlsZXJMb2cuCiAgICAgbG9hZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKICAgICAj
IHQyIGlzIGhvbGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgbG9nIGVudHJ5LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcg
QEAgZWxzZQogICAgIGNvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZwogZW5kCiAKLWNv
bnN0IENvZGVCbG9ja1BvaXNvbiA9IGNvbnN0ZXhwciBDb2RlQmxvY2s6OnNfcG9pc29uCisjIGNv
bnN0IENvZGVCbG9ja1BvaXNvbiA9IGNvbnN0ZXhwciBDb2RlQmxvY2s6OnNfcG9pc29uCiAKICMg
UHV0QnlJZEZsYWdzIGRhdGEKIGNvbnN0IFB1dEJ5SWRQcmltYXJ5VHlwZU1hc2sgPSBjb25zdGV4
cHIgUHV0QnlJZFByaW1hcnlUeXBlTWFzawpAQCAtNzU0LDkgKzc1NCwxMCBAQCBtYWNybyBwcmVz
ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gdW5w
b2lzb24ocG9pc29uLCBmaWVsZCkKK21hY3JvIHVucG9pc29uKHBvaXNvbiwgZmllbGQsIHNjcmF0
Y2gpCiAgICAgaWYgUE9JU09OCi0gICAgICAgIHhvcnAgcG9pc29uLCBmaWVsZAorICAgICAgICBs
b2FkcCBfQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoCisgICAgICAgIHhvcnAgc2NyYXRjaCwgZmll
bGQKICAgICBlbmQKIGVuZAogCkBAIC0xMDI0LDcgKzEwMjUsNyBAQCBtYWNybyBwcm9sb2d1ZShj
b2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgIyBTZXQgdXAgdGhlIFBDLgogICAgIGlmIEpT
VkFMVUU2NAogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIK
LSAgICAgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQikKKyAgICAgICAgdW5wb2lzb24o
Q29kZUJsb2NrUG9pc29uLCBQQiwgUEMpCiAgICAgICAgIG1vdmUgMCwgUEMKICAgICBlbHNlCiAg
ICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQwpAQCAtMTAzNSw3
ICsxMDM2LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvYwogICAg
IHN1YnAgY2ZyLCB0MCwgdDAKICAgICBicGEgdDAsIGNmciwgLm5lZWRTdGFja0NoZWNrCiAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MgotICAgIHVucG9pc29uKENvZGVC
bG9ja1BvaXNvbiwgdDIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MiwgdDMpCiAg
ICAgaWYgQ19MT09QCiAgICAgICAgIGJwYmVxIFZNOjptX2Nsb29wU3RhY2tMaW1pdFt0Ml0sIHQw
LCAuc3RhY2tIZWlnaHRPSwogICAgIGVsc2UKQEAgLTE2MjMsNyArMTYyNCw3IEBAIF9sbGludF9v
cF9jaGVja190cmFwczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAg
IHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9p
c29uLCB0MSwgdDMpCiAgICAgbG9hZGIgVk06Om1fdHJhcHMrVk1UcmFwczo6bV9uZWVkVHJhcEhh
bmRsaW5nW3QxXSwgdDAKICAgICBidHBueiB0MCwgLmhhbmRsZVRyYXBzCiAuYWZ0ZXJIYW5kbGlu
Z1RyYXBzOgpAQCAtMTYzOSw3ICsxNjQwLDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogbWFj
cm8gYWNxdWlyZVNoYWRvd0NoaWNrZW5QYWNrZXQoc2xvdykKICAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAg
dW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lz
b24sIHQxLCB0MikKICAgICBsb2FkcCBWTTo6bV9zaGFkb3dDaGlja2VuW3QxXSwgdDIKICAgICBs
b2FkcCBTaGFkb3dDaGlja2VuOjptX2xvZ0N1cnNvclt0Ml0sIHQwCiAgICAgYnBhZXEgdDAsIFNo
YWRvd0NoaWNrZW46Om1fbG9nRW5kW3QyXSwgc2xvdwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRl
ZFNpemUoSlNDZWxsKik7CiAKIHByaXZhdGU6Ci0gICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBcnJh
eUJ1ZmZlclBvaXNvbiwgQXJyYXlCdWZmZXIqPiBtX2ltcGw7CisgICAgUG9pc29uZWQ8SlNBcnJh
eUJ1ZmZlclBvaXNvbiwgQXJyYXlCdWZmZXIqPiBtX2ltcGw7CiB9OwogCiBpbmxpbmUgQXJyYXlC
dWZmZXIqIHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcihWTSYgdm0sIEpTVmFsdWUgdmFsdWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkocmV2aXNp
b24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDMzICsyNSw1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSA8d3RmL1BvaXNvbmVkLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIFBvaXNvbiB7
Ci0gICAgTm90UG9pc29uZWQgPSAwLCAvLyBSZXNlcnZlZCAoYW5kIHVudXNlZCkgc28gdGhhdCBw
b2lzb24ga2V5cyBhcmUgbmV2ZXIgMC4KLQotICAgIC8vIEFkZCBuZXcgcG9pc29uIGtleXMgYmVs
b3cgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLiBUaGUgb3JkZXIgZG9lc24ndCByZWFsbHkKLSAgICAv
LyBtYXR0ZXIsIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGtlZXAgdGhlbSBpbiBhbHBoYWJldGljYWxs
eSBvcmRlciBmb3IKLSAgICAvLyBncmVhdGVyIHJlYWRhYmlsaXR5LgotICAgIEFycmF5UHJvdG90
eXBlUG9pc29uLAotICAgIENvZGVCbG9ja1BvaXNvbiwKLSAgICBEYXRlSW5zdGFuY2VQb2lzb24s
Ci0gICAgSlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLAotICAgIEpTQXJyYXlCdWZmZXJQb2lzb24s
Ci0gICAgSlNDYWxsYmFja09iamVjdFBvaXNvbiwKLSAgICBKU0dsb2JhbE9iamVjdFBvaXNvbiwK
LSAgICBKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1BvaXNvbiwKLSAgICBKU1NjcmlwdEZldGNoZXJQ
b2lzb24sCi0gICAgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiwKLSAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQb2lzb24sCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiwK
LSAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sCi0gICAgVW5saW5rZWRTb3VyY2VD
b2RlUG9pc29uLAotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCisjaW5jbHVkZSAiSlNDUG9pc29u
ZWRQdHIuaCIgLy8gbWxhbQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NQb2lzb25lZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDIzIEBAIHVpbnRwdHJfdCBnX2dsb2JhbERhdGFQb2lzb247CiB1aW50cHRyX3Qg
Z19qaXRDb2RlUG9pc29uOwogdWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAordWludHB0
cl90IEFycmF5UHJvdG90eXBlUG9pc29uOwordWludHB0cl90IENvZGVCbG9ja1BvaXNvbjsKK3Vp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247Cit1aW50cHRyX3QgSlNBUElXcmFwcGVyT2JqZWN0
UG9pc29uOwordWludHB0cl90IEpTQXJyYXlCdWZmZXJQb2lzb247Cit1aW50cHRyX3QgSlNDYWxs
YmFja09iamVjdFBvaXNvbjsKK3VpbnRwdHJfdCBKU0dsb2JhbE9iamVjdFBvaXNvbjsKK3VpbnRw
dHJfdCBKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1BvaXNvbjsKK3VpbnRwdHJfdCBKU1NjcmlwdEZl
dGNoZXJQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbjsKK3Vp
bnRwdHJfdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3Nl
bWJseU1lbW9yeVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uOwor
dWludHB0cl90IEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbjsKK3VpbnRwdHJfdCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGVQb2lzb247Cit1aW50cHRyX3QgVW5saW5rZWRTb3VyY2VDb2RlUG9pc29u
OworCiB2b2lkIGluaXRpYWxpemVQb2lzb24oKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBpbml0aWFsaXplT25jZUZsYWc7CkBAIC00MSw2ICs1OCwyMyBAQCB2b2lkIGluaXRpYWxpemVQ
b2lzb24oKQogICAgICAgICBnX2dsb2JhbERhdGFQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAg
ICAgIGdfaml0Q29kZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19uYXRpdmVDb2Rl
UG9pc29uID0gbWFrZVBvaXNvbigpOworCisgICAgICAgIEFycmF5UHJvdG90eXBlUG9pc29uID0g
bWFrZVBvaXNvbigpOworICAgICAgICBDb2RlQmxvY2tQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIERhdGVJbnN0YW5jZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNBUElX
cmFwcGVyT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FycmF5QnVmZmVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0UG9pc29uID0g
bWFrZVBvaXNvbigpOworICAgICAgICBKU0dsb2JhbE9iamVjdFBvaXNvbiA9IG1ha2VQb2lzb24o
KTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnNQb2lzb24gPSBtYWtlUG9pc29uKCk7
CisgICAgICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAg
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5
TW9kdWxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGVQ
b2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBv
aXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlUG9pc29uID0g
bWFrZVBvaXNvbigpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDIzIEBAIGV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19n
bG8KIGV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19qaXRDb2RlUG9pc29uOwog
ZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX25hdGl2ZUNvZGVQb2lzb247CiAK
K2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IENvZGVCbG9ja1BvaXNvbjsKK2V4
dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgRGF0ZUluc3RhbmNlUG9pc29uOworZXh0
ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTQXJyYXlCdWZmZXJQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTQ2FsbGJhY2tPYmplY3RQb2lz
b247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTR2xvYmFsT2JqZWN0UG9p
c29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoUGFy
YW1ldGVyc1BvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNTY3Jp
cHRGZXRjaGVyUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERB
VEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb247CitleHRlcm4gIkMiIEpTX0VY
UE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247CitleHRlcm4gIkMi
IEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbjsKK2V4dGVy
biAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9p
c29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNv
ZGVQb2lzb247CisKIHN0cnVjdCBDbGFzc0luZm87CiAKIHVzaW5nIFBvaXNvbmVkQ2xhc3NJbmZv
UHRyID0gUG9pc29uZWQ8Z19nbG9iYWxEYXRhUG9pc29uLCBjb25zdCBDbGFzc0luZm8qPjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZS5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
U2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0
aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9p
c29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IENv
bnN0RXhwclBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwgV2Vha0ltcGwq
PjsKKyAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBQb2lzb25lZDxTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKKyAgICB1c2luZyBQb2lz
b25lZFdlYWtJbXBsUHRyID0gUG9pc29uZWQ8U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29u
LCBXZWFrSW1wbCo+OwogCiAgICAgYm9vbCBpc1VzaW5nU2luZ2xlU2xvdCgpIGNvbnN0CiAgICAg
ewpAQCAtMTk4LDEzICsxOTgsMTMgQEAgcHJpdmF0ZToKICAgICBUcmFuc2l0aW9uTWFwKiBtYXAo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAg
ICAgICAgcmV0dXJuIFBvaXNvbmVkVHJhbnNpdGlvbk1hcFB0cihtX2RhdGEpLnVucG9pc29uZWQo
KTsKKyAgICAgICAgcmV0dXJuIFBvaXNvbmVkVHJhbnNpdGlvbk1hcFB0cihQcmVQb2lzb25lZCwg
bV9kYXRhKS51bnBvaXNvbmVkKCk7CiAgICAgfQogCiAgICAgV2Vha0ltcGwqIHdlYWtJbXBsKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAgICAg
ICAgcmV0dXJuIFBvaXNvbmVkV2Vha0ltcGxQdHIobV9kYXRhICYgflVzaW5nU2luZ2xlU2xvdEZs
YWcpLnVucG9pc29uZWQoKTsKKyAgICAgICAgcmV0dXJuIFBvaXNvbmVkV2Vha0ltcGxQdHIoUHJl
UG9pc29uZWQsIG1fZGF0YSAmIH5Vc2luZ1NpbmdsZVNsb3RGbGFnKS51bnBvaXNvbmVkKCk7CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRNYXAoVHJhbnNpdGlvbk1hcCogbWFwKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAkocmV2aXNpb24gMjI2Nzg0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsNyArMTE4LDggQEAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+
IGNyZWF0ZQogICAgICAgICBpZiAoIUNvbnRleHQ6OnVzZUZhc3RUTFMoKSkgewogICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBqc09mZnNldCksIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0SW5zdGFuY2VHUFIs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZQb2lzb25lZEluc3RhbmNlKCkpLCB3YXNt
Q29udGV4dEluc3RhbmNlR1BSKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KG1ha2VDb25zdEV4cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9p
c29uKSksIHNjcmF0Y2hSZWcpOworLy8gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW02NChtYWtlQ29uc3RFeHByUG9pc29uKEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBv
aXNvbikpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiksIHNjcmF0Y2hSZWcpOwog
ICAgICAgICAgICAgaml0LnhvcjY0KHNjcmF0Y2hSZWcsIHdhc21Db250ZXh0SW5zdGFuY2VHUFIp
OwogICAgICAgICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL1dURi93dGYvQmFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvQmFnLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL0JhZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1l
IFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9oZWFkIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxh
dGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJU
cmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNv
bmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2lu
ZyBQb2lzb25lZEJhZyA9IEJhZzxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFBy
aXZhdGU6OkJhZ05vZGU8VD4+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBU
PgordXNpbmcgUG9pc29uZWRCYWcgPSBCYWc8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBQcml2
YXRlOjpCYWdOb2RlPFQ+Pj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9Qb2lzb25lZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVk
LmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDM3ICszMiw2IEBACiAjZGVmaW5lIEVOQUJMRV9QT0lTT04gMQogI2Rl
ZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCi0vLyBPbGRlciB2ZXJzaW9ucyBvZiBnY2Mg
YW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBpbiBidWlsZCBmYWlsdXJlcwotLy8g
d2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFrZSBhbiBhcmd1bWVudCBvZiBQb2lz
b25lZEltcGw8SzIsIGsyLCBUMj4KLS8vIHdoZW4gdGhlIEtleVR5cGUgaXMgYSB1aW50cHRyX3Qg
KGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQgdmFyaWFudAotLy8gb2YgUG9pc29u
ZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3QgZm9yIHRoZSBDb25zdEV4cHJQb2lz
b25lZCB2YXJpYW50LgotLy8gSW4gcHJhY3RpY2UsIHdlIHdpbGwgbGlrZWx5IG9ubHkgdXNlIHRo
ZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRoZQotLy8gQ29uc3RFeHByUG9pc29u
ZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBhIHNob3cgc3RvcHBlci4KLS8vIFRo
YXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gYWNjb3JkaW5nbHkgc28g
dGhhdCB3ZSBjYW4gdXNlCi0vLyBpdCB0byBkaXNhYmxlIHRoZSBhZmZlY3RlZCB0ZXN0cyB3aGVu
IGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KLQotI2lmIE9TKERBUldJTikKLSNkZWZpbmUg
RU5BQkxFX01JWEVEX1BPSVNPTiAoX19jbGFuZ19tYWpvcl9fID49IDkpCi0jZWxpZiBkZWZpbmVk
KF9fY2xhbmdfbWFqb3JfXykKLSNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiAoX19jbGFuZ19t
YWpvcl9fID49IDQpCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotI2luY2x1ZGUgPGZlYXR1cmVz
Lmg+Ci0jZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gKF9fR05VQ19QUkVSRVEoNywgMikpCi0j
ZW5kaWYgLy8gIWRlZmluZWQoX19HTlVDX18pCi0KLSNpZm5kZWYgRU5BQkxFX01JWEVEX1BPSVNP
TgotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIDAgLy8gRGlzYWJsZSBmb3IgZXZlcnl0aGlu
ZyBlbHNlLgotI2VuZGlmCi0KLS8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQg
b3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9ydCku
Ci0vLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KLSNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBP
UyhXSU5ET1dTKQotI3VuZGVmIEVOQUJMRV9QT0lTT04KLSNkZWZpbmUgRU5BQkxFX1BPSVNPTiAw
Ci0jdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCi0jZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNT
RVJUUyAwCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdURiB7CiAKIHVzaW5nIFBvaXNvbmVkQml0cyA9
IHVpbnRwdHJfdDsKQEAgLTg4LDMwICs1NywzMyBAQCBhc1JlZmVyZW5jZShUIHB0cikgeyByZXR1
cm4gKnB0cjsgfQogCiB9IC8vIG5hbWVzcGFjZSBQb2lzb25lZEltcGxIZWxwZXIKIAotLy8gRklY
TUU6IG9uY2Ugd2UgaGF2ZSBDKysxNywgd2UgY2FuIG1ha2UgdGhlIGtleSBvZiB0eXBlIGF1dG8g
YW5kIHJlbW92ZSB0aGUgbmVlZCBmb3IgS2V5VHlwZS4KLXRlbXBsYXRlPHR5cGVuYW1lIEtleVR5
cGUsIEtleVR5cGUga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8
c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+Ci1jbGFzcyBQb2lzb25lZEltcGwgeworZW51bSBQ
cmVQb2lzb25lZFRhZyB7IFByZVBvaXNvbmVkIH07CisKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5
LCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVy
PFQ+Ojp2YWx1ZT4+CitjbGFzcyBQb2lzb25lZCB7CiBwdWJsaWM6Ci0gICAgUG9pc29uZWRJbXBs
KCkgeyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUG9pc29uZWQgPSB0cnVlOworCisg
ICAgUG9pc29uZWQoKSB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChzdGQ6Om51bGxwdHJfdCkgeyB9
CisgICAgUG9pc29uZWQoc3RkOjpudWxscHRyX3QpIHsgfQogCi0gICAgUG9pc29uZWRJbXBsKFQg
cHRyKQorICAgIFBvaXNvbmVkKFQgcHRyKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNv
bihwdHIpKQogICAgIHsgfQogCi0gICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbCYp
ID0gZGVmYXVsdDsKKyAgICBQb2lzb25lZChjb25zdCBQb2lzb25lZCYpID0gZGVmYXVsdDsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgUG9pc29u
ZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIpCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQ
b2lzb25lZD4+CisgICAgUG9pc29uZWQoY29uc3QgT3RoZXImIG90aGVyKQogICAgICAgICA6IG1f
cG9pc29uZWRCaXRzKHBvaXNvbjxUPihvdGhlci51bnBvaXNvbmVkKCkpKQogICAgIHsgfQogCi0g
ICAgUG9pc29uZWRJbXBsKFBvaXNvbmVkSW1wbCYmIG90aGVyKQorICAgIFBvaXNvbmVkKFBvaXNv
bmVkJiYgb3RoZXIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMoV1RGTW92ZShvdGhlci5tX3Bv
aXNvbmVkQml0cykpCiAgICAgeyB9CiAKLSAgICBleHBsaWNpdCBQb2lzb25lZEltcGwoUG9pc29u
ZWRCaXRzIHBvaXNvbmVkQml0cykKKyAgICBleHBsaWNpdCBQb2lzb25lZChQcmVQb2lzb25lZFRh
ZywgUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhw
b2lzb25lZEJpdHMpCiAgICAgeyB9CiAKQEAgLTE0MywxMiArMTE1LDEyIEBAIHB1YmxpYzoKICAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3BvaXNvbmVkQml0czsgfQogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcG9pc29uZWRCaXRz
OyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7
IHJldHVybiBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOyB9Ci0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25l
ZEJpdHMgIT0gYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBv
aXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29u
ZWRCaXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29u
c3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPD0gYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJv
b2wgb3BlcmF0b3I+KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lz
b25lZEJpdHMgPiBiLm1fcG9pc29uZWRCaXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0
IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPj0gYi5tX3Bv
aXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZCYgYikgY29u
c3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25l
ZEJpdHMgIT0gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBv
aXNvbmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8IGIubV9wb2lzb25lZEJp
dHM7IH0KKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pc29uZWRCaXRzIDw9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJh
dG9yPihjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPiBi
Lm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBvaXNvbmVkJiBi
KSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+PSBiLm1fcG9pc29uZWRCaXRzOyB9CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPT0oVSBiKSBjb25zdCB7IHJl
dHVybiB1bnBvaXNvbmVkPFU+KCkgPT0gYjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgb3BlcmF0b3IhPShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSAhPSBiOyB9
CkBAIC0xNTcsMzMgKzEyOSw0MSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcj4oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPiBiOyB9
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj49KFUgYikgY29uc3QgeyBy
ZXR1cm4gdW5wb2lzb25lZDxVPigpID49IGI7IH0KIAotICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0
b3I9KFQgcHRyKQorICAgIFBvaXNvbmVkJiBvcGVyYXRvcj0oVCBwdHIpCiAgICAgewogICAgICAg
ICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQotICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0g
ZGVmYXVsdDsKKyAgICBQb2lzb25lZCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkJikgPSBkZWZh
dWx0OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KLSAg
ICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4m
IG90aGVyKQorICAgIFBvaXNvbmVkJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpCisgICAgewor
ICAgICAgICBjbGVhcigpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6
aXNQb2lzb25lZD4+CisgICAgUG9pc29uZWQmIG9wZXJhdG9yPShjb25zdCBPdGhlciYgb3RoZXIp
CiAgICAgewogICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbjxUPihvdGhlci51bnBvaXNv
bmVkKCkpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdm9pZCBzd2FwKFBv
aXNvbmVkSW1wbCYgbykKKyAgICB2b2lkIHN3YXAoUG9pc29uZWQmIG90aGVyKQogICAgIHsKLSAg
ICAgICAgc3RkOjpzd2FwKG1fcG9pc29uZWRCaXRzLCBvLm1fcG9pc29uZWRCaXRzKTsKKyAgICAg
ICAgc3RkOjpzd2FwKG1fcG9pc29uZWRCaXRzLCBvdGhlci5tX3BvaXNvbmVkQml0cyk7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KLSAgICB2
b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvKQorICAgIHZvaWQgc3dhcChzdGQ6
Om51bGxwdHJfdCkgeyBjbGVhcigpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwg
dHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BvaXNvbmVkPj4KKyAgICB2b2lk
IHN3YXAoT3RoZXImIG90aGVyKQogICAgIHsKICAgICAgICAgVCB0MSA9IHRoaXMtPnVucG9pc29u
ZWQoKTsKLSAgICAgICAgVDIgdDIgPSBvLnVucG9pc29uZWQoKTsKKyAgICAgICAgVCB0MiA9IG90
aGVyLnVucG9pc29uZWQoKTsKICAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CiAgICAgICAgIG1f
cG9pc29uZWRCaXRzID0gcG9pc29uKHQxKTsKLSAgICAgICAgbyA9IHQyOworICAgICAgICBvdGhl
ci5tX3BvaXNvbmVkQml0cyA9IE90aGVyOjpwb2lzb24odDIpOwogICAgIH0KIAogICAgIHZvaWQg
c3dhcChUJiB0MikKQEAgLTIxNiw2OSArMTk2LDMzIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAg
IFBvaXNvbmVkQml0cyBtX3BvaXNvbmVkQml0cyB7IDAgfTsKLX07CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUg
VDI+Ci1pbmxpbmUgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgUG9pc29u
ZWRJbXBsPEsyLCBrMiwgVDI+JiBiKQotewotICAgIGEuc3dhcChiKTsKLX0KKyAgICB0ZW1wbGF0
ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZDsK
K307CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDE+Ci1pbmxpbmUg
dm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgVDEmIGIpCit0ZW1wbGF0ZTx1
aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSB2b2lkIHN3YXAo
UG9pc29uZWQ8a2V5LCBUPiYgYSwgVSYgYikKIHsKICAgICBhLnN3YXAoYik7CiB9CiAKIFdURl9F
WFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVBvaXNvbigpOwogCi0jaWYgRU5BQkxFKFBPSVNP
TikKLS8vIEZJWE1FOiBvbmNlIHdlIGhhdmUgQysrMTcsIHdlIGNhbiBtYWtlIHRoaXMgYSBsYW1i
ZGEgaW4gbWFrZUNvbnN0RXhwclBvaXNvbigpLgotaW5saW5lIGNvbnN0ZXhwciB1aW50cHRyX3Qg
Y29uc3RFeHByUG9pc29uUmFuZG9tKHVpbnRwdHJfdCBzZWVkKQotewotICAgIHVpbnRwdHJfdCBy
ZXN1bHQxID0gc2VlZCAqIDY5MDY5NjkwNjkgKyAxMjM0NTY3OwotICAgIHVpbnRwdHJfdCByZXN1
bHQyID0gc2VlZCAqIDgyNTM3MjkgKyAyMzk2NDAzOwotICAgIHJldHVybiAocmVzdWx0MSA8PCAz
KSBeIChyZXN1bHQyIDw8IDE2KTsKLX0KLSNlbmRpZgotCi1pbmxpbmUgY29uc3RleHByIHVpbnRw
dHJfdCBtYWtlQ29uc3RFeHByUG9pc29uKHVpbnQzMl90IGtleSkKLXsKLSNpZiBFTkFCTEUoUE9J
U09OKQotICAgIHVpbnRwdHJfdCBwb2lzb24gPSBjb25zdEV4cHJQb2lzb25SYW5kb20oa2V5KTsK
LSAgICBwb2lzb24gJj0gfihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZmZmZikgPDwgNDgpOyAv
LyBFbnN1cmUgdGhhdCBwb2lzb25lZCBiaXRzIGxvb2sgbGlrZSBhIHBvaW50ZXIuCi0gICAgcG9p
c29uIHw9ICgxIDw8IDIpOyAvLyBFbnN1cmUgdGhhdCBwb2lzb25lZCBiaXRzIGNhbm5vdCBiZSAw
LgotICAgIHJldHVybiBwb2lzb247Ci0jZWxzZQotICAgIHJldHVybiAodm9pZClrZXksIDA7Ci0j
ZW5kaWYKLX0KLQogdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OwotCi10ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBDb25zdEV4cHJQb2lzb25lZCA9IFBvaXNv
bmVkSW1wbDx1aW50cHRyX3QsIG1ha2VDb25zdEV4cHJQb2lzb24oa2V5KSwgVD47Ci0KLXRlbXBs
YXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0
clRyYWl0cyB7Ci0gICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBDb25zdEV4cHJQb2lzb25lZDxrZXks
IFQqPjsKK3N0cnVjdCBQb2lzb25lZFB0clRyYWl0cyB7CisgICAgdXNpbmcgU3RvcmFnZVR5cGUg
PSBQb2lzb25lZDxrZXksIFQqPjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIFU+IHN0YXRpYyBBTFdB
WVNfSU5MSU5FIFQqIGV4Y2hhbmdlKFN0b3JhZ2VUeXBlJiBwdHIsIFUmJiBuZXdWYWx1ZSkgeyBy
ZXR1cm4gcHRyLmV4Y2hhbmdlKG5ld1ZhbHVlKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
SzEsIEsxIGsxLCB0eXBlbmFtZSBUMT4KLSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3
YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBUMSYgYikgeyBhLnN3YXAoYik7IH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIEsy
LCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzd2Fw
KFBvaXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBi
KSB7IGEuc3dhcChiKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyPgorICAgIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25lZDxrZXksIFQqPiYgYSwgT3RoZXImIGIp
IHsgYS5zd2FwKGIpOyB9CiAKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBUKiB1bndyYXAoY29u
c3QgU3RvcmFnZVR5cGUmIHB0cikgeyByZXR1cm4gcHRyLnVucG9pc29uZWQoKTsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6Q29uc3RFeHByUG9pc29uZWQ7Cit1c2lu
ZyBXVEY6OlByZVBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9p
c29uZWRCaXRzOwotdXNpbmcgV1RGOjptYWtlQ29uc3RFeHByUG9pc29uOwogdXNpbmcgV1RGOjpt
YWtlUG9pc29uOwpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWRVbmlxdWVQdHIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCShyZXZpc2lvbiAy
MjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiwxMSArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHVp
bnQzMl90IGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KLWNsYXNzIFBv
aXNvbmVkVW5pcXVlUHRyIDogcHVibGljIENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+IHsKK3Rl
bXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFibGUgPSB2b2lk
PgorY2xhc3MgUG9pc29uZWRVbmlxdWVQdHIgOiBwdWJsaWMgUG9pc29uZWQ8a2V5LCBUKj4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVzaW5nIEJhc2UgPSBDb25zdEV4cHJQ
b2lzb25lZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0gUG9pc29uZWQ8a2V5LCBUKj47CiBw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUG9pc29uZWRVbmlxdWVQdHIgPSB0
cnVlOworICAgIHVzaW5nIFZhbHVlVHlwZSA9IFQ7CisKICAgICBQb2lzb25lZFVuaXF1ZVB0cigp
ID0gZGVmYXVsdDsKICAgICBQb2lzb25lZFVuaXF1ZVB0cihzdGQ6Om51bGxwdHJfdCkgOiBCYXNl
KCkgeyB9CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoVCogcHRyKSA6IEJhc2UocHRyKSB7IH0KQEAg
LTQ4LDggKzUxLDggQEAgcHVibGljOgogICAgICAgICA6IEJhc2UodW5pcXVlLnJlbGVhc2UoKSkK
ICAgICB7IH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtleTIsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8VCwgVT46OnZhbHVlPj4KLSAg
ICBQb2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBVPiYmIHB0cikKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90
aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0ZDo6aXNfYmFzZV9vZjxULCB0eXBlbmFtZSBP
dGhlcjo6VmFsdWVUeXBlPjo6dmFsdWU+PgorICAgIFBvaXNvbmVkVW5pcXVlUHRyKE90aGVyJiYg
cHRyKQogICAgICAgICA6IEJhc2UocHRyLnVucG9pc29uZWQoKSkKICAgICB7CiAgICAgICAgIHB0
ci5jbGVhcldpdGhvdXREZXN0cm95KCk7CkBAIC04OSw4ICs5Miw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtleTIsIHR5
cGVuYW1lIFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8VCwg
VT46OnZhbHVlPj4KLSAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KFBvaXNvbmVkVW5p
cXVlUHRyPGtleTIsIFU+JiYgcHRyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3Rk
Ojppc19iYXNlX29mPFQsIHR5cGVuYW1lIE90aGVyOjpWYWx1ZVR5cGU+Ojp2YWx1ZT4+CisgICAg
UG9pc29uZWRVbmlxdWVQdHImIG9wZXJhdG9yPShPdGhlciYmIHB0cikKICAgICB7CiAgICAgICAg
IEFTU0VSVCh0aGlzID09IHN0YXRpY19jYXN0PHZvaWQqPigmcHRyKSB8fCB0aGlzLT51bnBvaXNv
bmVkKCkgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGlmIChMSUtFTFkodGhpcyAhPSBz
dGF0aWNfY2FzdDx2b2lkKj4oJnB0cikpKSB7CkBAIC0xMjIsMjggKzEyNSwzMSBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBjbGVhcldpdGhvdXREZXN0cm95KCkgeyBCYXNlOjpjbGVhcigpOyB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50MzJfdCwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3Mg
UG9pc29uZWRVbmlxdWVQdHI7CisgICAgdGVtcGxhdGU8dWludHB0cl90JiwgdHlwZW5hbWUsIHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI7CiB9OwogCi10ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cywgdHlwZW5hbWUg
RW5hYmxlID0gdm9pZD4KK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0eXBl
bmFtZS4uLiBBcmd1bWVudHMsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CiBQb2lzb25lZFVuaXF1
ZVB0cjxrZXksIFQ+IG1ha2VQb2lzb25lZFVuaXF1ZShBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CiB7CiAgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVD46OmNyZWF0ZShzdGQ6OmZv
cndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKIH0KIAotdGVtcGxhdGU8dWludDMyX3Qg
a2V5LCB0eXBlbmFtZSBUPgotY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUW10+IDogcHVi
bGljIENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+IHsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5
LCB0eXBlbmFtZSBUPgorY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUW10+IDogcHVibGlj
IFBvaXNvbmVkPGtleSwgVCo+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICB1
c2luZyBCYXNlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj47CisgICAgdXNpbmcgQmFzZSA9
IFBvaXNvbmVkPGtleSwgVCo+OwogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c1BvaXNvbmVkVW5pcXVlUHRyID0gdHJ1ZTsKKyAgICB1c2luZyBWYWx1ZVR5cGUgPSBUW107CisK
ICAgICBQb2lzb25lZFVuaXF1ZVB0cigpID0gZGVmYXVsdDsKICAgICBQb2lzb25lZFVuaXF1ZVB0
cihzdGQ6Om51bGxwdHJfdCkgOiBCYXNlKCkgeyB9CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoVCog
cHRyKSA6IEJhc2UocHRyKSB7IH0KICAgICBQb2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1
ZVB0ciYmIHB0cikgOiBCYXNlKFdURk1vdmUocHRyKSkgeyBwdHIuY2xlYXJXaXRob3V0RGVzdHJv
eSgpOyB9CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoc3RkOjp1bmlxdWVfcHRyPFRbXT4mJiB1bmlx
dWUpIDogUG9pc29uZWRVbmlxdWVQdHIodW5pcXVlLnJlbGVhc2UoKSkgeyB9CiAKLSAgICB0ZW1w
bGF0ZTx1aW50MzJfdCBrZXkyPgotICAgIFBvaXNvbmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVl
UHRyPGtleTIsIFRbXT4mJiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVu
YW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZFVuaXF1ZVB0ciAmJiBzdGQ6
OmlzX3NhbWU8VFtdLCB0eXBlbmFtZSBPdGhlcjo6VmFsdWVUeXBlPjo6dmFsdWU+PgorICAgIFBv
aXNvbmVkVW5pcXVlUHRyKE90aGVyJiYgcHRyKQogICAgICAgICA6IEJhc2UocHRyLnVucG9pc29u
ZWQoKSkKICAgICB7CiAgICAgICAgIHB0ci5jbGVhcldpdGhvdXREZXN0cm95KCk7CkBAIC0xNzgs
OCArMTg0LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KLSAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9
KFBvaXNvbmVkVW5pcXVlUHRyPGtleTIsIFRbXT4mJiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZFVu
aXF1ZVB0ciAmJiBzdGQ6OmlzX3NhbWU8VFtdLCB0eXBlbmFtZSBPdGhlcjo6VmFsdWVUeXBlPjo6
dmFsdWU+PgorICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0oT3RoZXImJiBwdHIpCiAg
ICAgewogICAgICAgICBBU1NFUlQodGhpcyA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oJnB0cikgfHwg
dGhpcy0+dW5wb2lzb25lZCgpICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBpZiAoTElL
RUxZKHRoaXMgIT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpKSkgewpAQCAtMjExLDEwICsyMTcs
MTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJXaXRob3V0RGVzdHJveSgpIHsgQmFzZTo6
Y2xlYXIoKTsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3QsIHR5cGVuYW1lLCB0eXBlbmFtZT4g
ZnJpZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOworICAgIHRlbXBsYXRlPHVpbnRwdHJfdCYs
IHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOwogfTsK
IAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVu
dHM+Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJn
dW1lbnRzPgogUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUW10+IG1ha2VQb2lzb25lZFVuaXF1ZShz
aXplX3QgY291bnQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKIHsKICAgICByZXR1cm4gUG9p
c29uZWRVbmlxdWVQdHI8a2V5LCBUW10+OjpjcmVhdGUoY291bnQsIHN0ZDo6Zm9yd2FyZDxBcmd1
bWVudHM+KGFyZ3VtZW50cykuLi4pOwpJbmRleDogU291cmNlL1dURi93dGYvUmVmLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJj
ZS9XVEYvd3RmL1JlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsMTAgKzI1NiwxMCBAQCBpbmxp
bmUgYm9vbCBpcyhjb25zdCBSZWY8QXJnVHlwZSwgUHRyVHJhCiAgICAgcmV0dXJuIGlzPEV4cGVj
dGVkVHlwZT4oc291cmNlLmdldCgpKTsKIH0KIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50
cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1w
bGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25lZFJlZiA9IFJlZjxU
LCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKK3RlbXBsYXRlPHVpbnRwdHJf
dCYga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRSZWYgPSBSZWY8VCwgUG9pc29uZWRQ
dHJUcmFpdHM8a2V5LCBUPj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9S
ZWZDb3VudGVkQXJyYXkuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvUmVm
Q291bnRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAg
IGlmICghc2l6ZSkgewotICAgICAgICAgICAgbV9kYXRhID0gMDsKKyAgICAgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTAsNyAr
OTAsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVmQ291bnRlZEFycmF5KGNvbnN0IFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIpCiAgICAgewogICAg
ICAgICBpZiAob3RoZXIuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBtX2RhdGEgPSAwOworICAg
ICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICAKQEAgLTIzOCwxMCArMjM4LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUg
UHRyVHJhaXRzOjpTdG9yYWdlVHlwZSBtX2RhdGEgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0
ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRy
YWl0czsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29u
ZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5n
IFBvaXNvbmVkUmVmQ291bnRlZEFycmF5ID0gUmVmQ291bnRlZEFycmF5PFQsIENvbnN0RXhwclBv
aXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVu
YW1lIFQ+Cit1c2luZyBQb2lzb25lZFJlZkNvdW50ZWRBcnJheSA9IFJlZkNvdW50ZWRBcnJheTxU
LCBQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1JlZlB0ci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjc2LDEwICsyNzYsMTAgQEAgaW5saW5lIGJvb2wgaXMoY29uc3Qg
UmVmUHRyPEFyZ1R5cGUsIFB0cgogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJjZS5n
ZXQoKSk7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IENv
bnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVu
YW1lIFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5
LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWRSZWZQdHIgPSBSZWZQdHI8VCwgQ29uc3RFeHBy
UG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlw
ZW5hbWUgVD4KK3VzaW5nIFBvaXNvbmVkUmVmUHRyID0gUmVmUHRyPFQsIFBvaXNvbmVkUHRyVHJh
aXRzPGtleSwgVD4+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dURi93
dGYvV1RGQXNzZXJ0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGQXNz
ZXJ0aW9ucy5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1dURkFzc2Vy
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwzOSArMzUsOSBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogbmFtZXNwYWNlIHsKIHN0cnVjdCBEdW1teVN0cnVjdCB7IH07Ci1jb25zdCB1aW50MzJf
dCBkdW1teVBvaXNvbiA9IDB4ZmZmZjsKK3VpbnRwdHJfdCBkdW1teVBvaXNvbiA9IDA7CiB9CiAK
LSNpZiBFTkFCTEUoUE9JU09OKQotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24o
MSkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsK
LXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMCkgPj4gNDgpLCAicG9pc29u
ZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKLXN0YXRpY19hc3NlcnQoISht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxv
b2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNv
bigxMDAwMCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRl
ci4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApID4+IDQ4
KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNf
YXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSA+PiA0OCksICJwb2lzb25l
ZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotCi1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEpID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0
cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtl
Q29uc3RFeHByUG9pc29uKDEwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRz
IHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRz
IHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0
cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtl
Q29uc3RFeHByUG9pc29uKDEwMDAwMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQg
Yml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9p
c29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci0KLXN0YXRpY19h
c3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMSkgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5
cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMCkgJiAw
eDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtl
Q29uc3RFeHByUG9pc29uKDEwMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0
LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMCkgJiAweDQpLCAi
Yml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RF
eHByUG9pc29uKDEwMDAwMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIp
Owotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSAmIDB4NCks
ICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLQotc3RhdGljX2Fzc2VydCghKG1ha2VD
b25zdEV4cHJQb2lzb24oMSkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRz
IGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEo
bWFrZUNvbnN0RXhwclBvaXNvbigxMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1l
bnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fz
c2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAy
IGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1z
dGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMCkgJiAweDMpLCAiZW5zdXJl
IGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJp
dHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSAmIDB4
MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNl
IGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDB4
ZmZmZmZmZmYpICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZh
aWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotI2VuZGlmIC8vIEVOQUJMRShQT0lTT04p
Ci0KIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEJhZzxEdW1teVN0cnVjdD4pID09IHNpemVvZih2b2lk
KiksICIiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkQmFnPGR1bW15UG9pc29uLCBE
dW1teVN0cnVjdD4pID09IHNpemVvZih2b2lkKiksICIiKTsKIApJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw2IEBAIHNldChUZXN0
V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFy
aXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dU
Ri9Db25jdXJyZW50UHRySGFzaFNldC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvQ29uZGl0aW9uLmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9D
b25zdEV4cHJQb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYv
Q3Jvc3NUaHJlYWRUYXNrLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9E
YXRlTWF0aC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGVxdWUuY3Bw
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTc2NSw3ICs3NjUsNiBAQAogCQlGRTA1RkFFQzFGREI1MTBBMDAwOTMy
MzAgLyogUG9pc29uZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUwNUZBRUIxRkRCNTEwMjAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCAq
LzsgfTsKIAkJRkUwNUZBRUQxRkRCNTEwRTAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmUHRyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVBMUZE
QjUxMDEwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5jcHAgKi87IH07CiAJCUZFMDVGQUVGMUZF
MDY0NUIwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQu
Y3BwICovOyB9OwotCQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29u
ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUw
NUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsgfTsKIAkJ
RkUwNUZCMDYxRkU4NEZCNzAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQjA1MUZFODRGQUUw
MDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgKi87IH07CiAJCUZFQzhGNEU3MUZFOUM5
MDUwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFy
cmF5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUM4RjRFNjFGRTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlE
ZXN0cnVjdGlibGVBcnJheXMuY3BwICovOyB9OwogCQlGRUM4RjRFQjFGRTlGNUFGMDA1NkZEOEEg
LyogUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDOEY0RUEx
RkU5RjVBNzAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1
Y3RpYmxlQXJyYXlzLmNwcCAqLzsgfTsKQEAgLTE4ODEsNyArMTg4MCw2IEBACiAJCUZFMDVGQUVB
MUZEQjUxMDEwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZFJlZlB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFMDVGQUVCMUZEQjUxMDIwMDA5MzIzMCAvKiBQb2lzb25lZFJlZi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZFJlZi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQ
b2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25l
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMDVGQUYwMUZFMDhDQ0QwMDA5
MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDb25zdEV4cHJQb2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFMDVGQjA1MUZFODRGQUUwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZFVuaXF1ZVB0ci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQjZGNzRFMUIyQkE0NEUwMDlFNDky
MiAvKiBOYWtlZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
YWtlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzhGNEU2MUZFOUM4
REUwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFy
cmF5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZFVu
aXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yNjU0LDcgKzI2NTIsNiBAQAogCQkJCUE3QTk2NkRBMTQwRUNDQzgw
MDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTBGMzBD
QjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCiAJCQkJ
MEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCi0JCQkJRkUwNUZB
RjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLywKIAkJCQk1MTcx
NEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLywKIAkJCQkyNkEy
QzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJN0FBMDIxQkExQUIw
OUVBNzAwNTI5NTNGIC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTMyMjEsNyArMzIxOCw2IEBACiAJ
CQkJN0M4M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMgLyogQ29u
Y3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQzMxRDBBNTkw
QzAwRkVCQ0YzIC8qIENvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTA1RkFGMTFG
RTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RFQTYxRDBBNTkwQzAwRkVCQ0YzIC8qIENvdW50ZXJzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERUE5MUQwQTU5MEMwMEZFQkNGMyAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERUFEMUQwQTU5MEMwMEZFQkNGMyAvKiBEZXF1ZS5jcHAgaW4gU291cmNl
cyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNv
bmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25z
dEV4cHJQb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDM4
NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJSZWZMb2dnZXIuaCIKLSNpbmNs
dWRlIDx3dGYvUG9pc29uZWQuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0
aWMgY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLXN0YXRpYyBjb25zdCB1aW50MzJf
dCBQb2lzb25CID0gMHhiYmJiOwotCi0vLyBGb3IgdGhlc2UgdGVzdHMsIHdlIG5lZWQgYSBiYXNl
IGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZvciB0aGlzIHB1cnBvc2UsCi0vLyB3ZSByZXVz
ZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVmTG9nZ2VyIGNsYXNzZXMuCi0KLVRFU1QoV1RG
X0NvbnN0RXhwclBvaXNvbmVkLCBCYXNpYykKLXsKLSAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEi
KTsKLQotICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IGVtcHR5Owot
ICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsICYqcHRyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOwotCi0j
aWYgRU5BQkxFKFBPSVNPTikKLSAgICAgICAgdWludHB0cl90IHB0ckJpdHM7Ci0gICAgICAgIHN0
ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwotICAgICAgICBBU1NF
UlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0jaWYgRU5B
QkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRfVFJVRSgoQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKLSNlbmRpZgot
I2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCi0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotCi0gICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51
bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0K
LSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAx
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29u
ZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0g
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAg
IHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAm
YTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RG
TW92ZShwMSkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51
bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRz
KCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZM
b2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMiA9IHAxOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwMyA9IHAxOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0
cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9n
Z2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyLmNsZWFyKCk7Ci0gICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci19Ci0KLVRF
U1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3NpZ25tZW50KQotewotICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOwotICAgIFJlZkxvZ2dlciBiKCJiIik7Ci0gICAgRGVyaXZlZFJlZkxvZ2dl
ciBjKCJjIik7Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBw
MjsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NF
UlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBwMyA9IHA0OwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0
cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIgPSAmYjsKLSAgICAgICAgQVNTRVJUX0VR
KCZiLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0ciA9IG51bGxwdHI7Ci0gICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0KLSAgICB7Ci0g
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YiwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IFdU
Rk1vdmUocDQpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVk
KCkpOwotICAgICAgICBwMSA9IHAyOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZjLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IHA0OwotICAgICAgICBBU1NFUlRf
RVEoJmMsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0g
ICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBw
dHIgPSAmYzsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9
Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxv
Z2dlcio+IHAyKCZjKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAxID0gV1RG
TW92ZShwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9p
c29uZWQoKSk7Ci0gICAgICAgIHAzID0gV1RGTW92ZShwNCk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YywgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVk
KCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7
Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0ciA9
IHB0cjsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0K
LSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0jaWYgQ09N
UElMRVIoQ0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgotI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgotI2VuZGlmCi0gICAgICAgIHB0ciA9IFdU
Rk1vdmUocHRyKTsKLSNpZiBDT01QSUxFUihDTEFORykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKLSNlbmRpZgotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwot
ICAgIH0KLX0KLQotVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFN3YXApCi17Ci0gICAgUmVm
TG9nZ2VyIGEoImEiKTsKLSAgICBSZWZMb2dnZXIgYigiYiIpOwotCi0gICAgewotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIHAxLnN3YXAocDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIs
IHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgp
KTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZi
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NF
UlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzLnN3YXAocDQpOwotICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIu
Yml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0g
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwotICAgICAgICBBU1NF
UlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgc3dhcChwMSwgcDIpOwotICAgICAgICBBU1NFUlRfRVEo
JmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0
KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBB
U1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHN3YXAocDMsIHA0KTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9
IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkp
OwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAg
ICAgIFJlZkxvZ2dlciogcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIpOwotICAgICAgICBzd2FwKHAxLCBwMik7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMik7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KHAyKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIFJlZkxvZ2dlciog
cDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYiwgcDIpOwotICAgICAgICBwMS5zd2FwKHAyKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyKTsKLQot
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
cDIpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dlcikKLXsKLSAgICByZXR1cm4g
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmxvZ2dlcik7Ci19Ci0KLVRF
U1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBSZXR1cm5WYWx1ZSkKLXsKLSAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKLQotICAgIHsKLSAgICAgICAgYXV0byBwdHIgPSBwb2lzb25lZFB0ckZv
byhhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCAmKnB0cik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5u
YW1lKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAkocmV2aXNpb24gMjI2
Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MiwxMSArOTIsOSBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQog
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CiAgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0xMDYs
MTEgKzEwNCw5IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0g
cDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CiAgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAz
LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0xMjAsMTMgKzExNiwxMSBAQCBU
RVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAK
LSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMyA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9
CiAKICAgICB7CkBAIC0xMzYsMTYgKzEzMCwxMyBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMp
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09O
KQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOwog
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAz
KSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNT
RVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9QT0lT
T04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDIgPSBwMTsKQEAgLTE1Nyw5ICsxNDgsNyBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMp
CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CiAgICAgfQotI2VuZGlmCiAKLSNpZiBFTkFC
TEUoTUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
RGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CkBAIC0xNzMsNyArMTYyLDYgQEAgVEVT
VChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAg
IH0KLSNlbmRpZgogCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwdHIoJmEpOwpAQCAtMjAwLDcgKzE4OCw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBB
c3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1J
WEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDMoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgm
Yik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKQEAgLTIwOSw3ICsx
OTYsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotI2Vu
ZGlmCiAgICAgfQogCiAgICAgewpAQCAtMjM2LDcgKzIyMiw2IEBAIFRFU1QoV1RGX1BvaXNvbmVk
LCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxF
KE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBw
NCgmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKQEAgLTI0NSwx
MCArMjMwLDggQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
LSNlbmRpZgogICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CiAgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CkBAIC0yNjgs
NyArMjUxLDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VS
VF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CiAgICAgfQotI2VuZGlmCiAKICAgICB7CiAgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CkBAIC0yNzcsNyArMjU5LDYgQEAg
VEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywgcHRy
LnVucG9pc29uZWQoKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7
CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKICAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsK
QEAgLTI5Nyw3ICsyNzgsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShw
My5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHsKICAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKQEAgLTMzOSw3ICsz
MTksNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKIAogICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgIT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zNTEsNyArMzMwLDYgQEAgVEVTVChXVEZf
UG9pc29uZWQsIFN3YXApCiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRz
KCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAK
ICAgICB7CkBAIC0zNTksMTcgKzMzNywxMiBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKICAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDIudW5wb2lzb25lZCgpKTsKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBzd2Fw
KHAxLCBwMik7Ci0jZWxzZQotICAgICAgICBzdGQ6OnN3YXAocDEsIHAyKTsKLSNlbmRpZgogICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDIudW5wb2lzb25lZCgpKTsKIAogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0g
cDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAz
LnVucG9pc29uZWQoKSk7CkBAIC0zODEsMTAgKzM1NCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBT
d2FwKQogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCi0jaWYgRU5BQkxF
KE1JWEVEX1BPSVNPTikKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKICAgICAgICAgUmVmTG9nZ2VyKiBwMigmYik7CkBAIC00MDgsNyAr
Mzc5LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAKICAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7CiAgICAgfQotI2VuZGlm
CiB9CiAKIHN0YXRpYyBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25l
ZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dlcikKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTkgKzMxLDMxIEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNv
bnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9p
c29uQiA9IDB4YmJiYjsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwot
c3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkQgPSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWlu
dDMyX3QgUG9pc29uRSA9IDB4ZWVlZTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0g
MHhmZmZmOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25BOworc3RhdGljIHVpbnRwdHJfdCBwb2lz
b25COworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25DOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25E
Oworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25FOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25GOwor
CitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgcG9pc29uQSA9IG1ha2VQ
b2lzb24oKTsKKyAgICBwb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkMgPSBtYWtl
UG9pc29uKCk7CisgICAgcG9pc29uRCA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25FID0gbWFr
ZVBvaXNvbigpOworICAgIHBvaXNvbkYgPSBtYWtlUG9pc29uKCk7Cit9CiAKIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVy
aXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNv
bkEsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25BLCBSZWZM
b2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoJmEubmFtZSwgJnJlZi0+bmFtZSk7CiAKQEAgLTUxLDE2ICs2MywxNiBAQCBU
RVNUKFdURl9Qb2lzb25lZFJlZiwgQmFzaWMpCiAgICAgICAgIHVpbnRwdHJfdCBwdHJCaXRzOwog
ICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnJlZiwgc2l6ZW9mKHB0ckJpdHMpKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PigmYSkp
OwotICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKKyAgICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChQ
b2lzb25lZDxwb2lzb25BLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CiAjaWYgRU5BQkxFKFBP
SVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRfVFJVRSgoQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoKFBvaXNvbmVkPHBvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMp
KSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgIH0KICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKGFkb3B0UmVmKGEp
KTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uQiwgUmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYo
YSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYS5uYW1lLCAmcmVmLT5uYW1lKTsKICAgICB9CkBAIC02OSwxMiArODEsMTQgQEAgVEVTVChX
VEZfUG9pc29uZWRSZWYsIEJhc2ljKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVu
dCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMi
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPiByZWYo
YSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAg
ICAgICAgIHJlZiA9IGI7CkBAIC04NCw3ICs5OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBB
c3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwg
ZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8
cG9pc29uRCwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0
cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gYzsKQEAgLTk0LDcg
KzEwOCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25FLCBSZWZMb2dn
ZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRSwgUmVmTG9nZ2VyPiByZWYo
YSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKICAgICAgICAgcmVmID0gYWRvcHRSZWYoYik7CkBAIC0xMDQsNyArMTE4LDcgQEAgVEVT
VChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
fCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAg
IFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9
IGFkb3B0UmVmKGMpOwpAQCAtMTE0LDI1ICsxMjgsMjcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYs
IEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVm
KGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAotc3RhdGljIFBvaXNvbmVkUmVmPFBv
aXNvbkIsIFJlZkxvZ2dlcj4gcGFzc1dpdGhSZWYoUG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9n
Z2VyPiYmIHJlZmVyZW5jZSkKK3N0YXRpYyBQb2lzb25lZFJlZjxwb2lzb25CLCBSZWZMb2dnZXI+
IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPHBvaXNvbkMsIFJlZkxvZ2dlcj4mJiByZWZlcmVuY2Up
CiB7CiAgICAgcmV0dXJuIFdURk1vdmUocmVmZXJlbmNlKTsKIH0KIAogVEVTVChXVEZfUG9pc29u
ZWRSZWYsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBE
ZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2
ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25C
LCBSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dn
ZXI+KGEpKSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKHBh
c3NXaXRoUmVmKFBvaXNvbmVkUmVmPHBvaXNvbkMsIFJlZkxvZ2dlcj4oYSkpKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJl
Zjxwb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYu
cHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBwYXNzV2l0aFJl
ZihiKTsKQEAgLTE0MiwyMiArMTU4LDIyIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5W
YWx1ZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJlZihhKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBEZXJpdmVkUmVmTG9nZ2VyPiBwdHIoJmEpOwot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25BLCBSZWZMb2dnZXI+IHB0cjIoV1RGTW92ZShw
dHIpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgRGVyaXZlZFJlZkxvZ2dlcj4g
cHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQSwgUmVmTG9nZ2VyPiBwdHIy
KFdURk1vdmUocHRyKSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IGRlcml2ZWRSZWZl
cmVuY2UoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4gYmFzZVJl
ZmVyZW5jZShwYXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYoKSkpOworICAgICAg
ICBQb2lzb25lZFJlZjxwb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNl
KGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25DLCBSZWZMb2dnZXI+IGJhc2VSZWZlcmVu
Y2UocGFzc1dpdGhSZWYoZGVyaXZlZFJlZmVyZW5jZS5jb3B5UmVmKCkpKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBkZXJpdmVkUmVmZXJlbmNlLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBiYXNlUmVmZXJlbmNlLnB0cigpKTsKICAgICB9CkBAIC0xNjYsMTIgKzE4MiwxNCBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZiwgUmV0dXJuVmFsdWUpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBT
d2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBSZWZMb2dnZXIgYSgiYSIp
OwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBv
aXNvbkQsIFJlZkxvZ2dlcj4gcDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkUsIFJl
ZkxvZ2dlcj4gcDIoYik7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkQsIFJlZkxvZ2dlcj4g
cDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoYik7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEucHRyKCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLnB0cigpKTsKQEAgLTE4Myw4ICsyMDEsOCBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikg
fCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKLSAgICAgICAg
UG9pc29uZWRSZWY8UG9pc29uQSwgUmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRS
ZWY8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29u
QSwgUmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMS5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOwpA
QCAtMTk2LDcgKzIxNCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZM
b2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25GLCBSZWZMb2dnZXI+IHAx
KGEpOwogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwgInwg
IjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CkBAIC0yMDksNyArMjI3LDcgQEAg
VEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVm
KGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CisgICAg
ICAgIFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CiAgICAgICAgIFJlZjxS
ZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLnB0cigpKTsKQEAgLTIyMyw3ICsyNDEsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJl
ZiwgU3dhcCkKIH0KIAogc3RydWN0IFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZM
b2dnZXIgewotICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmPFBvaXNvbkIsIFBvaXNvbmVkUmVm
Q2hlY2tpbmdSZWZMb2dnZXI+OworICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmPHBvaXNvbkIs
IFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+OwogCiAgICAgUG9pc29uZWRSZWZDaGVja2lu
Z1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsKICAgICB2b2lkIHJlZigpOwpAQCAtMjYxLDYg
KzI3OSw4IEBAIERlcml2ZWRQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyOjpEZXIKIAogVEVT
VChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbkJlZm9yZURlcmVmKQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICBEZXJpdmVkUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlciBhKCJh
Iik7CiAgICAgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZl
ZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYygiYyIpOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmUHRyLmNwcAkocmV2aXNpb24gMjI2
Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywyMiArMzMsMzQgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCi1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLXN0YXRp
YyBjb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOwotc3RhdGljIGNvbnN0IHVpbnQzMl90
IFBvaXNvbkMgPSAweGNjY2M7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRCA9IDB4ZGRk
ZDsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25FID0gMHhlZWVlOwotc3RhdGljIGNvbnN0
IHVpbnQzMl90IFBvaXNvbkYgPSAweGZmZmY7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkE7Citz
dGF0aWMgdWludHB0cl90IHBvaXNvbkI7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkM7CitzdGF0
aWMgdWludHB0cl90IHBvaXNvbkQ7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkU7CitzdGF0aWMg
dWludHB0cl90IHBvaXNvbkY7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkKK3sK
KyAgICBwb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkIgPSBtYWtlUG9pc29uKCk7
CisgICAgcG9pc29uQyA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25EID0gbWFrZVBvaXNvbigp
OworICAgIHBvaXNvbkUgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uRiA9IG1ha2VQb2lzb24o
KTsKK30KIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEJhc2ljKQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAotICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkEsIFJlZkxvZ2dlcj4gZW1wdHk7CisgICAgUG9pc29uZWRSZWZQdHI8
cG9pc29uQSwgUmVmTG9nZ2VyPiBlbXB0eTsKICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHku
Z2V0KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dn
ZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4g
cHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUp
OwpAQCAtNTcsNzAgKzY5LDcwIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBCYXNpYykKICAg
ICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAm
cHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0gICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAo
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOworICAg
ICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNvbmVkPHBvaXNvbkIsIFJlZkxvZ2dlcio+KCZh
KS5iaXRzKCkpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgIEFTU0VSVF9U
UlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPjo6aXNQb2lzb25lZChw
dHJCaXRzKSkpOworICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWQ8cG9pc29uQiwgUmVmTG9n
Z2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQ
T0lTT04pCiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29u
QywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywg
UmVmTG9nZ2VyPiBwdHIgPSAmYTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwog
ICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxv
Z2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2Vy
PiBwMihwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEg
PSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMihwMSk7
CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwMiA9IHAxOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAx
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJl
ZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9n
Z2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBS
ZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxv
Z2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOwot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEp
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEp
KTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVm
KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxwb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAyID0gcDE7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29u
RCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRSwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxwb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9n
Z2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAg
IHB0ciA9IG51bGxwdHI7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwpA
QCAtMTMwLDEwICsxNDIsMTIgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEJhc2ljKQogCiBU
RVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWduUGFzc1JlZlRvUG9pc29uZWRSZWZQdHIpCiB7
CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OwogICAgIHsKICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUo
cGFzc1JlZik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpA
QCAtMTQxLDEzICsxNTUsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnblBhc3NS
ZWZUbwogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiB7CisgICAgaW5pdGlhbGl6
ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCi0gICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxw
b2lzb25DLCBSZWZMb2dnZXI+IGVtcHR5OwogICAgIEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5n
ZXQoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dl
cj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJl
ZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CiAgICAgICAgIEVYUEVDVF9FUSgm
YS5uYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1NSw3ICsxNzEsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgQWRvcHQpCiAgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJl
ZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lz
b25FLCBSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKQEAgLTE2MywxMyArMTc5LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVk
UmVmUHRyLCBBZG9wdCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiB7
CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEp
OwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcDIoJmIpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0xODEsNyArMTk5LDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwg
cmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+
IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcHRy
KCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8
PCAifCAiOwogICAgICAgICBwdHIgPSAmYjsKQEAgLTE5MSw3ICsyMDksNyBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJl
ZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAg
ICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOwpAQCAtMjAxLDcgKzIxOSw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVy
ZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIHB0ciA9IG51bGxwdHI7CiAgICAgICAgIEVY
UEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwpAQCAtMjA5LDggKzIyNyw4IEBAIFRFU1QoV1RG
X1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVm
UHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxw
b2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29u
QywgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsK
QEAgLTIyMiw4ICsyNDAsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkK
ICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkUsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9p
c29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUs
IERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwpAQCAtMjM1LDcgKzI1Myw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25t
ZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8IHJlZihjKSBkZXJlZihhKSB8
IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAg
cHRyID0gJmM7CkBAIC0yNDUsNyArMjYzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFz
c2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBk
ZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHB0ciA9IGFkb3B0
UmVmKCZjKTsKQEAgLTI1NSw4ICsyNzMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNz
aWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxw
b2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29u
RCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CkBAIC0yNjgsNyArMjg2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2ln
bm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJl
ZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVk
UmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0
ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHB0ciA9IHB0cjsKQEAg
LTI3OCw3ICsyOTYsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihhKSBkZXJlZihhKSB8IGRlcmVmKGEpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25G
LCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
ICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC0y
OTYsMTIgKzMxNCwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKIAog
VEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMo
KTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmIsIHAyLmdldCgpKTsKQEAgLTMxMyw4ICszMzMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJl
ZlB0ciwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEp
IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVk
UmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9p
c29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgp
KTsKQEAgLTMyOCwxMSArMzQ4LDEzIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBTd2FwKQog
CiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZU5vbk51bGwpCiB7CisgICAgaW5pdGlh
bGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VO
b25OdWxsKCk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcmVm
UHRyID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVm
ID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgfQogCiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMzQwLDM3ICszNjIs
MzkgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2VOb25OdWxsKQogCiBURVNUKFdU
Rl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOwor
CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAg
ICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
cG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICBFWFBFQ1RfRVEo
bnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAg
ICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dn
ZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4g
cDIoV1RGTW92ZShwMSkpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dn
ZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4g
cDIoV1RGTW92ZShwMSkpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShw
MSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAx
ID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBX
VEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
cG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKQEAgLTM4Miw4ICs0MDYsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFz
ZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
cG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNv
bkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5n
ZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8
PCAifCAiOwpAQCAtMzk1LDEzICs0MTksMTUgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJl
bGVhc2UpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJl
ZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKLXN0YXRpYyBQb2lzb25lZFJlZlB0
cjxQb2lzb25DLCBSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQorc3RhdGljIFBvaXNv
bmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCiB7Ci0g
ICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4oJmxvZ2dlcik7Cisg
ICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4oJmxvZ2dlcik7CiB9
CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFs
aXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7CkBA
IC00MzIsMjAgKzQ1OCwyMiBAQCBzdGF0aWMgQ29uc3RSZWZDb3VudGVkJiByZXR1cm5SZWZDb3Vu
dGVkCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBDb25zdCkKIHsKKyAgICBpbml0aWFsaXpl
UG9pc29ucygpOworCiAgICAgLy8gVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBjb21waWxlcyB3aXRo
b3V0IGFuIGVycm9yLgogICAgIGF1dG8gYSA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CiAg
ICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYiA9IFdURk1vdmUoYSk7Ci0gICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uRCwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBjID0gYi5wdHIoKTsKKyAg
ICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0
cigpOwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGQgPSByZXR1cm5Db25zdFJlZkNv
dW50ZWRSZWYoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBjb25zdCBDb25zdFJlZkNv
dW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7Ci0gICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUo
KTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcg
PSBmOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4g
aChmKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+
IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7CisgICAgUG9pc29uZWRSZWZQdHI8cG9p
c29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKKyAg
ICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOwor
ICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaChmKTsK
ICAgICBSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBpKHJldHVyblJlZkNvdW50ZWRSZWYoKSk7
CiB9CiAKIHN0cnVjdCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2Vy
IHsKLSAgICB1c2luZyBSZWYgPSBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBQb2lzb25lZFJlZlB0
ckNoZWNraW5nUmVmTG9nZ2VyPjsKKyAgICB1c2luZyBSZWYgPSBQb2lzb25lZFJlZlB0cjxwb2lz
b25ELCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPjsKIAogICAgIFBvaXNvbmVkUmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CiAgICAgdm9pZCByZWYoKTsK
QEAgLTQ3OSw2ICs1MDcsOCBAQCB2b2lkIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI6
OmRlCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25CZWZvcmVEZXJlZikKIHsKKyAg
ICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxv
Z2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBiKCJiIik7
CiAKQEAgLTU0Myw2ICs1NzMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWduQmVm
b3JlRGVyCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbEJlZm9yZURl
cmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBQb2lzb25lZFJlZlB0ckNo
ZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAJKHJldmlzaW9uIDIy
Njc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsMTQgQEAgbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFh
OwotY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKK3N0YXRpYyB1aW50cHRyX3QgcG9p
c29uQTsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVBvaXNvbnMoKQoreworICAgIHBvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uQiA9
IG1ha2VQb2lzb24oKTsKK30KIAogc3RydWN0IExvZ2dlciB7CiAgICAgTG9nZ2VyKGNvbnN0IGNo
YXIqIG5hbWUsIGludCYgZGVzdHJ1Y3RDb3VudCkKQEAgLTYxLDEzICs2NywxNSBAQCBzdHJ1Y3Qg
T3RoZXIgewogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiB7CisgICAgaW5p
dGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBlbXB0eTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
TG9nZ2VyPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CiAgICAg
ewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IGVtcHR5KG51bGxw
dHIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IGVtcHR5KG51
bGxwdHIpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KQEAgLTc2LDcgKzg0
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYURl
c3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBv
aXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CkBAIC04Nyw3ICs5NSw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJC
aXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRy
Qml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9B
U1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9U
UlVFKChQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+Ojppc1BvaXNvbmVkKHB0ckJp
dHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgICAgICB9CkBAIC05
Niw3ICsxMDQsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAg
IGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcg
RGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYik7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0cihiKTsKICAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgJipwdHIpOwpAQCAt
MTA5LDcgKzExNyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAg
ICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dl
cigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBhOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBhOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lz
b25lZCgpKTsKICAgICAgICAgfQpAQCAtMTE4LDcgKzEyNiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291
bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHB0ciA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBM
b2dnZXI+IHB0ciA9IGI7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICB9
CkBAIC0xMjksNyArMTM3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQog
ICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBhTmFt
ZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+OjpjcmVh
dGUoYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2Vy
Pjo6Y3JlYXRlKGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBw
dHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFt
ZSk7CkBAIC0xMzksNyArMTQ3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2lj
KQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBi
TmFtZSA9ICJiIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9n
Z2VyPjo6Y3JlYXRlKGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkEsIERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGJOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1MSw3ICsxNTksNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAg
ICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQ
b2lzb25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxw
b2lzb25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0
ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0
ci0+bmFtZSk7CkBAIC0xNjEsNyArMTY5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIs
IEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBj
aGFyKiBiTmFtZSA9ICJiIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgRGVy
aXZlZExvZ2dlcj4oYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPHBvaXNv
bkEsIERlcml2ZWRMb2dnZXI+KGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVs
bHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiTmFtZSwg
JnB0ci0+bmFtZSk7CkBAIC0xNzEsNyArMTc5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHIsIEJhc2ljKQogICAgICAgICBpbnQgdW5pcXVlRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAg
IGNvbnN0IGNoYXIqIHVuaXF1ZU5hbWUgPSAidW5pcXVlIjsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVOYW1lLCB1bmlxdWVEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIERlcml2ZWRMb2dnZXI+
IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4odW5pcXVlTmFtZSwgdW5pcXVl
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgdW5pcXVlRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKHVuaXF1ZU5hbWUsICZwdHItPm5hbWUpOwpAQCAt
MTgxLDcgKzE4OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAg
ICAgaW50IHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hh
ciogdW5pcXVlRGVyaXZlZE5hbWUgPSAidW5pcXVlIGRlcml2ZWQiOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4odW5pcXVlRGVyaXZlZE5hbWUsIHVuaXF1ZURlcml2ZWRE
ZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExv
Z2dlcj4gcHRyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVEZXJpdmVk
TmFtZSwgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEodW5p
cXVlRGVyaXZlZE5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTk1LDE1ICsyMDMsMTUgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9n
Z2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2Vy
KCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBw
MS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1v
dmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBw
MyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXI+IHA0
ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0yMTksMTUgKzIyNywxNSBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIExvZ2dlciogYSA9IG5l
dyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBM
b2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1
LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBi
OwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNChXVEZN
b3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+
IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIExvZ2dlcj4g
cDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwpAQCAtMjQzLDE1ICsyNTEsMTUgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBEZXJpdmVkTG9nZ2Vy
KiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIERl
cml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
PiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1
Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxwb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAz
LnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAg
LTI2NywxNSArMjc1LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAg
ICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIi
LCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
MS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyPiBwNChXVEZNb3ZlKHAzKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDMuYml0cygpKTsKQEAgLTI4OSw3ICsyOTcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dl
ciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIuY2xl
YXIoKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKQEAgLTMw
MiwxMyArMzEwLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKIAogVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBv
aXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dl
cigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigi
YiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMzI1LDcg
KzMzNSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAg
ICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2Vy
KCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgICAgIHB0ciA9IG51bGxwdHI7CkBAIC0zNDUsOCArMzU1LDggQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIExvZ2dlciogYyA9
IG5ldyBMb2dnZXIoImMiLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogZCA9IG5l
dyBMb2dnZXIoImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEoYSk7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKGIpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENv
dW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwpAQCAtMzU3
LDggKzM2Nyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAg
ICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQoZCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8cG9pc29uQiwgTG9nZ2VyPiBwNChkKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBjRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgZERlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zODEsNyArMzkx
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIERl
cml2ZWRMb2dnZXIqIGEgPSBuZXcgRGVyaXZlZExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3Ry
dWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENv
dW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC00MDQsOCArNDE0LDggQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIERlcml2ZWRM
b2dnZXIqIGMgPSBuZXcgRGVyaXZlZExvZ2dlcigiYyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgRGVyaXZlZExvZ2dlciogZCA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJkIiwgZERlc3RydWN0Q291
bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHAxKGEpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgRGVy
aXZlZExvZ2dlcj4gcDIoYik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBMb2dnZXI+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
RGVyaXZlZExvZ2dlcj4gcDIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwpAQCAtNDE2LDggKzQyNiw4IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICAgICAgQVNT
RVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
cG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBv
aXNvbkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGNE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKQEAgLTQzOCw3ICs0
NDgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAg
aW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigi
YSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQo
KSk7CiAgICAgICAgICAgICBwdHIgPSBhOwpAQCAtNDUyLDcgKzQ2Miw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQg
PSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dl
cj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihD
TEFORykKQEAgLTQ3MywxNCArNDgzLDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBB
c3NpZ25tZW50KQogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKIHsKKyAgICBp
bml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQg
PSAwOwogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEg
PSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBu
ZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDI7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC00OTAsOCArNTAy
LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51
bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExv
Z2dlcj4gcDQ7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+
IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIExvZ2dlcj4g
cDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0
LnVucG9pc29uZWQoKSk7CkBAIC01MTEsOCArNTIzLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHIsIFN3YXApCiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dl
cj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2Vy
PiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDIudW5wb2lzb25lZCgpKTsKQEAgLTUyMiw4ICs1MzQsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ciwgU3dhcCkKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNDsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyPiBwNDsKICAgICAgICAgICAgIEFTU0VSVF9F
UShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTUzOCwx
MyArNTUwLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogICAgIH0KIH0K
IAotc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcG9pc29uZWRQdHJG
b28oTG9nZ2VyKiBsb2dnZXIpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9n
Z2VyPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGxvZ2dlcikKIHsKLSAgICByZXR1cm4gUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPihsb2dnZXIpOworICAgIHJldHVybiBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+KGxvZ2dlcik7CiB9CiAKIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOwor
CiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIq
IGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNw
cAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9p
c29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxNCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IG5hbWVzcGFjZSB7CiAKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1jb25zdCB1
aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25BOworc3Rh
dGljIHVpbnRwdHJfdCBwb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygp
Cit7CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25CID0gbWFrZVBvaXNv
bigpOworfQogCiBzdHJ1Y3QgTG9nZ2VyIHsKICAgICBMb2dnZXIoKSB7IH0KQEAgLTYyLDggKzY4
LDEwIEBAIGNvbnN0IGludCBhcnJheVNpemUgPSA1OwogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQmFzaWMpCiB7CisgICAgaW5p
dGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyW10+IGVtcHR5OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBMb2dnZXJbXT4gZW1wdHk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBv
aXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQpA
QCAtNzIsNyArODAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxs
CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1h
a2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIo
YSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcHRy
KGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShhLCAmKnB0cik7CkBAIC04NCw3ICs5Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
Rm9yTm9uVHJpdmlhbGwKICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBz
aXplb2YocHRyQml0cykpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltd
Pjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwog
I2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICAgICAgfQpAQCAtOTUsNyArMTAz
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBp
bnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9n
Z2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gYTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBhOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsg
aSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTA4LDcgKzExNiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsK
ICAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT46OmNyZWF0ZShhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJb
XT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+OjpjcmVhdGUoYXJy
YXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRy
LnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNp
emU7ICsraSkKQEAgLTEyMSw3ICsxMjksNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZv
ck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPFBvaXNv
bkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gbWFrZVBvaXNv
bmVkVW5pcXVlPHBvaXNvbkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTM0LDcgKzE0Miw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50
IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltd
PiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwg
YU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBv
aXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8cG9pc29uQSwgTG9nZ2Vy
W10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRy
ICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwg
YXJyYXlTaXplOyArK2kpCkBAIC0xNDksMTUgKzE1NywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9
IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
MSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVz
dHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lz
b25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShw
Myk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0xNzMsMTUgKzE4MSwxNSBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dl
ciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBv
aXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNChXVEZNb3ZlKHAzKSk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUo
cDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTE5NywxNSArMjA1LDE1IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFy
cmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9n
Z2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50
KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcltdPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PHBvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUocDMpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUo
cDMpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUoIXAzLmJpdHMoKSk7CkBAIC0yMjEsMTUgKzIyOSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9
IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
MSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cDIoV1RGTW92ZShwMSkpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
TG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3Ry
dWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMo
KSk7CkBAIC0yNDMsNyArMjUxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25U
cml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIq
IGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJb
XT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2Vy
W10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIHB0ci5jbGVhcigpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXB0ci51
bnBvaXNvbmVkKCkpOwpAQCAtMjU2LDEzICsyNjQsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JOb25Ucml2aWFsbAogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRy
aXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQXNzaWdubWVudCkKIHsKKyAgICBpbml0aWFsaXpl
UG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAg
ICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJy
YXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dn
ZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQp
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9n
Z2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMjc5LDcgKzI4OSw3IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVj
dENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlT
aXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gbnVsbHB0cjsKQEAgLTI5OSw4ICszMDks
OCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExv
Z2dlciogYyA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImMiLCBjRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIExvZ2dlciogZCA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImQi
LCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CkBAIC0zMTEsOCAr
MzIxLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAg
ICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzKGMpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KGQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0KGQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKQEAgLTMzMyw3
ICszNDMsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAg
ICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ciA9IGE7CkBAIC0z
NDcsNyArMzU3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAog
ICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtl
QXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHB0cihh
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCkBA
IC0zNjgsMTQgKzM3OCwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZp
YWxsCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3Rp
YmxlQXJyYXlzLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAg
ICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3Vu
dCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwg
ImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDI7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAyOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwpA
QCAtMzg1LDggKzM5Nyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQ7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0OwogICAgICAgICAgICAgQVNTRVJUX0VRKGIs
IHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtNDA2LDggKzQx
OCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAg
TG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENv
dW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAi
YiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDI7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC00MTcsOCArNDI5LDgg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkIsIExvZ2dlcltdPiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25C
LCBMb2dnZXJbXT4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAgICAgICAgQVNT
RVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC00MzMsMTMgKzQ0NSwxNSBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgfQogfQogCi1zdGF0aWMgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciog
YXJyYXkpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHBvaXNv
bmVkUHRyRm9vKExvZ2dlciogYXJyYXkpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcltdPihhcnJheSk7CisgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRy
PHBvaXNvbkEsIExvZ2dlcltdPihhcnJheSk7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBSZXR1cm5WYWx1ZSkKIHsKKyAg
ICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291
bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUs
ICJhIiwgYURlc3RydWN0Q291bnQpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVl
UHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkocmV2aXNpb24gMjI2Nzg0KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2
aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiwx
NCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IHVp
bnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1jb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJi
Oworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25BOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25COwor
CitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgcG9pc29uQSA9IG1ha2VQ
b2lzb24oKTsKKyAgICBwb2lzb25CID0gbWFrZVBvaXNvbigpOworfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogc3RhdGljIHZvaWQgZmlsbEFycmF5KFQmIGFycmF5LCBpbnQgc2l6ZSkKQEAgLTQ4
LDEzICs1NCwxNSBAQCBzdGF0aWMgY29uc3QgaW50IGFycmF5U2l6ZSA9IDU7CiAKIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykK
IHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewotICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PHBvaXNvbkEsIGludFtdPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAg
ICB9CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gZW1w
dHkobnVsbHB0cik7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBl
bXB0eShudWxscHRyKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CkBAIC02
Myw3ICs3MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAg
ICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEs
IGFycmF5U2l6ZSk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lz
b25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNv
bmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKICAgICAgICAgICAgIGZv
ciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtNzQsNyArODIsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgICAgICBzdGQ6Om1l
bWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMpKTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oYSkpOwogI2lmIEVOQUJM
RShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT46OmlzUG9pc29u
ZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgICAg
IH0KQEAgLTg0LDcgKzkyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFs
bHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxs
QXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBpbnRbXT4gcHRyID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50
W10+IHB0ciA9IGE7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwg
YXJyYXlTaXplOyArK2kpCkBAIC05Miw3ICsxMDAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQogCiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50
W10+OjpjcmVhdGUoYXJyYXlTaXplKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QSwgaW50W10+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPjo6Y3JlYXRl
KGFycmF5U2l6ZSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIGZpbGxBcnJheShwdHIsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZvciAo
YXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTA1LDE2ICsxMTMsMTYgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBiID0g
bmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAot
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHAyID0gV1RGTW92ZShwMSk7CiAgICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRf
RVEoMHUsIHAxLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkp
OwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhW2ldLCBwMltpXSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QiwgaW50W10+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBv
aXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIs
IGludFtdPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwogICAgICAg
ICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKQEAgLTEyOCwxNiArMTM2LDE2IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYiA9
IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyKFdURk1vdmUocDEpKTsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHAyKFdURk1vdmUocDEpKTsKICAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9F
USgwdSwgcDEuYml0cygpKTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQogICAgICAgICAg
ICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ldKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBpbnRbXT4gcDQoV1RGTW92ZShwMykpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lz
b25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBp
bnRbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwogICAgICAgICBB
U1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKQEAgLTE0OSw3ICsxNTcsNyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcg
aW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogCi0gICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9F
UShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgIEFT
U0VSVF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKQEAgLTE1OSwxMyArMTY3LDE1IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKIAogVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIEFzc2lnbm1lbnQpCiB7Cisg
ICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgYXV0byogYSA9IG5ldyBp
bnRbYXJyYXlTaXplXTsKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAg
ICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJh
eVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIo
YSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAg
ICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyID0gYjsK
ICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTc1LDcgKzE4NSw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0
byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6
ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsK
KyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAg
ICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBudWxscHRy
OwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0xOTEs
MTYgKzIwMSwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAg
ICAgICAgIGZpbGxBcnJheShjLCBhcnJheVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoZCwgYXJy
YXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEo
YSk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMihiKTsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHAxKGEpOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDIoYik7CiAgICAgICAgIEFTU0VSVF9F
UShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKGIsIHAx
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMi51bnBvaXNvbmVk
KCkpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyhjKTsK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0KGQpOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDMoYyk7CisgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkIsIGludFtdPiBwNChkKTsKICAgICAgICAgQVNTRVJUX0VRKGMs
IHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShkLCBwNC51bnBvaXNvbmVkKCkp
OwogICAgICAgICBwMyA9IFdURk1vdmUocDQpOwpAQCAtMjEyLDcgKzIyMiw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBp
bnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VR
KGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBhOwogICAgICAgICBBU1NFUlRf
RVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0yMjIsNyArMjMyLDcgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGludFth
cnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICBBU1NFUlRfRVEoYSwg
cHRyLnVucG9pc29uZWQoKSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaApAQCAtMjM5LDE0ICsyNDksMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZQogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZp
YWxseURlc3RydWN0aWJsZUFycmF5cywgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygp
OworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAg
ICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJy
YXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxw
b2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCksIGEpOwogICAg
ICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVu
cG9pc29uZWQoKSk7CkBAIC0yNTUsOCArMjY3LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lz
b25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBp
bnRbXT4gcDQ7CiAgICAgICAgIEFTU0VSVF9FUShwMy51bnBvaXNvbmVkKCksIGIpOwogICAgICAg
ICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9p
c29uZWQoKSk7CkBAIC0yNzIsOCArMjg0LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJG
b3JUcml2aWFsbHlEZQogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAg
ZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
aW50W10+IHAyOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDEg
PSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDI7CiAgICAg
ICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCksIGEpOwogICAgICAgICBBU1NFUlRfVFJVRSgh
cDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC0y
ODIsOCArMjk0LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQog
ICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VR
KHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50
W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDMgPSBi
OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBpbnRbXT4gcDQ7CiAgICAgICAg
IEFTU0VSVF9FUShwMy51bnBvaXNvbmVkKCksIGIpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDQu
Yml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC0yOTQs
MTMgKzMwNiwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAg
ICAgfQogfQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHBvaXNv
bmVkUHRyRm9vKGludCogcHRyKQorc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGlu
dFtdPiBwb2lzb25lZFB0ckZvbyhpbnQqIHB0cikKIHsKLSAgICByZXR1cm4gUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgaW50W10+KHB0cik7CisgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRy
PHBvaXNvbkEsIGludFtdPihwdHIpOwogfQogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZv
clRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgUmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlh
bGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlT
aXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331169</attachid>
            <date>2018-01-11 22:21:35 -0800</date>
            <delta_ts>2018-01-11 22:52:16 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>126408</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksOCAr
Mzg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lz
b25lZE1hc21QdHIoMSk7IH0KLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1
ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigyKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1h
c21QdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwg
MSk7IH0KKyAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJu
IFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwgMik7IH0KIAogICAgIFBvaXNvbmVkTWFzbVB0
ciBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODk0LDggKzg5NCw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmhhc1RhaWxDYWxscygpOyB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBz
X3BvaXNvbiA9IG1ha2VDb25zdEV4cHJQb2lzb24oQ29kZUJsb2NrUG9pc29uKTsKLQogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOwogICAgIHZvaWQgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwpAQCAtOTc0LDcgKzk3Miw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fb3duZXJFeGVj
dXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293
bmVyRWRnZTsKLSAgICBDb25zdEV4cHJQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9w
b2lzb25lZFZNOworICAgIFBvaXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVk
Vk07CiAKICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3Ry
dWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDggQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBhbiBleGNl
cHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6aml0
Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54b3JQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1Qw
KTsKKy8vICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJs
b2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQueG9yUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKENvZGVCbG9ja1BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsK
ICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSklUQ29kZVR5cGU6
OmNvbW1vbkRhdGFPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb21tb25EYXRhOjpmcmFtZVJl
Z2lzdGVyQ291bnRPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAvLyBUaGlzIGRvZXMg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVSZWdpc3RlckNvdW50IC0gMSkqc2l6ZW9mKFJl
Z2lzdGVyKSB3aGVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBtYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCiAgICAg
bG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwogICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQ
QgotICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJs
b2NrUG9pc29uLCBQQiwgdDEpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAg
IHN0b3JlcSByMCwgW2NmciwgdDEsIDhdCiAgICAgdmFsdWVQcm9maWxlKHIwLCAoQ2FsbE9wQ29k
ZVNpemUgLSAxKSwgdDMpCkBAIC00ODAsMjcgKzQ4MCwyNyBAQCBtYWNybyB2YWx1ZVByb2ZpbGUo
dmFsdWUsIG9wZXJhbmQsIHNjcmF0CiAgICAgc3RvcmVxIHZhbHVlLCBWYWx1ZVByb2ZpbGU6Om1f
YnVja2V0c1tzY3JhdGNoXQogZW5kCiAKLW1hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRo
U2NyYXRjaChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBzdHJ1Y3R1
cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJlSURUaGVuU3RydWN0dXJlLCBzY3Jh
dGNoLCBzY3JhdGNoMikKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaAogICAgIGxv
YWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW3NjcmF0Y2hdLCBzY3JhdGNoCi0gICAgdW5wb2lz
b24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNv
biwgc2NyYXRjaCwgc2NyYXRjaDIpCiAgICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW3NjcmF0Y2hdLCBzY3JhdGNo
CiAgICAgbG9hZHAgW3NjcmF0Y2gsIHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwgOF0sIHN0cnVj
dHVyZUlEVGhlblN0cnVjdHVyZQogZW5kCiAKLW1hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRj
aChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gpCittYWNybyBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2goY2VsbCwgc3RydWN0dXJlLCBzY3JhdGNoLCBzY3JhdGNoMikKICAgICBsb2FkaSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVyZQotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1
cmVXaXRoU2NyYXRjaChzdHJ1Y3R1cmUsIHNjcmF0Y2gpCisgICAgc3RydWN0dXJlSURUb1N0cnVj
dHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwgc2NyYXRjaCwgc2NyYXRjaDIpCiBlbmQKIAotbWFj
cm8gbG9hZFN0cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCi0gICAg
bG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW2NlbGxdLCBzdHJ1Y3R1cmUKLSAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgY2VsbAotICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2Nl
bGxdLCBjZWxsCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBjZWxsKQotICAgIGxvYWRw
IFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxlICsgU3RydWN0dXJlSURUYWJsZTo6
bV90YWJsZVtjZWxsXSwgY2VsbAotICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1
Y3R1cmUKLWVuZAorI21hY3JvIGxvYWRTdHJ1Y3R1cmVBbmRDbG9iYmVyRmlyc3RBcmcoY2VsbCwg
c3RydWN0dXJlKQorIyAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVj
dHVyZQorIyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgY2VsbAorIyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVtjZWxsXSwgY2VsbAorIyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lz
b24sIGNlbGwpCisjICAgIGxvYWRwIFZNOjpoZWFwICsgSGVhcDo6bV9zdHJ1Y3R1cmVJRFRhYmxl
ICsgU3RydWN0dXJlSURUYWJsZTo6bV90YWJsZVtjZWxsXSwgY2VsbAorIyAgICBsb2FkcCBbY2Vs
bCwgc3RydWN0dXJlLCA4XSwgc3RydWN0dXJlCisjZW5kCiAKICMgRW50cnlwb2ludHMgaW50byB0
aGUgaW50ZXJwcmV0ZXIuCiAKQEAgLTU2Miw3ICs1NjIsNyBAQCBtYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBzbG93CiAgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCByZXNldCBQ
Qywgc2luY2UgdGhlIHNsb3dfcGF0aCBjbG9iYmVyZWQgdGhlbS4KICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIK
LSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCKQorICAgIHVucG9pc29uKENvZGVCbG9j
a1BvaXNvbiwgUEIsIHQ1KQogICAgIG1vdmUgMCwgUEMKICAgICBqbXAgZG9uZUxhYmVsCiBlbmQK
QEAgLTY0MSw3ICs2NDEsNyBAQCBfbGxpbnRfb3BfdG9fdGhpczoKICAgICBsb2FkcSBbY2ZyLCB0
MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKICAgICBiYm5l
cSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAg
IGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDEsIHQyKQorICAgIGxvYWRTdHJ1Y3R1cmVX
aXRoU2NyYXRjaCh0MCwgdDEsIHQyLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVjdGlvbigyLCB0
MikKICAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfdG9fdGhpc19sZW5ndGgpCkBAIC03MjQsNyArNzI0LDcgQEAgbWFjcm8gZXF1YWxOdWxs
Q29tcGFyaXNvbigpCiAgICAgbW92ZSAwLCB0MAogICAgIGptcCAuZG9uZQogLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQ6Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisg
ICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEsIHQzKQogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAogICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBd
LCB0MAogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVjdFt0Ml0sIHQwLCB0MApAQCAt
MTE2Myw3ICsxMTYzLDcgQEAgX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKICAgICBzdG9yZXEgdDEs
IFtjZnIsIHQyLCA4XQogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF9pc191bmRlZmluZWRfbGVu
Z3RoKQogLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3Jh
dGNoKHQwLCB0MywgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MywgdDEs
IHQ1KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDFdLCB0MQogICAgIGNwZXEgU3RydWN0dXJlOjptX2dsb2JhbE9iamVj
dFt0M10sIHQxLCB0MApAQCAtMTQzMyw3ICsxNDMzLDcgQEAgX2xsaW50X29wX3B1dF9ieV9pZDoK
ICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDNdLCB0MwogICAgIGFzc2VydCht
YWNybyAob2spIGJ0cG56IHQzLCBvayBlbmQpCiAKLSAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJl
V2l0aFNjcmF0Y2godDIsIHQxKQorICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aCh0MiwgdDEsIHQ1KQogICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDJdLCB0Mgog
ICAgIGJxZXEgdDIsIFZhbHVlTnVsbCwgLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkRvbmUKIC5v
cFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Mb29wOgpAQCAtMTc0MCw3ICsxNzQwLDcgQEAgbWFjcm8g
ZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYQogICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywg
LmltbWVkaWF0ZQotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAg
IGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxLCB0NSkKICAgICBjZWxsSGFuZGxl
cih0MiwgSlNDZWxsOjptX2ZsYWdzW3QwXSwgLnRhcmdldCkKICAgICBkaXNwYXRjaCgzKQogCkBA
IC0yMDA3LDcgKzIwMDcsNyBAQCBfbGxpbnRfb3BfY2F0Y2g6CiAKICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgUEIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW1BCXSwgUEIK
LSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCKQorICAgIHVucG9pc29uKENvZGVCbG9j
a1BvaXNvbiwgUEIsIHQ1KQogICAgIGxvYWRwIFZNOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhy
b3dbdDNdLCBQQwogICAgIHN1YnAgUEIsIFBDCiAgICAgcnNoaWZ0cCAzLCBQQwpAQCAtMjI0Nyw3
ICsyMjQ3LDcgQEAgX2xsaW50X29wX3Jlc29sdmVfc2NvcGU6CiBtYWNybyBsb2FkV2l0aFN0cnVj
dHVyZUNoZWNrKG9wZXJhbmQsIHNsb3dQYXRoKQogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbihv
cGVyYW5kLCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgbG9hZFN0cnVjdHVy
ZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQw
LCB0MiwgdDEsIHQ1KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDUsIHQxKQogICAgIGJwbmVx
IHQyLCB0MSwgc2xvd1BhdGgKIGVuZApAQCAtMjUwMCw3ICsyNTAwLDcgQEAgX2xsaW50X29wX3By
b2ZpbGVfdHlwZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVu
cG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSwgdDMpCiAgICAgIyB0MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJv
ZmlsZXJMb2cuCiAgICAgbG9hZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKICAgICAj
IHQyIGlzIGhvbGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgbG9nIGVudHJ5LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyArMjA0LDcg
QEAgZWxzZQogICAgIGNvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZwogZW5kCiAKLWNv
bnN0IENvZGVCbG9ja1BvaXNvbiA9IGNvbnN0ZXhwciBDb2RlQmxvY2s6OnNfcG9pc29uCisjIGNv
bnN0IENvZGVCbG9ja1BvaXNvbiA9IGNvbnN0ZXhwciBDb2RlQmxvY2s6OnNfcG9pc29uCiAKICMg
UHV0QnlJZEZsYWdzIGRhdGEKIGNvbnN0IFB1dEJ5SWRQcmltYXJ5VHlwZU1hc2sgPSBjb25zdGV4
cHIgUHV0QnlJZFByaW1hcnlUeXBlTWFzawpAQCAtNzU0LDkgKzc1NCwxMCBAQCBtYWNybyBwcmVz
ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gdW5w
b2lzb24ocG9pc29uLCBmaWVsZCkKK21hY3JvIHVucG9pc29uKHBvaXNvbiwgZmllbGQsIHNjcmF0
Y2gpCiAgICAgaWYgUE9JU09OCi0gICAgICAgIHhvcnAgcG9pc29uLCBmaWVsZAorICAgICAgICBs
b2FkcCBfQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoCisgICAgICAgIHhvcnAgc2NyYXRjaCwgZmll
bGQKICAgICBlbmQKIGVuZAogCkBAIC0xMDI0LDcgKzEwMjUsNyBAQCBtYWNybyBwcm9sb2d1ZShj
b2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgIyBTZXQgdXAgdGhlIFBDLgogICAgIGlmIEpT
VkFMVUU2NAogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIK
LSAgICAgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQikKKyAgICAgICAgdW5wb2lzb24o
Q29kZUJsb2NrUG9pc29uLCBQQiwgUEMpCiAgICAgICAgIG1vdmUgMCwgUEMKICAgICBlbHNlCiAg
ICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQwpAQCAtMTAzNSw3
ICsxMDM2LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvYwogICAg
IHN1YnAgY2ZyLCB0MCwgdDAKICAgICBicGEgdDAsIGNmciwgLm5lZWRTdGFja0NoZWNrCiAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MgotICAgIHVucG9pc29uKENvZGVC
bG9ja1BvaXNvbiwgdDIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MiwgdDMpCiAg
ICAgaWYgQ19MT09QCiAgICAgICAgIGJwYmVxIFZNOjptX2Nsb29wU3RhY2tMaW1pdFt0Ml0sIHQw
LCAuc3RhY2tIZWlnaHRPSwogICAgIGVsc2UKQEAgLTE2MjMsNyArMTYyNCw3IEBAIF9sbGludF9v
cF9jaGVja190cmFwczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAg
IHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9p
c29uLCB0MSwgdDMpCiAgICAgbG9hZGIgVk06Om1fdHJhcHMrVk1UcmFwczo6bV9uZWVkVHJhcEhh
bmRsaW5nW3QxXSwgdDAKICAgICBidHBueiB0MCwgLmhhbmRsZVRyYXBzCiAuYWZ0ZXJIYW5kbGlu
Z1RyYXBzOgpAQCAtMTYzOSw3ICsxNjQwLDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogbWFj
cm8gYWNxdWlyZVNoYWRvd0NoaWNrZW5QYWNrZXQoc2xvdykKICAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAg
dW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lz
b24sIHQxLCB0MikKICAgICBsb2FkcCBWTTo6bV9zaGFkb3dDaGlja2VuW3QxXSwgdDIKICAgICBs
b2FkcCBTaGFkb3dDaGlja2VuOjptX2xvZ0N1cnNvclt0Ml0sIHQwCiAgICAgYnBhZXEgdDAsIFNo
YWRvd0NoaWNrZW46Om1fbG9nRW5kW3QyXSwgc2xvdwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw3ICs2MSw3IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgc2l6ZV90IGVzdGltYXRl
ZFNpemUoSlNDZWxsKik7CiAKIHByaXZhdGU6Ci0gICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBcnJh
eUJ1ZmZlclBvaXNvbiwgQXJyYXlCdWZmZXIqPiBtX2ltcGw7CisgICAgUG9pc29uZWQ8SlNBcnJh
eUJ1ZmZlclBvaXNvbiwgQXJyYXlCdWZmZXIqPiBtX2ltcGw7CiB9OwogCiBpbmxpbmUgQXJyYXlC
dWZmZXIqIHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcihWTSYgdm0sIEpTVmFsdWUgdmFsdWUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkocmV2aXNp
b24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDMzICsyNSw1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSA8d3RmL1BvaXNvbmVkLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1lbnVtIFBvaXNvbiB7
Ci0gICAgTm90UG9pc29uZWQgPSAwLCAvLyBSZXNlcnZlZCAoYW5kIHVudXNlZCkgc28gdGhhdCBw
b2lzb24ga2V5cyBhcmUgbmV2ZXIgMC4KLQotICAgIC8vIEFkZCBuZXcgcG9pc29uIGtleXMgYmVs
b3cgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLiBUaGUgb3JkZXIgZG9lc24ndCByZWFsbHkKLSAgICAv
LyBtYXR0ZXIsIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGtlZXAgdGhlbSBpbiBhbHBoYWJldGljYWxs
eSBvcmRlciBmb3IKLSAgICAvLyBncmVhdGVyIHJlYWRhYmlsaXR5LgotICAgIEFycmF5UHJvdG90
eXBlUG9pc29uLAotICAgIENvZGVCbG9ja1BvaXNvbiwKLSAgICBEYXRlSW5zdGFuY2VQb2lzb24s
Ci0gICAgSlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLAotICAgIEpTQXJyYXlCdWZmZXJQb2lzb24s
Ci0gICAgSlNDYWxsYmFja09iamVjdFBvaXNvbiwKLSAgICBKU0dsb2JhbE9iamVjdFBvaXNvbiwK
LSAgICBKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1BvaXNvbiwKLSAgICBKU1NjcmlwdEZldGNoZXJQ
b2lzb24sCi0gICAgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiwKLSAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2VQb2lzb24sCi0gICAgSlNXZWJBc3NlbWJseU1lbW9yeVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiwK
LSAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sCi0gICAgVW5saW5rZWRTb3VyY2VD
b2RlUG9pc29uLAotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCisjaW5jbHVkZSAiSlNDUG9pc29u
ZWRQdHIuaCIgLy8gbWxhbQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NQb2lzb25lZFB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDIzIEBAIHVpbnRwdHJfdCBnX2dsb2JhbERhdGFQb2lzb247CiB1aW50cHRyX3Qg
Z19qaXRDb2RlUG9pc29uOwogdWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAordWludHB0
cl90IEFycmF5UHJvdG90eXBlUG9pc29uOwordWludHB0cl90IENvZGVCbG9ja1BvaXNvbjsKK3Vp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247Cit1aW50cHRyX3QgSlNBUElXcmFwcGVyT2JqZWN0
UG9pc29uOwordWludHB0cl90IEpTQXJyYXlCdWZmZXJQb2lzb247Cit1aW50cHRyX3QgSlNDYWxs
YmFja09iamVjdFBvaXNvbjsKK3VpbnRwdHJfdCBKU0dsb2JhbE9iamVjdFBvaXNvbjsKK3VpbnRw
dHJfdCBKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1BvaXNvbjsKK3VpbnRwdHJfdCBKU1NjcmlwdEZl
dGNoZXJQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbjsKK3Vp
bnRwdHJfdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3Nl
bWJseU1lbW9yeVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uOwor
dWludHB0cl90IEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbjsKK3VpbnRwdHJfdCBTdHJ1Y3R1cmVU
cmFuc2l0aW9uVGFibGVQb2lzb247Cit1aW50cHRyX3QgVW5saW5rZWRTb3VyY2VDb2RlUG9pc29u
OworCiB2b2lkIGluaXRpYWxpemVQb2lzb24oKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBpbml0aWFsaXplT25jZUZsYWc7CkBAIC00MSw2ICs1OCwyMyBAQCB2b2lkIGluaXRpYWxpemVQ
b2lzb24oKQogICAgICAgICBnX2dsb2JhbERhdGFQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAg
ICAgIGdfaml0Q29kZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19uYXRpdmVDb2Rl
UG9pc29uID0gbWFrZVBvaXNvbigpOworCisgICAgICAgIEFycmF5UHJvdG90eXBlUG9pc29uID0g
bWFrZVBvaXNvbigpOworICAgICAgICBDb2RlQmxvY2tQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIERhdGVJbnN0YW5jZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNBUElX
cmFwcGVyT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FycmF5QnVmZmVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0UG9pc29uID0g
bWFrZVBvaXNvbigpOworICAgICAgICBKU0dsb2JhbE9iamVjdFBvaXNvbiA9IG1ha2VQb2lzb24o
KTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnNQb2lzb24gPSBtYWtlUG9pc29uKCk7
CisgICAgICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAg
SlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNX
ZWJBc3NlbWJseUluc3RhbmNlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFz
c2VtYmx5TWVtb3J5UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5
TW9kdWxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5VGFibGVQ
b2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBv
aXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgVW5saW5rZWRTb3VyY2VDb2RlUG9pc29uID0g
bWFrZVBvaXNvbigpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDIzIEBAIGV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19n
bG8KIGV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19qaXRDb2RlUG9pc29uOwog
ZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX25hdGl2ZUNvZGVQb2lzb247CiAK
K2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IENvZGVCbG9ja1BvaXNvbjsKK2V4
dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgRGF0ZUluc3RhbmNlUG9pc29uOworZXh0
ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTQXJyYXlCdWZmZXJQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTQ2FsbGJhY2tPYmplY3RQb2lz
b247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTR2xvYmFsT2JqZWN0UG9p
c29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoUGFy
YW1ldGVyc1BvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNTY3Jp
cHRGZXRjaGVyUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1dl
YkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERB
VEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb247CitleHRlcm4gIkMiIEpTX0VY
UE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247CitleHRlcm4gIkMi
IEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbjsKK2V4dGVy
biAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9p
c29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNv
ZGVQb2lzb247CisKIHN0cnVjdCBDbGFzc0luZm87CiAKIHVzaW5nIFBvaXNvbmVkQ2xhc3NJbmZv
UHRyID0gUG9pc29uZWQ8Z19nbG9iYWxEYXRhUG9pc29uLCBjb25zdCBDbGFzc0luZm8qPjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZS5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
U2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0
aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9p
c29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IENv
bnN0RXhwclBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwgV2Vha0ltcGwq
PjsKKyAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBQb2lzb25lZDxTdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKKyAgICB1c2luZyBQb2lz
b25lZFdlYWtJbXBsUHRyID0gUG9pc29uZWQ8U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29u
LCBXZWFrSW1wbCo+OwogCiAgICAgYm9vbCBpc1VzaW5nU2luZ2xlU2xvdCgpIGNvbnN0CiAgICAg
ewpAQCAtMTk4LDEzICsxOTgsMTMgQEAgcHJpdmF0ZToKICAgICBUcmFuc2l0aW9uTWFwKiBtYXAo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAg
ICAgICAgcmV0dXJuIFBvaXNvbmVkVHJhbnNpdGlvbk1hcFB0cihtX2RhdGEpLnVucG9pc29uZWQo
KTsKKyAgICAgICAgcmV0dXJuIFBvaXNvbmVkVHJhbnNpdGlvbk1hcFB0cihQcmVQb2lzb25lZCwg
bV9kYXRhKS51bnBvaXNvbmVkKCk7CiAgICAgfQogCiAgICAgV2Vha0ltcGwqIHdlYWtJbXBsKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAgICAg
ICAgcmV0dXJuIFBvaXNvbmVkV2Vha0ltcGxQdHIobV9kYXRhICYgflVzaW5nU2luZ2xlU2xvdEZs
YWcpLnVucG9pc29uZWQoKTsKKyAgICAgICAgcmV0dXJuIFBvaXNvbmVkV2Vha0ltcGxQdHIoUHJl
UG9pc29uZWQsIG1fZGF0YSAmIH5Vc2luZ1NpbmdsZVNsb3RGbGFnKS51bnBvaXNvbmVkKCk7CiAg
ICAgfQogCiAgICAgdm9pZCBzZXRNYXAoVHJhbnNpdGlvbk1hcCogbWFwKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAkocmV2aXNpb24gMjI2Nzg0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTgsNyArMTE4LDggQEAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+
IGNyZWF0ZQogICAgICAgICBpZiAoIUNvbnRleHQ6OnVzZUZhc3RUTFMoKSkgewogICAgICAgICAg
ICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBqc09mZnNldCksIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwogICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0SW5zdGFuY2VHUFIs
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZQb2lzb25lZEluc3RhbmNlKCkpLCB3YXNt
Q29udGV4dEluc3RhbmNlR1BSKTsKLSAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KG1ha2VDb25zdEV4cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9p
c29uKSksIHNjcmF0Y2hSZWcpOworLy8gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW02NChtYWtlQ29uc3RFeHByUG9pc29uKEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBv
aXNvbikpLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiksIHNjcmF0Y2hSZWcpOwog
ICAgICAgICAgICAgaml0LnhvcjY0KHNjcmF0Y2hSZWcsIHdhc21Db250ZXh0SW5zdGFuY2VHUFIp
OwogICAgICAgICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL1dURi93dGYvQmFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvQmFnLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL0JhZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDksMTAgKzE0OSwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1l
IFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9oZWFkIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxh
dGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJU
cmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNv
bmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2lu
ZyBQb2lzb25lZEJhZyA9IEJhZzxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFBy
aXZhdGU6OkJhZ05vZGU8VD4+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBU
PgordXNpbmcgUG9pc29uZWRCYWcgPSBCYWc8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBQcml2
YXRlOjpCYWdOb2RlPFQ+Pj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9Qb2lzb25lZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVk
LmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDI4ICszMiw2IEBACiAjZGVmaW5lIEVOQUJMRV9QT0lTT04gMQogI2Rl
ZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCi0vLyBPbGRlciB2ZXJzaW9ucyBvZiBnY2Mg
YW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBpbiBidWlsZCBmYWlsdXJlcwotLy8g
d2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFrZSBhbiBhcmd1bWVudCBvZiBQb2lz
b25lZEltcGw8SzIsIGsyLCBUMj4KLS8vIHdoZW4gdGhlIEtleVR5cGUgaXMgYSB1aW50cHRyX3Qg
KGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQgdmFyaWFudAotLy8gb2YgUG9pc29u
ZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3QgZm9yIHRoZSBDb25zdEV4cHJQb2lz
b25lZCB2YXJpYW50LgotLy8gSW4gcHJhY3RpY2UsIHdlIHdpbGwgbGlrZWx5IG9ubHkgdXNlIHRo
ZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRoZQotLy8gQ29uc3RFeHByUG9pc29u
ZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBhIHNob3cgc3RvcHBlci4KLS8vIFRo
YXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gYWNjb3JkaW5nbHkgc28g
dGhhdCB3ZSBjYW4gdXNlCi0vLyBpdCB0byBkaXNhYmxlIHRoZSBhZmZlY3RlZCB0ZXN0cyB3aGVu
IGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KLQotI2lmIE9TKERBUldJTikKLSNkZWZpbmUg
RU5BQkxFX01JWEVEX1BPSVNPTiAoX19jbGFuZ19tYWpvcl9fID49IDkpCi0jZWxpZiBkZWZpbmVk
KF9fY2xhbmdfbWFqb3JfXykKLSNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiAoX19jbGFuZ19t
YWpvcl9fID49IDQpCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotI2luY2x1ZGUgPGZlYXR1cmVz
Lmg+Ci0jZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gKF9fR05VQ19QUkVSRVEoNywgMikpCi0j
ZW5kaWYgLy8gIWRlZmluZWQoX19HTlVDX18pCi0KLSNpZm5kZWYgRU5BQkxFX01JWEVEX1BPSVNP
TgotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIDAgLy8gRGlzYWJsZSBmb3IgZXZlcnl0aGlu
ZyBlbHNlLgotI2VuZGlmCi0KIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciAzMi1iaXQg
b3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQgc3VwcG9ydCku
CiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMyXzY0KSB8fCBP
UyhXSU5ET1dTKQpAQCAtODgsMzAgKzY2LDMzIEBAIGFzUmVmZXJlbmNlKFQgcHRyKSB7IHJldHVy
biAqcHRyOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhlbHBlcgogCi0vLyBGSVhN
RTogb25jZSB3ZSBoYXZlIEMrKzE3LCB3ZSBjYW4gbWFrZSB0aGUga2V5IG9mIHR5cGUgYXV0byBh
bmQgcmVtb3ZlIHRoZSBuZWVkIGZvciBLZXlUeXBlLgotdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlw
ZSwgS2V5VHlwZSBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxz
dGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPj4KLWNsYXNzIFBvaXNvbmVkSW1wbCB7CitlbnVtIFBy
ZVBvaXNvbmVkVGFnIHsgUHJlUG9pc29uZWQgfTsKKwordGVtcGxhdGU8dWludHB0cl90JiBrZXks
IHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8
VD46OnZhbHVlPj4KK2NsYXNzIFBvaXNvbmVkIHsKIHB1YmxpYzoKLSAgICBQb2lzb25lZEltcGwo
KSB7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQb2lzb25lZCA9IHRydWU7CiAKLSAg
ICBQb2lzb25lZEltcGwoc3RkOjpudWxscHRyX3QpIHsgfQorICAgIFBvaXNvbmVkKCkgeyB9CiAK
LSAgICBQb2lzb25lZEltcGwoVCBwdHIpCisgICAgUG9pc29uZWQoc3RkOjpudWxscHRyX3QpIHsg
fQorCisgICAgUG9pc29uZWQoVCBwdHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29u
KHB0cikpCiAgICAgeyB9CiAKLSAgICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikg
PSBkZWZhdWx0OworICAgIFBvaXNvbmVkKGNvbnN0IFBvaXNvbmVkJikgPSBkZWZhdWx0OwogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KLSAgICBQb2lzb25l
ZEltcGwoY29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1Bv
aXNvbmVkPj4KKyAgICBQb2lzb25lZChjb25zdCBPdGhlciYgb3RoZXIpCiAgICAgICAgIDogbV9w
b2lzb25lZEJpdHMocG9pc29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSkpCiAgICAgeyB9CiAKLSAg
ICBQb2lzb25lZEltcGwoUG9pc29uZWRJbXBsJiYgb3RoZXIpCisgICAgUG9pc29uZWQoUG9pc29u
ZWQmJiBvdGhlcikKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhXVEZNb3ZlKG90aGVyLm1fcG9p
c29uZWRCaXRzKSkKICAgICB7IH0KIAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChQb2lzb25l
ZEJpdHMgcG9pc29uZWRCaXRzKQorICAgIGV4cGxpY2l0IFBvaXNvbmVkKFByZVBvaXNvbmVkVGFn
LCBQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBv
aXNvbmVkQml0cykKICAgICB7IH0KIApAQCAtMTQzLDEyICsxMjQsMTIgQEAgcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29uZWRCaXRzOyB9CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wb2lzb25lZEJpdHM7
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID09IGIubV9wb2lzb25lZEJpdHM7IH0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVk
Qml0cyAhPSBiLm1fcG9pc29uZWRCaXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9p
c29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8IGIubV9wb2lzb25l
ZEJpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25z
dCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8PSBiLm1fcG9pc29uZWRCaXRzOyB9Ci0gICAgYm9v
bCBvcGVyYXRvcj4oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNv
bmVkQml0cyA+IGIubV9wb2lzb25lZEJpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3Qg
UG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+PSBiLm1fcG9p
c29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkJiBiKSBjb25z
dCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFBvaXNvbmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVk
Qml0cyAhPSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9p
c29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0
czsgfQorICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1
cm4gbV9wb2lzb25lZEJpdHMgPD0gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0
b3I+KGNvbnN0IFBvaXNvbmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+IGIu
bV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUG9pc29uZWQmIGIp
IGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShVIGIpIGNvbnN0IHsgcmV0
dXJuIHVucG9pc29uZWQ8VT4oKSA9PSBiOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9v
bCBvcGVyYXRvciE9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpICE9IGI7IH0K
QEAgLTE1NywzMyArMTM4LDQxIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBi
b29sIG9wZXJhdG9yPihVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+IGI7IH0K
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPj0oVSBiKSBjb25zdCB7IHJl
dHVybiB1bnBvaXNvbmVkPFU+KCkgPj0gYjsgfQogCi0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRv
cj0oVCBwdHIpCisgICAgUG9pc29uZWQmIG9wZXJhdG9yPShUIHB0cikKICAgICB7CiAgICAgICAg
IG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHB0cik7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAg
ICB9Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsJikgPSBk
ZWZhdWx0OworICAgIFBvaXNvbmVkJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWQmKSA9IGRlZmF1
bHQ7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotICAg
IFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYg
b3RoZXIpCisgICAgUG9pc29uZWQmIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCkKKyAgICB7Cisg
ICAgICAgIGNsZWFyKCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjpp
c1BvaXNvbmVkPj4KKyAgICBQb2lzb25lZCYgb3BlcmF0b3I9KGNvbnN0IE90aGVyJiBvdGhlcikK
ICAgICB7CiAgICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uPFQ+KG90aGVyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB2b2lkIHN3YXAoUG9p
c29uZWRJbXBsJiBvKQorICAgIHZvaWQgc3dhcChQb2lzb25lZCYgb3RoZXIpCiAgICAgewotICAg
ICAgICBzdGQ6OnN3YXAobV9wb2lzb25lZEJpdHMsIG8ubV9wb2lzb25lZEJpdHMpOworICAgICAg
ICBzdGQ6OnN3YXAobV9wb2lzb25lZEJpdHMsIG90aGVyLm1fcG9pc29uZWRCaXRzKTsKICAgICB9
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotICAgIHZv
aWQgc3dhcChQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIG8pCisgICAgdm9pZCBzd2FwKHN0ZDo6
bnVsbHB0cl90KSB7IGNsZWFyKCk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0
eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIHZvaWQg
c3dhcChPdGhlciYgb3RoZXIpCiAgICAgewogICAgICAgICBUIHQxID0gdGhpcy0+dW5wb2lzb25l
ZCgpOwotICAgICAgICBUMiB0MiA9IG8udW5wb2lzb25lZCgpOworICAgICAgICBUIHQyID0gb3Ro
ZXIudW5wb2lzb25lZCgpOwogICAgICAgICBzdGQ6OnN3YXAodDEsIHQyKTsKICAgICAgICAgbV9w
b2lzb25lZEJpdHMgPSBwb2lzb24odDEpOwotICAgICAgICBvID0gdDI7CisgICAgICAgIG90aGVy
Lm1fcG9pc29uZWRCaXRzID0gT3RoZXI6OnBvaXNvbih0Mik7CiAgICAgfQogCiAgICAgdm9pZCBz
d2FwKFQmIHQyKQpAQCAtMjE2LDY5ICsyMDUsMzMgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
UG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsgMCB9OwotfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBU
Mj4KLWlubGluZSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lzb25l
ZEltcGw8SzIsIGsyLCBUMj4mIGIpCi17Ci0gICAgYS5zd2FwKGIpOwotfQorICAgIHRlbXBsYXRl
PHVpbnRwdHJfdCYsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNvbmVkOwor
fTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMT4KLWlubGluZSB2
b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBUMSYgYikKK3RlbXBsYXRlPHVp
bnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIHZvaWQgc3dhcChQ
b2lzb25lZDxrZXksIFQ+JiBhLCBVJiBiKQogewogICAgIGEuc3dhcChiKTsKIH0KIAogV1RGX0VY
UE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7CiAKLSNpZiBFTkFCTEUoUE9JU09O
KQotLy8gRklYTUU6IG9uY2Ugd2UgaGF2ZSBDKysxNywgd2UgY2FuIG1ha2UgdGhpcyBhIGxhbWJk
YSBpbiBtYWtlQ29uc3RFeHByUG9pc29uKCkuCi1pbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBj
b25zdEV4cHJQb2lzb25SYW5kb20odWludHB0cl90IHNlZWQpCi17Ci0gICAgdWludHB0cl90IHJl
c3VsdDEgPSBzZWVkICogNjkwNjk2OTA2OSArIDEyMzQ1Njc7Ci0gICAgdWludHB0cl90IHJlc3Vs
dDIgPSBzZWVkICogODI1MzcyOSArIDIzOTY0MDM7Ci0gICAgcmV0dXJuIChyZXN1bHQxIDw8IDMp
IF4gKHJlc3VsdDIgPDwgMTYpOwotfQotI2VuZGlmCi0KLWlubGluZSBjb25zdGV4cHIgdWludHB0
cl90IG1ha2VDb25zdEV4cHJQb2lzb24odWludDMyX3Qga2V5KQotewotI2lmIEVOQUJMRShQT0lT
T04pCi0gICAgdWludHB0cl90IHBvaXNvbiA9IGNvbnN0RXhwclBvaXNvblJhbmRvbShrZXkpOwot
ICAgIHBvaXNvbiAmPSB+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhmZmZmKSA8PCA0OCk7IC8v
IEVuc3VyZSB0aGF0IHBvaXNvbmVkIGJpdHMgbG9vayBsaWtlIGEgcG9pbnRlci4KLSAgICBwb2lz
b24gfD0gKDEgPDwgMik7IC8vIEVuc3VyZSB0aGF0IHBvaXNvbmVkIGJpdHMgY2Fubm90IGJlIDAu
Ci0gICAgcmV0dXJuIHBvaXNvbjsKLSNlbHNlCi0gICAgcmV0dXJuICh2b2lkKWtleSwgMDsKLSNl
bmRpZgotfQotCiB0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBv
aXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47Ci0KLXRlbXBsYXRlPHVp
bnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29u
ZWRJbXBsPHVpbnRwdHJfdCwgbWFrZUNvbnN0RXhwclBvaXNvbihrZXkpLCBUPjsKLQotdGVtcGxh
dGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRy
VHJhaXRzIHsKLSAgICB1c2luZyBTdG9yYWdlVHlwZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwg
VCo+Oworc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzIHsKKyAgICB1c2luZyBTdG9yYWdlVHlwZSA9
IFBvaXNvbmVkPGtleSwgVCo+OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RhdGljIEFMV0FZ
U19JTkxJTkUgVCogZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVlKSB7IHJl
dHVybiBwdHIuZXhjaGFuZ2UobmV3VmFsdWUpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
MSwgSzEgazEsIHR5cGVuYW1lIFQxPgotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dh
cChQb2lzb25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFQxJiBiKSB7IGEuc3dhcChiKTsgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIs
IEsyIGsyLCB0eXBlbmFtZSBUMj4KLSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAo
UG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIGIp
IHsgYS5zd2FwKGIpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+CisgICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkPGtleSwgVCo+JiBhLCBPdGhlciYgYikg
eyBhLnN3YXAoYik7IH0KIAogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFQqIHVud3JhcChjb25z
dCBTdG9yYWdlVHlwZSYgcHRyKSB7IHJldHVybiBwdHIudW5wb2lzb25lZCgpOyB9CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKK3VzaW5n
IFdURjo6UHJlUG9pc29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lz
b25lZEJpdHM7Ci11c2luZyBXVEY6Om1ha2VDb25zdEV4cHJQb2lzb247CiB1c2luZyBXVEY6Om1h
a2VQb2lzb247CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgJKHJldmlzaW9uIDIy
Njc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDExICszMiwxNCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dWlu
dDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgotY2xhc3MgUG9p
c29uZWRVbmlxdWVQdHIgOiBwdWJsaWMgQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj4gewordGVt
cGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+
CitjbGFzcyBQb2lzb25lZFVuaXF1ZVB0ciA6IHB1YmxpYyBQb2lzb25lZDxrZXksIFQqPiB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBv
aXNvbmVkPGtleSwgVCo+OworICAgIHVzaW5nIEJhc2UgPSBQb2lzb25lZDxrZXksIFQqPjsKIHB1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQb2lzb25lZFVuaXF1ZVB0ciA9IHRy
dWU7CisgICAgdXNpbmcgVmFsdWVUeXBlID0gVDsKKwogICAgIFBvaXNvbmVkVW5pcXVlUHRyKCkg
PSBkZWZhdWx0OwogICAgIFBvaXNvbmVkVW5pcXVlUHRyKHN0ZDo6bnVsbHB0cl90KSA6IEJhc2Uo
KSB7IH0KICAgICBQb2lzb25lZFVuaXF1ZVB0cihUKiBwdHIpIDogQmFzZShwdHIpIHsgfQpAQCAt
NDgsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIDogQmFzZSh1bmlxdWUucmVsZWFzZSgpKQog
ICAgIHsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+PgotICAg
IFBvaXNvbmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyPGtleTIsIFU+JiYgcHRyKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3Ro
ZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3RkOjppc19iYXNlX29mPFQsIHR5cGVuYW1lIE90
aGVyOjpWYWx1ZVR5cGU+Ojp2YWx1ZT4+CisgICAgUG9pc29uZWRVbmlxdWVQdHIoT3RoZXImJiBw
dHIpCiAgICAgICAgIDogQmFzZShwdHIudW5wb2lzb25lZCgpKQogICAgIHsKICAgICAgICAgcHRy
LmNsZWFyV2l0aG91dERlc3Ryb3koKTsKQEAgLTg5LDggKzkyLDggQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5MiwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBV
Pjo6dmFsdWU+PgotICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0oUG9pc29uZWRVbmlx
dWVQdHI8a2V5MiwgVT4mJiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVu
YW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZFVuaXF1ZVB0ciAmJiBzdGQ6
OmlzX2Jhc2Vfb2Y8VCwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQ
b2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KE90aGVyJiYgcHRyKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHRoaXMgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29u
ZWQoKSAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgaWYgKExJS0VMWSh0aGlzICE9IHN0
YXRpY19jYXN0PHZvaWQqPigmcHRyKSkpIHsKQEAgLTEyMiwyOCArMTI1LDMxIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAot
ICAgIHRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQ
b2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlw
ZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVp
bnQzMl90IGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFtZSBF
bmFibGUgPSB2b2lkPgordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KIFBvaXNvbmVkVW5pcXVl
UHRyPGtleSwgVD4gbWFrZVBvaXNvbmVkVW5pcXVlKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
IHsKICAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUPjo6Y3JlYXRlKHN0ZDo6Zm9y
d2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBr
ZXksIHR5cGVuYW1lIFQ+Ci1jbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJs
aWMgQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj4gewordGVtcGxhdGU8dWludHB0cl90JiBrZXks
IHR5cGVuYW1lIFQ+CitjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMg
UG9pc29uZWQ8a2V5LCBUKj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVz
aW5nIEJhc2UgPSBDb25zdEV4cHJQb2lzb25lZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0g
UG9pc29uZWQ8a2V5LCBUKj47CiBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
UG9pc29uZWRVbmlxdWVQdHIgPSB0cnVlOworICAgIHVzaW5nIFZhbHVlVHlwZSA9IFRbXTsKKwog
ICAgIFBvaXNvbmVkVW5pcXVlUHRyKCkgPSBkZWZhdWx0OwogICAgIFBvaXNvbmVkVW5pcXVlUHRy
KHN0ZDo6bnVsbHB0cl90KSA6IEJhc2UoKSB7IH0KICAgICBQb2lzb25lZFVuaXF1ZVB0cihUKiBw
dHIpIDogQmFzZShwdHIpIHsgfQogICAgIFBvaXNvbmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVl
UHRyJiYgcHRyKSA6IEJhc2UoV1RGTW92ZShwdHIpKSB7IHB0ci5jbGVhcldpdGhvdXREZXN0cm95
KCk7IH0KICAgICBQb2lzb25lZFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VFtdPiYmIHVuaXF1
ZSkgOiBQb2lzb25lZFVuaXF1ZVB0cih1bmlxdWUucmVsZWFzZSgpKSB7IH0KIAotICAgIHRlbXBs
YXRlPHVpbnQzMl90IGtleTI+Ci0gICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQ
dHI8a2V5MiwgVFtdPiYmIHB0cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0ZDo6
aXNfc2FtZTxUW10sIHR5cGVuYW1lIE90aGVyOjpWYWx1ZVR5cGU+Ojp2YWx1ZT4+CisgICAgUG9p
c29uZWRVbmlxdWVQdHIoT3RoZXImJiBwdHIpCiAgICAgICAgIDogQmFzZShwdHIudW5wb2lzb25l
ZCgpKQogICAgIHsKICAgICAgICAgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3koKTsKQEAgLTE3OCw4
ICsxODQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx1aW50MzJfdCBrZXkyPgotICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0o
UG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVFtdPiYmIHB0cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BvaXNvbmVkVW5p
cXVlUHRyICYmIHN0ZDo6aXNfc2FtZTxUW10sIHR5cGVuYW1lIE90aGVyOjpWYWx1ZVR5cGU+Ojp2
YWx1ZT4+CisgICAgUG9pc29uZWRVbmlxdWVQdHImIG9wZXJhdG9yPShPdGhlciYmIHB0cikKICAg
ICB7CiAgICAgICAgIEFTU0VSVCh0aGlzID09IHN0YXRpY19jYXN0PHZvaWQqPigmcHRyKSB8fCB0
aGlzLT51bnBvaXNvbmVkKCkgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGlmIChMSUtF
TFkodGhpcyAhPSBzdGF0aWNfY2FzdDx2b2lkKj4oJnB0cikpKSB7CkBAIC0yMTEsMTAgKzIxNywx
MCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhcldpdGhvdXREZXN0cm95KCkgeyBCYXNlOjpj
bGVhcigpOyB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50MzJfdCwgdHlwZW5hbWUsIHR5cGVuYW1lPiBm
cmllbmQgY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI7CisgICAgdGVtcGxhdGU8dWludHB0cl90Jiwg
dHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI7CiB9Owog
Ci10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50
cz4KK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CiBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gbWFrZVBvaXNvbmVkVW5pcXVlKHNp
emVfdCBjb3VudCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVybiBQb2lz
b25lZFVuaXF1ZVB0cjxrZXksIFRbXT46OmNyZWF0ZShjb3VudCwgc3RkOjpmb3J3YXJkPEFyZ3Vt
ZW50cz4oYXJndW1lbnRzKS4uLik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWYuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWYuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNl
L1dURi93dGYvUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NiwxMCArMjU2LDEwIEBAIGlubGlu
ZSBib29sIGlzKGNvbnN0IFJlZjxBcmdUeXBlLCBQdHJUcmEKICAgICByZXR1cm4gaXM8RXhwZWN0
ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVu
YW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRw
dHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBs
YXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkUmVmID0gUmVmPFQs
IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwordGVtcGxhdGU8dWludHB0cl90
JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJlZiA9IFJlZjxULCBQb2lzb25lZFB0
clRyYWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Jl
ZkNvdW50ZWRBcnJheS5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWZD
b3VudGVkQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgUmVmQ291bnRlZEFycmF5KHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAg
aWYgKCFzaXplKSB7Ci0gICAgICAgICAgICBtX2RhdGEgPSAwOworICAgICAgICAgICAgbV9kYXRh
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05MCw3ICs5
MCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJyYXkoY29uc3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKICAgICB7CiAgICAg
ICAgIGlmIChvdGhlci5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fZGF0YSA9IDA7CisgICAg
ICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMjM4LDEwICsyMzgsMTAgQEAgcHJpdmF0ZToKICAgICB0eXBlbmFtZSBQ
dHJUcmFpdHM6OlN0b3JhZ2VUeXBlIG1fZGF0YSB7IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRl
PHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRyVHJh
aXRzOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBQb2lzb25l
ZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcg
UG9pc29uZWRSZWZDb3VudGVkQXJyYXkgPSBSZWZDb3VudGVkQXJyYXk8VCwgQ29uc3RFeHByUG9p
c29uZWRQdHJUcmFpdHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5h
bWUgVD4KK3VzaW5nIFBvaXNvbmVkUmVmQ291bnRlZEFycmF5ID0gUmVmQ291bnRlZEFycmF5PFQs
IFBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRl
eDogU291cmNlL1dURi93dGYvUmVmUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UmVmUHRyLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzYsMTAgKzI3NiwxMCBAQCBpbmxpbmUgYm9vbCBpcyhjb25zdCBS
ZWZQdHI8QXJnVHlwZSwgUHRyCiAgICAgcmV0dXJuIGlzPEV4cGVjdGVkVHlwZT4oc291cmNlLmdl
dCgpKTsKIH0KIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29u
c3RFeHByUG9pc29uZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5h
bWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXks
IHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25lZFJlZlB0ciA9IFJlZlB0cjxULCBDb25zdEV4cHJQ
b2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBl
bmFtZSBUPgordXNpbmcgUG9pc29uZWRSZWZQdHIgPSBSZWZQdHI8VCwgUG9pc29uZWRQdHJUcmFp
dHM8a2V5LCBUPj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9XVEZBc3NlcnRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZBc3Nl
cnRpb25zLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvV1RGQXNzZXJ0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDM5ICszNSw5IEBAIG5hbWVzcGFjZSBXVEYg
ewogCiBuYW1lc3BhY2Ugewogc3RydWN0IER1bW15U3RydWN0IHsgfTsKLWNvbnN0IHVpbnQzMl90
IGR1bW15UG9pc29uID0gMHhmZmZmOwordWludHB0cl90IGR1bW15UG9pc29uID0gMDsKIH0KIAot
I2lmIEVOQUJMRShQT0lTT04pCi1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigx
KSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwot
c3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSA+PiA0OCksICJwb2lzb25l
ZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1h
a2VDb25zdEV4cHJQb2lzb24oMTAwMCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9v
ayBsaWtlIGEgcG9pbnRlci4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29u
KDEwMDAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVy
LiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkgPj4gNDgp
LCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKLXN0YXRpY19h
c3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpID4+IDQ4KSwgInBvaXNvbmVk
IGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci0KLXN0YXRpY19hc3NlcnQoKG1h
a2VDb25zdEV4cHJQb2lzb24oMSkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRz
IHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMg
c2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNv
bnN0RXhwclBvaXNvbigxMDAwKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMg
c2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNv
bnN0RXhwclBvaXNvbigxMDAwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRz
IHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMDAwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBi
aXRzIHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1h
a2VDb25zdEV4cHJQb2lzb24oMHhmZmZmZmZmZikgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lz
b25lZCBiaXRzIHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLQotc3RhdGljX2Fz
c2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlz
IGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAmIDB4
NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMCkgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQu
Iik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSAmIDB4NCksICJi
aXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4
cHJQb2lzb24oMTAwMDAwMCkgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7
Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpICYgMHg0KSwg
ImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotCi1zdGF0aWNfYXNzZXJ0KCEobWFrZUNv
bnN0RXhwclBvaXNvbigxKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMg
YXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoISht
YWtlQ29uc3RFeHByUG9pc29uKDEwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVu
dCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNz
ZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIg
YWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0
YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSAmIDB4MyksICJlbnN1cmUg
Ym90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0
cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApICYgMHgz
KSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2Ug
YXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMHhm
ZmZmZmZmZikgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFp
bGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci0jZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikK
LQogc3RhdGljX2Fzc2VydChzaXplb2YoQmFnPER1bW15U3RydWN0PikgPT0gc2l6ZW9mKHZvaWQq
KSwgIiIpOwogc3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRCYWc8ZHVtbXlQb2lzb24sIER1
bW15U3RydWN0PikgPT0gc2l6ZW9mKHZvaWQqKSwgIiIpOwogCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDYgQEAgc2V0KFRlc3RX
VEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9DaGVja2VkQXJp
dGhtZXRpY09wZXJhdGlvbnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9Db25kaXRpb24uY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nv
bnN0RXhwclBvaXNvbmVkLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9D
cm9zc1RocmVhZFRhc2suY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Rh
dGVNYXRoLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EZXF1ZS5jcHAK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNzY1LDcgKzc2NSw2IEBACiAJCUZFMDVGQUVDMUZEQjUxMEEwMDA5MzIz
MCAvKiBQb2lzb25lZFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTA1RkFFQjFGREI1MTAyMDAwOTMyMzAgLyogUG9pc29uZWRSZWYuY3BwICov
OyB9OwogCQlGRTA1RkFFRDFGREI1MTBFMDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUExRkRC
NTEwMTAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmUHRyLmNwcCAqLzsgfTsKIAkJRkUwNUZBRUYxRkUw
NjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5j
cHAgKi87IH07Ci0JCUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25l
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1
RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovOyB9OwogCQlG
RTA1RkIwNjFGRTg0RkI3MDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZCMDUxRkU4NEZBRTAw
MDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmNwcCAqLzsgfTsKIAkJRkVDOEY0RTcxRkU5Qzkw
NTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJy
YXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
QzhGNEU2MUZFOUM4REUwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURl
c3RydWN0aWJsZUFycmF5cy5jcHAgKi87IH07CiAJCUZFQzhGNEVCMUZFOUY1QUYwMDU2RkQ4QSAv
KiBQb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM4RjRFQTFG
RTlGNUE3MDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwICovOyB9OwpAQCAtMTg4MSw3ICsxODgwLDYgQEAKIAkJRkUwNUZBRUEx
RkRCNTEwMTAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkUmVmUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUwNUZBRUIxRkRCNTEwMjAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkUmVmLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBv
aXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUwNUZBRjAxRkUwOENDRDAwMDkz
MjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbnN0RXhwclBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkUwNUZCMDUxRkU4NEZBRTAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkVW5pcXVlUHRyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIy
IC8qIE5ha2VkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5h
a2VkUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDOEY0RTYxRkU5QzhE
RTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJy
YXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkVW5p
cXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI2NTQsNyArMjY1Miw2IEBACiAJCQkJQTdBOTY2REExNDBFQ0NDODAw
NUVGOUI0IC8qIENoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJMEYzMENC
NUIxRkNFMTc5MjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLywKIAkJCQkw
RkVBRTM2NzFCN0QxOUNCMDBDRTE3RjIgLyogQ29uZGl0aW9uLmNwcCAqLywKLQkJCQlGRTA1RkFG
MDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovLAogCQkJCTUxNzE0
RUI5MUQwODc0MTYwMDQ3MjNDNCAvKiBDcm9zc1RocmVhZFRhc2suY3BwICovLAogCQkJCTI2QTJD
NzJFMTVFMkU3M0MwMDVCMUExNCAvKiBDU3RyaW5nLmNwcCAqLywKIAkJCQk3QUEwMjFCQTFBQjA5
RUE3MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICovLApAQCAtMzIyMSw3ICszMjE4LDYgQEAKIAkJ
CQk3QzgzREVBMDFEMEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25j
dXJyZW50UHRySGFzaFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVDMzFEMEE1OTBD
MDBGRUJDRjMgLyogQ29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMDVGQUYxMUZF
MDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREVBNjFEMEE1OTBDMDBGRUJDRjMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFQTkxRDBBNTkwQzAwRkVCQ0YzIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0RFQUQxRDBBNTkwQzAwRkVCQ0YzIC8qIERlcXVlLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29u
ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0
RXhwclBvaXNvbmVkLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMzg0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgotI2luY2x1
ZGUgPHd0Zi9Qb2lzb25lZC5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRp
YyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotc3RhdGljIGNvbnN0IHVpbnQzMl90
IFBvaXNvbkIgPSAweGJiYmI7Ci0KLS8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2Ug
Y2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKLS8vIHdlIHJldXNl
IHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KLQotVEVTVChXVEZf
Q29uc3RFeHByUG9pc29uZWQsIEJhc2ljKQotewotICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OwotCi0gICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7Ci0g
ICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7Ci0KLSAgICB7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgJipwdHIpOwotICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7Ci0KLSNp
ZiBFTkFCTEUoUE9JU09OKQotICAgICAgICB1aW50cHRyX3QgcHRyQml0czsKLSAgICAgICAgc3Rk
OjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7Ci0gICAgICAgIEFTU0VS
VF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsKLSNpZiBFTkFC
TEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgIEFTU0VSVF9UUlVFKChDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwotI2VuZGlmCi0j
ZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOwotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0KLSAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQot
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25l
ZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAg
ewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZh
OwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihXVEZN
b3ZlKHAxKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxv
Z2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyID0gcDE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHAzID0gcDE7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRz
KCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
RGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVk
KCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dn
ZXIqPiBwMyA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dn
ZXIqPiBwNCA9IFdURk1vdmUocDMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RS
VUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIuY2xlYXIoKTsKLSAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLX0KLQotVEVT
VChXVEZfQ29uc3RFeHByUG9pc29uZWQsIEFzc2lnbm1lbnQpCi17Ci0gICAgRGVyaXZlZFJlZkxv
Z2dlciBhKCJhIik7Ci0gICAgUmVmTG9nZ2VyIGIoImIiKTsKLSAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGMoImMiKTsKLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9IHAy
OwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIHAzID0gcDQ7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0ciA9ICZiOwotICAgICAgICBBU1NFUlRfRVEo
JmIsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gbnVsbHB0cjsKLSAgICAgICAg
QVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZi
LCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9IFdURk1vdmUocDIpOwotICAgICAgICBB
U1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzID0gV1RG
TW92ZShwNCk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkg
IT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIHAxID0gcDI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmMsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzID0gcDQ7Ci0gICAgICAgIEFTU0VSVF9F
USgmYywgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNv
bmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwot
ICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAg
ICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigm
YSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0
ciA9ICZjOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDIoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBXVEZN
b3ZlKHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZj
LCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQo
KSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAg
ICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0g
cHRyOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRy
KCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSNpZiBDT01Q
SUxFUihDTEFORykKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCi0jZW5kaWYKLSAgICAgICAgcHRyID0gV1RG
TW92ZShwdHIpOwotI2lmIENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAotI2VuZGlmCi0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0g
ICAgfQotfQotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgU3dhcCkKLXsKLSAgICBSZWZM
b2dnZXIgYSgiYSIpOwotICAgIFJlZkxvZ2dlciBiKCJiIik7Ci0KLSAgICB7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgcDEuc3dhcChwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwg
cDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZh
KTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMuc3dhcChwNCk7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBw
NC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5i
aXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VS
VF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51
bnBvaXNvbmVkKCkpOwotICAgICAgICBzd2FwKHAxLCBwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVk
KCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAz
KCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQo
JmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgc3dhcChwMywgcDQpOwotICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0g
cDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwotICAgICAgICBB
U1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAg
ICAgUmVmTG9nZ2VyKiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMik7Ci0gICAgICAgIHN3YXAocDEsIHAyKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHAyKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4ocDIpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgUmVmTG9nZ2VyKiBw
MigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMik7Ci0gICAgICAgIHAxLnN3YXAocDIpOwotICAgICAgICBBU1NFUlRf
RVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIpOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihw
MikpOwotICAgIH0KLX0KLQotc3RhdGljIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHBvaXNvbmVkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQotewotICAgIHJldHVybiBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKLX0KLQotVEVT
VChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFJldHVyblZhbHVlKQotewotICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOwotCi0gICAgewotICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9v
KGEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsICYqcHRyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5h
bWUpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjY3
ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkyLDExICs5Miw5IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKICAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgIT0gcDMuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIHsKQEAgLTEwNiwx
MSArMTA0LDkgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEo
JmEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBw
Mi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKICAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMu
Yml0cygpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIHsKQEAgLTEyMCwxMyArMTE2LDExIEBAIFRF
U1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAot
I2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAzID0gJmE7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwogICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0K
IAogICAgIHsKQEAgLTEzNiwxNiArMTMwLDEzIEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykK
ICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04p
CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMp
KTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNP
TikKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dn
ZXIqPiBwMSA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMiA9IHAxOwpAQCAtMTU3LDkgKzE0OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykK
ICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKICAgICB9Ci0jZW5kaWYKIAotI2lmIEVOQUJM
RShNSVhFRF9QT0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKQEAgLTE3Myw3ICsxNjIsNiBAQCBURVNU
KFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CiAgICAg
fQotI2VuZGlmCiAKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHB0cigmYSk7CkBAIC0yMDAsNyArMTg4LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEFz
c2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlY
RURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MygmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZi
KTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMjA5LDcgKzE5
Niw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEo
JmIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5k
aWYKICAgICB9CiAKICAgICB7CkBAIC0yMzYsNyArMjIyLDYgQEAgVEVTVChXVEZfUG9pc29uZWQs
IEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUo
TUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0
KCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMjQ1LDEw
ICsyMzAsOCBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9p
c29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwot
I2VuZGlmCiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7CiAgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKICAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKQEAgLTI2OCw3
ICsyNTEsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJU
X0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkg
IT0gcDQuYml0cygpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHsKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKQEAgLTI3Nyw3ICsyNTksNiBAQCBU
RVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICB9CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgIHsK
ICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwogICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwpA
QCAtMjk3LDcgKzI3OCw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAg
ICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAgIH0KLSNlbmRpZgogCiAgICAgewogICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwpAQCAtMzM5LDcgKzMx
OSw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogCiAgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSAhPSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwogICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKQEAgLTM1MSw3ICszMzAsNiBAQCBURVNUKFdURl9Q
b2lzb25lZCwgU3dhcCkKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwogICAgICAg
ICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAog
ICAgIHsKQEAgLTM1OSwxNyArMzM3LDEyIEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CiAgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBw
Mi51bnBvaXNvbmVkKCkpOwotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIHN3YXAo
cDEsIHAyKTsKLSNlbHNlCi0gICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOwotI2VuZGlmCiAgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMi51bnBvaXNvbmVkKCkpOwogCiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBw
Mi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMu
dW5wb2lzb25lZCgpKTsKQEAgLTM4MSwxMCArMzU0LDggQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3
YXApCiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RS
VUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKLSNpZiBFTkFCTEUo
TUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDEoJmEpOwogICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKQEAgLTQwOCw3ICsz
NzksNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKIAogICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ocDIpKTsKICAgICB9Ci0jZW5kaWYK
IH0KIAogc3RhdGljIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVk
UHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUG9pc29uZWRSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSwxOSArMzEsMzEgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgY29u
c3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lz
b25CID0gMHhiYmJiOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkMgPSAweGNjY2M7Ci1z
dGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRCA9IDB4ZGRkZDsKLXN0YXRpYyBjb25zdCB1aW50
MzJfdCBQb2lzb25FID0gMHhlZWVlOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkYgPSAw
eGZmZmY7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkE7CitzdGF0aWMgdWludHB0cl90IHBvaXNv
bkI7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkM7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkQ7
CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkU7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkY7CisK
K3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkKK3sKKyAgICBwb2lzb25BID0gbWFrZVBv
aXNvbigpOworICAgIHBvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uQyA9IG1ha2VQ
b2lzb24oKTsKKyAgICBwb2lzb25EID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkUgPSBtYWtl
UG9pc29uKCk7CisgICAgcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKK30KIAogVEVTVChXVEZfUG9p
c29uZWRSZWYsIEJhc2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29u
QSwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkEsIFJlZkxv
Z2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5uYW1lKTsKIApAQCAtNTEsMTYgKzYzLDE2IEBAIFRF
U1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAg
ICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcmVmLCBzaXplb2YocHRyQml0cykpOwogICAg
ICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7
Ci0gICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOworICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBv
aXNvbmVkPHBvaXNvbkEsIFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKICNpZiBFTkFCTEUoUE9J
U09OX0FTU0VSVFMpCi0gICAgICAgIEFTU0VSVF9UUlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBSZWZMb2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICBBU1NFUlRf
VFJVRSgoUG9pc29uZWQ8cG9pc29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykp
KTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgfQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQiwgUmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkp
OworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25CLCBSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihh
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLm5hbWUsICZyZWYtPm5hbWUpOwogICAgIH0KQEAgLTY5LDEyICs4MSwxNCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZiwgQmFzaWMpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50
KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEo
ImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIp
OwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+IHJlZihh
KTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uQywgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAg
ICAgICAgcmVmID0gYjsKQEAgLTg0LDcgKzk4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEFz
c2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBk
ZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxw
b2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRy
KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBjOwpAQCAtOTQsNyAr
MTA4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkUsIFJlZkxvZ2dl
cj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25FLCBSZWZMb2dnZXI+IHJlZihh
KTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwogICAgICAgICByZWYgPSBhZG9wdFJlZihiKTsKQEAgLTEwNCw3ICsxMTgsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8
IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAg
UG9pc29uZWRSZWY8cG9pc29uRiwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0g
YWRvcHRSZWYoYyk7CkBAIC0xMTQsMjUgKzEyOCwyNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwg
QXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYo
YykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCi1zdGF0aWMgUG9pc29uZWRSZWY8UG9p
c29uQiwgUmVmTG9nZ2VyPiBwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dn
ZXI+JiYgcmVmZXJlbmNlKQorc3RhdGljIFBvaXNvbmVkUmVmPHBvaXNvbkIsIFJlZkxvZ2dlcj4g
cGFzc1dpdGhSZWYoUG9pc29uZWRSZWY8cG9pc29uQywgUmVmTG9nZ2VyPiYmIHJlZmVyZW5jZSkK
IHsKICAgICByZXR1cm4gV1RGTW92ZShyZWZlcmVuY2UpOwogfQogCiBURVNUKFdURl9Qb2lzb25l
ZFJlZiwgUmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERl
cml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZl
ZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIs
IFJlZkxvZ2dlcj4gcmVmKHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dl
cj4oYSkpKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uQiwgUmVmTG9nZ2VyPiByZWYocGFz
c1dpdGhSZWYoUG9pc29uZWRSZWY8cG9pc29uQywgUmVmTG9nZ2VyPihhKSkpOwogICAgICAgICBF
WFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9p
c29uZWRSZWY8UG9pc29uRCwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVm
PHBvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5w
dHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IHBhc3NXaXRoUmVm
KGIpOwpAQCAtMTQyLDIyICsxNTgsMjIgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFJldHVyblZh
bHVlKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYo
YikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJlZihhKSk7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVmKGEpKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIERlcml2ZWRSZWZMb2dnZXI+IHB0cigmYSk7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkEsIFJlZkxvZ2dlcj4gcHRyMihXVEZNb3ZlKHB0
cikpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBEZXJpdmVkUmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25BLCBSZWZMb2dnZXI+IHB0cjIo
V1RGTW92ZShwdHIpKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWY8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gZGVyaXZlZFJlZmVy
ZW5jZShhKTsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPiBiYXNlUmVm
ZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZlcmVuY2UuY29weVJlZigpKSk7CisgICAgICAg
IFBvaXNvbmVkUmVmPHBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IGRlcml2ZWRSZWZlcmVuY2Uo
YSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkMsIFJlZkxvZ2dlcj4gYmFzZVJlZmVyZW5j
ZShwYXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYoKSkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIGRlcml2ZWRSZWZlcmVuY2UucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IGJhc2VSZWZlcmVuY2UucHRyKCkpOwogICAgIH0KQEAgLTE2NiwxMiArMTgyLDE0IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5WYWx1ZSkKIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3
YXApCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7
CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9p
c29uRCwgUmVmTG9nZ2VyPiBwMShhKTsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRSwgUmVm
TG9nZ2VyPiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRCwgUmVmTG9nZ2VyPiBw
MShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMihiKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOwpAQCAtMTgzLDggKzIwMSw4IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8
IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOwotICAgICAgICBQ
b2lzb25lZFJlZjxQb2lzb25BLCBSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBQb2lzb25lZFJl
Zjxwb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25B
LCBSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAxLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5wdHIoKSk7CkBA
IC0xOTYsNyArMjE0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkYsIFJlZkxv
Z2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEo
YSk7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAi
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKQEAgLTIwOSw3ICsyMjcsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYo
YikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKKyAgICAg
ICAgUG9pc29uZWRSZWY8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKICAgICAgICAgUmVmPFJl
ZkxvZ2dlcj4gcDIoYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcDEucHRyKCkpOwpAQCAtMjIzLDcgKzI0MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
LCBTd2FwKQogfQogCiBzdHJ1Y3QgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlciA6IFJlZkxv
Z2dlciB7Ci0gICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWY8UG9pc29uQiwgUG9pc29uZWRSZWZD
aGVja2luZ1JlZkxvZ2dlcj47CisgICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWY8cG9pc29uQiwg
UG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj47CiAKICAgICBQb2lzb25lZFJlZkNoZWNraW5n
UmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIHZvaWQgcmVmKCk7CkBAIC0yNjEsNiAr
Mjc5LDggQEAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRlcgogCiBURVNU
KFdURl9Qb2lzb25lZFJlZiwgQXNzaWduQmVmb3JlRGVyZWYpCiB7CisgICAgaW5pdGlhbGl6ZVBv
aXNvbnMoKTsKKwogICAgIERlcml2ZWRQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGEoImEi
KTsKICAgICBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVk
UG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlciBjKCJjIik7CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZlB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3BwCShyZXZpc2lvbiAyMjY3
ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZlB0ci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDIyICszMywzNCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotc3RhdGlj
IGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7Ci1zdGF0aWMgY29uc3QgdWludDMyX3Qg
UG9pc29uQyA9IDB4Y2NjYzsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25EID0gMHhkZGRk
Owotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkUgPSAweGVlZWU7Ci1zdGF0aWMgY29uc3Qg
dWludDMyX3QgUG9pc29uRiA9IDB4ZmZmZjsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQTsKK3N0
YXRpYyB1aW50cHRyX3QgcG9pc29uQjsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQzsKK3N0YXRp
YyB1aW50cHRyX3QgcG9pc29uRDsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uRTsKK3N0YXRpYyB1
aW50cHRyX3QgcG9pc29uRjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbnMoKQorewor
ICAgIHBvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uQiA9IG1ha2VQb2lzb24oKTsK
KyAgICBwb2lzb25DID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkQgPSBtYWtlUG9pc29uKCk7
CisgICAgcG9pc29uRSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25GID0gbWFrZVBvaXNvbigp
OworfQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6
ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCi0gICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uQSwgUmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxw
b2lzb25BLCBSZWZMb2dnZXI+IGVtcHR5OwogICAgIEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5n
ZXQoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dl
cj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBw
dHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgJipwdHIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7
CkBAIC01Nyw3MCArNjksNzAgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEJhc2ljKQogICAg
ICAgICB1aW50cHRyX3QgcHRyQml0czsKICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZw
dHIsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsKLSAgICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CisgICAg
ICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoUG9pc29uZWQ8cG9pc29uQiwgUmVmTG9nZ2VyKj4oJmEp
LmJpdHMoKSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJUX1RS
VUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0
ckJpdHMpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZDxwb2lzb25CLCBSZWZMb2dn
ZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBP
SVNPTikKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25D
LCBSZWZMb2dnZXI+IHB0ciA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBS
ZWZMb2dnZXI+IHB0ciA9ICZhOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAg
ICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9n
Z2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+
IHAyKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMSA9
ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAyKHAxKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwg
cDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYo
YSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxwb2lzb25CLCBSZWZMb2dnZXI+IHAyID0gcDE7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEu
Z2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVm
TG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dn
ZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJl
ZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9n
Z2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkp
OwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBwMTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25E
LCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25FLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PHBvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNU
X0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7
CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVm
TG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dn
ZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAg
cHRyID0gbnVsbHB0cjsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CkBA
IC0xMzAsMTAgKzE0MiwxMiBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiAKIFRF
U1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25QYXNzUmVmVG9Qb2lzb25lZFJlZlB0cikKIHsK
KyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
CiAgICAgewogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOwotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShw
YXNzUmVmKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CkBA
IC0xNDEsMTMgKzE1NSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWduUGFzc1Jl
ZlRvCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBZG9wdCkKIHsKKyAgICBpbml0aWFsaXpl
UG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKLSAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IGVtcHR5OworICAgIFBvaXNvbmVkUmVmUHRyPHBv
aXNvbkMsIFJlZkxvZ2dlcj4gZW1wdHk7CiAgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5Lmdl
dCgpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2Vy
PiBwdHIoYWRvcHRSZWYoJmEpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVm
TG9nZ2VyPiBwdHIoYWRvcHRSZWYoJmEpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
Lm5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTU1LDcgKzE3MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
UmVmUHRyLCBBZG9wdCkKICAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVm
TG9nZ2VyPiBwdHIgPSBhZG9wdFJlZigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNv
bkUsIFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwpAQCAtMTYzLDEzICsxNzksMTUgQEAgVEVTVChXVEZfUG9pc29uZWRS
ZWZQdHIsIEFkb3B0KQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKIHsK
KyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTE4MSw3ICsxOTksNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBy
ZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4g
cHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwdHIo
JmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CiAgICAgICAgIHB0ciA9ICZiOwpAQCAtMTkxLDcgKzIwOSw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVm
KGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAg
ICAgICBwdHIgPSBhZG9wdFJlZigmYik7CkBAIC0yMDEsNyArMjE5LDcgQEAgVEVTVChXVEZfUG9p
c29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJl
ZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgcHRyID0gbnVsbHB0cjsKICAgICAgICAgRVhQ
RUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CkBAIC0yMDksOCArMjI3LDggQEAgVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBv
aXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25D
LCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpA
QCAtMjIyLDggKzI0MCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQog
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29u
RSwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lz
b25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwg
RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgp
KTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8
ICI7CkBAIC0yMzUsNyArMjUzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1l
bnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgcmVmKGMpIGRlcmVmKGEpIHwg
ZGVyZWYoYykgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBw
dHIgPSAmYzsKQEAgLTI0NSw3ICsyNjMsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNz
aWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihjKSBkZXJlZihhKSB8IGRl
cmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwg
cHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYWRvcHRS
ZWYoJmMpOwpAQCAtMjU1LDggKzI3Myw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3Np
Z25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBv
aXNvbkMsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25E
LCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKQEAgLTI2OCw3ICsyODYsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdu
bWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVm
KGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxwb2lzb25FLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRy
LmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gcHRyOwpAQCAt
Mjc4LDcgKzI5Niw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGEpIGRlcmVmKGEpIHwgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYs
IFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwog
I2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKQEAgLTI5
NiwxMiArMzE0LDE0IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogCiBU
RVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygp
OworCiAgICAgUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYiwgcDIuZ2V0KCkpOwpAQCAtMzEzLDggKzMzMyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
UHRyLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkg
ZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lz
b25FLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkp
OwpAQCAtMzI4LDExICszNDgsMTMgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiAK
IFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbCkKIHsKKyAgICBpbml0aWFs
aXplUG9pc29ucygpOworCiAgICAgUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiByZWYgPSByZWZQdHIucmVsZWFzZU5v
bk51bGwoKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiByZWZQ
dHIgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiByZWYg
PSByZWZQdHIucmVsZWFzZU5vbk51bGwoKTsKICAgICB9CiAKICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CkBAIC0zNDAsMzcgKzM2Miwz
OSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZU5vbk51bGwpCiAKIFRFU1QoV1RG
X1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisK
ICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAg
IERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxw
b2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShu
dWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAg
IH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dl
cj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBw
MihXVEZNb3ZlKHAxKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJlZkxvZ2dl
cj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBw
MihXVEZNb3ZlKHAxKSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAx
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEg
PSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMiA9IFdU
Rk1vdmUocDEpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxw
b2lzb25FLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwpAQCAtMzgyLDggKzQwNiw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNl
KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxw
b2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29u
QiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CkBAIC0zOTUsMTMgKzQxOSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVs
ZWFzZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVm
KGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAotc3RhdGljIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkMsIFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCitzdGF0aWMgUG9pc29u
ZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxvZ2dlcikKIHsKLSAg
ICByZXR1cm4gUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPigmbG9nZ2VyKTsKKyAg
ICByZXR1cm4gUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPigmbG9nZ2VyKTsKIH0K
IAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKQEAg
LTQzMiwyMCArNDU4LDIyIEBAIHN0YXRpYyBDb25zdFJlZkNvdW50ZWQmIHJldHVyblJlZkNvdW50
ZWQKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIENvbnN0KQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGNvbXBpbGVzIHdpdGhv
dXQgYW4gZXJyb3IuCiAgICAgYXV0byBhID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKICAg
ICBSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBiID0gV1RGTW92ZShhKTsKLSAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25ELCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOworICAg
IFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYyA9IGIucHRy
KCk7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZCA9IHJldHVybkNvbnN0UmVmQ291
bnRlZFJlZigpOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIGNvbnN0IENvbnN0UmVmQ291
bnRlZD4gZSA9ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKLSAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25GLCBDb25zdFJlZkNvdW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgp
OwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZyA9
IGY7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBo
KGYpOworICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4g
ZSA9ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lz
b25GLCBDb25zdFJlZkNvdW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOworICAg
IFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZyA9IGY7Cisg
ICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBoKGYpOwog
ICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGkocmV0dXJuUmVmQ291bnRlZFJlZigpKTsK
IH0KIAogc3RydWN0IFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIg
ewotICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFBvaXNvbmVkUmVmUHRy
Q2hlY2tpbmdSZWZMb2dnZXI+OworICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmUHRyPHBvaXNv
bkQsIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+OwogCiAgICAgUG9pc29uZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsKICAgICB2b2lkIHJlZigpOwpA
QCAtNDc5LDYgKzUwNyw4IEBAIHZvaWQgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcjo6
ZGUKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbkJlZm9yZURlcmVmKQogeworICAg
IGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9n
Z2VyIGEoImEiKTsKICAgICBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGIoImIiKTsK
IApAQCAtNTQzLDYgKzU3Myw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25CZWZv
cmVEZXIKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2VOb25OdWxsQmVmb3JlRGVy
ZWYpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFBvaXNvbmVkUmVmUHRyQ2hl
Y2tpbmdSZWZMb2dnZXIgYSgiYSIpOwogCiAgICAgewpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAkocmV2aXNpb24gMjI2
Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxNCBAQCBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7
Ci1jb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworc3RhdGljIHVpbnRwdHJfdCBwb2lz
b25BOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXpl
UG9pc29ucygpCit7CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25CID0g
bWFrZVBvaXNvbigpOworfQogCiBzdHJ1Y3QgTG9nZ2VyIHsKICAgICBMb2dnZXIoY29uc3QgY2hh
ciogbmFtZSwgaW50JiBkZXN0cnVjdENvdW50KQpAQCAtNjEsMTMgKzY3LDE1IEBAIHN0cnVjdCBP
dGhlciB7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKIHsKKyAgICBpbml0
aWFsaXplUG9pc29ucygpOworCiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXI+IGVtcHR5OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBM
b2dnZXI+IGVtcHR5OwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gZW1wdHkobnVsbHB0
cik7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gZW1wdHkobnVs
bHB0cik7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwog
ICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQpAQCAtNzYsNyArODQs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVz
dHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKQEAgLTg3LDcgKzk1LDcgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJp
dHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJC
aXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGEpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FT
U0VSVFMpCi0gICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAgICAgQVNTRVJUX1RS
VUUoKFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj46OmlzUG9pc29uZWQocHRyQml0
cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgICAgIH0KQEAgLTk2
LDcgKzEwNCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAg
aW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBE
ZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihiKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGIpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBw
dHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCAmKnB0cik7CkBAIC0x
MDksNyArMTE3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAg
ICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2Vy
KCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0ciA9IGE7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNv
bmVkKCkpOwogICAgICAgICB9CkBAIC0xMTgsNyArMTI2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAg
ICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gcHRyID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExv
Z2dlcj4gcHRyID0gYjsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIH0K
QEAgLTEyOSw3ICsxMzcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAg
ICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1l
ID0gImEiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj46OmNyZWF0
ZShhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
cG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+
OjpjcmVhdGUoYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0
ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCAmcHRyLT5uYW1l
KTsKQEAgLTEzOSw3ICsxNDcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMp
CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGJO
YW1lID0gImIiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXI+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIERlcml2ZWRMb2dn
ZXI+OjpjcmVhdGUoYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QSwgRGVyaXZlZExvZ2dlcj46OmNyZWF0ZShiTmFtZSwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
Yk5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTUxLDcgKzE1OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPFBv
aXNvbkEsIExvZ2dlcj4oYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPHBv
aXNvbkEsIExvZ2dlcj4oYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRy
ICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCAmcHRy
LT5uYW1lKTsKQEAgLTE2MSw3ICsxNjksNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwg
QmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNo
YXIqIGJOYW1lID0gImIiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBEZXJp
dmVkTG9nZ2VyPihiTmFtZSwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8cG9pc29u
QSwgRGVyaXZlZExvZ2dlcj4oYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxs
cHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAm
cHRyLT5uYW1lKTsKQEAgLTE3MSw3ICsxNzksNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ciwgQmFzaWMpCiAgICAgICAgIGludCB1bmlxdWVEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAg
Y29uc3QgY2hhciogdW5pcXVlTmFtZSA9ICJ1bmlxdWUiOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPiBwdHIgPSBzdGQ6Om1h
a2VfdW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZU5hbWUsIHVuaXF1ZURlc3RydWN0Q291bnQp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgRGVyaXZlZExvZ2dlcj4g
cHRyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVOYW1lLCB1bmlxdWVE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCB1bmlxdWVEZXN0cnVjdENv
dW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEodW5pcXVlTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0x
ODEsNyArMTg5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAg
ICBpbnQgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFy
KiB1bmlxdWVEZXJpdmVkTmFtZSA9ICJ1bmlxdWUgZGVyaXZlZCI7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gc3RkOjptYWtl
X3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVEZXJpdmVkTmFtZSwgdW5pcXVlRGVyaXZlZERl
c3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9n
Z2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZURlcml2ZWRO
YW1lLCB1bmlxdWVEZXJpdmVkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUo
bnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSh1bmlx
dWVEZXJpdmVkTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xOTUsMTUgKzIwMywxNSBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dn
ZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIo
ImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX0VR
KG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAx
LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92
ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAz
ID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIExvZ2dlcj4gcDQg
PSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTIxOSwxNSArMjI3LDE1IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3
IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExv
Z2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUs
IHAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsK
IAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0KFdURk1v
dmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4g
cDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyPiBw
NChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0yNDMsMTUgKzI1MSwxNSBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIERlcml2ZWRMb2dnZXIq
IGEgPSBuZXcgRGVyaXZlZExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVy
aXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwog
ICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4g
cDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
TG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVj
dENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPHBvaXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOwpAQCAt
MjY3LDE1ICsyNzUsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAg
ICAgICBEZXJpdmVkTG9nZ2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIs
IGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAx
LnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0cygpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQoV1RGTW92ZShwMykpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
My5iaXRzKCkpOwpAQCAtMjg5LDcgKzI5Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
LCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2Vy
KiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ci5jbGVh
cigpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMzAy
LDEzICszMTAsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogCiBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKIHsKKyAgICBpbml0aWFsaXplUG9p
c29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAg
ICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2Vy
KCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJi
IiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0zMjUsNyAr
MzM1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAg
IGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIo
ImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgcHRyID0gbnVsbHB0cjsKQEAgLTM0NSw4ICszNTUsOCBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgTG9nZ2VyKiBjID0g
bmV3IExvZ2dlcigiYyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBkID0gbmV3
IExvZ2dlcigiZCIsIGREZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIoYik7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CkBAIC0zNTcs
OCArMzY3LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzKGMpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNChkKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIExvZ2dlcj4gcDMoYyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxwb2lzb25CLCBMb2dnZXI+IHA0KGQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGNEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKQEAgLTM4MSw3ICszOTEs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgRGVy
aXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29u
QSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTQwNCw4ICs0MTQsOCBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgRGVyaXZlZExv
Z2dlciogYyA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJjIiwgY0Rlc3RydWN0Q291bnQpOwogICAgICAg
ICBEZXJpdmVkTG9nZ2VyKiBkID0gbmV3IERlcml2ZWRMb2dnZXIoImQiLCBkRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gcDEoYSk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJp
dmVkTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IExvZ2dlcj4gcDEoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBE
ZXJpdmVkTG9nZ2VyPiBwMihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CkBAIC00MTYsOCArNDI2LDggQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgICAgICBBU1NF
UlRfRVEoYiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRy
LCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXI+IHAzKGMpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QiwgRGVyaXZlZExvZ2dlcj4gcDQoZCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxw
b2lzb25BLCBMb2dnZXI+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQiwgRGVyaXZlZExvZ2dlcj4gcDQoZCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgY0Rl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50KTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtNDM4LDcgKzQ0
OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBp
bnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJh
IiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgp
KTsKICAgICAgICAgICAgIHB0ciA9IGE7CkBAIC00NTIsNyArNDYyLDcgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9
IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2Vy
PiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogI2lmIENPTVBJTEVSKENM
QU5HKQpAQCAtNDczLDE0ICs0ODMsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFz
c2lnbm1lbnQpCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogeworICAgIGlu
aXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9
IDA7CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9
IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5l
dyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMjsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBw
MS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTQ5MCw4ICs1MDIs
OCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVu
cG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9n
Z2VyPiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4g
cDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyPiBw
NDsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQu
dW5wb2lzb25lZCgpKTsKQEAgLTUxMSw4ICs1MjMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ciwgU3dhcCkKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENv
dW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHAyOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2Vy
PiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXI+
IHAyOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
Mi51bnBvaXNvbmVkKCkpOwpAQCAtNTIyLDggKzUzNCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBTd2FwKQogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0OworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXI+IHA0OwogICAgICAgICAgICAgQVNTRVJUX0VR
KGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygp
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtNTM4LDEz
ICs1NTAsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCiAgICAgfQogfQog
Ci1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwb2lzb25lZFB0ckZv
byhMb2dnZXIqIGxvZ2dlcikKK3N0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dn
ZXI+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogbG9nZ2VyKQogewotICAgIHJldHVybiBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+KGxvZ2dlcik7CisgICAgcmV0dXJuIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcj4obG9nZ2VyKTsKIH0KIAogVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisK
ICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciog
YSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0
aWJsZUFycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3Bw
CShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDggKzMxLDE0IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAog
bmFtZXNwYWNlIHsKIAotY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLWNvbnN0IHVp
bnQzMl90IFBvaXNvbkIgPSAweGJiYmI7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkE7CitzdGF0
aWMgdWludHB0cl90IHBvaXNvbkI7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkK
K3sKKyAgICBwb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkIgPSBtYWtlUG9pc29u
KCk7Cit9CiAKIHN0cnVjdCBMb2dnZXIgewogICAgIExvZ2dlcigpIHsgfQpAQCAtNjIsOCArNjgs
MTAgQEAgY29uc3QgaW50IGFycmF5U2l6ZSA9IDU7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKIHsKKyAgICBpbml0
aWFsaXplUG9pc29ucygpOworCiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXJbXT4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IExvZ2dlcltdPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9p
c29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CkBA
IC03Miw3ICs4MCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwK
ICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFr
ZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihh
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwdHIo
YSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsICYqcHRyKTsKQEAgLTg0LDcgKzkyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJG
b3JOb25Ucml2aWFsbAogICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNp
emVvZihwdHJCaXRzKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KGEpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAg
ICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+
Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAj
ZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgICAgICB9CkBAIC05NSw3ICsxMDMs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBhOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IGE7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBp
IDwgYXJyYXlTaXplOyArK2kpCkBAIC0xMDgsNyArMTE2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwog
ICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPjo6Y3JlYXRlKGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltd
PiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT46OmNyZWF0ZShhcnJh
eVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6
ZTsgKytpKQpAQCAtMTIxLDcgKzEyOSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29u
c3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29u
QSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29u
ZWRVbmlxdWU8cG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENv
dW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xMzQsNyArMTQyLDcg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQg
YURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKICAg
ICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+
IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBMb2dnZXJbXT4oYXJyYXlTaXplLCBh
TmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgTG9nZ2VyW10+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxwb2lzb25BLCBMb2dnZXJb
XT4oYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIg
IT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBh
cnJheVNpemU7ICsraSkKQEAgLTE0OSwxNSArMTU3LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dl
cj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0g
bWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAx
ID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
MiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
TG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0
cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNv
bmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAz
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTE3MywxNSArMTgxLDE1IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2Vy
KiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
W10+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lz
b25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUocDMpKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShw
MykpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDB1LCBwMy5iaXRzKCkpOwpAQCAtMTk3LDE1ICsyMDUsMTUgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJy
YXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dn
ZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQp
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyW10+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxw
b2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
cG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9p
c29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0cygpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShw
Myk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcDMuYml0cygpKTsKQEAgLTIyMSwxNSArMjI5LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dl
cj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0g
bWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAx
ID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
MihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBM
b2dnZXJbXT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
TG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1
Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPHBvaXNvbkIsIExvZ2dlcltdPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygp
KTsKQEAgLTI0Myw3ICsyNTEsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRy
aXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciog
YSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltd
PiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJb
XT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcHRyLnVu
cG9pc29uZWQoKSk7CkBAIC0yNTYsMTMgKzI2NCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAg
ICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dl
ciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dn
ZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0yNzksNyArMjg5LDcgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0
Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VS
VF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIgPSBudWxscHRyOwpAQCAtMjk5LDggKzMwOSw4
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9n
Z2VyKiBjID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYyIsIGNEZXN0cnVjdENvdW50
KTsKICAgICAgICAgTG9nZ2VyKiBkID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiZCIs
IGREZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxKGEpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8cG9pc29uQSwgTG9nZ2VyW10+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8cG9pc29uQSwgTG9nZ2VyW10+IHAyKGIpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKQEAgLTMxMSw4ICsz
MjEsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMoYyk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoZCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDMoYyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxwb2lzb25CLCBMb2dnZXJbXT4gcDQoZCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwg
Y0Rlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMzMzLDcg
KzM0Myw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAg
ICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gYTsKQEAgLTM0
Nyw3ICszNTcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VB
cnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKQEAg
LTM2OCwxNCArMzc4LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMsIFN3YXApCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAg
ICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50
ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAi
YSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dl
cj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcDI7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
Mi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBA
IC0zODUsOCArMzk3LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFs
bAogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxwb2lzb25CLCBMb2dnZXJbXT4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC00MDYsOCArNDE4
LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBM
b2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJi
IiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPHBvaXNvbkEsIExvZ2dlcltdPiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTQxNyw4ICs0MjksOCBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBw
Mi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QiwgTG9nZ2VyW10+IHA0OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwg
TG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIs
IExvZ2dlcltdPiBwNDsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTQzMywxMyArNDQ1LDE1IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICB9CiB9CiAKLXN0YXRpYyBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcG9pc29uZWRQdHJGb28oTG9nZ2VyKiBh
cnJheSkKK3N0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBMb2dnZXJbXT4gcG9pc29u
ZWRQdHJGb28oTG9nZ2VyKiBhcnJheSkKIHsKLSAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5KTsKKyAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8
cG9pc29uQSwgTG9nZ2VyW10+KGFycmF5KTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFJldHVyblZhbHVlKQogeworICAg
IGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3Vu
dCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwg
ImEiLCBhRGVzdHJ1Y3RDb3VudCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQ
dHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZp
YWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDE0
IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgdWlu
dDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7
CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkE7CitzdGF0aWMgdWludHB0cl90IHBvaXNvbkI7CisK
K3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkKK3sKKyAgICBwb2lzb25BID0gbWFrZVBv
aXNvbigpOworICAgIHBvaXNvbkIgPSBtYWtlUG9pc29uKCk7Cit9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiBzdGF0aWMgdm9pZCBmaWxsQXJyYXkoVCYgYXJyYXksIGludCBzaXplKQpAQCAtNDgs
MTMgKzU0LDE1IEBAIHN0YXRpYyBjb25zdCBpbnQgYXJyYXlTaXplID0gNTsKIAogVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIEJhc2ljKQog
eworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIGludFtdPiBlbXB0eTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
cG9pc29uQSwgaW50W10+IGVtcHR5OwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHku
dW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAg
IH0KICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBlbXB0
eShudWxscHRyKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IGVt
cHR5KG51bGxwdHIpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KQEAgLTYz
LDcgKzcxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAg
ICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwg
YXJyYXlTaXplKTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOwogICAgICAgICAgICAgZm9y
IChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC03NCw3ICs4Miw3IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgICAgIHN0ZDo6bWVt
Y3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICAgICAgQVNTRVJU
X1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihhKSk7CiAjaWYgRU5BQkxF
KFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAgICAg
QVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPjo6aXNQb2lzb25l
ZChwdHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICAgICAg
fQpAQCAtODQsNyArOTIsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxs
eURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxB
cnJheShhLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IGludFtdPiBwdHIgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRb
XT4gcHRyID0gYTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAg
ICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBh
cnJheVNpemU7ICsraSkKQEAgLTkyLDcgKzEwMCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yVHJpdmlhbGx5RGUKICAgICB9CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRb
XT46OmNyZWF0ZShhcnJheVNpemUpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25B
LCBpbnRbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+OjpjcmVhdGUo
YXJyYXlTaXplKTsKICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgZmlsbEFycmF5KHB0ciwgYXJyYXlTaXplKTsKICAgICAgICAgZm9yIChh
dXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xMDUsMTYgKzExMywxNiBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGIgPSBu
ZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0g
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMiA9IFdURk1vdmUocDEpOworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9F
USgwdSwgcDEuYml0cygpKTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQogICAgICAgICAg
ICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ldKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBpbnRbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9p
c29uQSwgaW50W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQiwg
aW50W10+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51
bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CiAgICAgICAg
IEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOwpAQCAtMTI4LDE2ICsxMzYsMTYgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBiID0g
bmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAot
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIoV1RGTW92ZShwMSkpOworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDIoV1RGTW92ZShwMSkpOwogICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VR
KDB1LCBwMS5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYVtpXSwgcDJbaV0pOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIGludFtdPiBwMyA9IGI7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIs
IGludFtdPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIGlu
dFtdPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBv
aXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CiAgICAgICAgIEFT
U0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOwpAQCAtMTQ5LDcgKzE1Nyw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBp
bnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VR
KGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIuY2xlYXIoKTsKICAgICAgICAgQVNT
RVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTU5LDEzICsxNjcsMTUgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogCiBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQXNzaWdubWVudCkKIHsKKyAg
ICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOwogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwogICAg
ICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5
U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihh
KTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50W10+IHB0cihhKTsKICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBiOwog
ICAgICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0xNzUsNyArMTg1LDcg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRv
KiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXpl
KTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAg
ICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9IG51bGxwdHI7
CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTE5MSwx
NiArMjAxLDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAg
ICAgICAgZmlsbEFycmF5KGMsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZpbGxBcnJheShkLCBhcnJh
eVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMShh
KTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyKGIpOworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcDEoYSk7CisgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwMihiKTsKICAgICAgICAgQVNTRVJUX0VR
KGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShiLCBwMi51bnBvaXNvbmVk
KCkpOwogICAgICAgICBwMSA9IFdURk1vdmUocDIpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDEu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9pc29uZWQo
KSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzKGMpOwot
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQoZCk7CisgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwMyhjKTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8cG9pc29uQiwgaW50W10+IHA0KGQpOwogICAgICAgICBBU1NFUlRfRVEoYywg
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGQsIHA0LnVucG9pc29uZWQoKSk7
CiAgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CkBAIC0yMTIsNyArMjIyLDcgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxwb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9IGE7CiAgICAgICAgIEFTU0VSVF9F
UShhLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTIyMiw3ICsyMzIsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2Fy
cmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBw
dHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCkBAIC0yMzksMTQgKzI0OSwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7
CisKICAgICB7CiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAg
IGF1dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJh
eVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBv
aXNvbkEsIGludFtdPiBwMSA9IGE7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEs
IGludFtdPiBwMjsKICAgICAgICAgQVNTRVJUX0VRKHAxLnVucG9pc29uZWQoKSwgYSk7CiAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5w
b2lzb25lZCgpKTsKQEAgLTI1NSw4ICsyNjcsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ckZvclRyaXZpYWxseURlCiAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwog
ICAgICAgICBBU1NFUlRfRVEocDIudW5wb2lzb25lZCgpLCBhKTsKIAotICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQ7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNv
bkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIGlu
dFtdPiBwNDsKICAgICAgICAgQVNTRVJUX0VRKHAzLnVucG9pc29uZWQoKSwgYik7CiAgICAgICAg
IEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lz
b25lZCgpKTsKQEAgLTI3Miw4ICsyODQsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZv
clRyaXZpYWxseURlCiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogICAgICAgICBm
aWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBp
bnRbXT4gcDI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwMSA9
IGE7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwMjsKICAgICAg
ICAgQVNTRVJUX0VRKHAxLnVucG9pc29uZWQoKSwgYSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFw
Mi5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTI4
Miw4ICsyOTQsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEo
cDIudW5wb2lzb25lZCgpLCBhKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRb
XT4gcDQ7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkEsIGludFtdPiBwMyA9IGI7
CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPHBvaXNvbkIsIGludFtdPiBwNDsKICAgICAgICAg
QVNTRVJUX0VRKHAzLnVucG9pc29uZWQoKSwgYik7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5i
aXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTI5NCwx
MyArMzA2LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAg
ICB9CiB9CiAKLXN0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcG9pc29u
ZWRQdHJGb28oaW50KiBwdHIpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8cG9pc29uQSwgaW50
W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQogewotICAgIHJldHVybiBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4ocHRyKTsKKyAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8
cG9pc29uQSwgaW50W10+KHB0cik7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFs
aXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNp
emVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331171</attachid>
            <date>2018-01-11 22:52:16 -0800</date>
            <delta_ts>2018-01-11 23:01:05 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>127935</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksOCAr
Mzg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lz
b25lZE1hc21QdHIoMSk7IH0KLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1
ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigyKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1h
c21QdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwg
MSk7IH0KKyAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJu
IFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwgMik7IH0KIAogICAgIFBvaXNvbmVkTWFzbVB0
ciBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODk0LDggKzg5NCw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmhhc1RhaWxDYWxscygpOyB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBz
X3BvaXNvbiA9IG1ha2VDb25zdEV4cHJQb2lzb24oQ29kZUJsb2NrUG9pc29uKTsKLQogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOwogICAgIHZvaWQgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwpAQCAtOTc0LDcgKzk3Miw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fb3duZXJFeGVj
dXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293
bmVyRWRnZTsKLSAgICBDb25zdEV4cHJQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9w
b2lzb25lZFZNOworICAgIFBvaXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVk
Vk07CiAKICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3Ry
dWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDggQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBhbiBleGNl
cHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6aml0
Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54b3JQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1Qw
KTsKKy8vICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJs
b2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQueG9yUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKENvZGVCbG9ja1BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsK
ICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSklUQ29kZVR5cGU6
OmNvbW1vbkRhdGFPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb21tb25EYXRhOjpmcmFtZVJl
Z2lzdGVyQ291bnRPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAvLyBUaGlzIGRvZXMg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVSZWdpc3RlckNvdW50IC0gMSkqc2l6ZW9mKFJl
Z2lzdGVyKSB3aGVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyMjY3ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMjUzMCw3ICsyNTMwLDcgQEAgX2xsaW50X29wX3Byb2ZpbGVf
dHlwZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQx
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVucG9pc29u
KENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MSwg
dDIpCiAgICAgIyB0MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJvZmlsZXJM
b2cuCiAgICAgbG9hZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgdW5wb2lzb24oQ29kZUJsb2Nr
UG9pc29uLCBQQikKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCB0MSkKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0K
ICAgICB2YWx1ZVByb2ZpbGUocjAsIChDYWxsT3BDb2RlU2l6ZSAtIDEpLCB0MykKQEAgLTQ4MCwy
NyArNDgwLDI3IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAg
ICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAot
bWFjcm8gc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhlblN0
cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVk
Vk1bc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHNjcmF0
Y2gpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoLCBzY3JhdGNoMikKICAg
ICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlE
VGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKICAgICBsb2FkcCBbc2NyYXRjaCwgc3Ry
dWN0dXJlSURUaGVuU3RydWN0dXJlLCA4XSwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCiBlbmQK
IAotbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRj
aCkKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3Ry
dWN0dXJlCi0gICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwg
c2NyYXRjaCkKKyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJl
LCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJl
ckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHN0cnVjdHVyZQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCi0gICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bY2VsbF0sIGNlbGwKLSAgICB1bnBvaXNvbihD
b2RlQmxvY2tQb2lzb24sIGNlbGwpCi0gICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCi0gICAg
bG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQotZW5kCisjbWFjcm8gbG9hZFN0
cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisjICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisjICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisjICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2NlbGxdLCBj
ZWxsCisjICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgY2VsbCkKKyMgICAgbG9hZHAgVk06
OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3Rh
YmxlW2NlbGxdLCBjZWxsCisjICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1
cmUKKyNlbmQKIAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIApAQCAtNTYy
LDcgKzU2Miw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cKICAg
ICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIHJlc2V0IFBDLCBzaW5jZSB0aGUgc2xvd19wYXRoIGNs
b2JiZXJlZCB0aGVtLgogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbW92
ZSAwLCBQQwogICAgIGptcCBkb25lTGFiZWwKIGVuZApAQCAtNjQxLDcgKzY0MSw3IEBAIF9sbGlu
dF9vcF90b190aGlzOgogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwg
dGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmlu
YWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQz
KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIHQxLCB0MiwgLm9w
VG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b190aGlzX2xlbmd0aCkKQEAg
LTcyNCw3ICs3MjQsNyBAQCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uKCkKICAgICBtb3ZlIDAs
IHQwCiAgICAgam1wIC5kb25lCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgY3BlcSBTdHJ1Y3R1cmU6
Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2lzX3VuZGVmaW5lZF9sZW5ndGgpCiAubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZDoKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKKyAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSwgdDUpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCiAg
ICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDEsIHQwCkBAIC0xNDMzLDcg
KzE0MzMsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkOgogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWlu
OjptX3ZlY3Rvclt0M10sIHQzCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogdDMsIG9rIGVu
ZCkKIAotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEpCisgICAg
c3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSwgdDUpCiAgICAgbG9hZHEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCiAgICAgYnFlcSB0MiwgVmFsdWVOdWxsLCAu
b3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZQogLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkxv
b3A6CkBAIC0xNzQwLDcgKzE3NDAsNyBAQCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGlt
bWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCi0gICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEsIHQ1KQogICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBd
LCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIF9sbGlu
dF9vcF9jYXRjaDoKIAogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbG9h
ZHAgVk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwg
UEMKICAgICByc2hpZnRwIDMsIFBDCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV9zY29wZToKIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1Bh
dGgpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDUpCiAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCkBA
IC0yNTAwLDcgKzI1MDAsNyBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0
MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICAjIHQxIGlzIGhv
bGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIHR5cGVQcm9maWxlckxvZy4KICAgICBsb2FkcCBWTTo6
bV90eXBlUHJvZmlsZXJMb2dbdDFdLCB0MQogICAgICMgdDIgaXMgaG9sZGluZyB0aGUgcG9pbnRl
ciB0byB0aGUgY3VycmVudCBsb2cgZW50cnkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyMjY3ODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBlbHNlCiAgICAgY29uc3QgTG93ZXN0
VGFnID0gRGVsZXRlZFZhbHVlVGFnCiBlbmQKIAotY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KKyMgY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KIAogIyBQdXRCeUlkRmxhZ3MgZGF0YQogY29uc3Qg
UHV0QnlJZFByaW1hcnlUeXBlTWFzayA9IGNvbnN0ZXhwciBQdXRCeUlkUHJpbWFyeVR5cGVNYXNr
CkBAIC03NTQsOSArNzU0LDEwIEBAIG1hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChkZXMKICAgICBlbmQKIGVuZAogCi1tYWNybyB1bnBvaXNvbihwb2lzb24sIGZpZWxkKQorbWFj
cm8gdW5wb2lzb24ocG9pc29uLCBmaWVsZCwgc2NyYXRjaCkKICAgICBpZiBQT0lTT04KLSAgICAg
ICAgeG9ycCBwb2lzb24sIGZpZWxkCisgICAgICAgIGxvYWRwIF9Db2RlQmxvY2tQb2lzb24sIHNj
cmF0Y2gKKyAgICAgICAgeG9ycCBzY3JhdGNoLCBmaWVsZAogICAgIGVuZAogZW5kCiAKQEAgLTEw
MjQsNyArMTAyNSw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2MK
ICAgICAjIFNldCB1cCB0aGUgUEMuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgICAgICB1bnBvaXNvbihDb2RlQmxv
Y2tQb2lzb24sIFBCKQorICAgICAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCBQQykK
ICAgICAgICAgbW92ZSAwLCBQQwogICAgIGVsc2UKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1t0MV0sIFBDCkBAIC0xMDM1LDcgKzEwMzYsNyBAQCBtYWNybyBwcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgc3VicCBjZnIsIHQwLCB0MAogICAgIGJw
YSB0MCwgY2ZyLCAubmVlZFN0YWNrQ2hlY2sKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29u
ZWRWTVt0MV0sIHQyCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MikKKyAgICB1bnBv
aXNvbihDb2RlQmxvY2tQb2lzb24sIHQyLCB0MykKICAgICBpZiBDX0xPT1AKICAgICAgICAgYnBi
ZXEgVk06Om1fY2xvb3BTdGFja0xpbWl0W3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCiAgICAgZWxz
ZQpAQCAtMTYyMyw3ICsxNjI0LDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICBsb2FkYiBW
TTo6bV90cmFwcytWTVRyYXBzOjptX25lZWRUcmFwSGFuZGxpbmdbdDFdLCB0MAogICAgIGJ0cG56
IHQwLCAuaGFuZGxlVHJhcHMKIC5hZnRlckhhbmRsaW5nVHJhcHM6CkBAIC0xNjM5LDcgKzE2NDAs
NyBAQCBfbGxpbnRfb3BfY2hlY2tfdHJhcHM6CiBtYWNybyBhY3F1aXJlU2hhZG93Q2hpY2tlblBh
Y2tldChzbG93KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVC
bG9jazo6bV9wb2lzb25lZFZNW3QxXSwgdDEKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24s
IHQxKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEsIHQyKQogICAgIGxvYWRwIFZN
OjptX3NoYWRvd0NoaWNrZW5bdDFdLCB0MgogICAgIGxvYWRwIFNoYWRvd0NoaWNrZW46Om1fbG9n
Q3Vyc29yW3QyXSwgdDAKICAgICBicGFlcSB0MCwgU2hhZG93Q2hpY2tlbjo6bV9sb2dFbmRbdDJd
LCBzbG93CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKIAogcHJpdmF0
ZToKLSAgICBDb25zdEV4cHJQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKKyAgICBQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKIH07CiAKIGlubGluZSBBcnJheUJ1ZmZlciogdG9Qb3NzaWJseVNoYXJlZEFy
cmF5QnVmZmVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzMg
KzI1LDUgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gUG9pc29uIHsKLSAgICBOb3RQb2lzb25lZCA9IDAsIC8v
IFJlc2VydmVkIChhbmQgdW51c2VkKSBzbyB0aGF0IHBvaXNvbiBrZXlzIGFyZSBuZXZlciAwLgot
Ci0gICAgLy8gQWRkIG5ldyBwb2lzb24ga2V5cyBiZWxvdyBpbiBhbHBoYWJldGljYWwgb3JkZXIu
IFRoZSBvcmRlciBkb2Vzbid0IHJlYWxseQotICAgIC8vIG1hdHRlciwgYnV0IHdlIG1pZ2h0IGFz
IHdlbGwga2VlcCB0aGVtIGluIGFscGhhYmV0aWNhbGx5IG9yZGVyIGZvcgotICAgIC8vIGdyZWF0
ZXIgcmVhZGFiaWxpdHkuCi0gICAgQXJyYXlQcm90b3R5cGVQb2lzb24sCi0gICAgQ29kZUJsb2Nr
UG9pc29uLAotICAgIERhdGVJbnN0YW5jZVBvaXNvbiwKLSAgICBKU0FQSVdyYXBwZXJPYmplY3RQ
b2lzb24sCi0gICAgSlNBcnJheUJ1ZmZlclBvaXNvbiwKLSAgICBKU0NhbGxiYWNrT2JqZWN0UG9p
c29uLAotICAgIEpTR2xvYmFsT2JqZWN0UG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiwKLSAgICBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24s
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLAotICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZVBvaXNvbiwKLSAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24sCi19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIiAvLyBtbGFtCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJ
KHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjMgQEAgdWludHB0cl90
IGdfZ2xvYmFsRGF0YVBvaXNvbjsKIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiB1aW50cHRy
X3QgZ19uYXRpdmVDb2RlUG9pc29uOwogCit1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
Cit1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOwordWludHB0cl90IERhdGVJbnN0YW5jZVBvaXNv
bjsKK3VpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247Cit1aW50cHRyX3QgSlNBcnJh
eUJ1ZmZlclBvaXNvbjsKK3VpbnRwdHJfdCBKU0NhbGxiYWNrT2JqZWN0UG9pc29uOwordWludHB0
cl90IEpTR2xvYmFsT2JqZWN0UG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hlclBvaXNvbjsKK3VpbnRwdHJfdCBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOwordWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uOwordWludHB0
cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseVRh
YmxlUG9pc29uOwordWludHB0cl90IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbjsKK3Vp
bnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb247CisKIHZvaWQgaW5pdGlhbGl6ZVBvaXNv
bigpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKQEAg
LTQxLDYgKzU4LDIzIEBAIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpCiAgICAgICAgIGdfZ2xvYmFs
RGF0YVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19qaXRDb2RlUG9pc29uID0gbWFr
ZVBvaXNvbigpOwogICAgICAgICBnX25hdGl2ZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisK
KyAgICAgICAgQXJyYXlQcm90b3R5cGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIENv
ZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgRGF0ZUluc3RhbmNlUG9pc29u
ID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTQXJyYXlCdWZmZXJQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIEpTQ2FsbGJhY2tPYmplY3RQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1NjcmlwdEZldGNo
UGFyYW1ldGVyc1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaGVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9p
c29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24g
PSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24gPSBtYWtlUG9pc29u
KCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAg
ICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAg
ICAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAgfSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQ
dHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUG9pc29uZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMjMgQEAgZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2dsbwogZXh0ZXJuICJDIiBKU19FWFBPUlRE
QVRBIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiBleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAorZXh0ZXJuICJDIiBKU19FWFBPUlREQVRB
IHVpbnRwdHJfdCBBcnJheVByb3RvdHlwZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWlu
dHB0cl90IEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNBcnJheUJ1ZmZlclBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNDYWxsYmFja09iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgSlNHbG9iYWxPYmplY3RQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzUG9pc29uOworZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoZXJQb2lzb247CitleHRlcm4g
IkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJBc3NlbWJs
eU1lbW9yeVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJB
c3NlbWJseU1vZHVsZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3Qg
SlNXZWJBc3NlbWJseVRhYmxlUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IFVubGlua2VkU291cmNlQ29kZVBvaXNvbjsKKwogc3RydWN0IENsYXNz
SW5mbzsKIAogdXNpbmcgUG9pc29uZWRDbGFzc0luZm9QdHIgPSBQb2lzb25lZDxnX2dsb2JhbERh
dGFQb2lzb24sIGNvbnN0IENsYXNzSW5mbyo+OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlz
aW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsOCArMTg3LDggQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaW5nbGVTbG90VHJhbnNpdGlvbldlYWtP
d25lcjsKLSAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBDb25zdEV4cHJQb2lz
b25lZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKLSAg
ICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlUG9pc29uLCBXZWFrSW1wbCo+OworICAgIHVzaW5nIFBvaXNvbmVkVHJh
bnNpdGlvbk1hcFB0ciA9IFBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwg
VHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBQb2lzb25l
ZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFdlYWtJbXBsKj47CiAKICAgICBib29s
IGlzVXNpbmdTaW5nbGVTbG90KCkgY29uc3QKICAgICB7CkBAIC0xOTgsMTMgKzE5OCwxMyBAQCBw
cml2YXRlOgogICAgIFRyYW5zaXRpb25NYXAqIG1hcCgpIGNvbnN0CiAgICAgewogICAgICAgICBB
U1NFUlQoIWlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyKG1fZGF0YSkudW5wb2lzb25lZCgpOworICAgICAgICByZXR1cm4gUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyKFByZVBvaXNvbmVkLCBtX2RhdGEpLnVucG9pc29uZWQoKTsKICAg
ICB9CiAKICAgICBXZWFrSW1wbCogd2Vha0ltcGwoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRXZWFrSW1w
bFB0cihtX2RhdGEgJiB+VXNpbmdTaW5nbGVTbG90RmxhZykudW5wb2lzb25lZCgpOworICAgICAg
ICByZXR1cm4gUG9pc29uZWRXZWFrSW1wbFB0cihQcmVQb2lzb25lZCwgbV9kYXRhICYgflVzaW5n
U2luZ2xlU2xvdEZsYWcpLnVucG9pc29uZWQoKTsKICAgICB9CiAKICAgICB2b2lkIHNldE1hcChU
cmFuc2l0aW9uTWFwKiBtYXApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1RvV2FzbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNUb1dhc20uY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsOCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlCiAgICAgICAgIGlmICghQ29u
dGV4dDo6dXNlRmFzdFRMUygpKSB7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgd2FzbUNv
bnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Mod2FzbUNvbnRleHRJbnN0YW5jZUdQUiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSksIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwotICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobWFrZUNvbnN0RXhw
clBvaXNvbihKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24pKSwgc2NyYXRjaFJlZyk7CisvLyAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KG1ha2VDb25zdEV4
cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uKSksIHNjcmF0Y2hSZWcpOworICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJs
eUluc3RhbmNlUG9pc29uKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgICAgICBqaXQueG9yNjQoc2Ny
YXRjaFJlZywgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqc09mZnNldCAr
PSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcuaAkocmV2aXNpb24gMjI2
Nzg0KQorKysgU291cmNlL1dURi93dGYvQmFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMCAr
MTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9yYWdlVHlwZSBt
X2hlYWQgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRwdHJf
dCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRl
PHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkQmFnID0gQmFnPFQsIENv
bnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFnTm9kZTxUPj4+OwordGVt
cGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZEJhZyA9IEJh
ZzxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFByaXZhdGU6OkJhZ05vZGU8VD4+PjsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI2Nzg0KQorKysg
U291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDYg
QEAKICNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJU
UyAwCiAKLS8vIE9sZGVyIHZlcnNpb25zIG9mIGdjYyBhbmQgY2xhbmcgaGF2ZSBhIGJ1ZyB3aGlj
aCByZXN1bHRzIGluIGJ1aWxkIGZhaWx1cmVzCi0vLyB3aGVuIHVzaW5nIHRlbXBsYXRlIG1ldGhv
ZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IG9mIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPgotLy8g
d2hlbiB0aGUgS2V5VHlwZSBpcyBhIHVpbnRwdHJfdCAoaS5lLiB3aGVuIHdlJ3JlIHVzaW5nIHRo
ZSBQb2lzb25lZCB2YXJpYW50Ci0vLyBvZiBQb2lzb25lZEltcGwpLiBUaGlzIGJ1ZyBkb2VzIG5v
dCBtYW5pZmVzdCBmb3IgdGhlIENvbnN0RXhwclBvaXNvbmVkIHZhcmlhbnQuCi0vLyBJbiBwcmFj
dGljZSwgd2Ugd2lsbCBsaWtlbHkgb25seSB1c2UgdGhlc2UgbWV0aG9kcyBmb3IgaW5zdGFudGlh
dGlvbnMgb2YgdGhlCi0vLyBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LiBIZW5jZS4gdGhpcyBi
dWcgaXMgbm90IGEgc2hvdyBzdG9wcGVyLgotLy8gVGhhdCBzYWlkLCB3ZSdsbCBkZWZpbmUgRU5B
QkxFX01JWEVEX1BPSVNPTiBhY2NvcmRpbmdseSBzbyB0aGF0IHdlIGNhbiB1c2UKLS8vIGl0IHRv
IGRpc2FibGUgdGhlIGFmZmVjdGVkIHRlc3RzIHdoZW4gYnVpbGRpbmcgd2l0aCBvbGQgY29tcGls
ZXJzLgotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2Ns
YW5nX21ham9yX18gPj0gOSkKLSNlbGlmIGRlZmluZWQoX19jbGFuZ19tYWpvcl9fKQotI2RlZmlu
ZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2NsYW5nX21ham9yX18gPj0gNCkKLSNlbGlmIGRlZmlu
ZWQoX19HTlVDX18pCi0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSNkZWZpbmUgRU5BQkxFX01JWEVE
X1BPSVNPTiAoX19HTlVDX1BSRVJFUSg3LCAyKSkKLSNlbmRpZiAvLyAhZGVmaW5lZChfX0dOVUNf
XykKLQotI2lmbmRlZiBFTkFCTEVfTUlYRURfUE9JU09OCi0jZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gMCAvLyBEaXNhYmxlIGZvciBldmVyeXRoaW5nIGVsc2UuCi0jZW5kaWYKLQogLy8gTm90
IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJl
Y2F1c2Ugb2YgbWlzc2luZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2Fi
bGVkLgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCkBAIC04OCwzMCArNjYs
MzMgQEAgYXNSZWZlcmVuY2UoVCBwdHIpIHsgcmV0dXJuICpwdHI7IH0KIAogfSAvLyBuYW1lc3Bh
Y2UgUG9pc29uZWRJbXBsSGVscGVyCiAKLS8vIEZJWE1FOiBvbmNlIHdlIGhhdmUgQysrMTcsIHdl
IGNhbiBtYWtlIHRoZSBrZXkgb2YgdHlwZSBhdXRvIGFuZCByZW1vdmUgdGhlIG5lZWQgZm9yIEtl
eVR5cGUuCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgotY2xhc3MgUG9pc29uZWRJbXBsIHsKK2VudW0gUHJlUG9pc29uZWRUYWcgeyBQcmVQb2lzb25l
ZCB9OworCit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+PgorY2xhc3MgUG9pc29u
ZWQgewogcHVibGljOgotICAgIFBvaXNvbmVkSW1wbCgpIHsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1BvaXNvbmVkID0gdHJ1ZTsKIAotICAgIFBvaXNvbmVkSW1wbChzdGQ6Om51bGxw
dHJfdCkgeyB9CisgICAgUG9pc29uZWQoKSB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChUIHB0cikK
KyAgICBQb2lzb25lZChzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICBQb2lzb25lZChUIHB0cikK
ICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb24ocHRyKSkKICAgICB7IH0KIAotICAgIFBv
aXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQo
Y29uc3QgUG9pc29uZWQmKSA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwg
SzIgazIsIHR5cGVuYW1lIFQyPgotICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGw8
SzIsIGsyLCBUMj4mIG90aGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFt
ZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVkKGNv
bnN0IE90aGVyJiBvdGhlcikKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb248VD4ob3Ro
ZXIudW5wb2lzb25lZCgpKSkKICAgICB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChQb2lzb25lZElt
cGwmJiBvdGhlcikKKyAgICBQb2lzb25lZChQb2lzb25lZCYmIG90aGVyKQogICAgICAgICA6IG1f
cG9pc29uZWRCaXRzKFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQogICAgIHsgfQogCi0g
ICAgZXhwbGljaXQgUG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCisgICAg
ZXhwbGljaXQgUG9pc29uZWQoUHJlUG9pc29uZWRUYWcsIFBvaXNvbmVkQml0cyBwb2lzb25lZEJp
dHMpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQogCkBA
IC0xNDMsMTIgKzEyNCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9wb2lzb25lZEJpdHM7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX3BvaXNvbmVkQml0czsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0g
Yi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
IDw9IGIubV9wb2lzb25lZEJpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25l
ZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0
czsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
ID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29u
ZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4g
bV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IFBvaXNvbmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8PSBiLm1f
cG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9pc29uZWQmIGIpIGNv
bnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25l
ZEJpdHMgPj0gYi5tX3BvaXNvbmVkQml0czsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcj09KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgIT0gYjsgfQpAQCAtMTU3LDMzICsxMzgsNDEgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpID4gYjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+PSBi
OyB9CiAKLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICBQb2lzb25lZCYg
b3BlcmF0b3I9KFQgcHRyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24o
cHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9w
ZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQmIG9w
ZXJhdG9yPShjb25zdCBQb2lzb25lZCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0o
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICBQb2lzb25lZCYgb3Bl
cmF0b3I9KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVk
JiBvcGVyYXRvcj0oY29uc3QgT3RoZXImIG90aGVyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25l
ZEJpdHMgPSBwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAotICAgIHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCisgICAgdm9pZCBz
d2FwKFBvaXNvbmVkJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVk
Qml0cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0
cywgb3RoZXIubV9wb2lzb25lZEJpdHMpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMiwg
azIsIFQyPiYgbykKKyAgICB2b2lkIHN3YXAoc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZf
dDxPdGhlcjo6aXNQb2lzb25lZD4+CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhlcikKICAgICB7
CiAgICAgICAgIFQgdDEgPSB0aGlzLT51bnBvaXNvbmVkKCk7Ci0gICAgICAgIFQyIHQyID0gby51
bnBvaXNvbmVkKCk7CisgICAgICAgIFQgdDIgPSBvdGhlci51bnBvaXNvbmVkKCk7CiAgICAgICAg
IHN0ZDo6c3dhcCh0MSwgdDIpOwogICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7
Ci0gICAgICAgIG8gPSB0MjsKKyAgICAgICAgb3RoZXIubV9wb2lzb25lZEJpdHMgPSBPdGhlcjo6
cG9pc29uKHQyKTsKICAgICB9CiAKICAgICB2b2lkIHN3YXAoVCYgdDIpCkBAIC0yMTYsNjkgKzIw
NSwzMyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJp
dHMgeyAwIH07Ci19OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotaW5saW5lIHZvaWQgc3dhcChQb2lz
b25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikKLXsK
LSAgICBhLnN3YXAoYik7Ci19CisgICAgdGVtcGxhdGU8dWludHB0cl90JiwgdHlwZW5hbWUsIHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWQ7Cit9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
MSwgSzEgazEsIHR5cGVuYW1lIFQxPgotaW5saW5lIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEs
IGsxLCBUMT4mIGEsIFQxJiBiKQordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBzd2FwKFBvaXNvbmVkPGtleSwgVD4mIGEsIFUmIGIp
CiB7CiAgICAgYS5zd2FwKGIpOwogfQogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1h
a2VQb2lzb24oKTsKIAotI2lmIEVOQUJMRShQT0lTT04pCi0vLyBGSVhNRTogb25jZSB3ZSBoYXZl
IEMrKzE3LCB3ZSBjYW4gbWFrZSB0aGlzIGEgbGFtYmRhIGluIG1ha2VDb25zdEV4cHJQb2lzb24o
KS4KLWlubGluZSBjb25zdGV4cHIgdWludHB0cl90IGNvbnN0RXhwclBvaXNvblJhbmRvbSh1aW50
cHRyX3Qgc2VlZCkKLXsKLSAgICB1aW50cHRyX3QgcmVzdWx0MSA9IHNlZWQgKiA2OTA2OTY5MDY5
ICsgMTIzNDU2NzsKLSAgICB1aW50cHRyX3QgcmVzdWx0MiA9IHNlZWQgKiA4MjUzNzI5ICsgMjM5
NjQwMzsKLSAgICByZXR1cm4gKHJlc3VsdDEgPDwgMykgXiAocmVzdWx0MiA8PCAxNik7Ci19Ci0j
ZW5kaWYKLQotaW5saW5lIGNvbnN0ZXhwciB1aW50cHRyX3QgbWFrZUNvbnN0RXhwclBvaXNvbih1
aW50MzJfdCBrZXkpCi17Ci0jaWYgRU5BQkxFKFBPSVNPTikKLSAgICB1aW50cHRyX3QgcG9pc29u
ID0gY29uc3RFeHByUG9pc29uUmFuZG9tKGtleSk7Ci0gICAgcG9pc29uICY9IH4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigweGZmZmYpIDw8IDQ4KTsgLy8gRW5zdXJlIHRoYXQgcG9pc29uZWQgYml0
cyBsb29rIGxpa2UgYSBwb2ludGVyLgotICAgIHBvaXNvbiB8PSAoMSA8PCAyKTsgLy8gRW5zdXJl
IHRoYXQgcG9pc29uZWQgYml0cyBjYW5ub3QgYmUgMC4KLSAgICByZXR1cm4gcG9pc29uOwotI2Vs
c2UKLSAgICByZXR1cm4gKHZvaWQpa2V5LCAwOwotI2VuZGlmCi19Ci0KIHRlbXBsYXRlPHVpbnRw
dHJfdCYga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWlu
dHB0cl90Jiwga2V5LCBUPjsKLQotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgot
dXNpbmcgQ29uc3RFeHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlQ29u
c3RFeHByUG9pc29uKGtleSksIFQ+OwotCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+Ci1zdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFpdHMgewotICAgIHVzaW5nIFN0b3Jh
Z2VUeXBlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj47CitzdHJ1Y3QgUG9pc29uZWRQdHJU
cmFpdHMgeworICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gUG9pc29uZWQ8a2V5LCBUKj47CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMgQUxXQVlTX0lOTElORSBUKiBleGNoYW5nZShTdG9y
YWdlVHlwZSYgcHRyLCBVJiYgbmV3VmFsdWUpIHsgcmV0dXJuIHB0ci5leGNoYW5nZShuZXdWYWx1
ZSk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDE+Ci0g
ICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQx
PiYgYSwgVDEmIGIpIHsgYS5zd2FwKGIpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMSwg
SzEgazEsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEsIGsxLCBUMT4m
IGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikgeyBhLnN3YXAoYik7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlcj4KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAo
UG9pc29uZWQ8a2V5LCBUKj4mIGEsIE90aGVyJiBiKSB7IGEuc3dhcChiKTsgfQogCiAgICAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgVCogdW53cmFwKGNvbnN0IFN0b3JhZ2VUeXBlJiBwdHIpIHsgcmV0
dXJuIHB0ci51bnBvaXNvbmVkKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2lu
ZyBXVEY6OkNvbnN0RXhwclBvaXNvbmVkOwordXNpbmcgV1RGOjpQcmVQb2lzb25lZDsKIHVzaW5n
IFdURjo6UG9pc29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkQml0czsKLXVzaW5nIFdURjo6bWFr
ZUNvbnN0RXhwclBvaXNvbjsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UG9pc29uZWRVbmlxdWVQdHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYv
UG9pc29uZWRVbmlxdWVQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDE0IEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Ci1jbGFzcyBQb2lzb25lZFVuaXF1ZVB0ciA6IHB1YmxpYyBD
b25zdEV4cHJQb2lzb25lZDxrZXksIFQqPiB7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KK2NsYXNzIFBvaXNvbmVkVW5pcXVlUHRy
IDogcHVibGljIFBvaXNvbmVkPGtleSwgVCo+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLSAgICB1c2luZyBCYXNlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj47CisgICAgdXNp
bmcgQmFzZSA9IFBvaXNvbmVkPGtleSwgVCo+OwogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1BvaXNvbmVkVW5pcXVlUHRyID0gdHJ1ZTsKKyAgICB1c2luZyBWYWx1ZVR5cGUg
PSBUOworCiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRV
bmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgpIHsgfQogICAgIFBvaXNvbmVkVW5pcXVl
UHRyKFQqIHB0cikgOiBCYXNlKHB0cikgeyB9CkBAIC00OCw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBCYXNlKHVuaXF1ZS5yZWxlYXNlKCkpCiAgICAgeyB9CiAKLSAgICB0ZW1wbGF0ZTx1
aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+Ci0gICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29u
ZWRVbmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIs
IHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZFVuaXF1ZVB0ciAm
JiBzdGQ6OmlzX2Jhc2Vfb2Y8VCwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4K
KyAgICBQb2lzb25lZFVuaXF1ZVB0cihPdGhlciYmIHB0cikKICAgICAgICAgOiBCYXNlKHB0ci51
bnBvaXNvbmVkKCkpCiAgICAgewogICAgICAgICBwdHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOwpA
QCAtODksOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+Ci0gICAgUG9pc29uZWRV
bmlxdWVQdHImIG9wZXJhdG9yPShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBVPiYmIHB0cikKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90
aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0ZDo6aXNfYmFzZV9vZjxULCB0eXBlbmFtZSBP
dGhlcjo6VmFsdWVUeXBlPjo6dmFsdWU+PgorICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRv
cj0oT3RoZXImJiBwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQodGhpcyA9PSBzdGF0aWNfY2Fz
dDx2b2lkKj4oJnB0cikgfHwgdGhpcy0+dW5wb2lzb25lZCgpICE9IHB0ci51bnBvaXNvbmVkKCkp
OwogICAgICAgICBpZiAoTElLRUxZKHRoaXMgIT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpKSkg
ewpAQCAtMTIyLDI4ICsxMjUsMzEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJXaXRob3V0
RGVzdHJveSgpIHsgQmFzZTo6Y2xlYXIoKTsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3QsIHR5
cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOworICAgIHRl
bXBsYXRlPHVpbnRwdHJfdCYsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNv
bmVkVW5pcXVlUHRyOwogfTsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmd1bWVudHMsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Cit0ZW1wbGF0ZTx1
aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFt
ZSBFbmFibGUgPSB2b2lkPgogUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUPiBtYWtlUG9pc29uZWRV
bmlxdWUoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVybiBQb2lzb25lZFVu
aXF1ZVB0cjxrZXksIFQ+OjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLik7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLWNsYXNzIFBv
aXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1YmxpYyBDb25zdEV4cHJQb2lzb25lZDxrZXks
IFQqPiB7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK2NsYXNzIFBvaXNv
bmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1YmxpYyBQb2lzb25lZDxrZXksIFQqPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBvaXNv
bmVkPGtleSwgVCo+OworICAgIHVzaW5nIEJhc2UgPSBQb2lzb25lZDxrZXksIFQqPjsKIHB1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQb2lzb25lZFVuaXF1ZVB0ciA9IHRydWU7
CisgICAgdXNpbmcgVmFsdWVUeXBlID0gVFtdOworCiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9
IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgp
IHsgfQogICAgIFBvaXNvbmVkVW5pcXVlUHRyKFQqIHB0cikgOiBCYXNlKHB0cikgeyB9CiAgICAg
UG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQdHImJiBwdHIpIDogQmFzZShXVEZNb3Zl
KHB0cikpIHsgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3koKTsgfQogICAgIFBvaXNvbmVkVW5pcXVl
UHRyKHN0ZDo6dW5pcXVlX3B0cjxUW10+JiYgdW5pcXVlKSA6IFBvaXNvbmVkVW5pcXVlUHRyKHVu
aXF1ZS5yZWxlYXNlKCkpIHsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KLSAgICBQ
b2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3Ro
ZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3RkOjppc19zYW1lPFRbXSwgdHlwZW5hbWUgT3Ro
ZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1ZVB0cihPdGhlciYmIHB0
cikKICAgICAgICAgOiBCYXNlKHB0ci51bnBvaXNvbmVkKCkpCiAgICAgewogICAgICAgICBwdHIu
Y2xlYXJXaXRob3V0RGVzdHJveSgpOwpAQCAtMTc4LDggKzE4NCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtleTI+Ci0g
ICAgUG9pc29uZWRVbmlxdWVQdHImIG9wZXJhdG9yPShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBU
W10+JiYgcHRyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3RkOjppc19zYW1lPFRb
XSwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1
ZVB0ciYgb3BlcmF0b3I9KE90aGVyJiYgcHRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRoaXMg
PT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgaWYgKExJS0VMWSh0aGlzICE9IHN0YXRpY19jYXN0PHZv
aWQqPigmcHRyKSkpIHsKQEAgLTIxMSwxMCArMjE3LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAotICAgIHRlbXBsYXRl
PHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1
ZVB0cjsKKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVu
ZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwg
dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgordGVtcGxhdGU8dWludHB0cl90JiBr
ZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIFBvaXNvbmVkVW5pcXVlUHRy
PGtleSwgVFtdPiBtYWtlUG9pc29uZWRVbmlxdWUoc2l6ZV90IGNvdW50LCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiB7CiAgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPjo6
Y3JlYXRlKGNvdW50LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1JlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Jl
Zi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWYuaAkod29ya2luZyBj
b3B5KQpAQCAtMjU2LDEwICsyNTYsMTAgQEAgaW5saW5lIGJvb2wgaXMoY29uc3QgUmVmPEFyZ1R5
cGUsIFB0clRyYQogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJjZS5nZXQoKSk7CiB9
CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IENvbnN0RXhwclBv
aXNvbmVkUHRyVHJhaXRzOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+IHN0
cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFt
ZSBUPgotdXNpbmcgUG9pc29uZWRSZWYgPSBSZWY8VCwgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFp
dHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5n
IFBvaXNvbmVkUmVmID0gUmVmPFQsIFBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgJKHJldmlzaW9u
IDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJy
YXkoc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBpZiAoIXNpemUpIHsKLSAgICAgICAgICAg
IG1fZGF0YSA9IDA7CisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFJlZkNvdW50ZWRBcnJheShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlcj4mIG90aGVyKQogICAgIHsKICAgICAgICAgaWYgKG90aGVyLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgbV9kYXRhID0gMDsKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yMzgsMTAgKzIz
OCwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9k
YXRhIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3Qm
IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25lZFJlZkNvdW50ZWRBcnJheSA9
IFJlZkNvdW50ZWRBcnJheTxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsK
K3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRSZWZD
b3VudGVkQXJyYXkgPSBSZWZDb3VudGVkQXJyYXk8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBU
Pj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gMjI2Nzg0
KQorKysgU291cmNlL1dURi93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NiwxMCAr
Mjc2LDEwIEBAIGlubGluZSBib29sIGlzKGNvbnN0IFJlZlB0cjxBcmdUeXBlLCBQdHIKICAgICBy
ZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx1aW50
MzJfdCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsK
K3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJU
cmFpdHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNv
bmVkUmVmUHRyID0gUmVmUHRyPFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+
OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJl
ZlB0ciA9IFJlZlB0cjxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCShyZXZpc2lvbiAyMjY3
ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMzkgKzM1LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAKIG5hbWVzcGFjZSB7CiBzdHJ1Y3Qg
RHVtbXlTdHJ1Y3QgeyB9OwotY29uc3QgdWludDMyX3QgZHVtbXlQb2lzb24gPSAweGZmZmY7Cit1
aW50cHRyX3QgZHVtbXlQb2lzb24gPSAwOwogfQogCi0jaWYgRU5BQkxFKFBPSVNPTikKLXN0YXRp
Y19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEpID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMg
c2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0
RXhwclBvaXNvbigxMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBh
IHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSA+
PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3Rh
dGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApID4+IDQ4KSwgInBvaXNvbmVk
IGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFr
ZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBs
b29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lz
b24oMHhmZmZmZmZmZikgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEg
cG9pbnRlci4iKTsKLQotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxKSA+PiAz
MiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxl
dGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDApID4+IDMy
KSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0
ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDMy
KSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0
ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSA+PiAz
MiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxl
dGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+
PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29t
cGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZm
ZmZmKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBu
b3QgY29tcGxldGVseSAwLiIpOwotCi1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29u
KDEpICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2Vy
dCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMg
YmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSAmIDB4
NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0
LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSAmIDB4NCks
ICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25z
dEV4cHJQb2lzb24oMHhmZmZmZmZmZikgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBz
ZXQuIik7Ci0KLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHgzKSwg
ImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMg
ZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAm
IDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3Ig
dXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29u
KDEwMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxh
YmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4
cHJQb2lzb24oMTAwMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBh
cmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1h
a2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdu
bWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNf
YXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSAmIDB4MyksICJlbnN1cmUg
Ym90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0
cy4iKTsKLSNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQotCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihC
YWc8RHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9pZCopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNp
emVvZihQb2lzb25lZEJhZzxkdW1teVBvaXNvbiwgRHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9p
ZCopLCAiIik7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtOTUsNyArOTUsNiBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKLSAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RlcXVlLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NjUsNyArNzY1
LDYgQEAKIAkJRkUwNUZBRUMxRkRCNTEwQTAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVCMUZEQjUx
MDIwMDA5MzIzMCAvKiBQb2lzb25lZFJlZi5jcHAgKi87IH07CiAJCUZFMDVGQUVEMUZEQjUxMEUw
MDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29uZWRS
ZWZQdHIuY3BwICovOyB9OwogCQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZB
RUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLzsgfTsKLQkJRkUwNUZBRjExRkUw
OENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBD
b25zdEV4cHJQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFMDVGQjA2MUZFODRGQjcwMDA5MzIzMCAv
KiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTA1RkIwNTFGRTg0RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQ
dHIuY3BwICovOyB9OwogCQlGRUM4RjRFNzFGRTlDOTA1MDA1NkZEOEEgLyogUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8q
IFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLzsg
fTsKIAkJRkVDOEY0RUIxRkU5RjVBRjAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9u
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzhGNEVBMUZFOUY1QTcwMDU2RkQ4QSAvKiBQb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgKi87IH07CkBA
IC0xODgxLDcgKzE4ODAsNiBAQAogCQlGRTA1RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29u
ZWRSZWZQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29u
ZWRSZWZQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFFQjFGREI1
MTAyMDAwOTMyMzAgLyogUG9pc29uZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pc29uZWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29u
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkIwNTFGRTg0RkFFMDAw
OTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUM4RjRFNjFGRTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY1NCw3ICsy
NjUyLDYgQEAKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkwRjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29u
Y3VycmVudFB0ckhhc2hTZXQuY3BwICovLAogCQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAv
KiBDb25kaXRpb24uY3BwICovLAotCQkJCUZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25z
dEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENy
b3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENT
dHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5j
cHAgKi8sCkBAIC0zMjIxLDcgKzMyMTgsNiBAQAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNG
MyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzMENCNUMxRkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUMzMUQwQTU5MEMwMEZFQkNGMyAvKiBDb25kaXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhw
clBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUE2MUQwQTU5MEMwMEZFQkNG
MyAvKiBDb3VudGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBDMDBG
RUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBRDFEMEE1OTBD
MDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCShyZXZpc2lv
biAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lz
b25lZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwzODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+Ci0KLW5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEg
PSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLQotLy8g
Rm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNz
LiBGb3IgdGhpcyBwdXJwb3NlLAotLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZl
ZFJlZkxvZ2dlciBjbGFzc2VzLgotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMp
Ci17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7Ci0KLSAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKLSAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1w
dHkudW5wb2lzb25lZCgpKTsKLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKLQotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgICAg
IHVpbnRwdHJfdCBwdHJCaXRzOwotICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwg
c2l6ZW9mKHB0ckJpdHMpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PigmYSkpOwotI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAg
ICAgQVNTRVJUX1RSVUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojpp
c1BvaXNvbmVkKHB0ckJpdHMpKSk7Ci0jZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcHRyID0gJmE7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMihwMSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHAzKHAxKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMo
KSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMiA9IHAxOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwMyA9IHAxOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMu
Yml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0g
JmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0g
V1RGTW92ZShwMyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1vdmUocDEpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDQoV1RGTW92ZShwMykpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
LQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAm
YTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBX
VEZNb3ZlKHAxKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIHB0ci5jbGVhcigpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRy
LnVucG9pc29uZWQoKSk7Ci0gICAgfQotfQotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwg
QXNzaWdubWVudCkKLXsKLSAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKLSAgICBSZWZMb2dn
ZXIgYigiYiIpOwotICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwotCi0gICAgewotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAxID0gcDI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwg
cDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZh
KTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgcHRyID0gJmI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLnVucG9pc29uZWQoKSk7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBwdHIgPSBudWxscHRyOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVu
cG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIHAxID0gV1RGTW92ZShwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2Vy
Kj4gcDIoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBwMjsKLSAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmMsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25C
LCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gJmM7Ci0gICAgICAgIEFTU0VSVF9F
USgmYywgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51
bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9IFdURk1vdmUocDIpOwotICAgICAgICBBU1NFUlRf
RVEoJmMsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lz
b25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZM
b2dnZXIqPiBwNCgmYyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IFdU
Rk1vdmUocDQpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIgPSBwdHI7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOwotI2lmIENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vu
a25vd24tcHJhZ21hcyIKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYt
bW92ZSIKLSNlbmRpZgotICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7Ci0jaWYgQ09NUElMRVIo
Q0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci19Ci0KLVRFU1QoV1RGX0NvbnN0
RXhwclBvaXNvbmVkLCBTd2FwKQotewotICAgIFJlZkxvZ2dlciBhKCJhIik7Ci0gICAgUmVmTG9n
Z2VyIGIoImIiKTsKLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMS5z
d2FwKHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkp
OwotICAgICAgICBwMy5zd2FwKHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDMuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJp
dHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHN3
YXAocDEsIHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVk
KCkpOwotICAgICAgICBzd2FwKHAzLCBwNCk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpID09IHAzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBw
NC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmIsIHAyKTsKLSAgICAgICAgc3dhcChwMSwgcDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAx
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIpOwotCi0gICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwMikpOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEoJmEpOwotICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyKTsKLSAgICAg
ICAgcDEuc3dhcChwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMik7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7Ci0gICAgfQotfQotCi1zdGF0aWMg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVm
TG9nZ2VyJiBsb2dnZXIpCi17Ci0gICAgcmV0dXJuIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+KCZsb2dnZXIpOwotfQotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwg
UmV0dXJuVmFsdWUpCi17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7Ci0KLSAgICB7Ci0g
ICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7Ci0gICAgfQotfQotCi19IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDkg
QEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwot
I2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMTA2LDExICsxMDQsOSBAQCBURVNUKFdURl9Qb2lz
b25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUo
TUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIq
PiBwMyA9IHAxOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQog
CiAgICAgewpAQCAtMTIwLDEzICsxMTYsMTEgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQog
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikK
ICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKICAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAz
KTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMTM2LDE2ICsxMzAs
MTMgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRz
KCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYK
ICAgICB9CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CiAgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CkBAIC0xNTcsOSArMTQ4
LDcgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAz
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRz
KCkpOwogICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7CiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZh
OwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1v
dmUocDEpOwpAQCAtMTczLDcgKzE2Miw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHsKICAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKQEAgLTIwMCw3
ICsxODgsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7CkBAIC0yMDksNyArMTk2LDYgQEAgVEVTVChXVEZfUG9pc29uZWQs
IEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIHsKQEAgLTIz
Niw3ICsyMjIsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEo
JmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0yNDUsMTAgKzIzMCw4IEBAIFRFU1QoV1RGX1BvaXNv
bmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7
CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKLSNpZiBFTkFC
TEUoTUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJp
dmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwpAQCAtMjY4LDcgKzI1MSw2IEBAIFRFU1QoV1RGX1BvaXNv
bmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7
CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAgIH0KLSNl
bmRpZgogCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOwpAQCAtMjc3LDcgKzI1OSw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25t
ZW50KQogICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgIH0KIAot
I2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CkBAIC0yOTcsNyArMjc4LDYgQEAgVEVTVChX
VEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CiAg
ICAgfQotI2VuZGlmCiAKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7CkBAIC0zMzksNyArMzE5LDYgQEAgVEVTVChXVEZfUG9pc29uZWQs
IFN3YXApCiAKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CiAK
LSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMygmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OwpAQCAtMzUxLDcgKzMzMCw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogICAgICAgICBB
U1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAzLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMzU5LDE3ICszMzcsMTIg
QEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNv
bmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0jaWYgRU5B
QkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgc3dhcChwMSwgcDIpOwotI2Vsc2UKLSAgICAgICAg
c3RkOjpzd2FwKHAxLCBwMik7Ci0jZW5kaWYKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBv
aXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CiAKICAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUo
TUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0
KCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMzgxLDEw
ICszNTQsOCBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKICAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMy5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygp
KTsKLSNlbmRpZgogICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CiAgICAgICAg
IFJlZkxvZ2dlciogcDIoJmIpOwpAQCAtNDA4LDcgKzM3OSw2IEBAIFRFU1QoV1RGX1BvaXNvbmVk
LCBTd2FwKQogCiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihwMikpOwogICAgIH0KLSNlbmRpZgogfQogCiBzdGF0aWMgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIp
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWYuY3Bw
CShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE5ICszMSwzMSBAQAogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhh
YWFhOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7Ci1zdGF0aWMgY29u
c3QgdWludDMyX3QgUG9pc29uQyA9IDB4Y2NjYzsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lz
b25EID0gMHhkZGRkOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkUgPSAweGVlZWU7Ci1z
dGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRiA9IDB4ZmZmZjsKK3N0YXRpYyB1aW50cHRyX3Qg
cG9pc29uQTsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uQjsKK3N0YXRpYyB1aW50cHRyX3QgcG9p
c29uQzsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uRDsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29u
RTsKK3N0YXRpYyB1aW50cHRyX3QgcG9pc29uRjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBv
aXNvbnMoKQoreworICAgIHBvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgcG9pc29uQiA9IG1h
a2VQb2lzb24oKTsKKyAgICBwb2lzb25DID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkQgPSBt
YWtlUG9pc29uKCk7CisgICAgcG9pc29uRSA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25GID0g
bWFrZVBvaXNvbigpOworfQogCiBURVNUKFdURl9Qb2lzb25lZFJlZiwgQmFzaWMpCiB7CisgICAg
aW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25BLCBSZWZMb2dnZXI+IHJlZihhKTsKKyAg
ICAgICAgUG9pc29uZWRSZWY8cG9pc29uQSwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYt
Pm5hbWUpOwogCkBAIC01MSwxNiArNjMsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEJhc2lj
KQogICAgICAgICB1aW50cHRyX3QgcHRyQml0czsKICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJp
dHMsICZyZWYsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMg
IT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsKLSAgICAgICAgQVNTRVJUX0VRKHB0ckJp
dHMsIChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7
CisgICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoUG9pc29uZWQ8cG9pc29uQSwgUmVmTG9nZ2Vy
Kj4oJmEpLmJpdHMoKSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNT
RVJUX1RSVUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNv
bmVkKHB0ckJpdHMpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZDxwb2lzb25BLCBS
ZWZMb2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5B
QkxFKFBPSVNPTikKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lz
b25CLCBSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihhKSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBv
aXNvbkIsIFJlZkxvZ2dlcj4gcmVmKGFkb3B0UmVmKGEpKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCByZWYucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnJlZi0+bmFtZSk7CiAg
ICAgfQpAQCAtNjksMTIgKzgxLDE0IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKIAog
VEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNv
bnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJi
Iik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxw
b2lzb25DLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRy
KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBiOwpAQCAtODQsNyAr
OTgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRCwgUmVmTG9nZ2Vy
PiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEp
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8
ICI7CiAgICAgICAgIHJlZiA9IGM7CkBAIC05NCw3ICsxMDgsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihjKSBkZXJl
ZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWY8UG9pc29uRSwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNv
bmVkUmVmPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGFkb3B0
UmVmKGIpOwpAQCAtMTA0LDcgKzExOCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25t
ZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25GLCBSZWZM
b2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAg
ICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBhZG9wdFJlZihjKTsKQEAgLTExNCwyNSAr
MTI4LDI3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiB9CiAKLXN0YXRpYyBQb2lzb25lZFJlZjxQb2lzb25CLCBSZWZMb2dnZXI+IHBhc3NXaXRo
UmVmKFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCitzdGF0aWMg
UG9pc29uZWRSZWY8cG9pc29uQiwgUmVmTG9nZ2VyPiBwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxw
b2lzb25DLCBSZWZMb2dnZXI+JiYgcmVmZXJlbmNlKQogewogICAgIHJldHVybiBXVEZNb3ZlKHJl
ZmVyZW5jZSk7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5WYWx1ZSkKIHsKKyAg
ICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQiwgUmVmTG9nZ2VyPiByZWYocGFzc1dpdGhS
ZWYoUG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPihhKSkpOworICAgICAgICBQb2lzb25l
ZFJlZjxwb2lzb25CLCBSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxwb2lz
b25DLCBSZWZMb2dnZXI+KGEpKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsK
ICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25ELCBSZWZMb2dn
ZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uRCwgUmVmTG9nZ2VyPiByZWYo
YSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKICAgICAgICAgcmVmID0gcGFzc1dpdGhSZWYoYik7CkBAIC0xNDIsMjIgKzE1OCwyMiBA
QCBURVNUKFdURl9Qb2lzb25lZFJlZiwgUmV0dXJuVmFsdWUpCiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4g
cHRyKHBhc3NXaXRoUmVmKGEpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVm
TG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5n
ZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29u
RiwgRGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uQSwgUmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkYsIERlcml2ZWRSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPHBvaXNvbkEsIFJlZkxvZ2dlcj4gcHRyMihXVEZNb3ZlKHB0cikpOwogICAgICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIy
LmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25C
LCBEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOwotICAgICAgICBQb2lzb25l
ZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+IGJhc2VSZWZlcmVuY2UocGFzc1dpdGhSZWYoZGVyaXZl
ZFJlZmVyZW5jZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgUG9pc29uZWRSZWY8cG9pc29uQiwgRGVy
aXZlZFJlZkxvZ2dlcj4gZGVyaXZlZFJlZmVyZW5jZShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8
cG9pc29uQywgUmVmTG9nZ2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZl
cmVuY2UuY29weVJlZigpKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgZGVyaXZlZFJlZmVyZW5j
ZS5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgYmFzZVJlZmVyZW5jZS5wdHIoKSk7CiAg
ICAgfQpAQCAtMTY2LDEyICsxODIsMTQgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFJldHVyblZh
bHVlKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9p
c29ucygpOworCiAgICAgUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwog
CiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKGEpOwot
ICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBQ
b2lzb25lZFJlZjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJl
Zjxwb2lzb25FLCBSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5w
dHIoKSk7CkBAIC0xODMsOCArMjAxLDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkEsIFJlZkxv
Z2dlcj4gcDIoYik7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEo
YSk7CisgICAgICAgIFBvaXNvbmVkUmVmPHBvaXNvbkEsIFJlZkxvZ2dlcj4gcDIoYik7CiAgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEucHRyKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLnB0cigpKTsKQEAgLTE5Niw3ICsyMTQsNyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8
IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUG9p
c29uZWRSZWY8cG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKICAgICAgICAgUmVmPFJlZkxvZ2dl
cj4gcDIoYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwg
cDEucHRyKCkpOwpAQCAtMjA5LDcgKzIyNyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2Fw
KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQ
b2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJlZjxwb2lzb25GLCBS
ZWZMb2dnZXI+IHAxKGEpOwogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAg
bG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CkBAIC0yMjMs
NyArMjQxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiB9CiAKIHN0cnVjdCBQb2lz
b25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKLSAgICB1c2luZyBSZWYgPSBQ
b2lzb25lZFJlZjxQb2lzb25CLCBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyPjsKKyAgICB1
c2luZyBSZWYgPSBQb2lzb25lZFJlZjxwb2lzb25CLCBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9n
Z2VyPjsKIAogICAgIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFt
ZSk7CiAgICAgdm9pZCByZWYoKTsKQEAgLTI2MSw2ICsyNzksOCBAQCBEZXJpdmVkUG9pc29uZWRS
ZWZDaGVja2luZ1JlZkxvZ2dlcjo6RGVyCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25C
ZWZvcmVEZXJlZikKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFBv
aXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOwogICAgIFBvaXNvbmVkUmVmQ2hlY2tp
bmdSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9n
Z2VyIGMoImMiKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
UmVmUHRyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
b2lzb25lZFJlZlB0ci5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjIg
KzMzLDM0IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVp
bnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9
IDB4YmJiYjsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGlj
IGNvbnN0IHVpbnQzMl90IFBvaXNvbkQgPSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3Qg
UG9pc29uRSA9IDB4ZWVlZTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZm
Oworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25BOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25COwor
c3RhdGljIHVpbnRwdHJfdCBwb2lzb25DOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25EOworc3Rh
dGljIHVpbnRwdHJfdCBwb2lzb25FOworc3RhdGljIHVpbnRwdHJfdCBwb2lzb25GOworCitzdGF0
aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgcG9pc29uQSA9IG1ha2VQb2lzb24o
KTsKKyAgICBwb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIHBvaXNvbkMgPSBtYWtlUG9pc29u
KCk7CisgICAgcG9pc29uRCA9IG1ha2VQb2lzb24oKTsKKyAgICBwb2lzb25FID0gbWFrZVBvaXNv
bigpOworICAgIHBvaXNvbkYgPSBtYWtlUG9pc29uKCk7Cit9CiAKIFRFU1QoV1RGX1BvaXNvbmVk
UmVmUHRyLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZl
ZFJlZkxvZ2dlciBhKCJhIik7CiAKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25BLCBSZWZMb2dn
ZXI+IGVtcHR5OworICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkEsIFJlZkxvZ2dlcj4gZW1wdHk7
CiAgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CiAgICAgICAg
IEVYUEVDVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTU3LDcwICs2OSw3MCBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiAgICAgICAgIHVpbnRwdHJfdCBwdHJCaXRzOwog
ICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMpKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PigmYSkp
OwotICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIs
IFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKKyAgICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChQ
b2lzb25lZDxwb2lzb25CLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CiAjaWYgRU5BQkxFKFBP
SVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRfVFJVRSgoQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQiwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoKFBvaXNvbmVkPHBvaXNvbkIsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMp
KSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgIH0KICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyID0gJmE7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyID0gJmE7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAg
ICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIocDEpOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIocDEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAx
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJl
ZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9n
Z2VyPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+
IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4gcDIg
PSBwMTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkg
ZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAg
ICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PHBvaXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9p
c29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxs
cHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0K
ICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIERlcml2ZWRSZWZM
b2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dl
cj4gcDIgPSBwMTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgRGVyaXZlZFJlZkxv
Z2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2Vy
PiBwMiA9IHAxOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0g
JmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIgPSBXVEZN
b3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dl
cj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBw
MiA9IFdURk1vdmUocDEpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBwdHIgPSBudWxscHRyOwogICAgICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKQEAgLTEzMCwxMCArMTQyLDEyIEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmUHRyLCBCYXNpYykKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFz
c2lnblBhc3NSZWZUb1BvaXNvbmVkUmVmUHRyKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7
CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICB7CiAgICAgICAgIFJlZjxSZWZM
b2dnZXI+IHBhc3NSZWYoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxv
Z2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9p
c29uQiwgUmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVm
KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTE0MSwxMyArMTU1LDE1IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25QYXNzUmVmVG8KIAogVEVTVChXVEZfUG9pc29uZWRS
ZWZQdHIsIEFkb3B0KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKIAotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dl
cj4gZW1wdHk7CisgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBlbXB0eTsK
ICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHB0cihhZG9wdFJlZigmYSkpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25ELCBSZWZMb2dnZXI+IHB0cihhZG9wdFJlZigmYSkp
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgJipwdHIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0x
NTUsNyArMTcxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFkb3B0KQogICAgIEVYUEVD
VF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZh
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIgPSBhZG9w
dFJlZigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAg
RVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CkBAIC0xNjMs
MTMgKzE3OSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiAKIFRFU1QoV1RG
X1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7
CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwog
ICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uQiwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNv
bkYsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBS
ZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAt
MTgxLDcgKzE5OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIp
IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gJmI7
CkBAIC0xOTEsNyArMjA5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQp
CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9p
c29uRCwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQo
KSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZiKTsK
QEAgLTIwMSw3ICsyMTksNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkK
ICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25F
LCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAg
ICAgICBwdHIgPSBudWxscHRyOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgp
KTsKQEAgLTIwOSw4ICsyMjcsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVu
dCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dl
cj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAy
KCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwgUmVmTG9nZ2VyPiBwMSgmYSk7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIoJmIpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5n
ZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0yMjIsOCArMjQwLDggQEAgVEVTVChX
VEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
cmVmKGIpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEp
OwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigm
Yyk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25FLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7
CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmMs
IHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTIzNSw3ICsyNTMsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSByZWYoYykgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSBkZXJlZihjKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwg
UmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHB0ciA9ICZjOwpAQCAtMjQ1LDcgKzI2Myw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dn
ZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkIsIFJlZkxvZ2dlcj4g
cHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2co
KSA8PCAifCAiOwogICAgICAgICBwdHIgPSBhZG9wdFJlZigmYyk7CkBAIC0yNTUsOCArMjczLDgg
QEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSgm
YSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+IHAy
KCZjKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQywgUmVmTG9nZ2VyPiBwMSgmYSk7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZj
KTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YywgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMjY4LDcgKzI4Niw3IEBA
IFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+
IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRy
KCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8
PCAifCAiOwogICAgICAgICBwdHIgPSBwdHI7CkBAIC0yNzgsNyArMjk2LDcgQEAgVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBy
ZWYoYSkgZGVyZWYoYSkgfCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApAQCAtMjk2LDEyICszMTQsMTQgQEAgVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBT
d2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBSZWZMb2dnZXIgYSgiYSIp
OwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwg
UmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkMsIFJlZkxv
Z2dlcj4gcDIoJmIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEo
JmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CkBAIC0zMTMs
OCArMzMzLDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiAgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxv
Z2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+
IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgm
YSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIpOwog
ICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CkBAIC0zMjgsMTEgKzM0OCwxMyBAQCBU
RVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIs
IFJlbGVhc2VOb25OdWxsKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBSZWZM
b2dnZXIgYSgiYSIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBS
ZWZMb2dnZXI+IHJlZlB0ciA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBS
ZWZMb2dnZXI+IHJlZiA9IHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHJlZlB0ciA9ICZhOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxwb2lzb25CLCBSZWZMb2dnZXI+IHJlZiA9IHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgp
OwogICAgIH0KIAogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKQEAgLTM0MCwzNyArMzYyLDM5IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
UHRyLCBSZWxlYXNlTm9uTnVsbCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2Up
CiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgi
YSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEg
PSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdU
Rk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAx
ID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBX
VEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxwb2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAg
RVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5n
ZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29u
QiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uQywgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxwb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxwb2lzb25DLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVD
VF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkp
OwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJl
ZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dn
ZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUmVmTG9nZ2VyPiBw
MSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIp
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0zODIsOCArNDA2LDggQEAg
VEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYo
YSkgcmVmKGIpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEo
JmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBw
MigmYyk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigm
Yyk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEo
JmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTM5NSwxMyArNDE5LDE1
IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNlKQogICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogfQogCi1zdGF0aWMgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBmMShS
ZWZMb2dnZXImIGxvZ2dlcikKK3N0YXRpYyBQb2lzb25lZFJlZlB0cjxwb2lzb25DLCBSZWZMb2dn
ZXI+IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQogewotICAgIHJldHVybiBQb2lzb25lZFJlZlB0cjxQ
b2lzb25DLCBSZWZMb2dnZXI+KCZsb2dnZXIpOworICAgIHJldHVybiBQb2lzb25lZFJlZlB0cjxw
b2lzb25DLCBSZWZMb2dnZXI+KCZsb2dnZXIpOwogfQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0
ciwgUmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2
ZWRSZWZMb2dnZXIgYSgiYSIpOwogCiAgICAgewpAQCAtNDMyLDIwICs0NTgsMjIgQEAgc3RhdGlj
IENvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZAogCiBURVNUKFdURl9Qb2lzb25lZFJl
ZlB0ciwgQ29uc3QpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIC8vIFRoaXMg
dGVzdCBwYXNzZXMgaWYgaXQgY29tcGlsZXMgd2l0aG91dCBhbiBlcnJvci4KICAgICBhdXRvIGEg
PSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50
ZWQ+IGIgPSBXVEZNb3ZlKGEpOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIGNvbnN0IENv
bnN0UmVmQ291bnRlZD4gYyA9IGIucHRyKCk7CisgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uRCwg
Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBjID0gYi5wdHIoKTsKICAgICBSZWY8Y29uc3QgQ29uc3RS
ZWZDb3VudGVkPiBkID0gcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7Ci0gICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uRSwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVm
Q291bnRlZFJlZigpOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIENvbnN0UmVmQ291bnRl
ZD4gZiA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uQiwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBnID0gZjsKLSAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25DLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGgoZik7CisgICAgUG9pc29uZWRSZWZQdHI8
cG9pc29uRSwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRl
ZFJlZigpOworICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIENvbnN0UmVmQ291bnRlZD4gZiA9
IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CisgICAgUG9pc29uZWRSZWZQdHI8cG9pc29uQiwg
Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBnID0gZjsKKyAgICBQb2lzb25lZFJlZlB0cjxwb2lzb25D
LCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGgoZik7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291
bnRlZD4gaShyZXR1cm5SZWZDb3VudGVkUmVmKCkpOwogfQogCiBzdHJ1Y3QgUG9pc29uZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlciA6IFJlZkxvZ2dlciB7Ci0gICAgdXNpbmcgUmVmID0gUG9pc29u
ZWRSZWZQdHI8UG9pc29uRCwgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj47CisgICAg
dXNpbmcgUmVmID0gUG9pc29uZWRSZWZQdHI8cG9pc29uRCwgUG9pc29uZWRSZWZQdHJDaGVja2lu
Z1JlZkxvZ2dlcj47CiAKICAgICBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0
IGNoYXIqIG5hbWUpOwogICAgIHZvaWQgcmVmKCk7CkBAIC00NzksNiArNTA3LDggQEAgdm9pZCBQ
b2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpkZQogCiBURVNUKFdURl9Qb2lzb25lZFJl
ZlB0ciwgQXNzaWduQmVmb3JlRGVyZWYpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwog
ICAgIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOwogICAgIFBvaXNvbmVk
UmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYigiYiIpOwogCkBAIC01NDMsNiArNTczLDggQEAgVEVT
VChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbkJlZm9yZURlcgogCiBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgUmVsZWFzZU5vbk51bGxCZWZvcmVEZXJlZikKIHsKKyAgICBpbml0aWFsaXplUG9p
c29ucygpOworCiAgICAgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAK
ICAgICB7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1
ZVB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9p
c29uZWRVbmlxdWVQdHIuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDggKzMxLDE5IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAot
Y29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkIg
PSAweGJiYmI7Cit1aW50cHRyX3QgZ19wb2lzb25BOwordWludHB0cl90IGdfcG9pc29uQjsKKwor
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbnMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9u
Y2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgMiBkaWZmZXJlbnQgcG9p
c29uIHZhbHVlcy4KKyAgICAgICAgZ19wb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgICAgICB3
aGlsZSAoIWdfcG9pc29uQiB8fCBnX3BvaXNvbkIgPT0gZ19wb2lzb25BKQorICAgICAgICAgICAg
Z19wb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQogCiBzdHJ1Y3QgTG9nZ2VyIHsK
ICAgICBMb2dnZXIoY29uc3QgY2hhciogbmFtZSwgaW50JiBkZXN0cnVjdENvdW50KQpAQCAtNjEs
MTMgKzcyLDE1IEBAIHN0cnVjdCBPdGhlciB7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
LCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewotICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IGVtcHR5OworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gZW1wdHk7CiAgICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5
LmJpdHMoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBlbXB0eShudWxscHRyKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBMb2dnZXI+IGVtcHR5KG51bGxwdHIpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRz
KCkpOwogICAgIH0KQEAgLTc2LDcgKzg5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIs
IEJhc2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIq
IGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsK
QEAgLTg3LDcgKzEwMCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAg
ICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RS
VUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj46OmlzUG9pc29uZWQocHRyQml0
cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVO
QUJMRShQT0lTT04pCiAgICAgICAgIH0KQEAgLTk2LDcgKzEwOSw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAg
ICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0
Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IHB0cihiKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPiBwdHIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGIsICYqcHRyKTsKQEAgLTEwOSw3ICsxMjIsNyBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7
CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4g
cHRyID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
PiBwdHIgPSBhOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgfQpAQCAt
MTE4LDcgKzEzMSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAg
ICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5l
dyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IGI7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gYjsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIH0KQEAgLTEyOSw3ICsxNDIsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RD
b3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj46OmNyZWF0ZShhTmFtZSwgYURlc3RydWN0Q291
bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0
ciA9IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPjo6Y3JlYXRlKGFOYW1lLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xMzksNyArMTUy
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRl
c3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBiTmFtZSA9ICJiIjsKICAgICAg
ICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIg
PSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPjo6Y3JlYXRlKGJOYW1l
LCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBEZXJpdmVkTG9n
Z2VyPjo6Y3JlYXRlKGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAh
PSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiTmFtZSwgJnB0ci0+
bmFtZSk7CkBAIC0xNTEsNyArMTY0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJh
c2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFy
KiBhTmFtZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2Vy
PihhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxwb2lzb25BLCBMb2dn
ZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFtZSk7CkBA
IC0xNjEsNyArMTc0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAg
ICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBiTmFtZSA9
ICJiIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4o
Yk5hbWUsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8cG9pc29uQSwgRGVyaXZl
ZExvZ2dlcj4oYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0
ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1l
KTsKQEAgLTE3MSw3ICsxODQsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMp
CiAgICAgICAgIGludCB1bmlxdWVEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hh
ciogdW5pcXVlTmFtZSA9ICJ1bmlxdWUiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PERlcml2ZWRMb2dnZXI+KHVuaXF1ZU5hbWUsIHVuaXF1ZURlc3RydWN0Q291bnQpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBEZXJpdmVkTG9nZ2VyPiBwdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZU5hbWUsIHVuaXF1ZURlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIHVuaXF1ZURlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSh1bmlxdWVOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE4MSw3ICsx
OTQsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCB1
bmlxdWVEZXJpdmVkRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIHVuaXF1
ZURlcml2ZWROYW1lID0gInVuaXF1ZSBkZXJpdmVkIjsKICAgICAgICAgewotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5pcXVl
PERlcml2ZWRMb2dnZXI+KHVuaXF1ZURlcml2ZWROYW1lLCB1bmlxdWVEZXJpdmVkRGVzdHJ1Y3RD
b3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4g
cHRyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVEZXJpdmVkTmFtZSwg
dW5pcXVlRGVyaXZlZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIHVu
aXF1ZURlcml2ZWREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxw
dHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEodW5pcXVlRGVy
aXZlZE5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTk1LDE1ICsyMDgsMTUgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJh
IiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwg
YkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
bnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEu
Yml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZNb3Zl
KHAzKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBw
MyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4g
cDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTIxOSwxNSArMjMyLDE1IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgTG9nZ2VyKiBhID0g
bmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3
IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29u
ZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4g
cDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBw
NChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25C
LCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTI0MywxNSAr
MjU2LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgRGVy
aXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShw
Myk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcDMuYml0cygpKTsKQEAgLTI2NywxNSArMjgwLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBCYXNpYykKICAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9n
Z2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3
IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyKFdURk1v
dmUocDEpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29u
ZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4g
cDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBw
NChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25C
LCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1
Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOwpAQCAtMjg5LDcgKzMwMiw3IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVj
dENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNv
bmVkKCkpOwogICAgICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcHRyLnVucG9pc29uZWQoKSk7CkBAIC0zMDIsMTMgKzMxNSwxNSBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3Np
Z25tZW50KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAg
ICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihh
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEs
IHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMzI1LDcgKzM0MCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwog
ICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0
cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBw
dHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0g
bnVsbHB0cjsKQEAgLTM0NSw4ICszNjAsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwg
QXNzaWdubWVudCkKICAgICAgICAgTG9nZ2VyKiBjID0gbmV3IExvZ2dlcigiYyIsIGNEZXN0cnVj
dENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBkID0gbmV3IExvZ2dlcigiZCIsIGREZXN0cnVjdENv
dW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gcDIoYik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcj4gcDEoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcj4gcDIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwpAQCAtMzU3LDggKzM3Miw4IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICAgICAgQVNTRVJUX0VRKGIs
IHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5w
b2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dl
cj4gcDQoZCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cj4gcDMoYyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dl
cj4gcDQoZCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMzgxLDcgKzM5Niw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBhID0g
bmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIERlcml2ZWRM
b2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIo
YSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRy
KGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC00MDQsOCArNDE5LDggQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGMgPSBuZXcg
RGVyaXZlZExvZ2dlcigiYyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExvZ2dl
ciogZCA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJkIiwgZERlc3RydWN0Q291bnQpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxKGEpOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcDIo
Yik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEo
YSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRMb2dn
ZXI+IHAyKGIpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKQEAgLTQxNiw4ICs0MzEsOCBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBw
MS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9p
c29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDMoYyk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBEZXJpdmVk
TG9nZ2VyPiBwNChkKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyPiBwMyhjKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwg
RGVyaXZlZExvZ2dlcj4gcDQoZCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgY0Rlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50KTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtNDM4LDcgKzQ1Myw3IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQgYURl
c3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3Ry
dWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgcHRyID0gYTsKQEAgLTQ1Miw3ICs0NjcsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsK
ICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBw
dHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4g
cHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFO
RykKQEAgLTQ3MywxNCArNDg4LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3Np
Z25tZW50KQogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKIHsKKyAgICBpbml0
aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAw
OwogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBu
ZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcg
TG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEs
IHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtNDkwLDggKzUw
Nyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogICAgICAgICAgICAgQVNT
RVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIu
dW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBM
b2dnZXI+IHA0OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dn
ZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9n
Z2VyPiBwNDsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTUxMSw4ICs1MjgsOCBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0
cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXI+IHAyOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTUyMiw4ICs1MzksOCBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNDsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQ7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKCFwNC5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQo
KSk7CkBAIC01MzgsMTMgKzU1NSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dh
cCkKICAgICB9CiB9CiAKLXN0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogbG9nZ2VyKQorc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGxvZ2dlcikKIHsKLSAg
ICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPihsb2dnZXIpOworICAg
IHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4obG9nZ2VyKTsKIH0K
IAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFJldHVyblZhbHVlKQogeworICAgIGluaXRp
YWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7
CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5v
blRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0
cnVjdGlibGVBcnJheXMuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJs
ZUFycmF5cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDE5IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgdWludDMyX3QgUG9pc29uQSA9
IDB4YWFhYTsKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7Cit1aW50cHRyX3QgZ19w
b2lzb25BOwordWludHB0cl90IGdfcG9pc29uQjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBv
aXNvbnMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8v
IE1ha2Ugc3VyZSB3ZSBnZXQgMiBkaWZmZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ19w
b2lzb25BID0gbWFrZVBvaXNvbigpOworICAgICAgICB3aGlsZSAoIWdfcG9pc29uQiB8fCBnX3Bv
aXNvbkIgPT0gZ19wb2lzb25BKQorICAgICAgICAgICAgZ19wb2lzb25CID0gbWFrZVBvaXNvbigp
OworICAgIH0pOworfQogCiBzdHJ1Y3QgTG9nZ2VyIHsKICAgICBMb2dnZXIoKSB7IH0KQEAgLTYy
LDggKzczLDEwIEBAIGNvbnN0IGludCBhcnJheVNpemUgPSA1OwogCiBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQmFzaWMpCiB7Cisg
ICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IGVtcHR5OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIExvZ2dlcltdPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVt
cHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsK
ICAgICB9CkBAIC03Miw3ICs4NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9u
VHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2Vy
KiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
W10+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9n
Z2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYSwgJipwdHIpOwpAQCAtODQsNyArOTcsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0
cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJp
dHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oYSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNT
RVJUUykKLSAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXJbXT46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9U
UlVFKChQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPjo6aXNQb2lzb25lZChw
dHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICAgICAgfQpA
QCAtOTUsNyArMTA4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFs
bAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBt
YWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRy
ID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+
IHB0ciA9IGE7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgZm9y
IChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xMDgsNyArMTIxLDcgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3Ry
dWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKICAgICAgICAg
ewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPjo6Y3JlYXRlKGFycmF5U2l6ZSwg
YU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9n
Z2VyW10+OjpjcmVhdGUoYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8g
aSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTEyMSw3ICsxMzQsNyBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3Vu
dCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gbWFrZVBv
aXNvbmVkVW5pcXVlPFBvaXNvbkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8cG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6
ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyAr
K2kpCkBAIC0xMzQsNyArMTQ3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25U
cml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBj
aGFyKiBhTmFtZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBM
b2dnZXJbXT4oYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gbWFrZVBvaXNvbmVk
VW5pcXVlPHBvaXNvbkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAg
IGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTQ5LDE1ICsxNjIsMTUg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dn
ZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwg
YkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQo
KSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
MyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4g
cDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0x
NzMsMTUgKzE4NiwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxs
CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFy
cmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RG
TW92ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAy
LnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRz
KCkpOwpAQCAtMTk3LDE1ICsyMTAsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8
TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92
ZShwMSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltd
PiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cltdPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENv
dW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRz
KCkpOwpAQCAtMjIxLDE1ICsyMzQsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8
TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUo
cDEpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+
IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
W10+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3Vu
dCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEs
IHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7
CkBAIC0yNDMsNyArMjU2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEg
PSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJb
XT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcHRyLnVu
cG9pc29uZWQoKSk7CkBAIC0yNTYsMTMgKzI2OSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAg
ICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dl
ciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcltdPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTI3OSw3ICsyOTQsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1
Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5
U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0
ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gbnVsbHB0cjsKQEAgLTI5OSw4ICsz
MTQsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAg
IExvZ2dlciogYyA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImMiLCBjRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIExvZ2dlciogZCA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwg
ImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDIoYik7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwpAQCAt
MzExLDggKzMyNiw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwK
ICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNChkKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAzKGMpOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQoZCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGRE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkp
OwpAQCAtMzMzLDcgKzM0OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBh
ID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+
IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
W10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBw
dHIgPSBhOwpAQCAtMzQ3LDcgKzM2Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9n
Z2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50
KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAjaWYgQ09N
UElMRVIoQ0xBTkcpCkBAIC0zNjgsMTQgKzM4MywxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25z
KCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGlu
dCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9
IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
MSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cDI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBw
MSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltd
PiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDIudW5wb2lzb25lZCgpKTsKQEAgLTM4NSw4ICs0MDIsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lz
b25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0OworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQ7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9p
c29uZWQoKSk7CkBAIC00MDYsOCArNDIzLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJG
b3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJh
eVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJy
YXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDI7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9p
c29uZWQoKSk7CkBAIC00MTcsOCArNDM0LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJG
b3JOb25Ucml2aWFsbAogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNDsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0OwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcDQuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkp
OwpAQCAtNDMzLDEzICs0NTAsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25U
cml2aWFsbAogICAgIH0KIH0KIAotc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcltdPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGFycmF5KQorc3RhdGljIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogYXJyYXkp
CiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPihhcnJh
eSk7CisgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+KGFy
cmF5KTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0
cnVjdGlibGVBcnJheXMsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7
CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dl
ciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZv
clRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDE5IEBAIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFh
YTsKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7Cit1aW50cHRyX3QgZ19wb2lzb25B
OwordWludHB0cl90IGdfcG9pc29uQjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbnMo
KQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAg
c3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ug
c3VyZSB3ZSBnZXQgMiBkaWZmZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ19wb2lzb25B
ID0gbWFrZVBvaXNvbigpOworICAgICAgICB3aGlsZSAoIWdfcG9pc29uQiB8fCBnX3BvaXNvbkIg
PT0gZ19wb2lzb25BKQorICAgICAgICAgICAgZ19wb2lzb25CID0gbWFrZVBvaXNvbigpOworICAg
IH0pOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgZmlsbEFycmF5KFQm
IGFycmF5LCBpbnQgc2l6ZSkKQEAgLTQ4LDEzICs1OSwxNSBAQCBzdGF0aWMgY29uc3QgaW50IGFy
cmF5U2l6ZSA9IDU7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVz
dHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAg
ICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gZW1wdHk7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IGVtcHR5OwogICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIGludFtdPiBlbXB0eShudWxscHRyKTsKKyAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gZW1wdHkobnVsbHB0cik7CiAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUs
IGVtcHR5LmJpdHMoKSk7CiAgICAgfQpAQCAtNjMsNyArNzYsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5
U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsICYqcHRyKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6
ZTsgKytpKQpAQCAtNzQsNyArODcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRy
aXZpYWxseURlCiAgICAgICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9m
KHB0ckJpdHMpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oYSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT46OmlzUG9p
c29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIGludFtdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAj
ZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICAgICAgfQpAQCAtODQsNyArOTcsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBu
ZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogCi0g
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIgPSBhOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIgPSBhOwogICAgICAgICBB
U1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0
cik7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtOTIs
NyArMTA1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAg
IH0KIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0
ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPjo6Y3JlYXRlKGFycmF5U2l6ZSk7
CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0ciA9IFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+OjpjcmVhdGUoYXJyYXlTaXplKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgZmls
bEFycmF5KHB0ciwgYXJyYXlTaXplKTsKICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJy
YXlTaXplOyArK2kpCkBAIC0xMDUsMTYgKzExOCwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6ZV07
CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIGludFtdPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMSA9IGE7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgaW50W10+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMo
KSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBmb3Ig
KGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKICAgICAgICAgICAgIEFTU0VSVF9FUShh
W2ldLCBwMltpXSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+
IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0ID0g
V1RGTW92ZShwMyk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+
IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBpbnRbXT4gcDQg
PSBXVEZNb3ZlKHAzKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQo
KSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKICAgICAgICAgQVNTRVJUX0VR
KGIsIHA0LnVucG9pc29uZWQoKSk7CkBAIC0xMjgsMTYgKzE0MSwxNiBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGIgPSBuZXcgaW50W2Fy
cmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBw
MS5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCiAgICAgICAgICAgICBBU1NF
UlRfRVEoYVtpXSwgcDJbaV0pOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IGludFtdPiBwMyA9IGI7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtd
PiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
aW50W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBpbnRb
XT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwogICAgICAgICBBU1NF
UlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKQEAgLTE0OSw3ICsxNjIsNyBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50
W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogCi0gICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VR
KGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIuY2xlYXIoKTsKICAgICAgICAgQVNT
RVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTU5LDEzICsxNzIsMTUgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogCiBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQXNzaWdubWVudCkKIHsKKyAg
ICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOwogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwogICAg
ICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5
U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihh
KTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwog
ICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9IGI7
CiAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTE3NSw3ICsxOTAs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1
dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNp
emUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7
CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBudWxs
cHRyOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0x
OTEsMTYgKzIwNiwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURl
CiAgICAgICAgIGZpbGxBcnJheShjLCBhcnJheVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoZCwg
YXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4g
cDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMihiKTsK
KyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDEoYSk7CisgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAyKGIpOwogICAgICAgICBB
U1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGIsIHAyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAgIEFTU0VSVF9F
UShiLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5w
b2lzb25lZCgpKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4g
cDMoYyk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNChkKTsK
KyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMoYyk7CisgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgaW50W10+IHA0KGQpOwogICAgICAgICBB
U1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGQsIHA0LnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CkBAIC0yMTIsNyArMjI3LDcg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRv
KiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXpl
KTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyID0gYTsKICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMjIyLDcgKzIzNyw3IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byog
YSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7
CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAg
ICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApAQCAtMjM5LDE0ICsyNTQsMTYgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogCiBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgU3dhcCkKIHsKKyAgICBpbml0
aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJh
eVNpemVdOwogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBm
aWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7
CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMSA9IGE7CisgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAyOwogICAgICAgICBBU1NFUlRfRVEocDEudW5w
b2lzb25lZCgpLCBhKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAgICAg
IEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtMjU1LDggKzI3Miw4IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgQVNTRVJUX1RSVUUo
IXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShwMi51bnBvaXNvbmVkKCksIGEp
OwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyA9IGI7Ci0g
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNDsKKyAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNDsKICAgICAgICAgQVNTRVJUX0VRKHAzLnVu
cG9pc29uZWQoKSwgYik7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAg
ICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTI3Miw4ICsyODksOCBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGZpbGxBcnJheShh
LCBhcnJheVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCks
IGEpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RS
VUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC0yODIsOCArMjk5LDggQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQiwgaW50W10+IHA0OwogICAgICAgICBBU1NFUlRfRVEocDMudW5wb2lzb25lZCgp
LCBiKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtMjk0LDEzICszMTEsMTUgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgIH0KIH0KIAotc3RhdGljIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwb2lzb25lZFB0ckZvbyhpbnQqIHB0cikKK3N0YXRp
YyBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwb2lzb25lZFB0ckZvbyhpbnQq
IHB0cikKIHsKLSAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+KHB0
cik7CisgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pUHRyPGdfcG9pc29uQSwgaW50
W10+KHB0cik7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVz
dHJ1Y3RpYmxlQXJyYXlzLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygp
OworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAg
ICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331173</attachid>
            <date>2018-01-11 23:01:05 -0800</date>
            <delta_ts>2018-01-11 23:22:56 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>128432</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksOCAr
Mzg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lz
b25lZE1hc21QdHIoMSk7IH0KLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1
ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigyKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1h
c21QdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwg
MSk7IH0KKyAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJu
IFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwgMik7IH0KIAogICAgIFBvaXNvbmVkTWFzbVB0
ciBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODk0LDggKzg5NCw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmhhc1RhaWxDYWxscygpOyB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBz
X3BvaXNvbiA9IG1ha2VDb25zdEV4cHJQb2lzb24oQ29kZUJsb2NrUG9pc29uKTsKLQogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOwogICAgIHZvaWQgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwpAQCAtOTc0LDcgKzk3Miw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fb3duZXJFeGVj
dXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293
bmVyRWRnZTsKLSAgICBDb25zdEV4cHJQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9w
b2lzb25lZFZNOworICAgIFBvaXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVk
Vk07CiAKICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3Ry
dWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDggQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBhbiBleGNl
cHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6aml0
Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54b3JQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1Qw
KTsKKy8vICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJs
b2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQueG9yUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKENvZGVCbG9ja1BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsK
ICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSklUQ29kZVR5cGU6
OmNvbW1vbkRhdGFPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb21tb25EYXRhOjpmcmFtZVJl
Z2lzdGVyQ291bnRPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAvLyBUaGlzIGRvZXMg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVSZWdpc3RlckNvdW50IC0gMSkqc2l6ZW9mKFJl
Z2lzdGVyKSB3aGVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyMjY3ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMjUzMCw3ICsyNTMwLDcgQEAgX2xsaW50X29wX3Byb2ZpbGVf
dHlwZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQx
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVucG9pc29u
KENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MSwg
dDIpCiAgICAgIyB0MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJvZmlsZXJM
b2cuCiAgICAgbG9hZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgdW5wb2lzb24oQ29kZUJsb2Nr
UG9pc29uLCBQQikKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCB0MSkKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0K
ICAgICB2YWx1ZVByb2ZpbGUocjAsIChDYWxsT3BDb2RlU2l6ZSAtIDEpLCB0MykKQEAgLTQ4MCwy
NyArNDgwLDI3IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAg
ICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAot
bWFjcm8gc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhlblN0
cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVk
Vk1bc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHNjcmF0
Y2gpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoLCBzY3JhdGNoMikKICAg
ICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlE
VGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKICAgICBsb2FkcCBbc2NyYXRjaCwgc3Ry
dWN0dXJlSURUaGVuU3RydWN0dXJlLCA4XSwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCiBlbmQK
IAotbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRj
aCkKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3Ry
dWN0dXJlCi0gICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwg
c2NyYXRjaCkKKyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJl
LCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJl
ckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHN0cnVjdHVyZQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCi0gICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bY2VsbF0sIGNlbGwKLSAgICB1bnBvaXNvbihD
b2RlQmxvY2tQb2lzb24sIGNlbGwpCi0gICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCi0gICAg
bG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQotZW5kCisjbWFjcm8gbG9hZFN0
cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisjICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisjICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisjICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2NlbGxdLCBj
ZWxsCisjICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgY2VsbCkKKyMgICAgbG9hZHAgVk06
OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3Rh
YmxlW2NlbGxdLCBjZWxsCisjICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1
cmUKKyNlbmQKIAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIApAQCAtNTYy
LDcgKzU2Miw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cKICAg
ICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIHJlc2V0IFBDLCBzaW5jZSB0aGUgc2xvd19wYXRoIGNs
b2JiZXJlZCB0aGVtLgogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbW92
ZSAwLCBQQwogICAgIGptcCBkb25lTGFiZWwKIGVuZApAQCAtNjQxLDcgKzY0MSw3IEBAIF9sbGlu
dF9vcF90b190aGlzOgogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwg
dGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmlu
YWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQz
KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIHQxLCB0MiwgLm9w
VG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b190aGlzX2xlbmd0aCkKQEAg
LTcyNCw3ICs3MjQsNyBAQCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uKCkKICAgICBtb3ZlIDAs
IHQwCiAgICAgam1wIC5kb25lCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgY3BlcSBTdHJ1Y3R1cmU6
Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2lzX3VuZGVmaW5lZF9sZW5ndGgpCiAubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZDoKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKKyAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSwgdDUpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCiAg
ICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDEsIHQwCkBAIC0xNDMzLDcg
KzE0MzMsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkOgogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWlu
OjptX3ZlY3Rvclt0M10sIHQzCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogdDMsIG9rIGVu
ZCkKIAotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEpCisgICAg
c3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSwgdDUpCiAgICAgbG9hZHEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCiAgICAgYnFlcSB0MiwgVmFsdWVOdWxsLCAu
b3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZQogLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkxv
b3A6CkBAIC0xNzQwLDcgKzE3NDAsNyBAQCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGlt
bWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCi0gICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEsIHQ1KQogICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBd
LCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIF9sbGlu
dF9vcF9jYXRjaDoKIAogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbG9h
ZHAgVk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwg
UEMKICAgICByc2hpZnRwIDMsIFBDCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV9zY29wZToKIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1Bh
dGgpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDUpCiAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCkBA
IC0yNTAwLDcgKzI1MDAsNyBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0
MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICAjIHQxIGlzIGhv
bGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIHR5cGVQcm9maWxlckxvZy4KICAgICBsb2FkcCBWTTo6
bV90eXBlUHJvZmlsZXJMb2dbdDFdLCB0MQogICAgICMgdDIgaXMgaG9sZGluZyB0aGUgcG9pbnRl
ciB0byB0aGUgY3VycmVudCBsb2cgZW50cnkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyMjY3ODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBlbHNlCiAgICAgY29uc3QgTG93ZXN0
VGFnID0gRGVsZXRlZFZhbHVlVGFnCiBlbmQKIAotY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KKyMgY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KIAogIyBQdXRCeUlkRmxhZ3MgZGF0YQogY29uc3Qg
UHV0QnlJZFByaW1hcnlUeXBlTWFzayA9IGNvbnN0ZXhwciBQdXRCeUlkUHJpbWFyeVR5cGVNYXNr
CkBAIC03NTQsOSArNzU0LDEwIEBAIG1hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChkZXMKICAgICBlbmQKIGVuZAogCi1tYWNybyB1bnBvaXNvbihwb2lzb24sIGZpZWxkKQorbWFj
cm8gdW5wb2lzb24ocG9pc29uLCBmaWVsZCwgc2NyYXRjaCkKICAgICBpZiBQT0lTT04KLSAgICAg
ICAgeG9ycCBwb2lzb24sIGZpZWxkCisgICAgICAgIGxvYWRwIF9Db2RlQmxvY2tQb2lzb24sIHNj
cmF0Y2gKKyAgICAgICAgeG9ycCBzY3JhdGNoLCBmaWVsZAogICAgIGVuZAogZW5kCiAKQEAgLTEw
MjQsNyArMTAyNSw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2MK
ICAgICAjIFNldCB1cCB0aGUgUEMuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgICAgICB1bnBvaXNvbihDb2RlQmxv
Y2tQb2lzb24sIFBCKQorICAgICAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCBQQykK
ICAgICAgICAgbW92ZSAwLCBQQwogICAgIGVsc2UKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1t0MV0sIFBDCkBAIC0xMDM1LDcgKzEwMzYsNyBAQCBtYWNybyBwcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgc3VicCBjZnIsIHQwLCB0MAogICAgIGJw
YSB0MCwgY2ZyLCAubmVlZFN0YWNrQ2hlY2sKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29u
ZWRWTVt0MV0sIHQyCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MikKKyAgICB1bnBv
aXNvbihDb2RlQmxvY2tQb2lzb24sIHQyLCB0MykKICAgICBpZiBDX0xPT1AKICAgICAgICAgYnBi
ZXEgVk06Om1fY2xvb3BTdGFja0xpbWl0W3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCiAgICAgZWxz
ZQpAQCAtMTYyMyw3ICsxNjI0LDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICBsb2FkYiBW
TTo6bV90cmFwcytWTVRyYXBzOjptX25lZWRUcmFwSGFuZGxpbmdbdDFdLCB0MAogICAgIGJ0cG56
IHQwLCAuaGFuZGxlVHJhcHMKIC5hZnRlckhhbmRsaW5nVHJhcHM6CkBAIC0xNjM5LDcgKzE2NDAs
NyBAQCBfbGxpbnRfb3BfY2hlY2tfdHJhcHM6CiBtYWNybyBhY3F1aXJlU2hhZG93Q2hpY2tlblBh
Y2tldChzbG93KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVC
bG9jazo6bV9wb2lzb25lZFZNW3QxXSwgdDEKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24s
IHQxKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEsIHQyKQogICAgIGxvYWRwIFZN
OjptX3NoYWRvd0NoaWNrZW5bdDFdLCB0MgogICAgIGxvYWRwIFNoYWRvd0NoaWNrZW46Om1fbG9n
Q3Vyc29yW3QyXSwgdDAKICAgICBicGFlcSB0MCwgU2hhZG93Q2hpY2tlbjo6bV9sb2dFbmRbdDJd
LCBzbG93CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKIAogcHJpdmF0
ZToKLSAgICBDb25zdEV4cHJQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKKyAgICBQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKIH07CiAKIGlubGluZSBBcnJheUJ1ZmZlciogdG9Qb3NzaWJseVNoYXJlZEFy
cmF5QnVmZmVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzMg
KzI1LDUgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gUG9pc29uIHsKLSAgICBOb3RQb2lzb25lZCA9IDAsIC8v
IFJlc2VydmVkIChhbmQgdW51c2VkKSBzbyB0aGF0IHBvaXNvbiBrZXlzIGFyZSBuZXZlciAwLgot
Ci0gICAgLy8gQWRkIG5ldyBwb2lzb24ga2V5cyBiZWxvdyBpbiBhbHBoYWJldGljYWwgb3JkZXIu
IFRoZSBvcmRlciBkb2Vzbid0IHJlYWxseQotICAgIC8vIG1hdHRlciwgYnV0IHdlIG1pZ2h0IGFz
IHdlbGwga2VlcCB0aGVtIGluIGFscGhhYmV0aWNhbGx5IG9yZGVyIGZvcgotICAgIC8vIGdyZWF0
ZXIgcmVhZGFiaWxpdHkuCi0gICAgQXJyYXlQcm90b3R5cGVQb2lzb24sCi0gICAgQ29kZUJsb2Nr
UG9pc29uLAotICAgIERhdGVJbnN0YW5jZVBvaXNvbiwKLSAgICBKU0FQSVdyYXBwZXJPYmplY3RQ
b2lzb24sCi0gICAgSlNBcnJheUJ1ZmZlclBvaXNvbiwKLSAgICBKU0NhbGxiYWNrT2JqZWN0UG9p
c29uLAotICAgIEpTR2xvYmFsT2JqZWN0UG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiwKLSAgICBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24s
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLAotICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZVBvaXNvbiwKLSAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24sCi19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIiAvLyBtbGFtCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJ
KHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjMgQEAgdWludHB0cl90
IGdfZ2xvYmFsRGF0YVBvaXNvbjsKIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiB1aW50cHRy
X3QgZ19uYXRpdmVDb2RlUG9pc29uOwogCit1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
Cit1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOwordWludHB0cl90IERhdGVJbnN0YW5jZVBvaXNv
bjsKK3VpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247Cit1aW50cHRyX3QgSlNBcnJh
eUJ1ZmZlclBvaXNvbjsKK3VpbnRwdHJfdCBKU0NhbGxiYWNrT2JqZWN0UG9pc29uOwordWludHB0
cl90IEpTR2xvYmFsT2JqZWN0UG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hlclBvaXNvbjsKK3VpbnRwdHJfdCBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOwordWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uOwordWludHB0
cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseVRh
YmxlUG9pc29uOwordWludHB0cl90IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbjsKK3Vp
bnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb247CisKIHZvaWQgaW5pdGlhbGl6ZVBvaXNv
bigpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKQEAg
LTQxLDYgKzU4LDIzIEBAIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpCiAgICAgICAgIGdfZ2xvYmFs
RGF0YVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19qaXRDb2RlUG9pc29uID0gbWFr
ZVBvaXNvbigpOwogICAgICAgICBnX25hdGl2ZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisK
KyAgICAgICAgQXJyYXlQcm90b3R5cGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIENv
ZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgRGF0ZUluc3RhbmNlUG9pc29u
ID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTQXJyYXlCdWZmZXJQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIEpTQ2FsbGJhY2tPYmplY3RQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1NjcmlwdEZldGNo
UGFyYW1ldGVyc1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaGVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9p
c29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24g
PSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24gPSBtYWtlUG9pc29u
KCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAg
ICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAg
ICAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAgfSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQ
dHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUG9pc29uZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMjMgQEAgZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2dsbwogZXh0ZXJuICJDIiBKU19FWFBPUlRE
QVRBIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiBleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAorZXh0ZXJuICJDIiBKU19FWFBPUlREQVRB
IHVpbnRwdHJfdCBBcnJheVByb3RvdHlwZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWlu
dHB0cl90IEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNBcnJheUJ1ZmZlclBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNDYWxsYmFja09iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgSlNHbG9iYWxPYmplY3RQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzUG9pc29uOworZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoZXJQb2lzb247CitleHRlcm4g
IkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJBc3NlbWJs
eU1lbW9yeVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJB
c3NlbWJseU1vZHVsZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3Qg
SlNXZWJBc3NlbWJseVRhYmxlUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IFVubGlua2VkU291cmNlQ29kZVBvaXNvbjsKKwogc3RydWN0IENsYXNz
SW5mbzsKIAogdXNpbmcgUG9pc29uZWRDbGFzc0luZm9QdHIgPSBQb2lzb25lZDxnX2dsb2JhbERh
dGFQb2lzb24sIGNvbnN0IENsYXNzSW5mbyo+OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlz
aW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsOCArMTg3LDggQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaW5nbGVTbG90VHJhbnNpdGlvbldlYWtP
d25lcjsKLSAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBDb25zdEV4cHJQb2lz
b25lZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKLSAg
ICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlUG9pc29uLCBXZWFrSW1wbCo+OworICAgIHVzaW5nIFBvaXNvbmVkVHJh
bnNpdGlvbk1hcFB0ciA9IFBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwg
VHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBQb2lzb25l
ZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFdlYWtJbXBsKj47CiAKICAgICBib29s
IGlzVXNpbmdTaW5nbGVTbG90KCkgY29uc3QKICAgICB7CkBAIC0xOTgsMTMgKzE5OCwxMyBAQCBw
cml2YXRlOgogICAgIFRyYW5zaXRpb25NYXAqIG1hcCgpIGNvbnN0CiAgICAgewogICAgICAgICBB
U1NFUlQoIWlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyKG1fZGF0YSkudW5wb2lzb25lZCgpOworICAgICAgICByZXR1cm4gUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyKFByZVBvaXNvbmVkLCBtX2RhdGEpLnVucG9pc29uZWQoKTsKICAg
ICB9CiAKICAgICBXZWFrSW1wbCogd2Vha0ltcGwoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRXZWFrSW1w
bFB0cihtX2RhdGEgJiB+VXNpbmdTaW5nbGVTbG90RmxhZykudW5wb2lzb25lZCgpOworICAgICAg
ICByZXR1cm4gUG9pc29uZWRXZWFrSW1wbFB0cihQcmVQb2lzb25lZCwgbV9kYXRhICYgflVzaW5n
U2luZ2xlU2xvdEZsYWcpLnVucG9pc29uZWQoKTsKICAgICB9CiAKICAgICB2b2lkIHNldE1hcChU
cmFuc2l0aW9uTWFwKiBtYXApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1RvV2FzbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNUb1dhc20uY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsOCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlCiAgICAgICAgIGlmICghQ29u
dGV4dDo6dXNlRmFzdFRMUygpKSB7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgd2FzbUNv
bnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Mod2FzbUNvbnRleHRJbnN0YW5jZUdQUiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSksIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwotICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobWFrZUNvbnN0RXhw
clBvaXNvbihKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24pKSwgc2NyYXRjaFJlZyk7CisvLyAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KG1ha2VDb25zdEV4
cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uKSksIHNjcmF0Y2hSZWcpOworICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJs
eUluc3RhbmNlUG9pc29uKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgICAgICBqaXQueG9yNjQoc2Ny
YXRjaFJlZywgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqc09mZnNldCAr
PSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcuaAkocmV2aXNpb24gMjI2
Nzg0KQorKysgU291cmNlL1dURi93dGYvQmFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMCAr
MTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9yYWdlVHlwZSBt
X2hlYWQgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRwdHJf
dCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRl
PHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkQmFnID0gQmFnPFQsIENv
bnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFnTm9kZTxUPj4+OwordGVt
cGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZEJhZyA9IEJh
ZzxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFByaXZhdGU6OkJhZ05vZGU8VD4+PjsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI2Nzg0KQorKysg
U291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDYg
QEAKICNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJU
UyAwCiAKLS8vIE9sZGVyIHZlcnNpb25zIG9mIGdjYyBhbmQgY2xhbmcgaGF2ZSBhIGJ1ZyB3aGlj
aCByZXN1bHRzIGluIGJ1aWxkIGZhaWx1cmVzCi0vLyB3aGVuIHVzaW5nIHRlbXBsYXRlIG1ldGhv
ZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IG9mIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPgotLy8g
d2hlbiB0aGUgS2V5VHlwZSBpcyBhIHVpbnRwdHJfdCAoaS5lLiB3aGVuIHdlJ3JlIHVzaW5nIHRo
ZSBQb2lzb25lZCB2YXJpYW50Ci0vLyBvZiBQb2lzb25lZEltcGwpLiBUaGlzIGJ1ZyBkb2VzIG5v
dCBtYW5pZmVzdCBmb3IgdGhlIENvbnN0RXhwclBvaXNvbmVkIHZhcmlhbnQuCi0vLyBJbiBwcmFj
dGljZSwgd2Ugd2lsbCBsaWtlbHkgb25seSB1c2UgdGhlc2UgbWV0aG9kcyBmb3IgaW5zdGFudGlh
dGlvbnMgb2YgdGhlCi0vLyBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LiBIZW5jZS4gdGhpcyBi
dWcgaXMgbm90IGEgc2hvdyBzdG9wcGVyLgotLy8gVGhhdCBzYWlkLCB3ZSdsbCBkZWZpbmUgRU5B
QkxFX01JWEVEX1BPSVNPTiBhY2NvcmRpbmdseSBzbyB0aGF0IHdlIGNhbiB1c2UKLS8vIGl0IHRv
IGRpc2FibGUgdGhlIGFmZmVjdGVkIHRlc3RzIHdoZW4gYnVpbGRpbmcgd2l0aCBvbGQgY29tcGls
ZXJzLgotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2Ns
YW5nX21ham9yX18gPj0gOSkKLSNlbGlmIGRlZmluZWQoX19jbGFuZ19tYWpvcl9fKQotI2RlZmlu
ZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2NsYW5nX21ham9yX18gPj0gNCkKLSNlbGlmIGRlZmlu
ZWQoX19HTlVDX18pCi0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSNkZWZpbmUgRU5BQkxFX01JWEVE
X1BPSVNPTiAoX19HTlVDX1BSRVJFUSg3LCAyKSkKLSNlbmRpZiAvLyAhZGVmaW5lZChfX0dOVUNf
XykKLQotI2lmbmRlZiBFTkFCTEVfTUlYRURfUE9JU09OCi0jZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gMCAvLyBEaXNhYmxlIGZvciBldmVyeXRoaW5nIGVsc2UuCi0jZW5kaWYKLQogLy8gTm90
IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJl
Y2F1c2Ugb2YgbWlzc2luZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2Fi
bGVkLgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCkBAIC04OCwzMCArNjYs
MzMgQEAgYXNSZWZlcmVuY2UoVCBwdHIpIHsgcmV0dXJuICpwdHI7IH0KIAogfSAvLyBuYW1lc3Bh
Y2UgUG9pc29uZWRJbXBsSGVscGVyCiAKLS8vIEZJWE1FOiBvbmNlIHdlIGhhdmUgQysrMTcsIHdl
IGNhbiBtYWtlIHRoZSBrZXkgb2YgdHlwZSBhdXRvIGFuZCByZW1vdmUgdGhlIG5lZWQgZm9yIEtl
eVR5cGUuCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgotY2xhc3MgUG9pc29uZWRJbXBsIHsKK2VudW0gUHJlUG9pc29uZWRUYWcgeyBQcmVQb2lzb25l
ZCB9OworCit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+PgorY2xhc3MgUG9pc29u
ZWQgewogcHVibGljOgotICAgIFBvaXNvbmVkSW1wbCgpIHsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1BvaXNvbmVkID0gdHJ1ZTsKIAotICAgIFBvaXNvbmVkSW1wbChzdGQ6Om51bGxw
dHJfdCkgeyB9CisgICAgUG9pc29uZWQoKSB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChUIHB0cikK
KyAgICBQb2lzb25lZChzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICBQb2lzb25lZChUIHB0cikK
ICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb24ocHRyKSkKICAgICB7IH0KIAotICAgIFBv
aXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQo
Y29uc3QgUG9pc29uZWQmKSA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwg
SzIgazIsIHR5cGVuYW1lIFQyPgotICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGw8
SzIsIGsyLCBUMj4mIG90aGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFt
ZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVkKGNv
bnN0IE90aGVyJiBvdGhlcikKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb248VD4ob3Ro
ZXIudW5wb2lzb25lZCgpKSkKICAgICB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChQb2lzb25lZElt
cGwmJiBvdGhlcikKKyAgICBQb2lzb25lZChQb2lzb25lZCYmIG90aGVyKQogICAgICAgICA6IG1f
cG9pc29uZWRCaXRzKFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQogICAgIHsgfQogCi0g
ICAgZXhwbGljaXQgUG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCisgICAg
ZXhwbGljaXQgUG9pc29uZWQoUHJlUG9pc29uZWRUYWcsIFBvaXNvbmVkQml0cyBwb2lzb25lZEJp
dHMpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQogCkBA
IC0xNDMsMTIgKzEyNCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9wb2lzb25lZEJpdHM7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX3BvaXNvbmVkQml0czsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0g
Yi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
IDw9IGIubV9wb2lzb25lZEJpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25l
ZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0
czsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
ID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29u
ZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4g
bV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IFBvaXNvbmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8PSBiLm1f
cG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9pc29uZWQmIGIpIGNv
bnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25l
ZEJpdHMgPj0gYi5tX3BvaXNvbmVkQml0czsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcj09KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgIT0gYjsgfQpAQCAtMTU3LDMzICsxMzgsNDEgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpID4gYjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+PSBi
OyB9CiAKLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICBQb2lzb25lZCYg
b3BlcmF0b3I9KFQgcHRyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24o
cHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9w
ZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQmIG9w
ZXJhdG9yPShjb25zdCBQb2lzb25lZCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0o
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICBQb2lzb25lZCYgb3Bl
cmF0b3I9KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVk
JiBvcGVyYXRvcj0oY29uc3QgT3RoZXImIG90aGVyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25l
ZEJpdHMgPSBwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAotICAgIHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCisgICAgdm9pZCBz
d2FwKFBvaXNvbmVkJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVk
Qml0cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0
cywgb3RoZXIubV9wb2lzb25lZEJpdHMpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMiwg
azIsIFQyPiYgbykKKyAgICB2b2lkIHN3YXAoc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZf
dDxPdGhlcjo6aXNQb2lzb25lZD4+CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhlcikKICAgICB7
CiAgICAgICAgIFQgdDEgPSB0aGlzLT51bnBvaXNvbmVkKCk7Ci0gICAgICAgIFQyIHQyID0gby51
bnBvaXNvbmVkKCk7CisgICAgICAgIFQgdDIgPSBvdGhlci51bnBvaXNvbmVkKCk7CiAgICAgICAg
IHN0ZDo6c3dhcCh0MSwgdDIpOwogICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7
Ci0gICAgICAgIG8gPSB0MjsKKyAgICAgICAgb3RoZXIubV9wb2lzb25lZEJpdHMgPSBPdGhlcjo6
cG9pc29uKHQyKTsKICAgICB9CiAKICAgICB2b2lkIHN3YXAoVCYgdDIpCkBAIC0yMTYsNjkgKzIw
NSwzMyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJp
dHMgeyAwIH07Ci19OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotaW5saW5lIHZvaWQgc3dhcChQb2lz
b25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikKLXsK
LSAgICBhLnN3YXAoYik7Ci19CisgICAgdGVtcGxhdGU8dWludHB0cl90JiwgdHlwZW5hbWUsIHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWQ7Cit9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
MSwgSzEgazEsIHR5cGVuYW1lIFQxPgotaW5saW5lIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEs
IGsxLCBUMT4mIGEsIFQxJiBiKQordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBzd2FwKFBvaXNvbmVkPGtleSwgVD4mIGEsIFUmIGIp
CiB7CiAgICAgYS5zd2FwKGIpOwogfQogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1h
a2VQb2lzb24oKTsKIAotI2lmIEVOQUJMRShQT0lTT04pCi0vLyBGSVhNRTogb25jZSB3ZSBoYXZl
IEMrKzE3LCB3ZSBjYW4gbWFrZSB0aGlzIGEgbGFtYmRhIGluIG1ha2VDb25zdEV4cHJQb2lzb24o
KS4KLWlubGluZSBjb25zdGV4cHIgdWludHB0cl90IGNvbnN0RXhwclBvaXNvblJhbmRvbSh1aW50
cHRyX3Qgc2VlZCkKLXsKLSAgICB1aW50cHRyX3QgcmVzdWx0MSA9IHNlZWQgKiA2OTA2OTY5MDY5
ICsgMTIzNDU2NzsKLSAgICB1aW50cHRyX3QgcmVzdWx0MiA9IHNlZWQgKiA4MjUzNzI5ICsgMjM5
NjQwMzsKLSAgICByZXR1cm4gKHJlc3VsdDEgPDwgMykgXiAocmVzdWx0MiA8PCAxNik7Ci19Ci0j
ZW5kaWYKLQotaW5saW5lIGNvbnN0ZXhwciB1aW50cHRyX3QgbWFrZUNvbnN0RXhwclBvaXNvbih1
aW50MzJfdCBrZXkpCi17Ci0jaWYgRU5BQkxFKFBPSVNPTikKLSAgICB1aW50cHRyX3QgcG9pc29u
ID0gY29uc3RFeHByUG9pc29uUmFuZG9tKGtleSk7Ci0gICAgcG9pc29uICY9IH4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigweGZmZmYpIDw8IDQ4KTsgLy8gRW5zdXJlIHRoYXQgcG9pc29uZWQgYml0
cyBsb29rIGxpa2UgYSBwb2ludGVyLgotICAgIHBvaXNvbiB8PSAoMSA8PCAyKTsgLy8gRW5zdXJl
IHRoYXQgcG9pc29uZWQgYml0cyBjYW5ub3QgYmUgMC4KLSAgICByZXR1cm4gcG9pc29uOwotI2Vs
c2UKLSAgICByZXR1cm4gKHZvaWQpa2V5LCAwOwotI2VuZGlmCi19Ci0KIHRlbXBsYXRlPHVpbnRw
dHJfdCYga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWlu
dHB0cl90Jiwga2V5LCBUPjsKLQotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgot
dXNpbmcgQ29uc3RFeHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlQ29u
c3RFeHByUG9pc29uKGtleSksIFQ+OwotCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+Ci1zdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFpdHMgewotICAgIHVzaW5nIFN0b3Jh
Z2VUeXBlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj47CitzdHJ1Y3QgUG9pc29uZWRQdHJU
cmFpdHMgeworICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gUG9pc29uZWQ8a2V5LCBUKj47CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMgQUxXQVlTX0lOTElORSBUKiBleGNoYW5nZShTdG9y
YWdlVHlwZSYgcHRyLCBVJiYgbmV3VmFsdWUpIHsgcmV0dXJuIHB0ci5leGNoYW5nZShuZXdWYWx1
ZSk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDE+Ci0g
ICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQx
PiYgYSwgVDEmIGIpIHsgYS5zd2FwKGIpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMSwg
SzEgazEsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEsIGsxLCBUMT4m
IGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikgeyBhLnN3YXAoYik7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlcj4KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAo
UG9pc29uZWQ8a2V5LCBUKj4mIGEsIE90aGVyJiBiKSB7IGEuc3dhcChiKTsgfQogCiAgICAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgVCogdW53cmFwKGNvbnN0IFN0b3JhZ2VUeXBlJiBwdHIpIHsgcmV0
dXJuIHB0ci51bnBvaXNvbmVkKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2lu
ZyBXVEY6OkNvbnN0RXhwclBvaXNvbmVkOwordXNpbmcgV1RGOjpQcmVQb2lzb25lZDsKIHVzaW5n
IFdURjo6UG9pc29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkQml0czsKLXVzaW5nIFdURjo6bWFr
ZUNvbnN0RXhwclBvaXNvbjsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UG9pc29uZWRVbmlxdWVQdHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYv
UG9pc29uZWRVbmlxdWVQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDE0IEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Ci1jbGFzcyBQb2lzb25lZFVuaXF1ZVB0ciA6IHB1YmxpYyBD
b25zdEV4cHJQb2lzb25lZDxrZXksIFQqPiB7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KK2NsYXNzIFBvaXNvbmVkVW5pcXVlUHRy
IDogcHVibGljIFBvaXNvbmVkPGtleSwgVCo+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLSAgICB1c2luZyBCYXNlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj47CisgICAgdXNp
bmcgQmFzZSA9IFBvaXNvbmVkPGtleSwgVCo+OwogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1BvaXNvbmVkVW5pcXVlUHRyID0gdHJ1ZTsKKyAgICB1c2luZyBWYWx1ZVR5cGUg
PSBUOworCiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRV
bmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgpIHsgfQogICAgIFBvaXNvbmVkVW5pcXVl
UHRyKFQqIHB0cikgOiBCYXNlKHB0cikgeyB9CkBAIC00OCw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBCYXNlKHVuaXF1ZS5yZWxlYXNlKCkpCiAgICAgeyB9CiAKLSAgICB0ZW1wbGF0ZTx1
aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+Ci0gICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29u
ZWRVbmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIs
IHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZFVuaXF1ZVB0ciAm
JiBzdGQ6OmlzX2Jhc2Vfb2Y8VCwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4K
KyAgICBQb2lzb25lZFVuaXF1ZVB0cihPdGhlciYmIHB0cikKICAgICAgICAgOiBCYXNlKHB0ci51
bnBvaXNvbmVkKCkpCiAgICAgewogICAgICAgICBwdHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOwpA
QCAtODksOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+Ci0gICAgUG9pc29uZWRV
bmlxdWVQdHImIG9wZXJhdG9yPShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBVPiYmIHB0cikKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90
aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0ZDo6aXNfYmFzZV9vZjxULCB0eXBlbmFtZSBP
dGhlcjo6VmFsdWVUeXBlPjo6dmFsdWU+PgorICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRv
cj0oT3RoZXImJiBwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQodGhpcyA9PSBzdGF0aWNfY2Fz
dDx2b2lkKj4oJnB0cikgfHwgdGhpcy0+dW5wb2lzb25lZCgpICE9IHB0ci51bnBvaXNvbmVkKCkp
OwogICAgICAgICBpZiAoTElLRUxZKHRoaXMgIT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpKSkg
ewpAQCAtMTIyLDI4ICsxMjUsMzEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJXaXRob3V0
RGVzdHJveSgpIHsgQmFzZTo6Y2xlYXIoKTsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3QsIHR5
cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOworICAgIHRl
bXBsYXRlPHVpbnRwdHJfdCYsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNv
bmVkVW5pcXVlUHRyOwogfTsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmd1bWVudHMsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Cit0ZW1wbGF0ZTx1
aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFt
ZSBFbmFibGUgPSB2b2lkPgogUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUPiBtYWtlUG9pc29uZWRV
bmlxdWUoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVybiBQb2lzb25lZFVu
aXF1ZVB0cjxrZXksIFQ+OjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLik7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLWNsYXNzIFBv
aXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1YmxpYyBDb25zdEV4cHJQb2lzb25lZDxrZXks
IFQqPiB7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK2NsYXNzIFBvaXNv
bmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1YmxpYyBQb2lzb25lZDxrZXksIFQqPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBvaXNv
bmVkPGtleSwgVCo+OworICAgIHVzaW5nIEJhc2UgPSBQb2lzb25lZDxrZXksIFQqPjsKIHB1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQb2lzb25lZFVuaXF1ZVB0ciA9IHRydWU7
CisgICAgdXNpbmcgVmFsdWVUeXBlID0gVFtdOworCiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9
IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgp
IHsgfQogICAgIFBvaXNvbmVkVW5pcXVlUHRyKFQqIHB0cikgOiBCYXNlKHB0cikgeyB9CiAgICAg
UG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQdHImJiBwdHIpIDogQmFzZShXVEZNb3Zl
KHB0cikpIHsgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3koKTsgfQogICAgIFBvaXNvbmVkVW5pcXVl
UHRyKHN0ZDo6dW5pcXVlX3B0cjxUW10+JiYgdW5pcXVlKSA6IFBvaXNvbmVkVW5pcXVlUHRyKHVu
aXF1ZS5yZWxlYXNlKCkpIHsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KLSAgICBQ
b2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3Ro
ZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3RkOjppc19zYW1lPFRbXSwgdHlwZW5hbWUgT3Ro
ZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1ZVB0cihPdGhlciYmIHB0
cikKICAgICAgICAgOiBCYXNlKHB0ci51bnBvaXNvbmVkKCkpCiAgICAgewogICAgICAgICBwdHIu
Y2xlYXJXaXRob3V0RGVzdHJveSgpOwpAQCAtMTc4LDggKzE4NCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtleTI+Ci0g
ICAgUG9pc29uZWRVbmlxdWVQdHImIG9wZXJhdG9yPShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBU
W10+JiYgcHRyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3RkOjppc19zYW1lPFRb
XSwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1
ZVB0ciYgb3BlcmF0b3I9KE90aGVyJiYgcHRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRoaXMg
PT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgaWYgKExJS0VMWSh0aGlzICE9IHN0YXRpY19jYXN0PHZv
aWQqPigmcHRyKSkpIHsKQEAgLTIxMSwxMCArMjE3LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAotICAgIHRlbXBsYXRl
PHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1
ZVB0cjsKKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVu
ZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwg
dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgordGVtcGxhdGU8dWludHB0cl90JiBr
ZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIFBvaXNvbmVkVW5pcXVlUHRy
PGtleSwgVFtdPiBtYWtlUG9pc29uZWRVbmlxdWUoc2l6ZV90IGNvdW50LCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiB7CiAgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPjo6
Y3JlYXRlKGNvdW50LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1JlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Jl
Zi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWYuaAkod29ya2luZyBj
b3B5KQpAQCAtMjU2LDEwICsyNTYsMTAgQEAgaW5saW5lIGJvb2wgaXMoY29uc3QgUmVmPEFyZ1R5
cGUsIFB0clRyYQogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJjZS5nZXQoKSk7CiB9
CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IENvbnN0RXhwclBv
aXNvbmVkUHRyVHJhaXRzOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+IHN0
cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFt
ZSBUPgotdXNpbmcgUG9pc29uZWRSZWYgPSBSZWY8VCwgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFp
dHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5n
IFBvaXNvbmVkUmVmID0gUmVmPFQsIFBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgJKHJldmlzaW9u
IDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJy
YXkoc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBpZiAoIXNpemUpIHsKLSAgICAgICAgICAg
IG1fZGF0YSA9IDA7CisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFJlZkNvdW50ZWRBcnJheShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlcj4mIG90aGVyKQogICAgIHsKICAgICAgICAgaWYgKG90aGVyLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgbV9kYXRhID0gMDsKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yMzgsMTAgKzIz
OCwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9k
YXRhIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3Qm
IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25lZFJlZkNvdW50ZWRBcnJheSA9
IFJlZkNvdW50ZWRBcnJheTxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsK
K3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRSZWZD
b3VudGVkQXJyYXkgPSBSZWZDb3VudGVkQXJyYXk8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBU
Pj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gMjI2Nzg0
KQorKysgU291cmNlL1dURi93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NiwxMCAr
Mjc2LDEwIEBAIGlubGluZSBib29sIGlzKGNvbnN0IFJlZlB0cjxBcmdUeXBlLCBQdHIKICAgICBy
ZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx1aW50
MzJfdCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsK
K3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJU
cmFpdHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNv
bmVkUmVmUHRyID0gUmVmUHRyPFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+
OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJl
ZlB0ciA9IFJlZlB0cjxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCShyZXZpc2lvbiAyMjY3
ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMzkgKzM1LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAKIG5hbWVzcGFjZSB7CiBzdHJ1Y3Qg
RHVtbXlTdHJ1Y3QgeyB9OwotY29uc3QgdWludDMyX3QgZHVtbXlQb2lzb24gPSAweGZmZmY7Cit1
aW50cHRyX3QgZHVtbXlQb2lzb24gPSAwOwogfQogCi0jaWYgRU5BQkxFKFBPSVNPTikKLXN0YXRp
Y19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEpID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMg
c2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0
RXhwclBvaXNvbigxMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBh
IHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSA+
PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3Rh
dGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApID4+IDQ4KSwgInBvaXNvbmVk
IGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFr
ZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBs
b29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lz
b24oMHhmZmZmZmZmZikgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEg
cG9pbnRlci4iKTsKLQotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxKSA+PiAz
MiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxl
dGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDApID4+IDMy
KSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0
ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDMy
KSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0
ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSA+PiAz
MiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxl
dGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+
PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29t
cGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZm
ZmZmKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBu
b3QgY29tcGxldGVseSAwLiIpOwotCi1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29u
KDEpICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2Vy
dCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMg
YmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSAmIDB4
NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0
LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSAmIDB4NCks
ICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25z
dEV4cHJQb2lzb24oMHhmZmZmZmZmZikgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBz
ZXQuIik7Ci0KLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHgzKSwg
ImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMg
ZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAm
IDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3Ig
dXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29u
KDEwMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxh
YmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4
cHJQb2lzb24oMTAwMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBh
cmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1h
a2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdu
bWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNf
YXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSAmIDB4MyksICJlbnN1cmUg
Ym90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0
cy4iKTsKLSNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQotCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihC
YWc8RHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9pZCopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNp
emVvZihQb2lzb25lZEJhZzxkdW1teVBvaXNvbiwgRHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9p
ZCopLCAiIik7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtOTUsNyArOTUsNiBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKLSAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RlcXVlLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NjUsNyArNzY1
LDYgQEAKIAkJRkUwNUZBRUMxRkRCNTEwQTAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVCMUZEQjUx
MDIwMDA5MzIzMCAvKiBQb2lzb25lZFJlZi5jcHAgKi87IH07CiAJCUZFMDVGQUVEMUZEQjUxMEUw
MDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29uZWRS
ZWZQdHIuY3BwICovOyB9OwogCQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZB
RUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLzsgfTsKLQkJRkUwNUZBRjExRkUw
OENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBD
b25zdEV4cHJQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFMDVGQjA2MUZFODRGQjcwMDA5MzIzMCAv
KiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTA1RkIwNTFGRTg0RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQ
dHIuY3BwICovOyB9OwogCQlGRUM4RjRFNzFGRTlDOTA1MDA1NkZEOEEgLyogUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8q
IFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLzsg
fTsKIAkJRkVDOEY0RUIxRkU5RjVBRjAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9u
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzhGNEVBMUZFOUY1QTcwMDU2RkQ4QSAvKiBQb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgKi87IH07CkBA
IC0xODgxLDcgKzE4ODAsNiBAQAogCQlGRTA1RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29u
ZWRSZWZQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29u
ZWRSZWZQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFFQjFGREI1
MTAyMDAwOTMyMzAgLyogUG9pc29uZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pc29uZWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29u
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkIwNTFGRTg0RkFFMDAw
OTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUM4RjRFNjFGRTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY1NCw3ICsy
NjUyLDYgQEAKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkwRjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29u
Y3VycmVudFB0ckhhc2hTZXQuY3BwICovLAogCQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAv
KiBDb25kaXRpb24uY3BwICovLAotCQkJCUZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25z
dEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENy
b3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENT
dHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5j
cHAgKi8sCkBAIC0zMjIxLDcgKzMyMTgsNiBAQAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNG
MyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzMENCNUMxRkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUMzMUQwQTU5MEMwMEZFQkNGMyAvKiBDb25kaXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhw
clBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUE2MUQwQTU5MEMwMEZFQkNG
MyAvKiBDb3VudGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBDMDBG
RUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBRDFEMEE1OTBD
MDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCShyZXZpc2lv
biAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lz
b25lZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwzODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+Ci0KLW5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEg
PSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLQotLy8g
Rm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNz
LiBGb3IgdGhpcyBwdXJwb3NlLAotLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZl
ZFJlZkxvZ2dlciBjbGFzc2VzLgotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMp
Ci17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7Ci0KLSAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKLSAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1w
dHkudW5wb2lzb25lZCgpKTsKLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKLQotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgICAg
IHVpbnRwdHJfdCBwdHJCaXRzOwotICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwg
c2l6ZW9mKHB0ckJpdHMpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PigmYSkpOwotI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAg
ICAgQVNTRVJUX1RSVUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojpp
c1BvaXNvbmVkKHB0ckJpdHMpKSk7Ci0jZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcHRyID0gJmE7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMihwMSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHAzKHAxKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMo
KSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMiA9IHAxOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwMyA9IHAxOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMu
Yml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0g
JmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0g
V1RGTW92ZShwMyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1vdmUocDEpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDQoV1RGTW92ZShwMykpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
LQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAm
YTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBX
VEZNb3ZlKHAxKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIHB0ci5jbGVhcigpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRy
LnVucG9pc29uZWQoKSk7Ci0gICAgfQotfQotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwg
QXNzaWdubWVudCkKLXsKLSAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKLSAgICBSZWZMb2dn
ZXIgYigiYiIpOwotICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwotCi0gICAgewotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAxID0gcDI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwg
cDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZh
KTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgcHRyID0gJmI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLnVucG9pc29uZWQoKSk7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBwdHIgPSBudWxscHRyOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVu
cG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIHAxID0gV1RGTW92ZShwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2Vy
Kj4gcDIoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBwMjsKLSAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmMsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25C
LCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gJmM7Ci0gICAgICAgIEFTU0VSVF9F
USgmYywgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51
bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9IFdURk1vdmUocDIpOwotICAgICAgICBBU1NFUlRf
RVEoJmMsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lz
b25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZM
b2dnZXIqPiBwNCgmYyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IFdU
Rk1vdmUocDQpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIgPSBwdHI7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOwotI2lmIENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vu
a25vd24tcHJhZ21hcyIKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYt
bW92ZSIKLSNlbmRpZgotICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7Ci0jaWYgQ09NUElMRVIo
Q0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci19Ci0KLVRFU1QoV1RGX0NvbnN0
RXhwclBvaXNvbmVkLCBTd2FwKQotewotICAgIFJlZkxvZ2dlciBhKCJhIik7Ci0gICAgUmVmTG9n
Z2VyIGIoImIiKTsKLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMS5z
d2FwKHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkp
OwotICAgICAgICBwMy5zd2FwKHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDMuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJp
dHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHN3
YXAocDEsIHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVk
KCkpOwotICAgICAgICBzd2FwKHAzLCBwNCk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpID09IHAzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBw
NC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmIsIHAyKTsKLSAgICAgICAgc3dhcChwMSwgcDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAx
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIpOwotCi0gICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwMikpOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEoJmEpOwotICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyKTsKLSAgICAg
ICAgcDEuc3dhcChwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMik7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7Ci0gICAgfQotfQotCi1zdGF0aWMg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVm
TG9nZ2VyJiBsb2dnZXIpCi17Ci0gICAgcmV0dXJuIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+KCZsb2dnZXIpOwotfQotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwg
UmV0dXJuVmFsdWUpCi17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7Ci0KLSAgICB7Ci0g
ICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7Ci0gICAgfQotfQotCi19IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsMTEgKzkyLDkg
QEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwot
I2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMTA2LDExICsxMDQsOSBAQCBURVNUKFdURl9Qb2lz
b25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUo
TUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIq
PiBwMyA9IHAxOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQog
CiAgICAgewpAQCAtMTIwLDEzICsxMTYsMTEgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQog
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikK
ICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKICAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAz
KTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMTM2LDE2ICsxMzAs
MTMgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRz
KCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYK
ICAgICB9CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CiAgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CkBAIC0xNTcsOSArMTQ4
LDcgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAz
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRz
KCkpOwogICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7CiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZh
OwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1v
dmUocDEpOwpAQCAtMTczLDcgKzE2Miw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHsKICAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKQEAgLTIwMCw3
ICsxODgsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7CkBAIC0yMDksNyArMTk2LDYgQEAgVEVTVChXVEZfUG9pc29uZWQs
IEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIHsKQEAgLTIz
Niw3ICsyMjIsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEo
JmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0yNDUsMTAgKzIzMCw4IEBAIFRFU1QoV1RGX1BvaXNv
bmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7
CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKLSNpZiBFTkFC
TEUoTUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJp
dmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwpAQCAtMjY4LDcgKzI1MSw2IEBAIFRFU1QoV1RGX1BvaXNv
bmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7
CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAgIH0KLSNl
bmRpZgogCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOwpAQCAtMjc3LDcgKzI1OSw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25t
ZW50KQogICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgIH0KIAot
I2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CkBAIC0yOTcsNyArMjc4LDYgQEAgVEVTVChX
VEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CiAg
ICAgfQotI2VuZGlmCiAKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7CkBAIC0zMzksNyArMzE5LDYgQEAgVEVTVChXVEZfUG9pc29uZWQs
IFN3YXApCiAKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CiAK
LSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMygmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OwpAQCAtMzUxLDcgKzMzMCw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogICAgICAgICBB
U1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAzLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMzU5LDE3ICszMzcsMTIg
QEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNv
bmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0jaWYgRU5B
QkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgc3dhcChwMSwgcDIpOwotI2Vsc2UKLSAgICAgICAg
c3RkOjpzd2FwKHAxLCBwMik7Ci0jZW5kaWYKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBv
aXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CiAKICAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUo
TUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0
KCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMzgxLDEw
ICszNTQsOCBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKICAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMy5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygp
KTsKLSNlbmRpZgogICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CiAgICAgICAg
IFJlZkxvZ2dlciogcDIoJmIpOwpAQCAtNDA4LDcgKzM3OSw2IEBAIFRFU1QoV1RGX1BvaXNvbmVk
LCBTd2FwKQogCiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihwMikpOwogICAgIH0KLSNlbmRpZgogfQogCiBzdGF0aWMgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIp
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWYuY3Bw
CShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE5ICszMSwzNSBAQAogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhh
YWFhOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7Ci1zdGF0aWMgY29u
c3QgdWludDMyX3QgUG9pc29uQyA9IDB4Y2NjYzsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lz
b25EID0gMHhkZGRkOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkUgPSAweGVlZWU7Ci1z
dGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRiA9IDB4ZmZmZjsKK3VpbnRwdHJfdCBnX3BvaXNv
bkE7Cit1aW50cHRyX3QgZ19wb2lzb25COwordWludHB0cl90IGdfcG9pc29uQzsKK3VpbnRwdHJf
dCBnX3BvaXNvbkQ7Cit1aW50cHRyX3QgZ19wb2lzb25FOwordWludHB0cl90IGdfcG9pc29uRjsK
Kworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbnMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6
ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgMiBkaWZmZXJlbnQg
cG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ19wb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgICAg
ICBnX3BvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9pc29uQyA9IG1ha2VQb2lz
b24oKTsKKyAgICAgICAgZ19wb2lzb25EID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNv
bkYgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKKyAg
ICB9KTsKK30KIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIEJhc2ljKQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWY8UG9pc29uQSwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBv
aXNvbmVkUmVmPGdfcG9pc29uQSwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUp
OwogCkBAIC01MSwxNiArNjcsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEJhc2ljKQogICAg
ICAgICB1aW50cHRyX3QgcHRyQml0czsKICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZy
ZWYsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsKLSAgICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CisgICAg
ICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoUG9pc29uZWQ8cG9pc29uQSwgUmVmTG9nZ2VyKj4oJmEp
LmJpdHMoKSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJUX1RS
VUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0
ckJpdHMpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZDxwb2lzb25BLCBSZWZMb2dn
ZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBP
SVNPTikKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25CLCBS
ZWZMb2dnZXI+IHJlZihhZG9wdFJlZihhKSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29u
QiwgUmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJl
Zi5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVmLT5uYW1lKTsKICAgICB9
CkBAIC02OSwxMiArODUsMTQgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEJhc2ljKQogCiBURVNU
KFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygp
OworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsK
ICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWY8UG9pc29uQywgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9p
c29uQywgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gYjsKQEAgLTg0LDcgKzEw
Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+
IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHJlZihh
KTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwogICAgICAgICByZWYgPSBjOwpAQCAtOTQsNyArMTEyLDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYykgZGVy
ZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lz
b25lZFJlZjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEo
JmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGFk
b3B0UmVmKGIpOwpAQCAtMTA0LDcgKzEyMiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3Np
Z25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBv
aXNvbkYsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkYs
IFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGFkb3B0UmVmKGMpOwpAQCAtMTE0
LDI1ICsxMzIsMjcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAgRVhQ
RUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKIH0KIAotc3RhdGljIFBvaXNvbmVkUmVmPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcGFz
c1dpdGhSZWYoUG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPiYmIHJlZmVyZW5jZSkKK3N0
YXRpYyBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcGFzc1dpdGhSZWYoUG9pc29u
ZWRSZWY8Z19wb2lzb25DLCBSZWZMb2dnZXI+JiYgcmVmZXJlbmNlKQogewogICAgIHJldHVybiBX
VEZNb3ZlKHJlZmVyZW5jZSk7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5WYWx1
ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMi
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQiwgUmVmTG9nZ2VyPiByZWYo
cGFzc1dpdGhSZWYoUG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPihhKSkpOworICAgICAg
ICBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKHBhc3NXaXRoUmVmKFBvaXNv
bmVkUmVmPGdfcG9pc29uQywgUmVmTG9nZ2VyPihhKSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHJlZi5wdHIoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9p
c29uRCwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRCwg
UmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gcGFzc1dpdGhSZWYoYik7CkBAIC0x
NDIsMjIgKzE2MiwyMiBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgUmV0dXJuVmFsdWUpCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkUsIFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVmKGEpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8cG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uRiwgRGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uQSwgUmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CisgICAg
ICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkYsIERlcml2ZWRSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPHBvaXNvbkEsIFJlZkxvZ2dlcj4gcHRyMihXVEZNb3ZlKHB0
cikpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwdHIyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZjxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOwot
ICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+IGJhc2VSZWZlcmVuY2UocGFz
c1dpdGhSZWYoZGVyaXZlZFJlZmVyZW5jZS5jb3B5UmVmKCkpKTsKKyAgICAgICAgUG9pc29uZWRS
ZWY8Z19wb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBkZXJpdmVkUmVmZXJlbmNlKGEpOworICAg
ICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gYmFzZVJlZmVyZW5jZShwYXNz
V2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYoKSkpOwogICAgICAgICBFWFBFQ1RfRVEo
JmEsIGRlcml2ZWRSZWZlcmVuY2UucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIGJhc2VS
ZWZlcmVuY2UucHRyKCkpOwogICAgIH0KQEAgLTE2NiwxMiArMTg2LDE0IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmLCBSZXR1cm5WYWx1ZSkKIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiB7
CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7CiAgICAg
UmVmTG9nZ2VyIGIoImIiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRCwg
UmVmTG9nZ2VyPiBwMShhKTsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRSwgUmVmTG9nZ2Vy
PiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAxKGEp
OworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoYik7CiAgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEucHRyKCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLnB0cigpKTsKQEAgLTE4Myw4ICsyMDUsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8
IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKLSAgICAgICAgUG9p
c29uZWRSZWY8UG9pc29uQSwgUmVmTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgUG9pc29uZWRSZWY8
Z19wb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNv
bkEsIFJlZkxvZ2dlcj4gcDIoYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLnB0cigpKTsK
QEAgLTE5Niw3ICsyMTgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVm
TG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25GLCBSZWZMb2dnZXI+
IHAxKGEpOwogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CkBAIC0yMDksNyArMjMxLDcg
QEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
cmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKICAgICAgICAg
UmVmPFJlZkxvZ2dlcj4gcDIoYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEucHRyKCkpOwpAQCAtMjIzLDcgKzI0NSw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkUmVmLCBTd2FwKQogfQogCiBzdHJ1Y3QgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlciA6
IFJlZkxvZ2dlciB7Ci0gICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWY8UG9pc29uQiwgUG9pc29u
ZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj47CisgICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWY8Z19w
b2lzb25SZWY8Z19wb2lzb25CLCBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyPjsKIAogICAg
IFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CiAgICAgdm9p
ZCByZWYoKTsKQEAgLTI2MSw2ICsyODMsOCBAQCBEZXJpdmVkUG9pc29uZWRSZWZDaGVja2luZ1Jl
ZkxvZ2dlcjo6RGVyCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25CZWZvcmVEZXJlZikK
IHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hl
Y2tpbmdSZWZMb2dnZXIgYSgiYSIpOwogICAgIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIg
YigiYiIpOwogICAgIERlcml2ZWRQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGMoImMiKTsK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmUHRyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZlB0
ci5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BvaXNvbmVkUmVmUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMjIgKzMzLDM4IEBACiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNv
bkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLXN0
YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGljIGNvbnN0IHVpbnQz
Ml90IFBvaXNvbkQgPSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRSA9IDB4
ZWVlZTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZmOwordWludHB0cl90
IGdfcG9pc29uQTsKK3VpbnRwdHJfdCBnX3BvaXNvbkI7Cit1aW50cHRyX3QgZ19wb2lzb25DOwor
dWludHB0cl90IGdfcG9pc29uRDsKK3VpbnRwdHJfdCBnX3BvaXNvbkU7Cit1aW50cHRyX3QgZ19w
b2lzb25GOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRp
ZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7
CisgICAgICAgIGdfcG9pc29uQiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19wb2lzb25DID0g
bWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkQgPSBtYWtlUG9pc29uKCk7CisgICAgICAg
IGdfcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19wb2lzb25GID0gbWFrZVBvaXNv
bigpOworICAgIH0pOworfQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiB7Cisg
ICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwog
Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQSwgUmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkEsIFJlZkxvZ2dlcj4gZW1wdHk7CiAgICAgRVhQRUNUX0VRKG51
bGxwdHIsIGVtcHR5LmdldCgpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNv
bkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkp
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5h
bWUsICZwdHItPm5hbWUpOwpAQCAtNTcsNzAgKzczLDcwIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
UHRyLCBCYXNpYykKICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAgICAgICAgIHN0ZDo6bWVt
Y3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICBBU1NFUlRfVFJV
RShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0gICAgICAgIEFTU0VS
VF9FUShwdHJCaXRzLCAoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4oJmEp
LmJpdHMoKSkpOworICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNvbmVkPHBvaXNvbkIs
IFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0g
ICAgICAgIEFTU0VSVF9UUlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIq
Pjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWQ8
cG9pc29uQiwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2Vu
ZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHB0ciA9ICZhOwogICAgICAgICBFWFBFQ1RfRVEo
JmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25FLCBSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lz
b25ELCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29u
RSwgUmVmTG9nZ2VyPiBwMihwMSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBw
MSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAyID0g
cDE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMSA9ICZh
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcDIgPSBwMTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwg
cDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYo
YSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAg
ICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxn
X3BvaXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19w
b2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgRVhQRUNUX0VRKG51
bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAg
fQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgRGVyaXZlZFJl
ZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9n
Z2VyPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIERlcml2ZWRS
ZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVm
TG9nZ2VyPiBwMiA9IHAxOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+
IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIg
PSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBEZXJpdmVk
UmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJl
ZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAx
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBwdHIgPSBudWxscHRy
OwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKQEAgLTEzMCwxMCArMTQ2
LDEyIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBCYXNpYykKIAogVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIEFzc2lnblBhc3NSZWZUb1BvaXNvbmVkUmVmUHRyKQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICB7CiAgICAg
ICAgIFJlZjxSZWZMb2dnZXI+IHBhc3NSZWYoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkIsIFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKKyAgICAgICAgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTQxLDEzICsx
NTksMTUgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnblBhc3NSZWZUbwogCiBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsK
KwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCi0gICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uQywgUmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJl
ZkxvZ2dlcj4gZW1wdHk7CiAgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwdHIoYWRv
cHRSZWYoJmEpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+
IHB0cihhZG9wdFJlZigmYSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwg
JnB0ci0+bmFtZSk7CkBAIC0xNTUsNyArMTc1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIs
IEFkb3B0KQogICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+
IHB0ciA9IGFkb3B0UmVmKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBS
ZWZMb2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIu
Z2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKQEAgLTE2MywxMyArMTgzLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRy
LCBBZG9wdCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiB7CisgICAg
aW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAg
IFJlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAg
ICAgICBsb2coKSA8PCAifCAiOwpAQCAtMTgxLDcgKzIwMyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
UmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHJl
ZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBw
dHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcHRy
KCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8
PCAifCAiOwogICAgICAgICBwdHIgPSAmYjsKQEAgLTE5MSw3ICsyMTMsNyBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJl
ZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwog
ICAgICAgICBwdHIgPSBhZG9wdFJlZigmYik7CkBAIC0yMDEsNyArMjIzLDcgQEAgVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBk
ZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBwdHIgPSBudWxscHRyOwogICAgICAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKQEAgLTIwOSw4ICsyMzEsOCBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
Z19wb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5n
ZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8
PCAifCAiOwpAQCAtMjIyLDggKzI0NCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3Np
Z25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVy
ZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uRSwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxnX3BvaXNvbkUsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAg
ICBsb2coKSA8PCAifCAiOwpAQCAtMjM1LDcgKzI1Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
UHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8IHJlZihj
KSBkZXJlZihhKSB8IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIo
JmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZh
KTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwogICAgICAgICBwdHIgPSAmYzsKQEAgLTI0NSw3ICsyNjcsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihj
KSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAg
ICAgICBwdHIgPSBhZG9wdFJlZigmYyk7CkBAIC0yNTUsOCArMjc3LDggQEAgVEVTVChXVEZfUG9p
c29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJl
ZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTI2OCw3ICsyOTAsNyBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYo
YykgfCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwog
ICAgICAgICBwdHIgPSBwdHI7CkBAIC0yNzgsNyArMzAwLDcgQEAgVEVTVChXVEZfUG9pc29uZWRS
ZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYSkgZGVy
ZWYoYSkgfCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCkBAIC0yOTYsMTIgKzMxOCwxNCBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgQXNzaWdubWVudCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiB7
CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7CiAgICAg
UmVmTG9nZ2VyIGIoImIiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29u
QiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJl
ZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxv
Z2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dl
cj4gcDIoJmIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CkBAIC0zMTMsOCAr
MzM3LDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dl
cj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAy
KCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZh
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAyKCZiKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwpAQCAtMzI4LDExICszNTIsMTMgQEAg
VEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRy
LCBSZWxlYXNlTm9uTnVsbCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUmVm
TG9nZ2VyIGEoImEiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwg
UmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwg
UmVmTG9nZ2VyPiByZWYgPSByZWZQdHIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHJlZlB0ciA9ICZhOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25O
dWxsKCk7CiAgICAgfQogCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMzQwLDM3ICszNjYsMzkgQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIFJlbGVhc2VOb25OdWxsKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVs
ZWFzZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dl
ciBhKCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMo
ImMiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2Vy
PiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAy
ID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9n
Z2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dl
cj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgp
KTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAx
KSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVk
UmVmUHRyPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAx
KTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVm
KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3Bv
aXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNv
bkUsIFJlZkxvZ2dlcj4gcDIoJmIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7
CkBAIC0zODIsOCArNDEwLDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiAg
ICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25C
LCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9p
c29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29u
QiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CkBAIC0zOTUsMTMgKzQyMywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVs
ZWFzZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVm
KGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAotc3RhdGljIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkMsIFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCitzdGF0aWMgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQogewot
ICAgIHJldHVybiBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+KCZsb2dnZXIpOwor
ICAgIHJldHVybiBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4oJmxvZ2dlcik7
CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0
aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7
CkBAIC00MzIsMjAgKzQ2MiwyMiBAQCBzdGF0aWMgQ29uc3RSZWZDb3VudGVkJiByZXR1cm5SZWZD
b3VudGVkCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBDb25zdCkKIHsKKyAgICBpbml0aWFs
aXplUG9pc29ucygpOworCiAgICAgLy8gVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBjb21waWxlcyB3
aXRob3V0IGFuIGVycm9yLgogICAgIGF1dG8gYSA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7
CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYiA9IFdURk1vdmUoYSk7Ci0gICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uRCwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBjID0gYi5wdHIoKTsK
KyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYyA9
IGIucHRyKCk7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZCA9IHJldHVybkNvbnN0
UmVmQ291bnRlZFJlZigpOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIGNvbnN0IENvbnN0
UmVmQ291bnRlZD4gZSA9ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKLSAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25GLCBDb25zdFJlZkNvdW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNy
ZWF0ZSgpOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIGNvbnN0IENvbnN0UmVmQ291bnRl
ZD4gZyA9IGY7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgY29uc3QgQ29uc3RSZWZDb3Vu
dGVkPiBoKGYpOworICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgY29uc3QgQ29uc3RSZWZD
b3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpjcmVh
dGUoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIGNvbnN0IENvbnN0UmVmQ291bnRl
ZD4gZyA9IGY7CisgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBjb25zdCBDb25zdFJlZkNv
dW50ZWQ+IGgoZik7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaShyZXR1cm5SZWZD
b3VudGVkUmVmKCkpOwogfQogCiBzdHJ1Y3QgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dl
ciA6IFJlZkxvZ2dlciB7Ci0gICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWZQdHI8UG9pc29uRCwg
UG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj47CisgICAgdXNpbmcgUmVmID0gUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25ELCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPjsKIAog
ICAgIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CiAg
ICAgdm9pZCByZWYoKTsKQEAgLTQ3OSw2ICs1MTEsOCBAQCB2b2lkIFBvaXNvbmVkUmVmUHRyQ2hl
Y2tpbmdSZWZMb2dnZXI6OmRlCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25CZWZv
cmVEZXJlZikKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUG9pc29uZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZQdHJDaGVja2luZ1Jl
ZkxvZ2dlciBiKCJiIik7CiAKQEAgLTU0Myw2ICs1NzcsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJl
ZlB0ciwgQXNzaWduQmVmb3JlRGVyCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNl
Tm9uTnVsbEJlZm9yZURlcmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBQ
b2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5j
cHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bv
aXNvbmVkVW5pcXVlUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsMTkgQEAgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCB1aW50MzJfdCBQ
b2lzb25BID0gMHhhYWFhOwotY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKK3VpbnRw
dHJfdCBnX3BvaXNvbkE7Cit1aW50cHRyX3QgZ19wb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0
aWFsaXplUG9pc29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVP
bmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAg
ICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAg
ICAgICBnX3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIHdoaWxlICghZ19wb2lzb25C
IHx8IGdfcG9pc29uQiA9PSBnX3BvaXNvbkEpCisgICAgICAgICAgICBnX3BvaXNvbkIgPSBtYWtl
UG9pc29uKCk7CisgICAgfSk7Cit9CiAKIHN0cnVjdCBMb2dnZXIgewogICAgIExvZ2dlcihjb25z
dCBjaGFyKiBuYW1lLCBpbnQmIGRlc3RydWN0Q291bnQpCkBAIC02MSwxMyArNzIsMTUgQEAgc3Ry
dWN0IE90aGVyIHsKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogeworICAg
IGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9
CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IGVtcHR5
KG51bGxwdHIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4g
ZW1wdHkobnVsbHB0cik7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNv
bmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQpAQCAt
NzYsNyArODksNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAg
IGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIo
ImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOwpAQCAtODcsNyArMTAwLDcg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICAgICAgc3RkOjpt
ZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGEpKTsKICNpZiBFTkFC
TEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPjo6aXNQ
b2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAg
ICAgICAgfQpAQCAtOTYsNyArMTA5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJh
c2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBEZXJpdmVkTG9n
Z2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGIp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihi
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YiwgJipwdHIpOwpAQCAtMTA5LDcgKzEyMiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
LCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2Vy
KiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBhOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IGE7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICB9CkBAIC0xMTgsNyArMTMxLDcgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0
Q291bnQgPSAwOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIo
ImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBiOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5wb2lz
b25lZCgpKTsKICAgICAgICAgfQpAQCAtMTI5LDcgKzE0Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPjo6Y3JlYXRlKGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+OjpjcmVhdGUoYU5hbWUsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKGFOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTEzOSw3ICsxNTIsNyBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7
CiAgICAgICAgIGNvbnN0IGNoYXIqIGJOYW1lID0gImIiOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5hbWUsIGJEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIg
PSBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5h
bWUsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1MSw3
ICsxNjQsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwog
ICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cj4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPHBvaXNvbkEsIExvZ2dlcj4oYU5hbWUsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE2MSw3ICsxNzQsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1
Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGJOYW1lID0gImIiOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1h
a2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPihiTmFtZSwgYkRlc3RydWN0
Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+
IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxwb2lzb25BLCBEZXJpdmVkTG9nZ2VyPihiTmFtZSwg
YkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYk5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTcxLDcgKzE4
NCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IHVu
aXF1ZURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiB1bmlxdWVOYW1lID0g
InVuaXF1ZSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIERlcml2ZWRMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4o
dW5pcXVlTmFtZSwgdW5pcXVlRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
RGVyaXZlZExvZ2dlcj4odW5pcXVlTmFtZSwgdW5pcXVlRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgdW5pcXVlRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKHVuaXF1ZU5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTgxLDcgKzE5NCw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IHVuaXF1ZURlcml2ZWREZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogdW5pcXVlRGVyaXZlZE5hbWUgPSAi
dW5pcXVlIGRlcml2ZWQiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4o
dW5pcXVlRGVyaXZlZE5hbWUsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZURlcml2ZWROYW1lLCB1bmlxdWVEZXJpdmVkRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgdW5pcXVlRGVyaXZlZERlc3Ry
dWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lz
b25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSh1bmlxdWVEZXJpdmVkTmFtZSwgJnB0ci0+
bmFtZSk7CkBAIC0xOTUsMTUgKzIwOCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwg
QmFzaWMpCiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
PiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFE
ZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUocDMp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDB1LCBwMy5iaXRzKCkpOwpAQCAtMjE5LDE1ICsyMzIsMTUgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRl
c3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQoV1RG
TW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwpAQCAtMjQzLDE1ICsyNTYsMTUgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBhID0g
bmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIERlcml2ZWRM
b2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9
IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyID0g
V1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBM
b2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0
Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOwpA
QCAtMjY3LDE1ICsyODAsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQog
ICAgICAgICBEZXJpdmVkTG9nZ2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigi
YiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQoV1RG
TW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsKICAg
ICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNT
RVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yODksNyArMzAyLDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAg
ICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihh
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIo
YSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAg
ICAgICBwdHIuY2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIudW5wb2lzb25l
ZCgpKTsKQEAgLTMwMiwxMyArMzE1LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBC
YXNpYykKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiB7CisgICAg
aW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50
ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBh
ID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0g
bmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBi
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQo
KSk7CkBAIC0zMjUsNyArMzQwLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2ln
bm1lbnQpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciog
YSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIgPSBudWxscHRyOwpAQCAtMzQ1
LDggKzM2MCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAg
ICAgICBMb2dnZXIqIGMgPSBuZXcgTG9nZ2VyKCJjIiwgY0Rlc3RydWN0Q291bnQpOwogICAgICAg
ICBMb2dnZXIqIGQgPSBuZXcgTG9nZ2VyKCJkIiwgZERlc3RydWN0Q291bnQpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxKGEpOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihiKTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMihiKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVu
cG9pc29uZWQoKSk7CkBAIC0zNTcsOCArMzcyLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHIsIEFzc2lnbm1lbnQpCiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDEudW5wb2lzb25lZCgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzKGMpOwotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNChkKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyPiBwNChkKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9p
c29uZWQoKSk7CkBAIC0zODEsNyArMzk2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIs
IEFzc2lnbm1lbnQpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGEgPSBuZXcgRGVyaXZlZExvZ2dl
cigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBE
ZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25l
ZCgpKTsKQEAgLTQwNCw4ICs0MTksOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNz
aWdubWVudCkKICAgICAgICAgRGVyaXZlZExvZ2dlciogYyA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJj
IiwgY0Rlc3RydWN0Q291bnQpOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBkID0gbmV3IERlcml2
ZWRMb2dnZXIoImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEoYSk7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcDIoYik7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBv
aXNvbmVkKCkpOwpAQCAtNDE2LDggKzQzMSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
LCBBc3NpZ25tZW50KQogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAzKGMpOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBEZXJpdmVkTG9nZ2VyPiBw
NChkKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGMsIHAzLnVucG9pc29uZWQoKSk7CkBAIC00MzgsNyArNDUzLDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7
CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4g
cHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+
IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIg
PSBhOwpAQCAtNDUyLDcgKzQ2Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3Np
Z25tZW50KQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIq
IGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHB0ci51bnBvaXNvbmVkKCkpOwogI2lmIENPTVBJTEVSKENMQU5HKQpAQCAtNDczLDE0ICs0
ODgsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAKIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7
CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGludCBi
RGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwMjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcj4gcDI7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNT
RVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC00OTAsOCArNTA3LDggQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwog
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQ7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXI+IHA0OwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDQuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVk
KCkpOwpAQCAtNTExLDggKzUyOCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2Fw
KQogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAx
ID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDI7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBh
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBv
aXNvbmVkKCkpOwpAQCAtNTIyLDggKzUzOSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
LCBTd2FwKQogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0OworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyPiBwNDsKICAgICAgICAgICAgIEFTU0VSVF9FUShi
LCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTUzOCwxMyAr
NTU1LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogICAgIH0KIH0KIAot
c3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcG9pc29uZWRQdHJGb28o
TG9nZ2VyKiBsb2dnZXIpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dn
ZXI+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogbG9nZ2VyKQogewotICAgIHJldHVybiBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+KGxvZ2dlcik7CisgICAgcmV0dXJuIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPihsb2dnZXIpOwogfQogCiBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ciwgUmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsK
KwogICAgIHsKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2Vy
KiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1
Y3RpYmxlQXJyYXlzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5j
cHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bv
aXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsOCArMzEsMTkgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiBuYW1lc3BhY2UgewogCi1jb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotY29uc3Qg
dWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKK3VpbnRwdHJfdCBnX3BvaXNvbkE7Cit1aW50cHRy
X3QgZ19wb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxf
b25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdl
dCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3BvaXNvbkEgPSBtYWtlUG9p
c29uKCk7CisgICAgICAgIHdoaWxlICghZ19wb2lzb25CIHx8IGdfcG9pc29uQiA9PSBnX3BvaXNv
bkEpCisgICAgICAgICAgICBnX3BvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgfSk7Cit9CiAK
IHN0cnVjdCBMb2dnZXIgewogICAgIExvZ2dlcigpIHsgfQpAQCAtNjIsOCArNzMsMTAgQEAgY29u
c3QgaW50IGFycmF5U2l6ZSA9IDU7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9u
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9p
c29ucygpOworCiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
W10+IGVtcHR5OwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KQEAgLTcyLDcg
Kzg1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAg
ICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8
TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCAm
KnB0cik7CkBAIC04NCw3ICs5Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9u
VHJpdmlhbGwKICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2Yo
cHRyQml0cykpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPjo6aXNQ
b2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5k
aWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgICAgICB9CkBAIC05NSw3ICsxMDgsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBh
RGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+
KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBhOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gYTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkg
PCBhcnJheVNpemU7ICsraSkKQEAgLTEwOCw3ICsxMjEsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+OjpjcmVhdGUoYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0
Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJb
XT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT46OmNyZWF0ZShh
cnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBw
dHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5
U2l6ZTsgKytpKQpAQCAtMTIxLDcgKzEzNCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
Rm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAg
Y29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9p
c29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IG1ha2VQ
b2lzb25lZFVuaXF1ZTxwb2lzb25BLCBMb2dnZXJbXT4oYXJyYXlTaXplLCBhTmFtZSwgYURlc3Ry
dWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTEzNCw3ICsx
NDcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAg
IGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEi
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPFBvaXNvbkEsIExvZ2dlcltdPihhcnJheVNp
emUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8cG9pc29uQSwg
TG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShu
dWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAw
OyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xNDksMTUgKzE2MiwxNSBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dl
ciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUocDMp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMg
PSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4g
cDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTE3MywxNSArMTg2LDE1IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2Vy
KiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUs
IHAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsK
IAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0g
YjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNChX
VEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIs
IExvZ2dlcltdPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0xOTcsMTUg
KzIxMCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAg
ICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6
ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92
ZShwMSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVk
KCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+
IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGJEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNv
bmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yMjEsMTUg
KzIzNCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAg
ICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6
ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShw
MSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgp
KTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAz
ID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBw
NChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkIsIExvZ2dlcltdPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRl
c3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAgLTI0Myw3ICsyNTYs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIu
Y2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKQEAg
LTI1NiwxMyArMjY5LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAg
IHsKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVj
dENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlT
aXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0
ci51bnBvaXNvbmVkKCkpOwpAQCAtMjc5LDcgKzI5NCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAg
ICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBwdHIgPSBudWxscHRyOwpAQCAtMjk5LDggKzMxNCw4IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBjID0gbWFr
ZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAg
TG9nZ2VyKiBkID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiZCIsIGREZXN0cnVjdENv
dW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+IHAxKGEpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+IHAyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXJbXT4gcDEoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcltdPiBwMihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CkBAIC0zMTEsOCArMzI2LDggQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICAgICAgQVNT
RVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyW10+IHAzKGMpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQiwgTG9nZ2VyW10+IHA0KGQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBMb2dnZXJbXT4gcDMoYyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkIsIExvZ2dlcltdPiBwNChkKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBjRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgZERlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zMzMsNyArMzQ4
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBp
bnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9n
Z2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ciA9IGE7CkBAIC0zNDcs
NyArMzYyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAg
ICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJy
YXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKQEAg
LTM2OCwxNCArMzgzLDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMsIFN3YXApCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAg
ICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50
ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAi
YSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dl
cj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkp
OwpAQCAtMzg1LDggKzQwMiw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGwKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQ7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcltdPiBwNDsKICAgICAgICAgICAgIEFTU0VS
VF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJp
dHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTQw
Niw4ICs0MjMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5
U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMjsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJp
dHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTQx
Nyw4ICs0MzQsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC00MzMsMTMgKzQ1
MCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgfQog
fQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHBvaXNvbmVk
UHRyRm9vKExvZ2dlciogYXJyYXkpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXJbXT4gcG9pc29uZWRQdHJGb28oTG9nZ2VyKiBhcnJheSkKIHsKLSAgICByZXR1cm4g
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5KTsKKyAgICByZXR1cm4g
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4oYXJyYXkpOwogfQogCiBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywg
UmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAg
ICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1
Y3RpYmxlQXJyYXlzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJ
KHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNv
bmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsOCArMzIsMTkgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1l
c3BhY2UgewogCi1jb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotY29uc3QgdWludDMy
X3QgUG9pc29uQiA9IDB4YmJiYjsKK3VpbnRwdHJfdCBnX3BvaXNvbkE7Cit1aW50cHRyX3QgZ19w
b2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRp
ZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7
CisgICAgICAgIHdoaWxlICghZ19wb2lzb25CIHx8IGdfcG9pc29uQiA9PSBnX3BvaXNvbkEpCisg
ICAgICAgICAgICBnX3BvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgfSk7Cit9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBmaWxsQXJyYXkoVCYgYXJyYXksIGludCBzaXpl
KQpAQCAtNDgsMTMgKzU5LDE1IEBAIHN0YXRpYyBjb25zdCBpbnQgYXJyYXlTaXplID0gNTsKIAog
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMs
IEJhc2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBlbXB0eTsKKyAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gZW1wdHk7CiAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJp
dHMoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
aW50W10+IGVtcHR5KG51bGxwdHIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIGludFtdPiBlbXB0eShudWxscHRyKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVt
cHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsK
ICAgICB9CkBAIC02Myw3ICs3Niw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJp
dmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAg
ZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOwog
ICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC03NCw3
ICs4Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAg
ICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihh
KSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RSVUUo
KFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkp
OworICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
aW50W10+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUo
UE9JU09OKQogICAgICAgICB9CkBAIC04NCw3ICs5Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXpl
XTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0ciA9IGE7CisgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgaW50W10+IHB0ciA9IGE7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKICAgICAgICAgZm9y
IChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC05Miw3ICsxMDUsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgaW50W10+OjpjcmVhdGUoYXJyYXlTaXplKTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBpbnRbXT46OmNyZWF0ZShhcnJheVNpemUpOwogICAgICAgICBBU1NFUlRfVFJVRShu
dWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBmaWxsQXJyYXkocHRyLCBhcnJh
eVNpemUpOwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAg
LTEwNSwxNiArMTE4LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5
RGUKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFy
cmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
aW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+
IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
aW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRb
XT4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9p
c29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAgICAgQVNT
RVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8
IGFycmF5U2l6ZTsgKytpKQogICAgICAgICAgICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ldKTsKIAot
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNCA9IFdURk1vdmUocDMpOwog
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNT
RVJUX0VRKDB1LCBwMy5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25l
ZCgpKTsKQEAgLTEyOCwxNiArMTQxLDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
VHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAg
ICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgaW50W10+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIGludFtdPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBw
MS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CiAgICAg
ICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBmb3IgKGF1dG8gaSA9
IDA7IGkgPCBhcnJheVNpemU7ICsraSkKICAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwMltp
XSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0KFdURk1vdmUocDMp
KTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNChXVEZNb3ZlKHAz
KSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9FUShiLCBwNC51bnBv
aXNvbmVkKCkpOwpAQCAtMTQ5LDcgKzE2Miw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
Rm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAg
ICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIHB0ci5jbGVhcigpOwogICAgICAgICBBU1NFUlRfVFJVRSghcHRyLnVu
cG9pc29uZWQoKSk7CkBAIC0xNTksMTMgKzE3MiwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQb2lz
b25zKCk7CisKICAgICB7CiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAg
ICAgICAgIGF1dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShh
LCBhcnJheVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9F
UShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyID0gYjsKICAgICAgICAgQVNTRVJU
X0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTc1LDcgKzE5MCw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRb
YXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9IG51bGxwdHI7CiAgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTE5MSwxNiArMjA2LDE2IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgZmlsbEFy
cmF5KGMsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZpbGxBcnJheShkLCBhcnJheVNpemUpOwogCi0g
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMShhKTsKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyKGIpOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDIoYik7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51
bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0g
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyhjKTsKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0KGQpOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMyhjKTsKKyAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25CLCBpbnRbXT4gcDQoZCk7CiAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51
bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoZCwgcDQudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKQEAgLTIxMiw3ICsyMjcsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2Fy
cmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VRKGEs
IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBhOwogICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0yMjIsNyArMjM3LDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJh
eVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBw
dHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCkBAIC0yMzksMTQgKzI1NCwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7
CisKICAgICB7CiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAg
IGF1dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJh
eVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCksIGEpOwog
ICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAy
LnVucG9pc29uZWQoKSk7CkBAIC0yNTUsOCArMjcyLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQiwgaW50W10+IHA0OwogICAgICAgICBBU1NFUlRfRVEocDMudW5wb2lzb25lZCgpLCBiKTsK
ICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFw
NC51bnBvaXNvbmVkKCkpOwpAQCAtMjcyLDggKzI4OSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAg
ICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIGludFtdPiBwMjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBp
bnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtd
PiBwMjsKICAgICAgICAgQVNTRVJUX0VRKHAxLnVucG9pc29uZWQoKSwgYSk7CiAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25l
ZCgpKTsKQEAgLTI4Miw4ICsyOTksOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRy
aXZpYWxseURlCiAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBBU1NFUlRfRVEocDIudW5wb2lzb25lZCgpLCBhKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25CLCBpbnRbXT4gcDQ7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
aW50W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBpbnRb
XT4gcDQ7CiAgICAgICAgIEFTU0VSVF9FUShwMy51bnBvaXNvbmVkKCksIGIpOwogICAgICAgICBB
U1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29u
ZWQoKSk7CkBAIC0yOTQsMTMgKzMxMSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZv
clRyaXZpYWxseURlCiAgICAgfQogfQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgaW50W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQorc3RhdGljIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgaW50W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQogewotICAgIHJl
dHVybiBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4ocHRyKTsKKyAgICByZXR1cm4g
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lQdHI8Z19wb2lzb25BLCBpbnRbXT4ocHRyKTsKIH0KIAog
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMs
IFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAg
ICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBh
cnJheVNpemUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331176</attachid>
            <date>2018-01-11 23:22:56 -0800</date>
            <delta_ts>2018-01-11 23:53:21 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>129455</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksOCAr
Mzg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lz
b25lZE1hc21QdHIoMSk7IH0KLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1
ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigyKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1h
c21QdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwg
MSk7IH0KKyAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJu
IFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwgMik7IH0KIAogICAgIFBvaXNvbmVkTWFzbVB0
ciBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODk0LDggKzg5NCw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmhhc1RhaWxDYWxscygpOyB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBz
X3BvaXNvbiA9IG1ha2VDb25zdEV4cHJQb2lzb24oQ29kZUJsb2NrUG9pc29uKTsKLQogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOwogICAgIHZvaWQgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwpAQCAtOTc0LDcgKzk3Miw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fb3duZXJFeGVj
dXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293
bmVyRWRnZTsKLSAgICBDb25zdEV4cHJQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9w
b2lzb25lZFZNOworICAgIFBvaXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVk
Vk07CiAKICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3Ry
dWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDggQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBhbiBleGNl
cHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6aml0
Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54b3JQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1Qw
KTsKKy8vICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJs
b2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQueG9yUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKENvZGVCbG9ja1BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsK
ICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSklUQ29kZVR5cGU6
OmNvbW1vbkRhdGFPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb21tb25EYXRhOjpmcmFtZVJl
Z2lzdGVyQ291bnRPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAvLyBUaGlzIGRvZXMg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVSZWdpc3RlckNvdW50IC0gMSkqc2l6ZW9mKFJl
Z2lzdGVyKSB3aGVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyMjY3ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMjUzMCw3ICsyNTMwLDcgQEAgX2xsaW50X29wX3Byb2ZpbGVf
dHlwZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQx
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVucG9pc29u
KENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MSwg
dDIpCiAgICAgIyB0MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJvZmlsZXJM
b2cuCiAgICAgbG9hZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgdW5wb2lzb24oQ29kZUJsb2Nr
UG9pc29uLCBQQikKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCB0MSkKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0K
ICAgICB2YWx1ZVByb2ZpbGUocjAsIChDYWxsT3BDb2RlU2l6ZSAtIDEpLCB0MykKQEAgLTQ4MCwy
NyArNDgwLDI3IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAg
ICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAot
bWFjcm8gc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhlblN0
cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVk
Vk1bc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHNjcmF0
Y2gpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoLCBzY3JhdGNoMikKICAg
ICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlE
VGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKICAgICBsb2FkcCBbc2NyYXRjaCwgc3Ry
dWN0dXJlSURUaGVuU3RydWN0dXJlLCA4XSwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCiBlbmQK
IAotbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRj
aCkKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3Ry
dWN0dXJlCi0gICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwg
c2NyYXRjaCkKKyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJl
LCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJl
ckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHN0cnVjdHVyZQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCi0gICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bY2VsbF0sIGNlbGwKLSAgICB1bnBvaXNvbihD
b2RlQmxvY2tQb2lzb24sIGNlbGwpCi0gICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCi0gICAg
bG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQotZW5kCisjbWFjcm8gbG9hZFN0
cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisjICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisjICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisjICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2NlbGxdLCBj
ZWxsCisjICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgY2VsbCkKKyMgICAgbG9hZHAgVk06
OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3Rh
YmxlW2NlbGxdLCBjZWxsCisjICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1
cmUKKyNlbmQKIAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIApAQCAtNTYy
LDcgKzU2Miw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cKICAg
ICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIHJlc2V0IFBDLCBzaW5jZSB0aGUgc2xvd19wYXRoIGNs
b2JiZXJlZCB0aGVtLgogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbW92
ZSAwLCBQQwogICAgIGptcCBkb25lTGFiZWwKIGVuZApAQCAtNjQxLDcgKzY0MSw3IEBAIF9sbGlu
dF9vcF90b190aGlzOgogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwg
dGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmlu
YWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQz
KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIHQxLCB0MiwgLm9w
VG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b190aGlzX2xlbmd0aCkKQEAg
LTcyNCw3ICs3MjQsNyBAQCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uKCkKICAgICBtb3ZlIDAs
IHQwCiAgICAgam1wIC5kb25lCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgY3BlcSBTdHJ1Y3R1cmU6
Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2lzX3VuZGVmaW5lZF9sZW5ndGgpCiAubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZDoKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKKyAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSwgdDUpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCiAg
ICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDEsIHQwCkBAIC0xNDMzLDcg
KzE0MzMsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkOgogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWlu
OjptX3ZlY3Rvclt0M10sIHQzCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogdDMsIG9rIGVu
ZCkKIAotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEpCisgICAg
c3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSwgdDUpCiAgICAgbG9hZHEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCiAgICAgYnFlcSB0MiwgVmFsdWVOdWxsLCAu
b3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZQogLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkxv
b3A6CkBAIC0xNzQwLDcgKzE3NDAsNyBAQCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGlt
bWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCi0gICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEsIHQ1KQogICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBd
LCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIF9sbGlu
dF9vcF9jYXRjaDoKIAogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbG9h
ZHAgVk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwg
UEMKICAgICByc2hpZnRwIDMsIFBDCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV9zY29wZToKIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1Bh
dGgpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDUpCiAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCkBA
IC0yNTAwLDcgKzI1MDAsNyBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0
MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICAjIHQxIGlzIGhv
bGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIHR5cGVQcm9maWxlckxvZy4KICAgICBsb2FkcCBWTTo6
bV90eXBlUHJvZmlsZXJMb2dbdDFdLCB0MQogICAgICMgdDIgaXMgaG9sZGluZyB0aGUgcG9pbnRl
ciB0byB0aGUgY3VycmVudCBsb2cgZW50cnkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyMjY3ODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBlbHNlCiAgICAgY29uc3QgTG93ZXN0
VGFnID0gRGVsZXRlZFZhbHVlVGFnCiBlbmQKIAotY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KKyMgY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KIAogIyBQdXRCeUlkRmxhZ3MgZGF0YQogY29uc3Qg
UHV0QnlJZFByaW1hcnlUeXBlTWFzayA9IGNvbnN0ZXhwciBQdXRCeUlkUHJpbWFyeVR5cGVNYXNr
CkBAIC03NTQsOSArNzU0LDEwIEBAIG1hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChkZXMKICAgICBlbmQKIGVuZAogCi1tYWNybyB1bnBvaXNvbihwb2lzb24sIGZpZWxkKQorbWFj
cm8gdW5wb2lzb24ocG9pc29uLCBmaWVsZCwgc2NyYXRjaCkKICAgICBpZiBQT0lTT04KLSAgICAg
ICAgeG9ycCBwb2lzb24sIGZpZWxkCisgICAgICAgIGxvYWRwIF9Db2RlQmxvY2tQb2lzb24sIHNj
cmF0Y2gKKyAgICAgICAgeG9ycCBzY3JhdGNoLCBmaWVsZAogICAgIGVuZAogZW5kCiAKQEAgLTEw
MjQsNyArMTAyNSw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2MK
ICAgICAjIFNldCB1cCB0aGUgUEMuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgICAgICB1bnBvaXNvbihDb2RlQmxv
Y2tQb2lzb24sIFBCKQorICAgICAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCBQQykK
ICAgICAgICAgbW92ZSAwLCBQQwogICAgIGVsc2UKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1t0MV0sIFBDCkBAIC0xMDM1LDcgKzEwMzYsNyBAQCBtYWNybyBwcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgc3VicCBjZnIsIHQwLCB0MAogICAgIGJw
YSB0MCwgY2ZyLCAubmVlZFN0YWNrQ2hlY2sKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29u
ZWRWTVt0MV0sIHQyCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MikKKyAgICB1bnBv
aXNvbihDb2RlQmxvY2tQb2lzb24sIHQyLCB0MykKICAgICBpZiBDX0xPT1AKICAgICAgICAgYnBi
ZXEgVk06Om1fY2xvb3BTdGFja0xpbWl0W3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCiAgICAgZWxz
ZQpAQCAtMTYyMyw3ICsxNjI0LDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICBsb2FkYiBW
TTo6bV90cmFwcytWTVRyYXBzOjptX25lZWRUcmFwSGFuZGxpbmdbdDFdLCB0MAogICAgIGJ0cG56
IHQwLCAuaGFuZGxlVHJhcHMKIC5hZnRlckhhbmRsaW5nVHJhcHM6CkBAIC0xNjM5LDcgKzE2NDAs
NyBAQCBfbGxpbnRfb3BfY2hlY2tfdHJhcHM6CiBtYWNybyBhY3F1aXJlU2hhZG93Q2hpY2tlblBh
Y2tldChzbG93KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVC
bG9jazo6bV9wb2lzb25lZFZNW3QxXSwgdDEKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24s
IHQxKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEsIHQyKQogICAgIGxvYWRwIFZN
OjptX3NoYWRvd0NoaWNrZW5bdDFdLCB0MgogICAgIGxvYWRwIFNoYWRvd0NoaWNrZW46Om1fbG9n
Q3Vyc29yW3QyXSwgdDAKICAgICBicGFlcSB0MCwgU2hhZG93Q2hpY2tlbjo6bV9sb2dFbmRbdDJd
LCBzbG93CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKIAogcHJpdmF0
ZToKLSAgICBDb25zdEV4cHJQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKKyAgICBQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKIH07CiAKIGlubGluZSBBcnJheUJ1ZmZlciogdG9Qb3NzaWJseVNoYXJlZEFy
cmF5QnVmZmVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzMg
KzI1LDUgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gUG9pc29uIHsKLSAgICBOb3RQb2lzb25lZCA9IDAsIC8v
IFJlc2VydmVkIChhbmQgdW51c2VkKSBzbyB0aGF0IHBvaXNvbiBrZXlzIGFyZSBuZXZlciAwLgot
Ci0gICAgLy8gQWRkIG5ldyBwb2lzb24ga2V5cyBiZWxvdyBpbiBhbHBoYWJldGljYWwgb3JkZXIu
IFRoZSBvcmRlciBkb2Vzbid0IHJlYWxseQotICAgIC8vIG1hdHRlciwgYnV0IHdlIG1pZ2h0IGFz
IHdlbGwga2VlcCB0aGVtIGluIGFscGhhYmV0aWNhbGx5IG9yZGVyIGZvcgotICAgIC8vIGdyZWF0
ZXIgcmVhZGFiaWxpdHkuCi0gICAgQXJyYXlQcm90b3R5cGVQb2lzb24sCi0gICAgQ29kZUJsb2Nr
UG9pc29uLAotICAgIERhdGVJbnN0YW5jZVBvaXNvbiwKLSAgICBKU0FQSVdyYXBwZXJPYmplY3RQ
b2lzb24sCi0gICAgSlNBcnJheUJ1ZmZlclBvaXNvbiwKLSAgICBKU0NhbGxiYWNrT2JqZWN0UG9p
c29uLAotICAgIEpTR2xvYmFsT2JqZWN0UG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiwKLSAgICBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24s
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLAotICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZVBvaXNvbiwKLSAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24sCi19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIiAvLyBtbGFtCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJ
KHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjMgQEAgdWludHB0cl90
IGdfZ2xvYmFsRGF0YVBvaXNvbjsKIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiB1aW50cHRy
X3QgZ19uYXRpdmVDb2RlUG9pc29uOwogCit1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
Cit1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOwordWludHB0cl90IERhdGVJbnN0YW5jZVBvaXNv
bjsKK3VpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247Cit1aW50cHRyX3QgSlNBcnJh
eUJ1ZmZlclBvaXNvbjsKK3VpbnRwdHJfdCBKU0NhbGxiYWNrT2JqZWN0UG9pc29uOwordWludHB0
cl90IEpTR2xvYmFsT2JqZWN0UG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hlclBvaXNvbjsKK3VpbnRwdHJfdCBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOwordWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uOwordWludHB0
cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseVRh
YmxlUG9pc29uOwordWludHB0cl90IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbjsKK3Vp
bnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb247CisKIHZvaWQgaW5pdGlhbGl6ZVBvaXNv
bigpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKQEAg
LTQxLDYgKzU4LDIzIEBAIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpCiAgICAgICAgIGdfZ2xvYmFs
RGF0YVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19qaXRDb2RlUG9pc29uID0gbWFr
ZVBvaXNvbigpOwogICAgICAgICBnX25hdGl2ZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisK
KyAgICAgICAgQXJyYXlQcm90b3R5cGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIENv
ZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgRGF0ZUluc3RhbmNlUG9pc29u
ID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTQXJyYXlCdWZmZXJQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIEpTQ2FsbGJhY2tPYmplY3RQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1NjcmlwdEZldGNo
UGFyYW1ldGVyc1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaGVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9p
c29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24g
PSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24gPSBtYWtlUG9pc29u
KCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAg
ICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAg
ICAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAgfSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQ
dHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUG9pc29uZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMjMgQEAgZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2dsbwogZXh0ZXJuICJDIiBKU19FWFBPUlRE
QVRBIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiBleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAorZXh0ZXJuICJDIiBKU19FWFBPUlREQVRB
IHVpbnRwdHJfdCBBcnJheVByb3RvdHlwZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWlu
dHB0cl90IEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNBcnJheUJ1ZmZlclBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNDYWxsYmFja09iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgSlNHbG9iYWxPYmplY3RQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzUG9pc29uOworZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoZXJQb2lzb247CitleHRlcm4g
IkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJBc3NlbWJs
eU1lbW9yeVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJB
c3NlbWJseU1vZHVsZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3Qg
SlNXZWJBc3NlbWJseVRhYmxlUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IFVubGlua2VkU291cmNlQ29kZVBvaXNvbjsKKwogc3RydWN0IENsYXNz
SW5mbzsKIAogdXNpbmcgUG9pc29uZWRDbGFzc0luZm9QdHIgPSBQb2lzb25lZDxnX2dsb2JhbERh
dGFQb2lzb24sIGNvbnN0IENsYXNzSW5mbyo+OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlz
aW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsOCArMTg3LDggQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaW5nbGVTbG90VHJhbnNpdGlvbldlYWtP
d25lcjsKLSAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBDb25zdEV4cHJQb2lz
b25lZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKLSAg
ICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlUG9pc29uLCBXZWFrSW1wbCo+OworICAgIHVzaW5nIFBvaXNvbmVkVHJh
bnNpdGlvbk1hcFB0ciA9IFBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwg
VHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBQb2lzb25l
ZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFdlYWtJbXBsKj47CiAKICAgICBib29s
IGlzVXNpbmdTaW5nbGVTbG90KCkgY29uc3QKICAgICB7CkBAIC0xOTgsMTMgKzE5OCwxMyBAQCBw
cml2YXRlOgogICAgIFRyYW5zaXRpb25NYXAqIG1hcCgpIGNvbnN0CiAgICAgewogICAgICAgICBB
U1NFUlQoIWlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyKG1fZGF0YSkudW5wb2lzb25lZCgpOworICAgICAgICByZXR1cm4gUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyKFByZVBvaXNvbmVkLCBtX2RhdGEpLnVucG9pc29uZWQoKTsKICAg
ICB9CiAKICAgICBXZWFrSW1wbCogd2Vha0ltcGwoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRXZWFrSW1w
bFB0cihtX2RhdGEgJiB+VXNpbmdTaW5nbGVTbG90RmxhZykudW5wb2lzb25lZCgpOworICAgICAg
ICByZXR1cm4gUG9pc29uZWRXZWFrSW1wbFB0cihQcmVQb2lzb25lZCwgbV9kYXRhICYgflVzaW5n
U2luZ2xlU2xvdEZsYWcpLnVucG9pc29uZWQoKTsKICAgICB9CiAKICAgICB2b2lkIHNldE1hcChU
cmFuc2l0aW9uTWFwKiBtYXApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1RvV2FzbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNUb1dhc20uY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsOCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlCiAgICAgICAgIGlmICghQ29u
dGV4dDo6dXNlRmFzdFRMUygpKSB7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgd2FzbUNv
bnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Mod2FzbUNvbnRleHRJbnN0YW5jZUdQUiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSksIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwotICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobWFrZUNvbnN0RXhw
clBvaXNvbihKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24pKSwgc2NyYXRjaFJlZyk7CisvLyAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KG1ha2VDb25zdEV4
cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uKSksIHNjcmF0Y2hSZWcpOworICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJs
eUluc3RhbmNlUG9pc29uKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgICAgICBqaXQueG9yNjQoc2Ny
YXRjaFJlZywgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqc09mZnNldCAr
PSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcuaAkocmV2aXNpb24gMjI2
Nzg0KQorKysgU291cmNlL1dURi93dGYvQmFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMCAr
MTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9yYWdlVHlwZSBt
X2hlYWQgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRwdHJf
dCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRl
PHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkQmFnID0gQmFnPFQsIENv
bnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFnTm9kZTxUPj4+OwordGVt
cGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZEJhZyA9IEJh
ZzxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFByaXZhdGU6OkJhZ05vZGU8VD4+PjsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI2Nzg0KQorKysg
U291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDYg
QEAKICNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJU
UyAwCiAKLS8vIE9sZGVyIHZlcnNpb25zIG9mIGdjYyBhbmQgY2xhbmcgaGF2ZSBhIGJ1ZyB3aGlj
aCByZXN1bHRzIGluIGJ1aWxkIGZhaWx1cmVzCi0vLyB3aGVuIHVzaW5nIHRlbXBsYXRlIG1ldGhv
ZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IG9mIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPgotLy8g
d2hlbiB0aGUgS2V5VHlwZSBpcyBhIHVpbnRwdHJfdCAoaS5lLiB3aGVuIHdlJ3JlIHVzaW5nIHRo
ZSBQb2lzb25lZCB2YXJpYW50Ci0vLyBvZiBQb2lzb25lZEltcGwpLiBUaGlzIGJ1ZyBkb2VzIG5v
dCBtYW5pZmVzdCBmb3IgdGhlIENvbnN0RXhwclBvaXNvbmVkIHZhcmlhbnQuCi0vLyBJbiBwcmFj
dGljZSwgd2Ugd2lsbCBsaWtlbHkgb25seSB1c2UgdGhlc2UgbWV0aG9kcyBmb3IgaW5zdGFudGlh
dGlvbnMgb2YgdGhlCi0vLyBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LiBIZW5jZS4gdGhpcyBi
dWcgaXMgbm90IGEgc2hvdyBzdG9wcGVyLgotLy8gVGhhdCBzYWlkLCB3ZSdsbCBkZWZpbmUgRU5B
QkxFX01JWEVEX1BPSVNPTiBhY2NvcmRpbmdseSBzbyB0aGF0IHdlIGNhbiB1c2UKLS8vIGl0IHRv
IGRpc2FibGUgdGhlIGFmZmVjdGVkIHRlc3RzIHdoZW4gYnVpbGRpbmcgd2l0aCBvbGQgY29tcGls
ZXJzLgotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2Ns
YW5nX21ham9yX18gPj0gOSkKLSNlbGlmIGRlZmluZWQoX19jbGFuZ19tYWpvcl9fKQotI2RlZmlu
ZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2NsYW5nX21ham9yX18gPj0gNCkKLSNlbGlmIGRlZmlu
ZWQoX19HTlVDX18pCi0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSNkZWZpbmUgRU5BQkxFX01JWEVE
X1BPSVNPTiAoX19HTlVDX1BSRVJFUSg3LCAyKSkKLSNlbmRpZiAvLyAhZGVmaW5lZChfX0dOVUNf
XykKLQotI2lmbmRlZiBFTkFCTEVfTUlYRURfUE9JU09OCi0jZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gMCAvLyBEaXNhYmxlIGZvciBldmVyeXRoaW5nIGVsc2UuCi0jZW5kaWYKLQogLy8gTm90
IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJl
Y2F1c2Ugb2YgbWlzc2luZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2Fi
bGVkLgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCkBAIC04OCwzMCArNjYs
MzMgQEAgYXNSZWZlcmVuY2UoVCBwdHIpIHsgcmV0dXJuICpwdHI7IH0KIAogfSAvLyBuYW1lc3Bh
Y2UgUG9pc29uZWRJbXBsSGVscGVyCiAKLS8vIEZJWE1FOiBvbmNlIHdlIGhhdmUgQysrMTcsIHdl
IGNhbiBtYWtlIHRoZSBrZXkgb2YgdHlwZSBhdXRvIGFuZCByZW1vdmUgdGhlIG5lZWQgZm9yIEtl
eVR5cGUuCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgotY2xhc3MgUG9pc29uZWRJbXBsIHsKK2VudW0gUHJlUG9pc29uZWRUYWcgeyBQcmVQb2lzb25l
ZCB9OworCit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+PgorY2xhc3MgUG9pc29u
ZWQgewogcHVibGljOgotICAgIFBvaXNvbmVkSW1wbCgpIHsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1BvaXNvbmVkID0gdHJ1ZTsKIAotICAgIFBvaXNvbmVkSW1wbChzdGQ6Om51bGxw
dHJfdCkgeyB9CisgICAgUG9pc29uZWQoKSB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChUIHB0cikK
KyAgICBQb2lzb25lZChzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICBQb2lzb25lZChUIHB0cikK
ICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb24ocHRyKSkKICAgICB7IH0KIAotICAgIFBv
aXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQo
Y29uc3QgUG9pc29uZWQmKSA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwg
SzIgazIsIHR5cGVuYW1lIFQyPgotICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGw8
SzIsIGsyLCBUMj4mIG90aGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFt
ZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVkKGNv
bnN0IE90aGVyJiBvdGhlcikKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb248VD4ob3Ro
ZXIudW5wb2lzb25lZCgpKSkKICAgICB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChQb2lzb25lZElt
cGwmJiBvdGhlcikKKyAgICBQb2lzb25lZChQb2lzb25lZCYmIG90aGVyKQogICAgICAgICA6IG1f
cG9pc29uZWRCaXRzKFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQogICAgIHsgfQogCi0g
ICAgZXhwbGljaXQgUG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCisgICAg
ZXhwbGljaXQgUG9pc29uZWQoUHJlUG9pc29uZWRUYWcsIFBvaXNvbmVkQml0cyBwb2lzb25lZEJp
dHMpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQogCkBA
IC0xNDMsMTIgKzEyNCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9wb2lzb25lZEJpdHM7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX3BvaXNvbmVkQml0czsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0g
Yi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
IDw9IGIubV9wb2lzb25lZEJpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25l
ZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0
czsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
ID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29u
ZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4g
bV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IFBvaXNvbmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8PSBiLm1f
cG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9pc29uZWQmIGIpIGNv
bnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25l
ZEJpdHMgPj0gYi5tX3BvaXNvbmVkQml0czsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcj09KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgIT0gYjsgfQpAQCAtMTU3LDMzICsxMzgsNDEgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpID4gYjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+PSBi
OyB9CiAKLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICBQb2lzb25lZCYg
b3BlcmF0b3I9KFQgcHRyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24o
cHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9w
ZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQmIG9w
ZXJhdG9yPShjb25zdCBQb2lzb25lZCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0o
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICBQb2lzb25lZCYgb3Bl
cmF0b3I9KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVk
JiBvcGVyYXRvcj0oY29uc3QgT3RoZXImIG90aGVyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25l
ZEJpdHMgPSBwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAotICAgIHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCisgICAgdm9pZCBz
d2FwKFBvaXNvbmVkJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVk
Qml0cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0
cywgb3RoZXIubV9wb2lzb25lZEJpdHMpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMiwg
azIsIFQyPiYgbykKKyAgICB2b2lkIHN3YXAoc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZf
dDxPdGhlcjo6aXNQb2lzb25lZD4+CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhlcikKICAgICB7
CiAgICAgICAgIFQgdDEgPSB0aGlzLT51bnBvaXNvbmVkKCk7Ci0gICAgICAgIFQyIHQyID0gby51
bnBvaXNvbmVkKCk7CisgICAgICAgIFQgdDIgPSBvdGhlci51bnBvaXNvbmVkKCk7CiAgICAgICAg
IHN0ZDo6c3dhcCh0MSwgdDIpOwogICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7
Ci0gICAgICAgIG8gPSB0MjsKKyAgICAgICAgb3RoZXIubV9wb2lzb25lZEJpdHMgPSBPdGhlcjo6
cG9pc29uKHQyKTsKICAgICB9CiAKICAgICB2b2lkIHN3YXAoVCYgdDIpCkBAIC0yMTYsNjkgKzIw
NSwzMyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJp
dHMgeyAwIH07Ci19OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotaW5saW5lIHZvaWQgc3dhcChQb2lz
b25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikKLXsK
LSAgICBhLnN3YXAoYik7Ci19CisgICAgdGVtcGxhdGU8dWludHB0cl90JiwgdHlwZW5hbWUsIHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWQ7Cit9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
MSwgSzEgazEsIHR5cGVuYW1lIFQxPgotaW5saW5lIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEs
IGsxLCBUMT4mIGEsIFQxJiBiKQordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBzd2FwKFBvaXNvbmVkPGtleSwgVD4mIGEsIFUmIGIp
CiB7CiAgICAgYS5zd2FwKGIpOwogfQogCiBXVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1h
a2VQb2lzb24oKTsKIAotI2lmIEVOQUJMRShQT0lTT04pCi0vLyBGSVhNRTogb25jZSB3ZSBoYXZl
IEMrKzE3LCB3ZSBjYW4gbWFrZSB0aGlzIGEgbGFtYmRhIGluIG1ha2VDb25zdEV4cHJQb2lzb24o
KS4KLWlubGluZSBjb25zdGV4cHIgdWludHB0cl90IGNvbnN0RXhwclBvaXNvblJhbmRvbSh1aW50
cHRyX3Qgc2VlZCkKLXsKLSAgICB1aW50cHRyX3QgcmVzdWx0MSA9IHNlZWQgKiA2OTA2OTY5MDY5
ICsgMTIzNDU2NzsKLSAgICB1aW50cHRyX3QgcmVzdWx0MiA9IHNlZWQgKiA4MjUzNzI5ICsgMjM5
NjQwMzsKLSAgICByZXR1cm4gKHJlc3VsdDEgPDwgMykgXiAocmVzdWx0MiA8PCAxNik7Ci19Ci0j
ZW5kaWYKLQotaW5saW5lIGNvbnN0ZXhwciB1aW50cHRyX3QgbWFrZUNvbnN0RXhwclBvaXNvbih1
aW50MzJfdCBrZXkpCi17Ci0jaWYgRU5BQkxFKFBPSVNPTikKLSAgICB1aW50cHRyX3QgcG9pc29u
ID0gY29uc3RFeHByUG9pc29uUmFuZG9tKGtleSk7Ci0gICAgcG9pc29uICY9IH4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PigweGZmZmYpIDw8IDQ4KTsgLy8gRW5zdXJlIHRoYXQgcG9pc29uZWQgYml0
cyBsb29rIGxpa2UgYSBwb2ludGVyLgotICAgIHBvaXNvbiB8PSAoMSA8PCAyKTsgLy8gRW5zdXJl
IHRoYXQgcG9pc29uZWQgYml0cyBjYW5ub3QgYmUgMC4KLSAgICByZXR1cm4gcG9pc29uOwotI2Vs
c2UKLSAgICByZXR1cm4gKHZvaWQpa2V5LCAwOwotI2VuZGlmCi19Ci0KIHRlbXBsYXRlPHVpbnRw
dHJfdCYga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWlu
dHB0cl90Jiwga2V5LCBUPjsKLQotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgot
dXNpbmcgQ29uc3RFeHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlQ29u
c3RFeHByUG9pc29uKGtleSksIFQ+OwotCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+Ci1zdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFpdHMgewotICAgIHVzaW5nIFN0b3Jh
Z2VUeXBlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj47CitzdHJ1Y3QgUG9pc29uZWRQdHJU
cmFpdHMgeworICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gUG9pc29uZWQ8a2V5LCBUKj47CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMgQUxXQVlTX0lOTElORSBUKiBleGNoYW5nZShTdG9y
YWdlVHlwZSYgcHRyLCBVJiYgbmV3VmFsdWUpIHsgcmV0dXJuIHB0ci5leGNoYW5nZShuZXdWYWx1
ZSk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDE+Ci0g
ICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQx
PiYgYSwgVDEmIGIpIHsgYS5zd2FwKGIpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMSwg
SzEgazEsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotICAg
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEsIGsxLCBUMT4m
IGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikgeyBhLnN3YXAoYik7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlcj4KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAo
UG9pc29uZWQ8a2V5LCBUKj4mIGEsIE90aGVyJiBiKSB7IGEuc3dhcChiKTsgfQogCiAgICAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgVCogdW53cmFwKGNvbnN0IFN0b3JhZ2VUeXBlJiBwdHIpIHsgcmV0
dXJuIHB0ci51bnBvaXNvbmVkKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2lu
ZyBXVEY6OkNvbnN0RXhwclBvaXNvbmVkOwordXNpbmcgV1RGOjpQcmVQb2lzb25lZDsKIHVzaW5n
IFdURjo6UG9pc29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkQml0czsKLXVzaW5nIFdURjo6bWFr
ZUNvbnN0RXhwclBvaXNvbjsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UG9pc29uZWRVbmlxdWVQdHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYv
UG9pc29uZWRVbmlxdWVQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDE0IEBACiAK
IG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Ci1jbGFzcyBQb2lzb25lZFVuaXF1ZVB0ciA6IHB1YmxpYyBD
b25zdEV4cHJQb2lzb25lZDxrZXksIFQqPiB7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlw
ZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KK2NsYXNzIFBvaXNvbmVkVW5pcXVlUHRy
IDogcHVibGljIFBvaXNvbmVkPGtleSwgVCo+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLSAgICB1c2luZyBCYXNlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj47CisgICAgdXNp
bmcgQmFzZSA9IFBvaXNvbmVkPGtleSwgVCo+OwogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1BvaXNvbmVkVW5pcXVlUHRyID0gdHJ1ZTsKKyAgICB1c2luZyBWYWx1ZVR5cGUg
PSBUOworCiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRV
bmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgpIHsgfQogICAgIFBvaXNvbmVkVW5pcXVl
UHRyKFQqIHB0cikgOiBCYXNlKHB0cikgeyB9CkBAIC00OCw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBCYXNlKHVuaXF1ZS5yZWxlYXNlKCkpCiAgICAgeyB9CiAKLSAgICB0ZW1wbGF0ZTx1
aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+Ci0gICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29u
ZWRVbmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIs
IHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZFVuaXF1ZVB0ciAm
JiBzdGQ6OmlzX2Jhc2Vfb2Y8VCwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4K
KyAgICBQb2lzb25lZFVuaXF1ZVB0cihPdGhlciYmIHB0cikKICAgICAgICAgOiBCYXNlKHB0ci51
bnBvaXNvbmVkKCkpCiAgICAgewogICAgICAgICBwdHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOwpA
QCAtODksOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+Ci0gICAgUG9pc29uZWRV
bmlxdWVQdHImIG9wZXJhdG9yPShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBVPiYmIHB0cikKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90
aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0ZDo6aXNfYmFzZV9vZjxULCB0eXBlbmFtZSBP
dGhlcjo6VmFsdWVUeXBlPjo6dmFsdWU+PgorICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRv
cj0oT3RoZXImJiBwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQodGhpcyA9PSBzdGF0aWNfY2Fz
dDx2b2lkKj4oJnB0cikgfHwgdGhpcy0+dW5wb2lzb25lZCgpICE9IHB0ci51bnBvaXNvbmVkKCkp
OwogICAgICAgICBpZiAoTElLRUxZKHRoaXMgIT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpKSkg
ewpAQCAtMTIyLDI4ICsxMjUsMzEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJXaXRob3V0
RGVzdHJveSgpIHsgQmFzZTo6Y2xlYXIoKTsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3QsIHR5
cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOworICAgIHRl
bXBsYXRlPHVpbnRwdHJfdCYsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNv
bmVkVW5pcXVlUHRyOwogfTsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0
eXBlbmFtZS4uLiBBcmd1bWVudHMsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Cit0ZW1wbGF0ZTx1
aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFt
ZSBFbmFibGUgPSB2b2lkPgogUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUPiBtYWtlUG9pc29uZWRV
bmlxdWUoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVybiBQb2lzb25lZFVu
aXF1ZVB0cjxrZXksIFQ+OjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRz
KS4uLik7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLWNsYXNzIFBv
aXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1YmxpYyBDb25zdEV4cHJQb2lzb25lZDxrZXks
IFQqPiB7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK2NsYXNzIFBvaXNv
bmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1YmxpYyBQb2lzb25lZDxrZXksIFQqPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBvaXNv
bmVkPGtleSwgVCo+OworICAgIHVzaW5nIEJhc2UgPSBQb2lzb25lZDxrZXksIFQqPjsKIHB1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNQb2lzb25lZFVuaXF1ZVB0ciA9IHRydWU7
CisgICAgdXNpbmcgVmFsdWVUeXBlID0gVFtdOworCiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9
IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgp
IHsgfQogICAgIFBvaXNvbmVkVW5pcXVlUHRyKFQqIHB0cikgOiBCYXNlKHB0cikgeyB9CiAgICAg
UG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQdHImJiBwdHIpIDogQmFzZShXVEZNb3Zl
KHB0cikpIHsgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3koKTsgfQogICAgIFBvaXNvbmVkVW5pcXVl
UHRyKHN0ZDo6dW5pcXVlX3B0cjxUW10+JiYgdW5pcXVlKSA6IFBvaXNvbmVkVW5pcXVlUHRyKHVu
aXF1ZS5yZWxlYXNlKCkpIHsgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KLSAgICBQ
b2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3Ro
ZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3RkOjppc19zYW1lPFRbXSwgdHlwZW5hbWUgT3Ro
ZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1ZVB0cihPdGhlciYmIHB0
cikKICAgICAgICAgOiBCYXNlKHB0ci51bnBvaXNvbmVkKCkpCiAgICAgewogICAgICAgICBwdHIu
Y2xlYXJXaXRob3V0RGVzdHJveSgpOwpAQCAtMTc4LDggKzE4NCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtleTI+Ci0g
ICAgUG9pc29uZWRVbmlxdWVQdHImIG9wZXJhdG9yPShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBU
W10+JiYgcHRyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3RkOjppc19zYW1lPFRb
XSwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1
ZVB0ciYgb3BlcmF0b3I9KE90aGVyJiYgcHRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRoaXMg
PT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgaWYgKExJS0VMWSh0aGlzICE9IHN0YXRpY19jYXN0PHZv
aWQqPigmcHRyKSkpIHsKQEAgLTIxMSwxMCArMjE3LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAotICAgIHRlbXBsYXRl
PHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1
ZVB0cjsKKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVu
ZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwg
dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgordGVtcGxhdGU8dWludHB0cl90JiBr
ZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KIFBvaXNvbmVkVW5pcXVlUHRy
PGtleSwgVFtdPiBtYWtlUG9pc29uZWRVbmlxdWUoc2l6ZV90IGNvdW50LCBBcmd1bWVudHMmJi4u
LiBhcmd1bWVudHMpCiB7CiAgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPjo6
Y3JlYXRlKGNvdW50LCBzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1JlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Jl
Zi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWYuaAkod29ya2luZyBj
b3B5KQpAQCAtMjU2LDEwICsyNTYsMTAgQEAgaW5saW5lIGJvb2wgaXMoY29uc3QgUmVmPEFyZ1R5
cGUsIFB0clRyYQogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJjZS5nZXQoKSk7CiB9
CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IENvbnN0RXhwclBv
aXNvbmVkUHRyVHJhaXRzOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+IHN0
cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFt
ZSBUPgotdXNpbmcgUG9pc29uZWRSZWYgPSBSZWY8VCwgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFp
dHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5n
IFBvaXNvbmVkUmVmID0gUmVmPFQsIFBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgJKHJldmlzaW9u
IDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJy
YXkoc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBpZiAoIXNpemUpIHsKLSAgICAgICAgICAg
IG1fZGF0YSA9IDA7CisgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFJlZkNvdW50ZWRBcnJheShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJm
bG93SGFuZGxlcj4mIG90aGVyKQogICAgIHsKICAgICAgICAgaWYgKG90aGVyLmlzRW1wdHkoKSkg
ewotICAgICAgICAgICAgbV9kYXRhID0gMDsKKyAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yMzgsMTAgKzIz
OCwxMCBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9k
YXRhIHsgbnVsbHB0ciB9OwogfTsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3Qm
IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25lZFJlZkNvdW50ZWRBcnJheSA9
IFJlZkNvdW50ZWRBcnJheTxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsK
K3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRSZWZD
b3VudGVkQXJyYXkgPSBSZWZDb3VudGVkQXJyYXk8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBU
Pj47CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gMjI2Nzg0
KQorKysgU291cmNlL1dURi93dGYvUmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NiwxMCAr
Mjc2LDEwIEBAIGlubGluZSBib29sIGlzKGNvbnN0IFJlZlB0cjxBcmdUeXBlLCBQdHIKICAgICBy
ZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx1aW50
MzJfdCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsK
K3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJU
cmFpdHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNv
bmVkUmVmUHRyID0gUmVmUHRyPFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+
OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJl
ZlB0ciA9IFJlZlB0cjxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCShyZXZpc2lvbiAyMjY3
ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsMzkgKzM1LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAKIG5hbWVzcGFjZSB7CiBzdHJ1Y3Qg
RHVtbXlTdHJ1Y3QgeyB9OwotY29uc3QgdWludDMyX3QgZHVtbXlQb2lzb24gPSAweGZmZmY7Cit1
aW50cHRyX3QgZHVtbXlQb2lzb24gPSAwOwogfQogCi0jaWYgRU5BQkxFKFBPSVNPTikKLXN0YXRp
Y19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEpID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMg
c2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0
RXhwclBvaXNvbigxMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBh
IHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSA+
PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3Rh
dGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApID4+IDQ4KSwgInBvaXNvbmVk
IGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFr
ZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBs
b29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lz
b24oMHhmZmZmZmZmZikgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEg
cG9pbnRlci4iKTsKLQotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxKSA+PiAz
MiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxl
dGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDApID4+IDMy
KSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0
ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDMy
KSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0
ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSA+PiAz
MiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxl
dGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+
PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29t
cGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZm
ZmZmKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBu
b3QgY29tcGxldGVseSAwLiIpOwotCi1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29u
KDEpICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOwotc3RhdGljX2Fzc2Vy
dCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMg
YmUgc2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSAmIDB4
NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0
LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSAmIDB4NCks
ICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25z
dEV4cHJQb2lzb24oMHhmZmZmZmZmZikgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBz
ZXQuIik7Ci0KLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHgzKSwg
ImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMg
ZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAm
IDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3Ig
dXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29u
KDEwMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxh
YmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4
cHJQb2lzb24oMTAwMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBh
cmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGljX2Fzc2VydCghKG1h
a2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdu
bWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNf
YXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSAmIDB4MyksICJlbnN1cmUg
Ym90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0
cy4iKTsKLSNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQotCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihC
YWc8RHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9pZCopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNp
emVvZihQb2lzb25lZEJhZzxkdW1teVBvaXNvbiwgRHVtbXlTdHJ1Y3Q+KSA9PSBzaXplb2Yodm9p
ZCopLCAiIik7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtOTUsNyArOTUsNiBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKLSAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RlcXVlLmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03NjUsNyArNzY1
LDYgQEAKIAkJRkUwNUZBRUMxRkRCNTEwQTAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVCMUZEQjUx
MDIwMDA5MzIzMCAvKiBQb2lzb25lZFJlZi5jcHAgKi87IH07CiAJCUZFMDVGQUVEMUZEQjUxMEUw
MDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29uZWRS
ZWZQdHIuY3BwICovOyB9OwogCQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZB
RUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLzsgfTsKLQkJRkUwNUZBRjExRkUw
OENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBD
b25zdEV4cHJQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFMDVGQjA2MUZFODRGQjcwMDA5MzIzMCAv
KiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTA1RkIwNTFGRTg0RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQ
dHIuY3BwICovOyB9OwogCQlGRUM4RjRFNzFGRTlDOTA1MDA1NkZEOEEgLyogUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8q
IFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLzsg
fTsKIAkJRkVDOEY0RUIxRkU5RjVBRjAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9u
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzhGNEVBMUZFOUY1QTcwMDU2RkQ4QSAvKiBQb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgKi87IH07CkBA
IC0xODgxLDcgKzE4ODAsNiBAQAogCQlGRTA1RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29u
ZWRSZWZQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29u
ZWRSZWZQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFFQjFGREI1
MTAyMDAwOTMyMzAgLyogUG9pc29uZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pc29uZWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29u
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkIwNTFGRTg0RkFFMDAw
OTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUM4RjRFNjFGRTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY1NCw3ICsy
NjUyLDYgQEAKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkwRjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29u
Y3VycmVudFB0ckhhc2hTZXQuY3BwICovLAogCQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAv
KiBDb25kaXRpb24uY3BwICovLAotCQkJCUZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25z
dEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENy
b3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENT
dHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5j
cHAgKi8sCkBAIC0zMjIxLDcgKzMyMTgsNiBAQAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNG
MyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzMENCNUMxRkNFMTc5NjAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUMzMUQwQTU5MEMwMEZFQkNGMyAvKiBDb25kaXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhw
clBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUE2MUQwQTU5MEMwMEZFQkNG
MyAvKiBDb3VudGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBDMDBG
RUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBRDFEMEE1OTBD
MDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCShyZXZpc2lv
biAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lz
b25lZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwzODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
Ci0jaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCi0jaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+Ci0KLW5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEg
PSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLQotLy8g
Rm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNz
LiBGb3IgdGhpcyBwdXJwb3NlLAotLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZl
ZFJlZkxvZ2dlciBjbGFzc2VzLgotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMp
Ci17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7Ci0KLSAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKLSAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1w
dHkudW5wb2lzb25lZCgpKTsKLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKLQotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgICAg
IHVpbnRwdHJfdCBwdHJCaXRzOwotICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwg
c2l6ZW9mKHB0ckJpdHMpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90PigmYSkpOwotI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAg
ICAgQVNTRVJUX1RSVUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojpp
c1BvaXNvbmVkKHB0ckJpdHMpKSk7Ci0jZW5kaWYKLSNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQot
ICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcHRyID0gJmE7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMihwMSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHAzKHAxKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMo
KSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMiA9IHAxOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwMyA9IHAxOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMu
Yml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0g
JmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0g
V1RGTW92ZShwMyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1vdmUocDEpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDQoV1RGTW92ZShwMykpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
LQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAm
YTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBX
VEZNb3ZlKHAxKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIHB0ci5jbGVhcigpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRy
LnVucG9pc29uZWQoKSk7Ci0gICAgfQotfQotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwg
QXNzaWdubWVudCkKLXsKLSAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKLSAgICBSZWZMb2dn
ZXIgYigiYiIpOwotICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwotCi0gICAgewotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAxID0gcDI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwg
cDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZh
KTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgcHRyID0gJmI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLnVucG9pc29uZWQoKSk7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBwdHIgPSBudWxscHRyOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVu
cG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIHAxID0gV1RGTW92ZShwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2Vy
Kj4gcDIoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBwMjsKLSAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmMsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25C
LCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gJmM7Ci0gICAgICAgIEFTU0VSVF9F
USgmYywgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51
bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9IFdURk1vdmUocDIpOwotICAgICAgICBBU1NFUlRf
RVEoJmMsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lz
b25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZM
b2dnZXIqPiBwNCgmYyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IFdU
Rk1vdmUocDQpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIgPSBwdHI7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOwotI2lmIENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vu
a25vd24tcHJhZ21hcyIKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYt
bW92ZSIKLSNlbmRpZgotICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7Ci0jaWYgQ09NUElMRVIo
Q0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci19Ci0KLVRFU1QoV1RGX0NvbnN0
RXhwclBvaXNvbmVkLCBTd2FwKQotewotICAgIFJlZkxvZ2dlciBhKCJhIik7Ci0gICAgUmVmTG9n
Z2VyIGIoImIiKTsKLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMS5z
d2FwKHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkp
OwotICAgICAgICBwMy5zd2FwKHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDMuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJp
dHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHN3
YXAocDEsIHAyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVk
KCkpOwotICAgICAgICBzd2FwKHAzLCBwNCk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpID09IHAzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBw
NC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmIsIHAyKTsKLSAgICAgICAgc3dhcChwMSwgcDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAx
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIpOwotCi0gICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwMikpOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEoJmEpOwotICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyKTsKLSAgICAg
ICAgcDEuc3dhcChwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMik7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7Ci0gICAgfQotfQotCi1zdGF0aWMg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVm
TG9nZ2VyJiBsb2dnZXIpCi17Ci0gICAgcmV0dXJuIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+KCZsb2dnZXIpOwotfQotCi1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwg
UmV0dXJuVmFsdWUpCi17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7Ci0KLSAgICB7Ci0g
ICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7Ci0gICAgfQotfQotCi19IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBA
QAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKK25hbWVzcGFjZSB7CisKIHVpbnRwdHJf
dCBnX3Rlc3RQb2lzb25BOwogdWludHB0cl90IGdfdGVzdFBvaXNvbkI7CiAKQEAgLTQ1LDYgKzQ3
LDggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKQogICAgIH0pOwogfQogCit9
IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKKwogLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEg
YmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNzLiBGb3IgdGhpcyBwdXJwb3NlLAogLy8gd2Ug
cmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZlZFJlZkxvZ2dlciBjbGFzc2VzLgogCkBAIC05
MiwxMSArOTYsOSBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9F
USgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09
IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CiAgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAz
LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0xMDYsMTEgKzEwOCw5IEBAIFRF
U1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAot
I2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIs
IFJlZkxvZ2dlcio+IHAzID0gcDE7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0jZW5k
aWYKICAgICB9CiAKICAgICB7CkBAIC0xMjAsMTMgKzEyMCwxMSBAQCBURVNUKFdURl9Qb2lzb25l
ZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlY
RURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MyA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9
IFdURk1vdmUocDMpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RS
VUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0x
MzYsMTYgKzEzNCwxMyBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOwogICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51
bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKLSNlbmRpZgogICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsK
ICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKQEAg
LTE1Nyw5ICsxNTIsNyBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ICE9IHAzLmJpdHMoKSk7CiAgICAgfQotI2VuZGlmCiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09O
KQogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dl
cio+IHAxID0gJmE7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAyID0gV1RGTW92ZShwMSk7CkBAIC0xNzMsNyArMTY2LDYgQEAgVEVTVChXVEZfUG9pc29uZWQs
IEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAg
IEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAgIH0KLSNlbmRpZgogCiAg
ICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEp
OwpAQCAtMjAwLDcgKzE5Miw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwogICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKQEAgLTIwOSw3ICsyMDAsNiBAQCBURVNUKFdU
Rl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNv
bmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAg
IEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgewpAQCAtMjM2LDcgKzIyNiw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQog
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikK
ICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwogICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKQEAgLTI0NSwxMCArMjM0LDggQEAgVEVT
VChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwogICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0K
IAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CkBAIC0yNjgsNyArMjU1LDYgQEAgVEVT
VChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7
CiAgICAgfQotI2VuZGlmCiAKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHB0cigmYSk7CkBAIC0yNzcsNyArMjYzLDYgQEAgVEVTVChXVEZfUG9pc29u
ZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7CiAgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKQEAgLTI5Nyw3ICsyODIs
NiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZj
LCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQu
Yml0cygpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKQEAgLTMzOSw3ICszMjMsNiBAQCBURVNUKFdU
Rl9Qb2lzb25lZCwgU3dhcCkKIAogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIu
Yml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7CkBAIC0zNTEsNyArMzM0LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXAp
CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
cDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0zNTks
MTcgKzM0MSwxMiBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgp
KTsKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBzd2FwKHAxLCBwMik7Ci0jZWxz
ZQotICAgICAgICBzdGQ6OnN3YXAocDEsIHAyKTsKLSNlbmRpZgogICAgICAgICBBU1NFUlRfRVEo
JmIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKIAogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKIAot
I2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVm
TG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7
CkBAIC0zODEsMTAgKzM1OCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogICAgICAgICBB
U1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAzLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikK
ICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZh
KTsKICAgICAgICAgUmVmTG9nZ2VyKiBwMigmYik7CkBAIC00MDgsNyArMzgzLDYgQEAgVEVTVChX
VEZfUG9pc29uZWQsIFN3YXApCiAKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7CiAgICAgfQotI2VuZGlmCiB9CiAKIHN0YXRpYyBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dn
ZXImIGxvZ2dlcikKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
UmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZFJlZi5jcHAJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjQgKzI2LDQ1IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVpbnQzMl90
IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJi
YjsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGljIGNvbnN0
IHVpbnQzMl90IFBvaXNvbkQgPSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29u
RSA9IDB4ZWVlZTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZmOworbmFt
ZXNwYWNlIHsKKwordWludHB0cl90IGdfcG9pc29uQTsKK3VpbnRwdHJfdCBnX3BvaXNvbkI7Cit1
aW50cHRyX3QgZ19wb2lzb25DOwordWludHB0cl90IGdfcG9pc29uRDsKK3VpbnRwdHJfdCBnX3Bv
aXNvbkU7Cit1aW50cHRyX3QgZ19wb2lzb25GOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9p
c29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsK
KyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8g
TWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3Bv
aXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9pc29uQiA9IG1ha2VQb2lzb24oKTsK
KyAgICAgICAgZ19wb2lzb25DID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkQgPSBt
YWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAg
Z19wb2lzb25GID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBh
bm9ueW1vdXMKIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIEJhc2ljKQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWY8UG9pc29uQSwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBv
aXNvbmVkUmVmPGdfcG9pc29uQSwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUp
OwogCkBAIC01MSwxNiArNzIsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEJhc2ljKQogICAg
ICAgICB1aW50cHRyX3QgcHRyQml0czsKICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZy
ZWYsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsKLSAgICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CisgICAg
ICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoUG9pc29uZWQ8Z19wb2lzb25BLCBSZWZMb2dnZXIqPigm
YSkuYml0cygpKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRf
VFJVRSgoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQo
cHRyQml0cykpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkPGdfcG9pc29uQSwgUmVm
TG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJM
RShQT0lTT04pCiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29u
QiwgUmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYoYSkpOworICAgICAgICBQb2lzb25lZFJlZjxnX3Bv
aXNvbkIsIFJlZkxvZ2dlcj4gcmVmKGFkb3B0UmVmKGEpKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCByZWYucHRyKCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnJlZi0+bmFtZSk7CiAg
ICAgfQpAQCAtNjksMTIgKzkwLDE0IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKIAog
VEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNv
bnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJi
Iik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxn
X3BvaXNvbkMsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5w
dHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGI7CkBAIC04NCw3
ICsxMDcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRCwgUmVmTG9n
Z2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBy
ZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkg
PDwgInwgIjsKICAgICAgICAgcmVmID0gYzsKQEAgLTk0LDcgKzExNyw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGMp
IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25FLCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAg
UG9pc29uZWRSZWY8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYg
PSBhZG9wdFJlZihiKTsKQEAgLTEwNCw3ICsxMjcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwg
QXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYo
YikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZjxQb2lzb25GLCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lz
b25GLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkp
OwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBhZG9wdFJlZihjKTsKQEAg
LTExNCwyNSArMTM3LDI3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiB9CiAKLXN0YXRpYyBQb2lzb25lZFJlZjxQb2lzb25CLCBSZWZMb2dnZXI+
IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4mJiByZWZlcmVuY2Up
CitzdGF0aWMgUG9pc29uZWRSZWY8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHBhc3NXaXRoUmVmKFBv
aXNvbmVkUmVmPGdfcG9pc29uQywgUmVmTG9nZ2VyPiYmIHJlZmVyZW5jZSkKIHsKICAgICByZXR1
cm4gV1RGTW92ZShyZWZlcmVuY2UpOwogfQogCiBURVNUKFdURl9Qb2lzb25lZFJlZiwgUmV0dXJu
VmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dn
ZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBj
KCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIFJlZkxvZ2dlcj4g
cmVmKHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4oYSkpKTsKKyAg
ICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQ
b2lzb25lZFJlZjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4oYSkpKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCByZWYucHRyKCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVm
PFBvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNv
bkQsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7
CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IHBhc3NXaXRoUmVmKGIpOwpA
QCAtMTQyLDIyICsxNjcsMjIgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFJldHVyblZhbHVlKQog
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwg
dGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25FLCBSZWZMb2dnZXI+IHB0cihwYXNzV2l0aFJlZihhKSk7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOwogICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRiwgRGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQSwgUmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgRGVyaXZlZFJlZkxvZ2dlcj4gcHRy
KCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25BLCBSZWZMb2dnZXI+IHB0cjIo
V1RGTW92ZShwdHIpKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWY8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gZGVyaXZlZFJlZmVy
ZW5jZShhKTsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQywgUmVmTG9nZ2VyPiBiYXNlUmVm
ZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZlcmVuY2UuY29weVJlZigpKSk7CisgICAgICAg
IFBvaXNvbmVkUmVmPGdfcG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gZGVyaXZlZFJlZmVyZW5j
ZShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25DLCBSZWZMb2dnZXI+IGJhc2VSZWZl
cmVuY2UocGFzc1dpdGhSZWYoZGVyaXZlZFJlZmVyZW5jZS5jb3B5UmVmKCkpKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBkZXJpdmVkUmVmZXJlbmNlLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBiYXNlUmVmZXJlbmNlLnB0cigpKTsKICAgICB9CkBAIC0xNjYsMTIgKzE5MSwxNCBAQCBU
RVNUKFdURl9Qb2lzb25lZFJlZiwgUmV0dXJuVmFsdWUpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVm
LCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBSZWZMb2dnZXIgYSgi
YSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVm
PFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkUs
IFJlZkxvZ2dlcj4gcDIoYik7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRCwgUmVmTG9n
Z2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAy
KGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0
cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5wdHIoKSk7CkBAIC0xODMsOCArMjEwLDgg
QEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
cmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkEsIFJlZkxvZ2dlcj4gcDIoYik7CisgICAgICAgIFBv
aXNvbmVkUmVmPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRS
ZWY8Z19wb2lzb25BLCBSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBw
Mi5wdHIoKSk7CkBAIC0xOTYsNyArMjIzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXAp
CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBv
aXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRiwg
UmVmTG9nZ2VyPiBwMShhKTsKICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcDIoYik7CiAgICAgICAg
IGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEucHRyKCkpOwpAQCAtMjA5
LDcgKzIzNiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+
IHAxKGEpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7
CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKQEAgLTIyMyw3ICsyNTAsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKIH0KIAogc3RydWN0IFBvaXNvbmVkUmVmQ2hlY2tpbmdS
ZWZMb2dnZXIgOiBSZWZMb2dnZXIgewotICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmPFBvaXNv
bkIsIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+OworICAgIHVzaW5nIFJlZiA9IFBvaXNv
bmVkUmVmPGdfcG9pc29uQiwgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlcj47CiAKICAgICBQ
b2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIHZvaWQg
cmVmKCk7CkBAIC0yNjEsNiArMjg4LDggQEAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZM
b2dnZXI6OkRlcgogCiBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWduQmVmb3JlRGVyZWYpCiB7
CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRQb2lzb25lZFJlZkNoZWNr
aW5nUmVmTG9nZ2VyIGEoImEiKTsKICAgICBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGIo
ImIiKTsKICAgICBEZXJpdmVkUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlciBjKCJjIik7Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZlB0ci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIu
Y3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
b2lzb25lZFJlZlB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0zMywyMiArMzQsNDIgQEAKIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29u
QSA9IDB4YWFhYTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOwotc3Rh
dGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkMgPSAweGNjY2M7Ci1zdGF0aWMgY29uc3QgdWludDMy
X3QgUG9pc29uRCA9IDB4ZGRkZDsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25FID0gMHhl
ZWVlOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkYgPSAweGZmZmY7CituYW1lc3BhY2Ug
eworCit1aW50cHRyX3QgZ19wb2lzb25BOwordWludHB0cl90IGdfcG9pc29uQjsKK3VpbnRwdHJf
dCBnX3BvaXNvbkM7Cit1aW50cHRyX3QgZ19wb2lzb25EOwordWludHB0cl90IGdfcG9pc29uRTsK
K3VpbnRwdHJfdCBnX3BvaXNvbkY7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkK
K3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0
ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICAvLyBNYWtlIHN1
cmUgd2UgZ2V0IDIgZGlmZmVyZW50IHBvaXNvbiB2YWx1ZXMuCisgICAgICAgIGdfcG9pc29uQSA9
IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19wb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgICAg
ICBnX3BvaXNvbkMgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9pc29uRCA9IG1ha2VQb2lz
b24oKTsKKyAgICAgICAgZ19wb2lzb25GID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNv
bkYgPSBtYWtlUG9pc29uKCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFub255bW91
cwogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBv
aXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCi0gICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uQSwgUmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3Bv
aXNvbkEsIFJlZkxvZ2dlcj4gZW1wdHk7CiAgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5Lmdl
dCgpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2Vy
PiBwdHIoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4g
cHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUp
OwpAQCAtNTcsNzAgKzc4LDcwIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBCYXNpYykKICAg
ICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAm
cHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0gICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAo
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOworICAg
ICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNvbmVkPGdfcG9pc29uQiwgUmVmTG9nZ2VyKj4o
JmEpLmJpdHMoKSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJU
X1RSVUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVk
KHB0ckJpdHMpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZDxnX3BvaXNvbkIsIFJl
ZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFC
TEUoUE9JU09OKQogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkMsIFJlZkxvZ2dlcj4gcHRyID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9p
c29uQywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0
KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQs
IFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVm
TG9nZ2VyPiBwMihwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9n
Z2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dl
cj4gcDIocDEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHAyID0gcDE7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsK
ICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNU
X0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7
CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVm
TG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dn
ZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBS
ZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVm
TG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5n
ZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAx
ID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBw
MTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDIg
PSBwMTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkg
ZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShw
MSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4g
cDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAy
ID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgcHRyID0gbnVsbHB0cjsKICAgICAgICAg
RVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CkBAIC0xMzAsMTAgKzE1MSwxMiBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBB
c3NpZ25QYXNzUmVmVG9Qb2lzb25lZFJlZlB0cikKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygp
OworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAgICAgewogICAgICAgICBSZWY8UmVm
TG9nZ2VyPiBwYXNzUmVmKGEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZM
b2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdf
cG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTE0MSwxMyArMTY0LDE1IEBAIFRF
U1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25QYXNzUmVmVG8KIAogVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIEFkb3B0KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKIAotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxv
Z2dlcj4gZW1wdHk7CisgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IGVt
cHR5OwogICAgIEVYUEVDVF9FUShudWxscHRyLCBlbXB0eS5nZXQoKSk7CiAKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwdHIoYWRvcHRS
ZWYoJmEpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUp
OwpAQCAtMTU1LDcgKzE4MCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBZG9wdCkKICAg
ICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIgPSBhZG9w
dFJlZigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBw
dHIgPSBhZG9wdFJlZigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAg
ICB9CiAgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CkBAIC0xNjMsMTMgKzE4OCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiAK
IFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIg
YigiYiIpOwogICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEu
Z2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkg
PDwgInwgIjsKQEAgLTE4MSw3ICsyMDgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNz
aWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCByZWYoYikgZGVyZWYo
YSkgfCBkZXJlZihiKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAg
ICAgICAgcHRyID0gJmI7CkBAIC0xOTEsNyArMjE4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQ
dHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYo
YSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRy
ID0gYWRvcHRSZWYoJmIpOwpAQCAtMjAxLDcgKzIyOCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
UHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBk
ZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcHRyLmdldCgpKTsKICAgICAgICAgcHRyID0gbnVsbHB0cjsKICAgICAgICAgRVhQRUNUX0VR
KG51bGxwdHIsIHB0ci5nZXQoKSk7CkBAIC0yMDksOCArMjM2LDggQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uQywgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29u
QiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywg
UmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAg
LTIyMiw4ICsyNDksOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUs
IERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lz
b25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25F
LCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKQEAgLTIzNSw3ICsyNjIsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdu
bWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCByZWYoYykgZGVyZWYoYSkg
fCBkZXJlZihjKSBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAg
ICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAg
ICAgcHRyID0gJmM7CkBAIC0yNDUsNyArMjcyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIs
IEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkg
fCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0g
YWRvcHRSZWYoJmMpOwpAQCAtMjU1LDggKzI4Miw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRy
LCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJl
ZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVk
UmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PGdfcG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEo
JmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAg
IGxvZygpIDw8ICJ8ICI7CkBAIC0yNjgsNyArMjk1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQ
dHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYo
YSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRy
ID0gcHRyOwpAQCAtMjc4LDcgKzMwNSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3Np
Z25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGEpIGRlcmVmKGEpIHwgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHB0ci5nZXQoKSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaApAQCAtMjk2LDEyICszMjMsMTQgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFz
c2lnbm1lbnQpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBTd2FwKQogeworICAgIGluaXRp
YWxpemVQb2lzb25zKCk7CisKICAgICBSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBi
KCJiIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dl
cj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAy
KCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZh
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwpAQCAtMzEzLDggKzM0Miw4IEBAIFRF
U1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAg
ICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIGxv
ZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBF
WFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKQEAgLTMyOCwxMSArMzU3LDEzIEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmUHRyLCBTd2FwKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZU5v
bk51bGwpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJh
Iik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4g
cmVmUHRyID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4g
cmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdf
cG9pc29uRiwgUmVmTG9nZ2VyPiByZWZQdHIgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
Z19wb2lzb25CLCBSZWZMb2dnZXI+IHJlZiA9IHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOwogICAg
IH0KIAogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKQEAgLTM0MCwzNyArMzcxLDM5IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBS
ZWxlYXNlTm9uTnVsbCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiB7Cisg
ICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwog
ICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAm
YTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RG
TW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAy
LmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25DLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAg
IEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIu
Z2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkQsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBS
ZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZM
b2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dn
ZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMzgyLDgg
KzQxNSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNlKQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZM
b2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgRGVyaXZlZFJl
ZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxv
Z2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIERlcml2ZWRS
ZWZMb2dnZXI+IHAyKCZjKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAt
Mzk1LDEzICs0MjgsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKLXN0YXRpYyBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBS
ZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQorc3RhdGljIFBvaXNvbmVkUmVmUHRyPGdf
cG9pc29uQywgUmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxvZ2dlcikKIHsKLSAgICByZXR1cm4g
UG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPigmbG9nZ2VyKTsKKyAgICByZXR1cm4g
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+KCZsb2dnZXIpOwogfQogCiBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgUmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNv
bnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCiAgICAgewpAQCAtNDMyLDIw
ICs0NjcsMjIgQEAgc3RhdGljIENvbnN0UmVmQ291bnRlZCYgcmV0dXJuUmVmQ291bnRlZAogCiBU
RVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQ29uc3QpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMo
KTsKKwogICAgIC8vIFRoaXMgdGVzdCBwYXNzZXMgaWYgaXQgY29tcGlsZXMgd2l0aG91dCBhbiBl
cnJvci4KICAgICBhdXRvIGEgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0ZSgpOwogICAgIFJlZjxj
b25zdCBDb25zdFJlZkNvdW50ZWQ+IGIgPSBXVEZNb3ZlKGEpOwotICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkQsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYyA9IGIucHRyKCk7CisgICAgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25ELCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOwog
ICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRS
ZWYoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+
IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKLSAg
ICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOwot
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaChmKTsK
KyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZSA9
ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNv
bkYsIENvbnN0UmVmQ291bnRlZD4gZiA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CisgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOwor
ICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBoKGYp
OwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGkocmV0dXJuUmVmQ291bnRlZFJlZigp
KTsKIH0KIAogc3RydWN0IFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dn
ZXIgewotICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFBvaXNvbmVkUmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXI+OworICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmUHRyPGdf
cG9pc29uRCwgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj47CiAKICAgICBQb2lzb25l
ZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIHZvaWQgcmVm
KCk7CkBAIC00NzksNiArNTE2LDggQEAgdm9pZCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9n
Z2VyOjpkZQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWduQmVmb3JlRGVyZWYpCiB7
CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdS
ZWZMb2dnZXIgYSgiYSIpOwogICAgIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYigi
YiIpOwogCkBAIC01NDMsNiArNTgyLDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2ln
bkJlZm9yZURlcgogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZU5vbk51bGxCZWZv
cmVEZXJlZikKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUG9pc29uZWRSZWZQ
dHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHIuY3BwCShyZXZpc2lv
biAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1
ZVB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0ICsyNSwyNiBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAKKyNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvUG9pc29uZWRVbmlx
dWVQdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCi1j
b25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotY29uc3QgdWludDMyX3QgUG9pc29uQiA9
IDB4YmJiYjsKK3VpbnRwdHJfdCBnX3BvaXNvbkE7Cit1aW50cHRyX3QgZ19wb2lzb25COworCitz
dGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9m
bGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25j
ZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lz
b24gdmFsdWVzLgorICAgICAgICBnX3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIHdo
aWxlICghZ19wb2lzb25CIHx8IGdfcG9pc29uQiA9PSBnX3BvaXNvbkEpCisgICAgICAgICAgICBn
X3BvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgfSk7Cit9CiAKIHN0cnVjdCBMb2dnZXIgewog
ICAgIExvZ2dlcihjb25zdCBjaGFyKiBuYW1lLCBpbnQmIGRlc3RydWN0Q291bnQpCkBAIC02MSwx
MyArNzMsMTUgQEAgc3RydWN0IE90aGVyIHsKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIs
IEJhc2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHku
Yml0cygpKTsKICAgICB9CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IGVtcHR5KG51bGxwdHIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj4gZW1wdHkobnVsbHB0cik7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRy
LCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJpdHMo
KSk7CiAgICAgfQpAQCAtNzYsNyArOTAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwg
QmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciog
YSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOwpA
QCAtODcsNyArMTAxLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAg
ICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KGEpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgICAgICBBU1NFUlRfVFJV
RSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPjo6aXNQb2lzb25lZChwdHJCaXRz
KSkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5B
QkxFKFBPSVNPTikKICAgICAgICAgfQpAQCAtOTYsNyArMTEwLDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAg
ICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcHRyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXI+IHB0cihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYiwgJipwdHIpOwpAQCAtMTA5LDcgKzEyMyw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsK
ICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBw
dHIgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+
IHB0ciA9IGE7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICB9CkBAIC0x
MTgsNyArMTMyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAg
ICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3
IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gYjsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBiOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShiLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgfQpAQCAtMTI5LDcgKzE0Myw3IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENv
dW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPjo6Y3JlYXRlKGFOYW1lLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRy
ID0gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+OjpjcmVhdGUoYU5hbWUsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTEzOSw3ICsxNTMs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVz
dHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGJOYW1lID0gImIiOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5hbWUs
IGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRMb2dn
ZXI+OjpjcmVhdGUoYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9
IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5u
YW1lKTsKQEAgLTE1MSw3ICsxNjUsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFz
aWMpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIq
IGFOYW1lID0gImEiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBMb2dnZXI+
KGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPGdfcG9pc29uQSwgTG9n
Z2VyPihhTmFtZSwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYU5hbWUsICZwdHItPm5hbWUpOwpA
QCAtMTYxLDcgKzE3NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAg
ICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogYk5hbWUg
PSAiYiI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+
KGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPGdfcG9pc29uQSwgRGVy
aXZlZExvZ2dlcj4oYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9
IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5u
YW1lKTsKQEAgLTE3MSw3ICsxODUsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFz
aWMpCiAgICAgICAgIGludCB1bmlxdWVEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3Qg
Y2hhciogdW5pcXVlTmFtZSA9ICJ1bmlxdWUiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZU5hbWUsIHVuaXF1ZURlc3RydWN0Q291bnQpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBEZXJpdmVkTG9nZ2VyPiBwdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZU5hbWUsIHVuaXF1ZURlc3Ry
dWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIHVuaXF1ZURlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSh1bmlxdWVOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE4MSw3
ICsxOTUsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGlu
dCB1bmlxdWVEZXJpdmVkRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIHVu
aXF1ZURlcml2ZWROYW1lID0gInVuaXF1ZSBkZXJpdmVkIjsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZURlcml2ZWROYW1lLCB1bmlxdWVEZXJpdmVkRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cj4gcHRyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVEZXJpdmVkTmFt
ZSwgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51
bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEodW5pcXVl
RGVyaXZlZE5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTk1LDE1ICsyMDksMTUgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2Vy
KCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJi
IiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwg
cDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwog
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZN
b3ZlKHAzKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
PiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dl
cj4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTIxOSwxNSArMjMzLDE1
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgTG9nZ2VyKiBh
ID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0g
bmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShw
MSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9p
c29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2Vy
PiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBi
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lz
b25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTI0Mywx
NSArMjU3LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAg
RGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
MS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92
ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDMuYml0cygpKTsKQEAgLTI2NywxNSArMjgxLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVk
TG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0g
bmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBh
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyKFdU
Rk1vdmUocDEpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9p
c29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2Vy
PiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiRGVz
dHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOwpAQCAtMjg5LDcgKzMwMyw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcHRyLnVucG9pc29uZWQoKSk7CkBAIC0zMDIsMTMgKzMxNiwxNSBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBB
c3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAg
IGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7
CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRy
KGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0
cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMzI1LDcgKzM0MSw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAw
OwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
PiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRy
ID0gbnVsbHB0cjsKQEAgLTM0NSw4ICszNjEsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ciwgQXNzaWdubWVudCkKICAgICAgICAgTG9nZ2VyKiBjID0gbmV3IExvZ2dlcigiYyIsIGNEZXN0
cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBkID0gbmV3IExvZ2dlcigiZCIsIGREZXN0cnVj
dENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcDIoYik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcj4gcDEoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcj4gcDIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwpAQCAtMzU3LDggKzM3Myw4IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICAgICAgQVNTRVJUX0VR
KGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIu
dW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExv
Z2dlcj4gcDQoZCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcj4gcDMoYyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExv
Z2dlcj4gcDQoZCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMzgxLDcgKzM5Nyw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBh
ID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIERlcml2
ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBw
dHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4g
cHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC00MDQsOCArNDIwLDggQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGMgPSBu
ZXcgRGVyaXZlZExvZ2dlcigiYyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExv
Z2dlciogZCA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJkIiwgZERlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxKGEp
OwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4g
cDIoYik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4g
cDEoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRM
b2dnZXI+IHAyKGIpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKQEAgLTQxNiw4ICs0MzIsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgICAgIEFTU0VSVF9FUShi
LCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVu
cG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gcDMoYyk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBEZXJp
dmVkTG9nZ2VyPiBwNChkKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QiwgRGVyaXZlZExvZ2dlcj4gcDQoZCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgY0Rlc3Ry
dWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtNDM4LDcgKzQ1NCw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQg
YURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgcHRyID0gYTsKQEAgLTQ1Miw3ICs0NjgsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0g
MDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
PiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihD
TEFORykKQEAgLTQ3MywxNCArNDg5LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBB
c3NpZ25tZW50KQogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKIHsKKyAgICBp
bml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQg
PSAwOwogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEg
PSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBu
ZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygp
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtNDkwLDgg
KzUwOCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBMb2dnZXI+IHA0OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBM
b2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwg
TG9nZ2VyPiBwNDsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTUxMSw4ICs1MjksOCBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHAyOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyPiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTUyMiw4ICs1NDAsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBi
OwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNDsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQ7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29u
ZWQoKSk7CkBAIC01MzgsMTMgKzU1NiwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwg
U3dhcCkKICAgICB9CiB9CiAKLXN0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXI+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogbG9nZ2VyKQorc3RhdGljIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGxvZ2dlcikKIHsK
LSAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPihsb2dnZXIpOwor
ICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4obG9nZ2VyKTsK
IH0KIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFJldHVyblZhbHVlKQogeworICAgIGlu
aXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9
IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZv
ck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlE
ZXN0cnVjdGlibGVBcnJheXMuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0
aWJsZUFycmF5cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDE0ICsyNSwyNiBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvUG9pc29u
ZWRVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2Ug
ewogCi1jb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotY29uc3QgdWludDMyX3QgUG9p
c29uQiA9IDB4YmJiYjsKK3VpbnRwdHJfdCBnX3BvaXNvbkE7Cit1aW50cHRyX3QgZ19wb2lzb25C
OworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVu
dCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAg
ICAgIHdoaWxlICghZ19wb2lzb25CIHx8IGdfcG9pc29uQiA9PSBnX3BvaXNvbkEpCisgICAgICAg
ICAgICBnX3BvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgfSk7Cit9CiAKIHN0cnVjdCBMb2dn
ZXIgewogICAgIExvZ2dlcigpIHsgfQpAQCAtNjIsOCArNzQsMTAgQEAgY29uc3QgaW50IGFycmF5
U2l6ZSA9IDU7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVz
dHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAg
ICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gZW1wdHk7
CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IGVtcHR5Owog
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAg
QVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KQEAgLTcyLDcgKzg2LDcgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3Ry
dWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJh
eVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBw
dHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CkBAIC04
NCw3ICs5OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAg
ICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RS
VUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPjo6aXNQb2lzb25lZChwdHJC
aXRzKSkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyW10+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAv
LyBFTkFCTEUoUE9JU09OKQogICAgICAgICB9CkBAIC05NSw3ICsxMDksNyBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3Vu
dCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwg
ImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBhOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gYTsKICAgICAgICAgICAgIEFTU0VS
VF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7
ICsraSkKQEAgLTEwOCw3ICsxMjIsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5v
blRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+OjpjcmVhdGUoYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT46OmNyZWF0ZShhcnJheVNpemUsIGFO
YW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpA
QCAtMTIxLDcgKzEzNSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciog
YU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2Vy
W10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1
ZTxnX3BvaXNvbkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZv
ciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTM0LDcgKzE0OCw3IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIg
PSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUs
IGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyW10+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxnX3BvaXNvbkEsIExvZ2dlcltd
PihhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAh
PSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFy
cmF5U2l6ZTsgKytpKQpAQCAtMTQ5LDE1ICsxNjMsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2Vy
PihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBt
YWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEg
PSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAy
ID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFE
ZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0ID0gV1RG
TW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0xNzMsMTUgKzE4NywxNSBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYSA9IG1h
a2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRz
KCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShw
MykpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4g
cDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJb
XT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENv
dW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwpAQCAtMTk3LDE1ICsyMTEsMTUg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dn
ZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwg
YkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAx
LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNCA9IFdU
Rk1vdmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dn
ZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBM
b2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1
Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOwpAQCAtMjIxLDE1ICsyMzUsMTUg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dn
ZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwg
YkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5i
aXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92
ZShwMykpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJb
XT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dn
ZXJbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENv
dW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yNDMsNyArMjU3LDcgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3Ry
dWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJh
eVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyLmNsZWFyKCk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcHRyLnVucG9pc29uZWQoKSk7CkBAIC0yNTYsMTMg
KzI3MCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlz
LCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAg
ICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9
IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEi
LCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+
KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lz
b25lZCgpKTsKQEAgLTI3OSw3ICsyOTUsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZv
ck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExv
Z2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcltdPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgcHRyID0gbnVsbHB0cjsKQEAgLTI5OSw4ICszMTUsOCBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYyA9IG1ha2VBcnJheTxM
b2dnZXI+KGFycmF5U2l6ZSwgImMiLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciog
ZCA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltd
PiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltd
PiBwMihiKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
W10+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dn
ZXJbXT4gcDIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwpAQCAtMzExLDggKzMyNyw4IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgICAgIEFTU0VSVF9FUShi
LCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVu
cG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcltdPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExv
Z2dlcltdPiBwNChkKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyW10+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25C
LCBMb2dnZXJbXT4gcDQoZCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMzMzLDcgKzM0OSw3IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJy
YXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIgPSBhOwpAQCAtMzQ3LDcgKzM2Myw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50
IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dl
cj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCkBAIC0zNjgsMTQg
KzM4NCwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlz
LCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAg
ICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5
U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMjsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJp
dHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTM4
NSw4ICs0MDMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC00MDYsOCArNDI0
LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBM
b2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJi
IiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDI7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC00MTcsOCArNDM1
LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkIsIExvZ2dlcltdPiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQiwgTG9nZ2VyW10+IHA0OwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9p
c29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtNDMzLDEzICs0NTEsMTUgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgIH0KIH0KIAotc3Rh
dGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwb2lzb25lZFB0ckZvbyhM
b2dnZXIqIGFycmF5KQorc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
W10+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogYXJyYXkpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPihhcnJheSk7CisgICAgcmV0dXJuIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+KGFycmF5KTsKIH0KIAogVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFJldHVyblZh
bHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBh
RGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+
KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFy
cmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9p
c29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCShyZXZpc2lv
biAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSA8bXV0ZXg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUG9pc29uZWRVbmlx
dWVQdHIuaD4KIApAQCAtMzIsOCArMzMsMTkgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiBuYW1lc3BhY2UgewogCi1jb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotY29uc3Qg
dWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKK3VpbnRwdHJfdCBnX3BvaXNvbkE7Cit1aW50cHRy
X3QgZ19wb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxf
b25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdl
dCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3BvaXNvbkEgPSBtYWtlUG9p
c29uKCk7CisgICAgICAgIHdoaWxlICghZ19wb2lzb25CIHx8IGdfcG9pc29uQiA9PSBnX3BvaXNv
bkEpCisgICAgICAgICAgICBnX3BvaXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgfSk7Cit9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBmaWxsQXJyYXkoVCYgYXJyYXksIGlu
dCBzaXplKQpAQCAtNDgsMTMgKzYwLDE1IEBAIHN0YXRpYyBjb25zdCBpbnQgYXJyYXlTaXplID0g
NTsKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVB
cnJheXMsIEJhc2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7Ci0gICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBlbXB0eTsKKyAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gZW1wdHk7CiAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVt
cHR5LmJpdHMoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IGVtcHR5KG51bGxwdHIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIGludFtdPiBlbXB0eShudWxscHRyKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0
cygpKTsKICAgICB9CkBAIC02Myw3ICs3Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
Rm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAg
ICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgJipw
dHIpOwogICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBA
IC03NCw3ICs4OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUK
ICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykp
OwogICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJU
X1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPjo6aXNQb2lzb25lZChwdHJC
aXRzKSkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgaW50W10+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBF
TkFCTEUoUE9JU09OKQogICAgICAgICB9CkBAIC04NCw3ICs5OCw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJy
YXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0ciA9IGE7CisgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0ciA9IGE7CiAgICAgICAgIEFTU0VSVF9FUShh
LCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKICAgICAg
ICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC05Miw3ICsxMDYsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+OjpjcmVhdGUoYXJyYXlTaXplKTsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBpbnRbXT46OmNyZWF0ZShhcnJheVNpemUpOwogICAgICAgICBBU1NFUlRf
VFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBmaWxsQXJyYXkocHRy
LCBhcnJheVNpemUpOwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsr
aSkKQEAgLTEwNSwxNiArMTE5LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJp
dmlhbGx5RGUKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAg
ZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
aW50W10+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBpbnRbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAx
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGZvciAoYXV0byBpID0g
MDsgaSA8IGFycmF5U2l6ZTsgKytpKQogICAgICAgICAgICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ld
KTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwot
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQgPSBXVEZNb3ZlKHAz
KTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNCA9IFdURk1vdmUo
cDMpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5w
b2lzb25lZCgpKTsKQEAgLTEyOCwxNiArMTQyLDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsK
ICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgaW50W10+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIGludFtdPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7
CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBmb3IgKGF1
dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKICAgICAgICAgICAgIEFTU0VSVF9FUShhW2ld
LCBwMltpXSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAz
ID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0KFdURk1v
dmUocDMpKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMg
PSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNChXVEZN
b3ZlKHAzKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwog
ICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9FUShiLCBw
NC51bnBvaXNvbmVkKCkpOwpAQCAtMTQ5LDcgKzE2Myw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXpl
XTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIHB0ci5jbGVhcigpOwogICAgICAgICBBU1NFUlRfVFJVRSgh
cHRyLnVucG9pc29uZWQoKSk7CkBAIC0xNTksMTMgKzE3MywxNSBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6
ZV07CiAgICAgICAgIGF1dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxB
cnJheShhLCBhcnJheVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAot
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFT
U0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyID0gYjsKICAgICAgICAg
QVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTc1LDcgKzE5MSw3IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5l
dyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAgICBBU1NF
UlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9IG51bGxwdHI7CiAgICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTE5MSwxNiArMjA3
LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAg
ZmlsbEFycmF5KGMsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZpbGxBcnJheShkLCBhcnJheVNpemUp
OwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMShhKTsKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyKGIpOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMShhKTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDIoYik7CiAgICAgICAgIEFTU0VSVF9FUShh
LCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoYiwgcDIudW5wb2lzb25lZCgp
KTsKICAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMi51bnBvaXNvbmVkKCkp
OwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyhjKTsKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0KGQpOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMyhjKTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBpbnRbXT4gcDQoZCk7CiAgICAgICAgIEFTU0VSVF9FUShj
LCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoZCwgcDQudW5wb2lzb25lZCgp
KTsKICAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKQEAgLTIxMiw3ICsyMjgsNyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcg
aW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogCi0gICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJU
X0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBhOwogICAgICAgICBBU1NF
UlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0yMjIsNyArMjM4LDcgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9F
UShhLCBwdHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCkBAIC0yMzksMTQgKzI1NSwxNiBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lz
b25zKCk7CisKICAgICB7CiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAg
ICAgICAgIGF1dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShh
LCBhcnJheVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCks
IGEpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RS
VUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC0yNTUsOCArMjczLDggQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQiwgaW50W10+IHA0OwogICAgICAgICBBU1NFUlRfRVEocDMudW5wb2lzb25lZCgp
LCBiKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtMjcyLDggKzI5MCw4IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6
ZSk7CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPiBwMjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IGludFtdPiBwMjsKICAgICAgICAgQVNTRVJUX0VRKHAxLnVucG9pc29uZWQoKSwgYSk7CiAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5w
b2lzb25lZCgpKTsKQEAgLTI4Miw4ICszMDAsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ckZvclRyaXZpYWxseURlCiAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwog
ICAgICAgICBBU1NFUlRfRVEocDIudW5wb2lzb25lZCgpLCBhKTsKIAotICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQ7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgaW50W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25C
LCBpbnRbXT4gcDQ7CiAgICAgICAgIEFTU0VSVF9FUShwMy51bnBvaXNvbmVkKCksIGIpOwogICAg
ICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVu
cG9pc29uZWQoKSk7CkBAIC0yOTQsMTMgKzMxMiwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQogfQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgaW50W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQorc3RhdGljIFBvaXNvbmVk
VW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQogewot
ICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4ocHRyKTsKKyAgICBy
ZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4ocHRyKTsKIH0KIAogVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFJl
dHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAg
IGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJh
eVNpemUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331177</attachid>
            <date>2018-01-11 23:53:21 -0800</date>
            <delta_ts>2018-01-12 17:15:36 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>129468</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAKIHByaXZhdGU6Ci0g
ICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLCB2b2lkKj4gbV93
cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9p
ZCo+IG1fd3JhcHBlZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODksOCAr
Mzg5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0
ZToKLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lz
b25lZE1hc21QdHIoMSk7IH0KLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1
ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigyKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1h
c21QdHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwg
MSk7IH0KKyAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJu
IFBvaXNvbmVkTWFzbVB0cihQcmVQb2lzb25lZCwgMik7IH0KIAogICAgIFBvaXNvbmVkTWFzbVB0
ciBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtODk0LDggKzg5NCw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzVGFpbENhbGxzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENv
ZGUtPmhhc1RhaWxDYWxscygpOyB9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBz
X3BvaXNvbiA9IG1ha2VDb25zdEV4cHJQb2lzb24oQ29kZUJsb2NrUG9pc29uKTsKLQogcHJvdGVj
dGVkOgogICAgIHZvaWQgZmluYWxpemVMTEludElubGluZUNhY2hlcygpOwogICAgIHZvaWQgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwpAQCAtOTc0LDcgKzk3Miw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZUJhc2U+IG1fb3duZXJFeGVj
dXRhYmxlOwogICAgIFdyaXRlQmFycmllcjxFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlPiBtX293
bmVyRWRnZTsKLSAgICBDb25zdEV4cHJQb2lzb25lZDxDb2RlQmxvY2tQb2lzb24sIFZNKj4gbV9w
b2lzb25lZFZNOworICAgIFBvaXNvbmVkPENvZGVCbG9ja1BvaXNvbiwgVk0qPiBtX3BvaXNvbmVk
Vk07CiAKICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3Ry
dWN0aW9uPiBtX2luc3RydWN0aW9uczsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV90aGlzUmVnaXN0
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3
LDcgKzg3LDggQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAg
IC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBhbiBleGNl
cHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0
PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6aml0
Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54b3JQdHIoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1Qw
KTsKKy8vICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJs
b2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQueG9yUHRyKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKENvZGVCbG9ja1BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsK
ICAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSklUQ29kZVR5cGU6
OmNvbW1vbkRhdGFPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICBqaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb21tb25EYXRhOjpmcmFtZVJl
Z2lzdGVyQ291bnRPZmZzZXQoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAvLyBUaGlzIGRvZXMg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoZnJhbWVSZWdpc3RlckNvdW50IC0gMSkqc2l6ZW9mKFJl
Z2lzdGVyKSB3aGVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyMjY3ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtMjUzMCw3ICsyNTMwLDcgQEAgX2xsaW50X29wX3Byb2ZpbGVf
dHlwZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQx
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVucG9pc29u
KENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MSwg
dDIpCiAgICAgIyB0MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJvZmlsZXJM
b2cuCiAgICAgbG9hZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2
NC5hc20JKHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBA
IG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgdW5wb2lzb24oQ29kZUJsb2Nr
UG9pc29uLCBQQikKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCB0MSkKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0K
ICAgICB2YWx1ZVByb2ZpbGUocjAsIChDYWxsT3BDb2RlU2l6ZSAtIDEpLCB0MykKQEAgLTQ4MCwy
NyArNDgwLDI3IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAg
ICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAot
bWFjcm8gc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhlblN0
cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVk
Vk1bc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHNjcmF0
Y2gpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoLCBzY3JhdGNoMikKICAg
ICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlE
VGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKICAgICBsb2FkcCBbc2NyYXRjaCwgc3Ry
dWN0dXJlSURUaGVuU3RydWN0dXJlLCA4XSwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCiBlbmQK
IAotbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRj
aCkKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3Ry
dWN0dXJlCi0gICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwg
c2NyYXRjaCkKKyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNjcmF0Y2goc3RydWN0dXJl
LCBzY3JhdGNoLCBzY3JhdGNoMikKIGVuZAogCi1tYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJl
ckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHN0cnVjdHVyZQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCi0gICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bY2VsbF0sIGNlbGwKLSAgICB1bnBvaXNvbihD
b2RlQmxvY2tQb2lzb24sIGNlbGwpCi0gICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCi0gICAg
bG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQotZW5kCisjbWFjcm8gbG9hZFN0
cnVjdHVyZUFuZENsb2JiZXJGaXJzdEFyZyhjZWxsLCBzdHJ1Y3R1cmUpCisjICAgIGxvYWRpIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJlCisjICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBjZWxsCisjICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lzb25lZFZNW2NlbGxdLCBj
ZWxsCisjICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgY2VsbCkKKyMgICAgbG9hZHAgVk06
OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3Rh
YmxlW2NlbGxdLCBjZWxsCisjICAgIGxvYWRwIFtjZWxsLCBzdHJ1Y3R1cmUsIDhdLCBzdHJ1Y3R1
cmUKKyNlbmQKIAogIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlci4KIApAQCAtNTYy
LDcgKzU2Miw3IEBAIG1hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3cKICAg
ICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIHJlc2V0IFBDLCBzaW5jZSB0aGUgc2xvd19wYXRoIGNs
b2JiZXJlZCB0aGVtLgogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbW92
ZSAwLCBQQwogICAgIGptcCBkb25lTGFiZWwKIGVuZApAQCAtNjQxLDcgKzY0MSw3IEBAIF9sbGlu
dF9vcF90b190aGlzOgogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwg
dGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmlu
YWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MSwgdDIpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQz
KQogICAgIGxvYWRwRnJvbUluc3RydWN0aW9uKDIsIHQyKQogICAgIGJwbmVxIHQxLCB0MiwgLm9w
VG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKGNvbnN0ZXhwciBvcF90b190aGlzX2xlbmd0aCkKQEAg
LTcyNCw3ICs3MjQsNyBAQCBtYWNybyBlcXVhbE51bGxDb21wYXJpc29uKCkKICAgICBtb3ZlIDAs
IHQwCiAgICAgam1wIC5kb25lCiAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZDoKLSAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0
Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCiAgICAgY3BlcSBTdHJ1Y3R1cmU6
Om1fZ2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgogICAgIHN0b3JlcSB0MSwgW2NmciwgdDIsIDhdCiAgICAgZGlzcGF0
Y2goY29uc3RleHByIG9wX2lzX3VuZGVmaW5lZF9sZW5ndGgpCiAubWFzcXVlcmFkZXNBc1VuZGVm
aW5lZDoKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSkKKyAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQzLCB0MSwgdDUpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MV0sIHQxCiAg
ICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QzXSwgdDEsIHQwCkBAIC0xNDMzLDcg
KzE0MzMsNyBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkOgogICAgIGxvYWRwIFN0cnVjdHVyZUNoYWlu
OjptX3ZlY3Rvclt0M10sIHQzCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogdDMsIG9rIGVu
ZCkKIAotICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEpCisgICAg
c3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSwgdDUpCiAgICAgbG9hZHEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZVt0Ml0sIHQyCiAgICAgYnFlcSB0MiwgVmFsdWVOdWxsLCAu
b3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluRG9uZQogLm9wUHV0QnlJZFRyYW5zaXRpb25DaGFpbkxv
b3A6CkBAIC0xNzQwLDcgKzE3NDAsNyBAQCBtYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGlt
bWVkaWF0ZUhhCiAgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCiAgICAgbG9hZHEgW2NmciwgdDAs
IDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCi0gICAgbG9hZFN0cnVj
dHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDEpCisgICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNo
KHQwLCB0MiwgdDEsIHQ1KQogICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBd
LCAudGFyZ2V0KQogICAgIGRpc3BhdGNoKDMpCiAKQEAgLTIwMDcsNyArMjAwNyw3IEBAIF9sbGlu
dF9vcF9jYXRjaDoKIAogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1Bv
aXNvbiwgUEIpCisgICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQiwgdDUpCiAgICAgbG9h
ZHAgVk06OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwg
UEMKICAgICByc2hpZnRwIDMsIFBDCkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBfbGxpbnRfb3BfcmVz
b2x2ZV9zY29wZToKIG1hY3JvIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2sob3BlcmFuZCwgc2xvd1Bh
dGgpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKG9wZXJhbmQsIHQwKQogICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDUpCiAgICAgbG9hZHBG
cm9tSW5zdHJ1Y3Rpb24oNSwgdDEpCiAgICAgYnBuZXEgdDIsIHQxLCBzbG93UGF0aAogZW5kCkBA
IC0yNTAwLDcgKzI1MDAsNyBAQCBfbGxpbnRfb3BfcHJvZmlsZV90eXBlOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0
MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICAjIHQxIGlzIGhv
bGRpbmcgdGhlIHBvaW50ZXIgdG8gdGhlIHR5cGVQcm9maWxlckxvZy4KICAgICBsb2FkcCBWTTo6
bV90eXBlUHJvZmlsZXJMb2dbdDFdLCB0MQogICAgICMgdDIgaXMgaG9sZGluZyB0aGUgcG9pbnRl
ciB0byB0aGUgY3VycmVudCBsb2cgZW50cnkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyMjY3ODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTIwNCw3ICsyMDQsNyBAQCBlbHNlCiAgICAgY29uc3QgTG93ZXN0
VGFnID0gRGVsZXRlZFZhbHVlVGFnCiBlbmQKIAotY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KKyMgY29uc3QgQ29kZUJsb2NrUG9pc29uID0gY29u
c3RleHByIENvZGVCbG9jazo6c19wb2lzb24KIAogIyBQdXRCeUlkRmxhZ3MgZGF0YQogY29uc3Qg
UHV0QnlJZFByaW1hcnlUeXBlTWFzayA9IGNvbnN0ZXhwciBQdXRCeUlkUHJpbWFyeVR5cGVNYXNr
CkBAIC03NTQsOSArNzU0LDEwIEBAIG1hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChkZXMKICAgICBlbmQKIGVuZAogCi1tYWNybyB1bnBvaXNvbihwb2lzb24sIGZpZWxkKQorbWFj
cm8gdW5wb2lzb24ocG9pc29uLCBmaWVsZCwgc2NyYXRjaCkKICAgICBpZiBQT0lTT04KLSAgICAg
ICAgeG9ycCBwb2lzb24sIGZpZWxkCisgICAgICAgIGxvYWRwIF9Db2RlQmxvY2tQb2lzb24sIHNj
cmF0Y2gKKyAgICAgICAgeG9ycCBzY3JhdGNoLCBmaWVsZAogICAgIGVuZAogZW5kCiAKQEAgLTEw
MjQsNyArMTAyNSw3IEBAIG1hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2MK
ICAgICAjIFNldCB1cCB0aGUgUEMuCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQgotICAgICAgICB1bnBvaXNvbihDb2RlQmxv
Y2tQb2lzb24sIFBCKQorICAgICAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIFBCLCBQQykK
ICAgICAgICAgbW92ZSAwLCBQQwogICAgIGVsc2UKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1t0MV0sIFBDCkBAIC0xMDM1LDcgKzEwMzYsNyBAQCBtYWNybyBwcm9sb2d1
ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgc3VicCBjZnIsIHQwLCB0MAogICAgIGJw
YSB0MCwgY2ZyLCAubmVlZFN0YWNrQ2hlY2sKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29u
ZWRWTVt0MV0sIHQyCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MikKKyAgICB1bnBv
aXNvbihDb2RlQmxvY2tQb2lzb24sIHQyLCB0MykKICAgICBpZiBDX0xPT1AKICAgICAgICAgYnBi
ZXEgVk06Om1fY2xvb3BTdGFja0xpbWl0W3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCiAgICAgZWxz
ZQpAQCAtMTYyMyw3ICsxNjI0LDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29u
LCB0MSkKKyAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxLCB0MykKICAgICBsb2FkYiBW
TTo6bV90cmFwcytWTVRyYXBzOjptX25lZWRUcmFwSGFuZGxpbmdbdDFdLCB0MAogICAgIGJ0cG56
IHQwLCAuaGFuZGxlVHJhcHMKIC5hZnRlckhhbmRsaW5nVHJhcHM6CkBAIC0xNjM5LDcgKzE2NDAs
NyBAQCBfbGxpbnRfb3BfY2hlY2tfdHJhcHM6CiBtYWNybyBhY3F1aXJlU2hhZG93Q2hpY2tlblBh
Y2tldChzbG93KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVC
bG9jazo6bV9wb2lzb25lZFZNW3QxXSwgdDEKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24s
IHQxKQorICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEsIHQyKQogICAgIGxvYWRwIFZN
OjptX3NoYWRvd0NoaWNrZW5bdDFdLCB0MgogICAgIGxvYWRwIFNoYWRvd0NoaWNrZW46Om1fbG9n
Q3Vyc29yW3QyXSwgdDAKICAgICBicGFlcSB0MCwgU2hhZG93Q2hpY2tlbjo6bV9sb2dFbmRbdDJd
LCBzbG93CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlci5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBzaXplX3QgZXN0aW1hdGVkU2l6ZShKU0NlbGwqKTsKIAogcHJpdmF0
ZToKLSAgICBDb25zdEV4cHJQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKKyAgICBQb2lzb25lZDxKU0FycmF5QnVmZmVyUG9pc29uLCBBcnJheUJ1ZmZl
cio+IG1faW1wbDsKIH07CiAKIGlubGluZSBBcnJheUJ1ZmZlciogdG9Qb3NzaWJseVNoYXJlZEFy
cmF5QnVmZmVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMzMg
KzI1LDUgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWVudW0gUG9pc29uIHsKLSAgICBOb3RQb2lzb25lZCA9IDAsIC8v
IFJlc2VydmVkIChhbmQgdW51c2VkKSBzbyB0aGF0IHBvaXNvbiBrZXlzIGFyZSBuZXZlciAwLgot
Ci0gICAgLy8gQWRkIG5ldyBwb2lzb24ga2V5cyBiZWxvdyBpbiBhbHBoYWJldGljYWwgb3JkZXIu
IFRoZSBvcmRlciBkb2Vzbid0IHJlYWxseQotICAgIC8vIG1hdHRlciwgYnV0IHdlIG1pZ2h0IGFz
IHdlbGwga2VlcCB0aGVtIGluIGFscGhhYmV0aWNhbGx5IG9yZGVyIGZvcgotICAgIC8vIGdyZWF0
ZXIgcmVhZGFiaWxpdHkuCi0gICAgQXJyYXlQcm90b3R5cGVQb2lzb24sCi0gICAgQ29kZUJsb2Nr
UG9pc29uLAotICAgIERhdGVJbnN0YW5jZVBvaXNvbiwKLSAgICBKU0FQSVdyYXBwZXJPYmplY3RQ
b2lzb24sCi0gICAgSlNBcnJheUJ1ZmZlclBvaXNvbiwKLSAgICBKU0NhbGxiYWNrT2JqZWN0UG9p
c29uLAotICAgIEpTR2xvYmFsT2JqZWN0UG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiwKLSAgICBKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiwKLSAgICBK
U1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24s
Ci0gICAgSlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLAotICAgIFN0cnVjdHVyZVRyYW5zaXRpb25U
YWJsZVBvaXNvbiwKLSAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24sCi19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIiAvLyBtbGFtCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJ
KHJldmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjMgQEAgdWludHB0cl90
IGdfZ2xvYmFsRGF0YVBvaXNvbjsKIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiB1aW50cHRy
X3QgZ19uYXRpdmVDb2RlUG9pc29uOwogCit1aW50cHRyX3QgQXJyYXlQcm90b3R5cGVQb2lzb247
Cit1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOwordWludHB0cl90IERhdGVJbnN0YW5jZVBvaXNv
bjsKK3VpbnRwdHJfdCBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb247Cit1aW50cHRyX3QgSlNBcnJh
eUJ1ZmZlclBvaXNvbjsKK3VpbnRwdHJfdCBKU0NhbGxiYWNrT2JqZWN0UG9pc29uOwordWludHB0
cl90IEpTR2xvYmFsT2JqZWN0UG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzUG9pc29uOwordWludHB0cl90IEpTU2NyaXB0RmV0Y2hlclBvaXNvbjsKK3VpbnRwdHJfdCBK
U1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uOwordWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0
YW5jZVBvaXNvbjsKK3VpbnRwdHJfdCBKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uOwordWludHB0
cl90IEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb247Cit1aW50cHRyX3QgSlNXZWJBc3NlbWJseVRh
YmxlUG9pc29uOwordWludHB0cl90IFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbjsKK3Vp
bnRwdHJfdCBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb247CisKIHZvaWQgaW5pdGlhbGl6ZVBvaXNv
bigpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKQEAg
LTQxLDYgKzU4LDIzIEBAIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpCiAgICAgICAgIGdfZ2xvYmFs
RGF0YVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKICAgICAgICAgZ19qaXRDb2RlUG9pc29uID0gbWFr
ZVBvaXNvbigpOwogICAgICAgICBnX25hdGl2ZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisK
KyAgICAgICAgQXJyYXlQcm90b3R5cGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIENv
ZGVCbG9ja1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgRGF0ZUluc3RhbmNlUG9pc29u
ID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU0FQSVdyYXBwZXJPYmplY3RQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTQXJyYXlCdWZmZXJQb2lzb24gPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIEpTQ2FsbGJhY2tPYmplY3RQb2lzb24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpT
R2xvYmFsT2JqZWN0UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1NjcmlwdEZldGNo
UGFyYW1ldGVyc1BvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgSlNTY3JpcHRGZXRjaGVy
UG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9p
c29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24g
PSBtYWtlUG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb24gPSBtYWtl
UG9pc29uKCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24gPSBtYWtlUG9pc29u
KCk7CisgICAgICAgIEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAg
ICAgICAgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29uID0gbWFrZVBvaXNvbigpOworICAg
ICAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7CiAgICAgfSk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQ
dHIuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUG9pc29uZWRQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsMjMgQEAgZXh0ZXJu
ICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2dsbwogZXh0ZXJuICJDIiBKU19FWFBPUlRE
QVRBIHVpbnRwdHJfdCBnX2ppdENvZGVQb2lzb247CiBleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKIAorZXh0ZXJuICJDIiBKU19FWFBPUlREQVRB
IHVpbnRwdHJfdCBBcnJheVByb3RvdHlwZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgQ29kZUJsb2NrUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVp
bnRwdHJfdCBEYXRlSW5zdGFuY2VQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWlu
dHB0cl90IEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNBcnJheUJ1ZmZlclBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFU
QSB1aW50cHRyX3QgSlNDYWxsYmFja09iamVjdFBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JU
REFUQSB1aW50cHRyX3QgSlNHbG9iYWxPYmplY3RQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzUG9pc29uOworZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBKU1NjcmlwdEZldGNoZXJQb2lzb247CitleHRlcm4g
IkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb247
CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJBc3NlbWJs
eU1lbW9yeVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgSlNXZWJB
c3NlbWJseU1vZHVsZVBvaXNvbjsKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3Qg
SlNXZWJBc3NlbWJseVRhYmxlUG9pc29uOworZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRw
dHJfdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb247CitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IFVubGlua2VkU291cmNlQ29kZVBvaXNvbjsKKwogc3RydWN0IENsYXNz
SW5mbzsKIAogdXNpbmcgUG9pc29uZWRDbGFzc0luZm9QdHIgPSBQb2lzb25lZDxnX2dsb2JhbERh
dGFQb2lzb24sIGNvbnN0IENsYXNzSW5mbyo+OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlz
aW9uIDIyNjc4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsOCArMTg3LDggQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaW5nbGVTbG90VHJhbnNpdGlvbldlYWtP
d25lcjsKLSAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBDb25zdEV4cHJQb2lz
b25lZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAqPjsKLSAg
ICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlUG9pc29uLCBXZWFrSW1wbCo+OworICAgIHVzaW5nIFBvaXNvbmVkVHJh
bnNpdGlvbk1hcFB0ciA9IFBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwg
VHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBQb2lzb25l
ZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFdlYWtJbXBsKj47CiAKICAgICBib29s
IGlzVXNpbmdTaW5nbGVTbG90KCkgY29uc3QKICAgICB7CkBAIC0xOTgsMTMgKzE5OCwxMyBAQCBw
cml2YXRlOgogICAgIFRyYW5zaXRpb25NYXAqIG1hcCgpIGNvbnN0CiAgICAgewogICAgICAgICBB
U1NFUlQoIWlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyKG1fZGF0YSkudW5wb2lzb25lZCgpOworICAgICAgICByZXR1cm4gUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyKFByZVBvaXNvbmVkLCBtX2RhdGEpLnVucG9pc29uZWQoKTsKICAg
ICB9CiAKICAgICBXZWFrSW1wbCogd2Vha0ltcGwoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRXZWFrSW1w
bFB0cihtX2RhdGEgJiB+VXNpbmdTaW5nbGVTbG90RmxhZykudW5wb2lzb25lZCgpOworICAgICAg
ICByZXR1cm4gUG9pc29uZWRXZWFrSW1wbFB0cihQcmVQb2lzb25lZCwgbV9kYXRhICYgflVzaW5n
U2luZ2xlU2xvdEZsYWcpLnVucG9pc29uZWQoKTsKICAgICB9CiAKICAgICB2b2lkIHNldE1hcChU
cmFuc2l0aW9uTWFwKiBtYXApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1RvV2FzbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNUb1dhc20uY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsOCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlCiAgICAgICAgIGlmICghQ29u
dGV4dDo6dXNlRmFzdFRMUygpKSB7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgd2FzbUNv
bnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Mod2FzbUNvbnRleHRJbnN0YW5jZUdQUiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZlBvaXNvbmVkSW5zdGFuY2UoKSksIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwotICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobWFrZUNvbnN0RXhw
clBvaXNvbihKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24pKSwgc2NyYXRjaFJlZyk7CisvLyAg
ICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KG1ha2VDb25zdEV4
cHJQb2lzb24oSlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uKSksIHNjcmF0Y2hSZWcpOworICAg
ICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJs
eUluc3RhbmNlUG9pc29uKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgICAgICBqaXQueG9yNjQoc2Ny
YXRjaFJlZywgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBqc09mZnNldCAr
PSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcuaAkocmV2aXNpb24gMjI2
Nzg0KQorKysgU291cmNlL1dURi93dGYvQmFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMCAr
MTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9yYWdlVHlwZSBt
X2hlYWQgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRwdHJf
dCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRl
PHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkQmFnID0gQmFnPFQsIENv
bnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFnTm9kZTxUPj4+OwordGVt
cGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZEJhZyA9IEJh
ZzxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFByaXZhdGU6OkJhZ05vZGU8VD4+PjsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI2Nzg0KQorKysg
U291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDYg
QEAKICNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJU
UyAwCiAKLS8vIE9sZGVyIHZlcnNpb25zIG9mIGdjYyBhbmQgY2xhbmcgaGF2ZSBhIGJ1ZyB3aGlj
aCByZXN1bHRzIGluIGJ1aWxkIGZhaWx1cmVzCi0vLyB3aGVuIHVzaW5nIHRlbXBsYXRlIG1ldGhv
ZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IG9mIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPgotLy8g
d2hlbiB0aGUgS2V5VHlwZSBpcyBhIHVpbnRwdHJfdCAoaS5lLiB3aGVuIHdlJ3JlIHVzaW5nIHRo
ZSBQb2lzb25lZCB2YXJpYW50Ci0vLyBvZiBQb2lzb25lZEltcGwpLiBUaGlzIGJ1ZyBkb2VzIG5v
dCBtYW5pZmVzdCBmb3IgdGhlIENvbnN0RXhwclBvaXNvbmVkIHZhcmlhbnQuCi0vLyBJbiBwcmFj
dGljZSwgd2Ugd2lsbCBsaWtlbHkgb25seSB1c2UgdGhlc2UgbWV0aG9kcyBmb3IgaW5zdGFudGlh
dGlvbnMgb2YgdGhlCi0vLyBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LiBIZW5jZS4gdGhpcyBi
dWcgaXMgbm90IGEgc2hvdyBzdG9wcGVyLgotLy8gVGhhdCBzYWlkLCB3ZSdsbCBkZWZpbmUgRU5B
QkxFX01JWEVEX1BPSVNPTiBhY2NvcmRpbmdseSBzbyB0aGF0IHdlIGNhbiB1c2UKLS8vIGl0IHRv
IGRpc2FibGUgdGhlIGFmZmVjdGVkIHRlc3RzIHdoZW4gYnVpbGRpbmcgd2l0aCBvbGQgY29tcGls
ZXJzLgotCi0jaWYgT1MoREFSV0lOKQotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2Ns
YW5nX21ham9yX18gPj0gOSkKLSNlbGlmIGRlZmluZWQoX19jbGFuZ19tYWpvcl9fKQotI2RlZmlu
ZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2NsYW5nX21ham9yX18gPj0gNCkKLSNlbGlmIGRlZmlu
ZWQoX19HTlVDX18pCi0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSNkZWZpbmUgRU5BQkxFX01JWEVE
X1BPSVNPTiAoX19HTlVDX1BSRVJFUSg3LCAyKSkKLSNlbmRpZiAvLyAhZGVmaW5lZChfX0dOVUNf
XykKLQotI2lmbmRlZiBFTkFCTEVfTUlYRURfUE9JU09OCi0jZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gMCAvLyBEaXNhYmxlIGZvciBldmVyeXRoaW5nIGVsc2UuCi0jZW5kaWYKLQogLy8gTm90
IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJl
Y2F1c2Ugb2YgbWlzc2luZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2Fi
bGVkLgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCkBAIC04OCwzMCArNjYs
MzMgQEAgYXNSZWZlcmVuY2UoVCBwdHIpIHsgcmV0dXJuICpwdHI7IH0KIAogfSAvLyBuYW1lc3Bh
Y2UgUG9pc29uZWRJbXBsSGVscGVyCiAKLS8vIEZJWE1FOiBvbmNlIHdlIGhhdmUgQysrMTcsIHdl
IGNhbiBtYWtlIHRoZSBrZXkgb2YgdHlwZSBhdXRvIGFuZCByZW1vdmUgdGhlIG5lZWQgZm9yIEtl
eVR5cGUuCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgotY2xhc3MgUG9pc29uZWRJbXBsIHsKK2VudW0gUHJlUG9pc29uZWRUYWcgeyBQcmVQb2lzb25l
ZCB9OworCit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBz
dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+PgorY2xhc3MgUG9pc29u
ZWQgewogcHVibGljOgotICAgIFBvaXNvbmVkSW1wbCgpIHsgfQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc1BvaXNvbmVkID0gdHJ1ZTsKIAotICAgIFBvaXNvbmVkSW1wbChzdGQ6Om51bGxw
dHJfdCkgeyB9CisgICAgUG9pc29uZWQoKSB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChUIHB0cikK
KyAgICBQb2lzb25lZChzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICBQb2lzb25lZChUIHB0cikK
ICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb24ocHRyKSkKICAgICB7IH0KIAotICAgIFBv
aXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQo
Y29uc3QgUG9pc29uZWQmKSA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwg
SzIgazIsIHR5cGVuYW1lIFQyPgotICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGw8
SzIsIGsyLCBUMj4mIG90aGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFt
ZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVkKGNv
bnN0IE90aGVyJiBvdGhlcikKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb248VD4ob3Ro
ZXIudW5wb2lzb25lZCgpKSkKICAgICB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChQb2lzb25lZElt
cGwmJiBvdGhlcikKKyAgICBQb2lzb25lZChQb2lzb25lZCYmIG90aGVyKQogICAgICAgICA6IG1f
cG9pc29uZWRCaXRzKFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQogICAgIHsgfQogCi0g
ICAgZXhwbGljaXQgUG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCisgICAg
ZXhwbGljaXQgUG9pc29uZWQoUHJlUG9pc29uZWRUYWcsIFBvaXNvbmVkQml0cyBwb2lzb25lZEJp
dHMpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQogCkBA
IC0xNDMsMTIgKzEyNCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7
IHJldHVybiAhbV9wb2lzb25lZEJpdHM7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX3BvaXNvbmVkQml0czsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0g
Yi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
IDw9IGIubV9wb2lzb25lZEJpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25l
ZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0
czsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
ID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29u
ZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4g
bV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjw9
KGNvbnN0IFBvaXNvbmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8PSBiLm1f
cG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9pc29uZWQmIGIpIGNv
bnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25l
ZEJpdHMgPj0gYi5tX3BvaXNvbmVkQml0czsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcj09KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgIT0gYjsgfQpAQCAtMTU3LDMzICsxMzgsNDEgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpID4gYjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+PSBi
OyB9CiAKLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICBQb2lzb25lZCYg
b3BlcmF0b3I9KFQgcHRyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24o
cHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9w
ZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQmIG9w
ZXJhdG9yPShjb25zdCBQb2lzb25lZCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0o
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICBQb2lzb25lZCYgb3Bl
cmF0b3I9KHN0ZDo6bnVsbHB0cl90KQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVk
JiBvcGVyYXRvcj0oY29uc3QgT3RoZXImIG90aGVyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25l
ZEJpdHMgPSBwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KIAotICAgIHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCisgICAgdm9pZCBz
d2FwKFBvaXNvbmVkJiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVk
Qml0cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0
cywgb3RoZXIubV9wb2lzb25lZEJpdHMpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMiwg
azIsIFQyPiYgbykKKyAgICB2b2lkIHN3YXAoc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZf
dDxPdGhlcjo6aXNQb2lzb25lZD4+CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhlcikKICAgICB7
CiAgICAgICAgIFQgdDEgPSB0aGlzLT51bnBvaXNvbmVkKCk7Ci0gICAgICAgIFQyIHQyID0gby51
bnBvaXNvbmVkKCk7CisgICAgICAgIFQgdDIgPSBvdGhlci51bnBvaXNvbmVkKCk7CiAgICAgICAg
IHN0ZDo6c3dhcCh0MSwgdDIpOwogICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7
Ci0gICAgICAgIG8gPSB0MjsKKyAgICAgICAgb3RoZXIubV9wb2lzb25lZEJpdHMgPSBPdGhlcjo6
cG9pc29uKHQyKTsKICAgICB9CiAKICAgICB2b2lkIHN3YXAoVCYgdDIpCkBAIC0yMTYsNjkgKzIw
NSwzMyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJp
dHMgeyAwIH07Ci19OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1lIFQx
LCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgotaW5saW5lIHZvaWQgc3dhcChQb2lz
b25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikKLXsK
LSAgICBhLnN3YXAoYik7Ci19CisgICAgdGVtcGxhdGU8dWludHB0cl90JiwgdHlwZW5hbWUsIHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWQ7Cit9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBL
MSwgSzEgazEsIHR5cGVuYW1lIFQxPgotaW5saW5lIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEs
IGsxLCBUMT4mIGEsIFQxJiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PFQ6OmlzUG9pc29uZWQ+PgoraW5saW5lIHZvaWQgc3dh
cChUJiBhLCBVJiBiKQogewogICAgIGEuc3dhcChiKTsKIH0KIAogV1RGX0VYUE9SVF9QUklWQVRF
IHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7CiAKLSNpZiBFTkFCTEUoUE9JU09OKQotLy8gRklYTUU6
IG9uY2Ugd2UgaGF2ZSBDKysxNywgd2UgY2FuIG1ha2UgdGhpcyBhIGxhbWJkYSBpbiBtYWtlQ29u
c3RFeHByUG9pc29uKCkuCi1pbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBjb25zdEV4cHJQb2lz
b25SYW5kb20odWludHB0cl90IHNlZWQpCi17Ci0gICAgdWludHB0cl90IHJlc3VsdDEgPSBzZWVk
ICogNjkwNjk2OTA2OSArIDEyMzQ1Njc7Ci0gICAgdWludHB0cl90IHJlc3VsdDIgPSBzZWVkICog
ODI1MzcyOSArIDIzOTY0MDM7Ci0gICAgcmV0dXJuIChyZXN1bHQxIDw8IDMpIF4gKHJlc3VsdDIg
PDwgMTYpOwotfQotI2VuZGlmCi0KLWlubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VDb25z
dEV4cHJQb2lzb24odWludDMyX3Qga2V5KQotewotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgdWlu
dHB0cl90IHBvaXNvbiA9IGNvbnN0RXhwclBvaXNvblJhbmRvbShrZXkpOwotICAgIHBvaXNvbiAm
PSB+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHhmZmZmKSA8PCA0OCk7IC8vIEVuc3VyZSB0aGF0
IHBvaXNvbmVkIGJpdHMgbG9vayBsaWtlIGEgcG9pbnRlci4KLSAgICBwb2lzb24gfD0gKDEgPDwg
Mik7IC8vIEVuc3VyZSB0aGF0IHBvaXNvbmVkIGJpdHMgY2Fubm90IGJlIDAuCi0gICAgcmV0dXJu
IHBvaXNvbjsKLSNlbHNlCi0gICAgcmV0dXJuICh2b2lkKWtleSwgMDsKLSNlbmRpZgotfQotCiB0
ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkID0gUG9p
c29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47Ci0KLXRlbXBsYXRlPHVpbnQzMl90IGtleSwg
dHlwZW5hbWUgVD4KLXVzaW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRw
dHJfdCwgbWFrZUNvbnN0RXhwclBvaXNvbihrZXkpLCBUPjsKLQotdGVtcGxhdGU8dWludDMyX3Qg
a2V5LCB0eXBlbmFtZSBUPgotc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzIHsKLSAg
ICB1c2luZyBTdG9yYWdlVHlwZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+Oworc3RydWN0
IFBvaXNvbmVkUHRyVHJhaXRzIHsKKyAgICB1c2luZyBTdG9yYWdlVHlwZSA9IFBvaXNvbmVkPGtl
eSwgVCo+OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgVT4gc3RhdGljIEFMV0FZU19JTkxJTkUgVCog
ZXhjaGFuZ2UoU3RvcmFnZVR5cGUmIHB0ciwgVSYmIG5ld1ZhbHVlKSB7IHJldHVybiBwdHIuZXhj
aGFuZ2UobmV3VmFsdWUpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5
cGVuYW1lIFQxPgotICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25lZElt
cGw8SzEsIGsxLCBUMT4mIGEsIFQxJiBiKSB7IGEuc3dhcChiKTsgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBl
bmFtZSBUMj4KLSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAoUG9pc29uZWRJbXBs
PEsxLCBrMSwgVDE+JiBhLCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIGIpIHsgYS5zd2FwKGIp
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+CisgICAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBzd2FwKFBvaXNvbmVkPGtleSwgVCo+JiBhLCBPdGhlciYgYikgeyBhLnN3YXAoYik7
IH0KIAogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlw
ZSYgcHRyKSB7IHJldHVybiBwdHIudW5wb2lzb25lZCgpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAotdXNpbmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKK3VzaW5nIFdURjo6UHJlUG9p
c29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZEJpdHM7Ci11
c2luZyBXVEY6Om1ha2VDb25zdEV4cHJQb2lzb247CiB1c2luZyBXVEY6Om1ha2VQb2lzb247Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgJKHJldmlzaW9uIDIyNjc4NCkKKysrIFNv
dXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEx
ICszMiwxNCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0
eXBlbmFtZSBULCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgotY2xhc3MgUG9pc29uZWRVbmlxdWVQ
dHIgOiBwdWJsaWMgQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj4gewordGVtcGxhdGU8dWludHB0
cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitjbGFzcyBQb2lz
b25lZFVuaXF1ZVB0ciA6IHB1YmxpYyBQb2lzb25lZDxrZXksIFQqPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwg
VCo+OworICAgIHVzaW5nIEJhc2UgPSBQb2lzb25lZDxrZXksIFQqPjsKIHB1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNQb2lzb25lZFVuaXF1ZVB0ciA9IHRydWU7CisgICAgdXNp
bmcgVmFsdWVUeXBlID0gVDsKKwogICAgIFBvaXNvbmVkVW5pcXVlUHRyKCkgPSBkZWZhdWx0Owog
ICAgIFBvaXNvbmVkVW5pcXVlUHRyKHN0ZDo6bnVsbHB0cl90KSA6IEJhc2UoKSB7IH0KICAgICBQ
b2lzb25lZFVuaXF1ZVB0cihUKiBwdHIpIDogQmFzZShwdHIpIHsgfQpAQCAtNDgsOCArNTEsOCBA
QCBwdWJsaWM6CiAgICAgICAgIDogQmFzZSh1bmlxdWUucmVsZWFzZSgpKQogICAgIHsgfQogCi0g
ICAgdGVtcGxhdGU8dWludDMyX3Qga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+PgotICAgIFBvaXNvbmVkVW5p
cXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyPGtleTIsIFU+JiYgcHRyKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29u
ZWRVbmlxdWVQdHIgJiYgc3RkOjppc19iYXNlX29mPFQsIHR5cGVuYW1lIE90aGVyOjpWYWx1ZVR5
cGU+Ojp2YWx1ZT4+CisgICAgUG9pc29uZWRVbmlxdWVQdHIoT3RoZXImJiBwdHIpCiAgICAgICAg
IDogQmFzZShwdHIudW5wb2lzb25lZCgpKQogICAgIHsKICAgICAgICAgcHRyLmNsZWFyV2l0aG91
dERlc3Ryb3koKTsKQEAgLTg5LDggKzkyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dWludDMyX3Qga2V5MiwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+Pgot
ICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0oUG9pc29uZWRVbmlxdWVQdHI8a2V5Miwg
VT4mJiBwdHIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjpl
bmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZFVuaXF1ZVB0ciAmJiBzdGQ6OmlzX2Jhc2Vfb2Y8
VCwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1
ZVB0ciYgb3BlcmF0b3I9KE90aGVyJiYgcHRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRoaXMg
PT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgaWYgKExJS0VMWSh0aGlzICE9IHN0YXRpY19jYXN0PHZv
aWQqPigmcHRyKSkpIHsKQEAgLTEyMiwyOCArMTI1LDMxIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAotICAgIHRlbXBsYXRl
PHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1
ZVB0cjsKKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVu
ZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwg
dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lk
PgordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVD4g
bWFrZVBvaXNvbmVkVW5pcXVlKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKIHsKICAgICByZXR1
cm4gUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUPjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVu
dHM+KGFyZ3VtZW50cykuLi4pOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+Ci1jbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgQ29uc3RFeHBy
UG9pc29uZWQ8a2V5LCBUKj4gewordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+
CitjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgUG9pc29uZWQ8a2V5
LCBUKj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVzaW5nIEJhc2UgPSBD
b25zdEV4cHJQb2lzb25lZDxrZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0gUG9pc29uZWQ8a2V5
LCBUKj47CiBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUG9pc29uZWRVbmlx
dWVQdHIgPSB0cnVlOworICAgIHVzaW5nIFZhbHVlVHlwZSA9IFRbXTsKKwogICAgIFBvaXNvbmVk
VW5pcXVlUHRyKCkgPSBkZWZhdWx0OwogICAgIFBvaXNvbmVkVW5pcXVlUHRyKHN0ZDo6bnVsbHB0
cl90KSA6IEJhc2UoKSB7IH0KICAgICBQb2lzb25lZFVuaXF1ZVB0cihUKiBwdHIpIDogQmFzZShw
dHIpIHsgfQogICAgIFBvaXNvbmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyJiYgcHRyKSA6
IEJhc2UoV1RGTW92ZShwdHIpKSB7IHB0ci5jbGVhcldpdGhvdXREZXN0cm95KCk7IH0KICAgICBQ
b2lzb25lZFVuaXF1ZVB0cihzdGQ6OnVuaXF1ZV9wdHI8VFtdPiYmIHVuaXF1ZSkgOiBQb2lzb25l
ZFVuaXF1ZVB0cih1bmlxdWUucmVsZWFzZSgpKSB7IH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90
IGtleTI+Ci0gICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVFtd
PiYmIHB0cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVu
YWJsZV9pZl90PE90aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0ZDo6aXNfc2FtZTxUW10s
IHR5cGVuYW1lIE90aGVyOjpWYWx1ZVR5cGU+Ojp2YWx1ZT4+CisgICAgUG9pc29uZWRVbmlxdWVQ
dHIoT3RoZXImJiBwdHIpCiAgICAgICAgIDogQmFzZShwdHIudW5wb2lzb25lZCgpKQogICAgIHsK
ICAgICAgICAgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3koKTsKQEAgLTE3OCw4ICsxODQsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50
MzJfdCBrZXkyPgotICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0oUG9pc29uZWRVbmlx
dWVQdHI8a2V5MiwgVFtdPiYmIHB0cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlw
ZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0
ZDo6aXNfc2FtZTxUW10sIHR5cGVuYW1lIE90aGVyOjpWYWx1ZVR5cGU+Ojp2YWx1ZT4+CisgICAg
UG9pc29uZWRVbmlxdWVQdHImIG9wZXJhdG9yPShPdGhlciYmIHB0cikKICAgICB7CiAgICAgICAg
IEFTU0VSVCh0aGlzID09IHN0YXRpY19jYXN0PHZvaWQqPigmcHRyKSB8fCB0aGlzLT51bnBvaXNv
bmVkKCkgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGlmIChMSUtFTFkodGhpcyAhPSBz
dGF0aWNfY2FzdDx2b2lkKj4oJnB0cikpKSB7CkBAIC0yMTEsMTAgKzIxNywxMCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBjbGVhcldpdGhvdXREZXN0cm95KCkgeyBCYXNlOjpjbGVhcigpOyB9CiAK
LSAgICB0ZW1wbGF0ZTx1aW50MzJfdCwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3Mg
UG9pc29uZWRVbmlxdWVQdHI7CisgICAgdGVtcGxhdGU8dWludHB0cl90JiwgdHlwZW5hbWUsIHR5
cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI7CiB9OwogCi10ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK3RlbXBsYXRl
PHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiBQb2lz
b25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gbWFrZVBvaXNvbmVkVW5pcXVlKHNpemVfdCBjb3VudCwg
QXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogewogICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0
cjxrZXksIFRbXT46OmNyZWF0ZShjb3VudCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1l
bnRzKS4uLik7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWYuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9SZWYuaAkocmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NiwxMCArMjU2LDEwIEBAIGlubGluZSBib29sIGlzKGNv
bnN0IFJlZjxBcmdUeXBlLCBQdHJUcmEKICAgICByZXR1cm4gaXM8RXhwZWN0ZWRUeXBlPihzb3Vy
Y2UuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+IHN0cnVj
dCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRlbXBsYXRlPHVpbnQzMl90
IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkUmVmID0gUmVmPFQsIENvbnN0RXhwclBv
aXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVu
YW1lIFQ+Cit1c2luZyBQb2lzb25lZFJlZiA9IFJlZjxULCBQb2lzb25lZFB0clRyYWl0czxrZXks
IFQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZkNv
dW50ZWRBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJh
eS5oCShyZXZpc2lvbiAyMjY3ODQpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
UmVmQ291bnRlZEFycmF5KHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgaWYgKCFzaXplKSB7
Ci0gICAgICAgICAgICBtX2RhdGEgPSAwOworICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05MCw3ICs5MCw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJyYXkoY29uc3QgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKICAgICB7CiAgICAgICAgIGlmIChvdGhl
ci5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fZGF0YSA9IDA7CisgICAgICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApA
QCAtMjM4LDEwICsyMzgsMTAgQEAgcHJpdmF0ZToKICAgICB0eXBlbmFtZSBQdHJUcmFpdHM6OlN0
b3JhZ2VUeXBlIG1fZGF0YSB7IG51bGxwdHIgfTsKIH07CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtl
eSwgdHlwZW5hbWUgVD4gc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzOwordGVtcGxh
dGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsK
IAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWRSZWZD
b3VudGVkQXJyYXkgPSBSZWZDb3VudGVkQXJyYXk8VCwgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFp
dHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5n
IFBvaXNvbmVkUmVmQ291bnRlZEFycmF5ID0gUmVmQ291bnRlZEFycmF5PFQsIFBvaXNvbmVkUHRy
VHJhaXRzPGtleSwgVD4+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dU
Ri93dGYvUmVmUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmUHRyLmgJKHJl
dmlzaW9uIDIyNjc4NCkKKysrIFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzYsMTAgKzI3NiwxMCBAQCBpbmxpbmUgYm9vbCBpcyhjb25zdCBSZWZQdHI8QXJnVHlw
ZSwgUHRyCiAgICAgcmV0dXJuIGlzPEV4cGVjdGVkVHlwZT4oc291cmNlLmdldCgpKTsKIH0KIAot
dGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29u
ZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0
IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+
Ci11c2luZyBQb2lzb25lZFJlZlB0ciA9IFJlZlB0cjxULCBDb25zdEV4cHJQb2lzb25lZFB0clRy
YWl0czxrZXksIFQ+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNp
bmcgUG9pc29uZWRSZWZQdHIgPSBSZWZQdHI8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47
CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAko
cmV2aXNpb24gMjI2Nzg0KQorKysgU291cmNlL1dURi93dGYvV1RGQXNzZXJ0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDM5ICszNSw5IEBAIG5hbWVzcGFjZSBXVEYgewogCiBuYW1lc3Bh
Y2Ugewogc3RydWN0IER1bW15U3RydWN0IHsgfTsKLWNvbnN0IHVpbnQzMl90IGR1bW15UG9pc29u
ID0gMHhmZmZmOwordWludHB0cl90IGR1bW15UG9pc29uID0gMDsKIH0KIAotI2lmIEVOQUJMRShQ
T0lTT04pCi1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxKSA+PiA0OCksICJw
b2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2Vy
dCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3Vs
ZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQ
b2lzb24oMTAwMCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9p
bnRlci4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSA+PiA0
OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGlj
X2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkgPj4gNDgpLCAicG9pc29uZWQg
Yml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtl
Q29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxk
IGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci0KLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQ
b2lzb24oMSkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBub3Qg
YmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lz
b24oMTAwKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBi
ZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNv
bigxMDAwKSA+PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBi
ZSBub3QgY29tcGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNv
bigxMDAwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBub3Qg
YmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lz
b24oMTAwMDAwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBu
b3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQ
b2lzb24oMHhmZmZmZmZmZikgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRzIHNo
b3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLQotc3RhdGljX2Fzc2VydCgobWFrZUNv
bnN0RXhwclBvaXNvbigxKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsK
LXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAmIDB4NCksICJiaXQgMiBz
aG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lz
b24oMTAwMCkgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNf
YXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSAmIDB4NCksICJiaXQgMiBzaG91bGQg
YWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAw
MDAwMCkgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNz
ZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpICYgMHg0KSwgImJpdCAyIHNob3Vs
ZCBhbHdheXMgYmUgc2V0LiIpOwotCi1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNv
bigxKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJs
ZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHBy
UG9pc29uKDEwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBh
dmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNv
bnN0RXhwclBvaXNvbigxMDAwKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJp
dHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQo
IShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxp
Z25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRp
Y19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApICYgMHgzKSwgImVuc3VyZSBi
b3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRz
LiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMHhmZmZmZmZmZikgJiAw
eDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVz
ZSBhcyBmbGFnIGJpdHMuIik7Ci0jZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKLQogc3RhdGljX2Fz
c2VydChzaXplb2YoQmFnPER1bW15U3RydWN0PikgPT0gc2l6ZW9mKHZvaWQqKSwgIiIpOwogc3Rh
dGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRCYWc8ZHVtbXlQb2lzb24sIER1bW15U3RydWN0Pikg
PT0gc2l6ZW9mKHZvaWQqKSwgIiIpOwogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDIyNjc4NCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDYgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9DaGVja2VkQXJpdGhtZXRpY09wZXJh
dGlvbnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbmN1cnJlbnRQ
dHJIYXNoU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25kaXRp
b24uY3BwCi0gICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNv
bmVkLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRh
c2suY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RhdGVNYXRoLmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EZXF1ZS5jcHAKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNzY1LDcgKzc2NSw2IEBACiAJCUZFMDVGQUVDMUZEQjUxMEEwMDA5MzIzMCAvKiBQb2lzb25l
ZFJlZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTA1RkFFQjFGREI1MTAyMDAwOTMyMzAgLyogUG9pc29uZWRSZWYuY3BwICovOyB9OwogCQlGRTA1
RkFFRDFGREI1MTBFMDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUExRkRCNTEwMTAwMDkzMjMw
IC8qIFBvaXNvbmVkUmVmUHRyLmNwcCAqLzsgfTsKIAkJRkUwNUZBRUYxRkUwNjQ1QjAwMDkzMjMw
IC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi87IH07Ci0J
CUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGMDFGRTA4Q0NE
MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovOyB9OwogCQlGRTA1RkIwNjFGRTg0
RkI3MDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZCMDUxRkU4NEZBRTAwMDkzMjMwIC8qIFBv
aXNvbmVkVW5pcXVlUHRyLmNwcCAqLzsgfTsKIAkJRkVDOEY0RTcxRkU5QzkwNTAwNTZGRDhBIC8q
IFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzhGNEU2MUZFOUM4
REUwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFy
cmF5cy5jcHAgKi87IH07CiAJCUZFQzhGNEVCMUZFOUY1QUYwMDU2RkQ4QSAvKiBQb2lzb25lZFVu
aXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM4RjRFQTFGRTlGNUE3MDA1NkZE
OEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMu
Y3BwICovOyB9OwpAQCAtMTg4MSw3ICsxODgwLDYgQEAKIAkJRkUwNUZBRUExRkRCNTEwMTAwMDkz
MjMwIC8qIFBvaXNvbmVkUmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBvaXNvbmVkUmVmUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUwNUZBRUIxRkRCNTEwMjAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0
RXhwclBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENv
bnN0RXhwclBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwNUZC
MDUxRkU4NEZBRTAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkVW5pcXVlUHRyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2VkUHRy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8q
IFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJp
dmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI2NTQsNyArMjY1Miw2IEBACiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENo
ZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJMEYzMENCNUIxRkNFMTc5MjAw
NEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLywKIAkJCQkwRkVBRTM2NzFCN0Qx
OUNCMDBDRTE3RjIgLyogQ29uZGl0aW9uLmNwcCAqLywKLQkJCQlGRTA1RkFGMDFGRTA4Q0NEMDAw
OTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovLAogCQkJCTUxNzE0RUI5MUQwODc0MTYw
MDQ3MjNDNCAvKiBDcm9zc1RocmVhZFRhc2suY3BwICovLAogCQkJCTI2QTJDNzJFMTVFMkU3M0Mw
MDVCMUExNCAvKiBDU3RyaW5nLmNwcCAqLywKIAkJCQk3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0Yg
LyogRGF0ZU1hdGguY3BwICovLApAQCAtMzIyMSw3ICszMjE4LDYgQEAKIAkJCQk3QzgzREVBMDFE
MEE1OTBDMDBGRUJDRjMgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMzBDQjVDMUZDRTE3OTYwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFz
aFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVDMzFEMEE1OTBDMDBGRUJDRjMgLyog
Q29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIz
MCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBNjFE
MEE1OTBDMDBGRUJDRjMgLyogQ291bnRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
QTkxRDBBNTkwQzAwRkVCQ0YzIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RFQUQxRDBBNTkwQzAwRkVCQ0YzIC8qIERlcXVlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVk
LmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q29uc3RFeHByUG9pc29uZWQuY3BwCShub25leGlzdGVudCkKQEAgLTEsMzg0ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgotI2luY2x1ZGUgPHd0Zi9Qb2lz
b25lZC5oPgotCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KLXN0YXRpYyBjb25zdCB1aW50
MzJfdCBQb2lzb25BID0gMHhhYWFhOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAw
eGJiYmI7Ci0KLS8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEg
ZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKLS8vIHdlIHJldXNlIHRoZSBSZWZMb2dn
ZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KLQotVEVTVChXVEZfQ29uc3RFeHByUG9p
c29uZWQsIEJhc2ljKQotewotICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwotCi0gICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7Ci0gICAgQVNTRVJUX0VR
KG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOwot
ICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7Ci0KLSNpZiBFTkFCTEUoUE9J
U09OKQotICAgICAgICB1aW50cHRyX3QgcHRyQml0czsKLSAgICAgICAgc3RkOjptZW1jcHkoJnB0
ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHB0ckJp
dHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsKLSNpZiBFTkFCTEUoUE9JU09OX0FT
U0VSVFMpCi0gICAgICAgIEFTU0VSVF9UUlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwotI2VuZGlmCi0jZW5kaWYgLy8gRU5B
QkxFKFBPSVNPTikKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSAhPSBwMy5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpICE9IHAzLmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMyA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBw
My51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7
Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAg
IEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0g
JmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0g
cDE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0g
cDE7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxv
Z2dlcio+IHAxID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyID0gV1RGTW92ZShwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9ICZh
OwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdU
Rk1vdmUocDMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIuY2xlYXIoKTsKLSAgICAgICAgQVNTRVJUX0VR
KG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLX0KLQotVEVTVChXVEZfQ29uc3RF
eHByUG9pc29uZWQsIEFzc2lnbm1lbnQpCi17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
Ci0gICAgUmVmTG9nZ2VyIGIoImIiKTsKLSAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKLQot
ICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigm
Yik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9IHAyOwotICAgICAgICBB
U1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzID0gcDQ7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIHB0ciA9ICZiOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBv
aXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gbnVsbHB0cjsKLSAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNv
bmVkKCkpOwotICAgICAgICBwMSA9IFdURk1vdmUocDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIs
IHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgp
KTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZi
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NF
UlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzID0gV1RGTW92ZShwNCk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZiLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVy
aXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAg
IHAxID0gcDI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9p
c29uZWQoKSk7Ci0gICAgICAgIHAzID0gcDQ7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0ciA9ICZjOwotICAg
ICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmMsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25C
LCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNv
bmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gcHRyOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSNpZiBDT01QSUxFUihDTEFORykK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdzZWxmLW1vdmUiCi0jZW5kaWYKLSAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOwot
I2lmIENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlm
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotfQotCi1U
RVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgU3dhcCkKLXsKLSAgICBSZWZMb2dnZXIgYSgiYSIp
OwotICAgIFJlZkxvZ2dlciBiKCJiIik7Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAx
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgcDEuc3dhcChwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMuc3dhcChwNCk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVk
KCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOwotICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAyLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkp
OwotICAgICAgICBzd2FwKHAxLCBwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwg
cDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgc3dhcChwMywgcDQpOwotICAgICAgICBBU1NFUlRf
RVEoJmIsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lz
b25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShw
Mi5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgUmVmTG9nZ2Vy
KiBwMigmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwMik7Ci0gICAgICAgIHN3YXAocDEsIHAyKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyKTsK
LQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4ocDIpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgUmVmTG9nZ2VyKiBwMigmYik7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZi
LCBwMik7Ci0gICAgICAgIHAxLnN3YXAocDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIpOwotCi0gICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwMikpOwotICAgIH0K
LX0KLQotc3RhdGljIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNv
bmVkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQotewotICAgIHJldHVybiBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKLX0KLQotVEVTVChXVEZfQ29uc3RF
eHByUG9pc29uZWQsIFJldHVyblZhbHVlKQotewotICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OwotCi0gICAgewotICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEs
ICYqcHRyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOwotICAgIH0K
LX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQotCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDggQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCituYW1lc3BhY2Ug
eworCiB1aW50cHRyX3QgZ190ZXN0UG9pc29uQTsKIHVpbnRwdHJfdCBnX3Rlc3RQb2lzb25COwog
CkBAIC00NSw2ICs0Nyw4IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUZXN0UG9pc29uKCkKICAg
ICB9KTsKIH0KIAorfSAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCisKIC8vIEZvciB0aGVzZSB0ZXN0
cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVy
cG9zZSwKIC8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xh
c3Nlcy4KIApAQCAtOTIsMTEgKzk2LDkgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOwogICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSAhPSBwMy5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMTA2LDEx
ICsxMDgsOSBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5i
aXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMTIwLDEzICsxMjAsMTEgQEAgVEVT
VChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0j
aWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDMgPSAmYTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVm
TG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBv
aXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CiAgICAg
ICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQog
CiAgICAgewpAQCAtMTM2LDE2ICsxMzQsMTMgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQog
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikK
ICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKICAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykp
OwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09O
KQogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dl
cio+IHAxID0gJmE7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAyID0gcDE7CkBAIC0xNTcsOSArMTUyLDcgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQog
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwogICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxF
KE1JWEVEX1BPSVNPTikKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERl
cml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOwpAQCAtMTczLDcgKzE2Niw2IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkLCBCYXNpYykKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVk
KCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICB9
Ci0jZW5kaWYKIAogICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcHRyKCZhKTsKQEAgLTIwMCw3ICsxOTIsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNz
aWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhF
RF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAz
KCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIp
OwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0yMDksNyArMjAw
LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVk
KCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRp
ZgogICAgIH0KIAogICAgIHsKQEAgLTIzNiw3ICsyMjYsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwg
QXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwogICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShN
SVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQo
JmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0yNDUsMTAg
KzIzNCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRf
RVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lz
b25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0j
ZW5kaWYKICAgICB9CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwogICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwpAQCAtMjY4LDcg
KzI1NSw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRf
RVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOwogICAgIH0KLSNlbmRpZgogCiAgICAgewogICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwpAQCAtMjc3LDcgKzI2Myw2IEBAIFRF
U1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51
bnBvaXNvbmVkKCkpOwogICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewog
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CiAgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CkBA
IC0yOTcsNyArMjgyLDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAg
IEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMu
Yml0cygpICE9IHA0LmJpdHMoKSk7CiAgICAgfQotI2VuZGlmCiAKICAgICB7CiAgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CkBAIC0zMzksNyArMzIz
LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAKICAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpICE9IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CiAgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKICAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwpAQCAtMzUxLDcgKzMzNCw2IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkLCBTd2FwKQogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CiAgICAgICAg
IEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAg
ICAgewpAQCAtMzU5LDE3ICszNDEsMTIgQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKICAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7Ci0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgc3dhcChw
MSwgcDIpOwotI2Vsc2UKLSAgICAgICAgc3RkOjpzd2FwKHAxLCBwMik7Ci0jZW5kaWYKICAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHAyLnVucG9pc29uZWQoKSk7CiAKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAy
LmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOwpAQCAtMzgxLDEwICszNTgsOCBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dh
cCkKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CiAgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAotI2lmIEVOQUJMRShN
SVhFRF9QT0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSgmYSk7CiAgICAgICAgIFJlZkxvZ2dlciogcDIoJmIpOwpAQCAtNDA4LDcgKzM4
Myw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogCiAgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihwMikpOwogICAgIH0KLSNlbmRpZgog
fQogCiBzdGF0aWMgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQ
dHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUG9pc29uZWRSZWYuY3BwCShyZXZpc2lvbiAyMjY3ODQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDI0ICsyNiw0NSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiUmVmTG9nZ2Vy
LmgiCisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBj
b25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBv
aXNvbkIgPSAweGJiYmI7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQyA9IDB4Y2NjYzsK
LXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25EID0gMHhkZGRkOwotc3RhdGljIGNvbnN0IHVp
bnQzMl90IFBvaXNvbkUgPSAweGVlZWU7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRiA9
IDB4ZmZmZjsKK25hbWVzcGFjZSB7CisKK3VpbnRwdHJfdCBnX3BvaXNvbkE7Cit1aW50cHRyX3Qg
Z19wb2lzb25COwordWludHB0cl90IGdfcG9pc29uQzsKK3VpbnRwdHJfdCBnX3BvaXNvbkQ7Cit1
aW50cHRyX3QgZ19wb2lzb25FOwordWludHB0cl90IGdfcG9pc29uRjsKKworc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVBvaXNvbnMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFs
aXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7
CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgMiBkaWZmZXJlbnQgcG9pc29uIHZhbHVlcy4K
KyAgICAgICAgZ19wb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkIgPSBt
YWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9pc29uQyA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAg
Z19wb2lzb25EID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkYgPSBtYWtlUG9pc29u
KCk7CisgICAgICAgIGdfcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgYW5vbnltb3VzCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKIHsK
KyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkEsIFJlZkxvZ2dlcj4gcmVmKGEp
OworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkEsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1l
LCAmcmVmLT5uYW1lKTsKIApAQCAtNTEsMTYgKzcyLDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
LCBCYXNpYykKICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAgICAgICAgIHN0ZDo6bWVtY3B5
KCZwdHJCaXRzLCAmcmVmLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICBBU1NFUlRfVFJVRShw
dHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0gICAgICAgIEFTU0VSVF9F
UShwdHJCaXRzLCAoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmEpLmJp
dHMoKSkpOworICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNvbmVkPGdfcG9pc29uQSwg
UmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAg
ICAgICAgQVNTRVJUX1RSVUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZDxn
X3BvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNl
bmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKGFkb3B0UmVmKGEpKTsKKyAgICAgICAgUG9p
c29uZWRSZWY8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihhKSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZy
ZWYtPm5hbWUpOwogICAgIH0KQEAgLTY5LDEyICs5MCwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJl
ZiwgQmFzaWMpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogeworICAgIGlu
aXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBS
ZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAg
UG9pc29uZWRSZWY8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYg
PSBiOwpAQCAtODQsNyArMTA3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQp
CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBv
aXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkQs
IFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGM7CkBAIC05NCw3ICsxMTcsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSB8IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRSwgUmVmTG9nZ2VyPiByZWYo
YSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiByZWYoYSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsK
ICAgICAgICAgcmVmID0gYWRvcHRSZWYoYik7CkBAIC0xMDQsNyArMTI3LDcgQEAgVEVTVChXVEZf
UG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJl
ZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNv
bmVkUmVmPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gYWRv
cHRSZWYoYyk7CkBAIC0xMTQsMjUgKzEzNywyNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNz
aWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCi1zdGF0aWMgUG9pc29uZWRSZWY8UG9pc29u
QiwgUmVmTG9nZ2VyPiBwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+
JiYgcmVmZXJlbmNlKQorc3RhdGljIFBvaXNvbmVkUmVmPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBw
YXNzV2l0aFJlZihQb2lzb25lZFJlZjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4mJiByZWZlcmVuY2Up
CiB7CiAgICAgcmV0dXJuIFdURk1vdmUocmVmZXJlbmNlKTsKIH0KIAogVEVTVChXVEZfUG9pc29u
ZWRSZWYsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBE
ZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2
ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25C
LCBSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dn
ZXI+KGEpKSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiByZWYo
cGFzc1dpdGhSZWYoUG9pc29uZWRSZWY8Z19wb2lzb25DLCBSZWZMb2dnZXI+KGEpKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAg
ICBQb2lzb25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29u
ZWRSZWY8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBwYXNz
V2l0aFJlZihiKTsKQEAgLTE0MiwyMiArMTY3LDIyIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBS
ZXR1cm5WYWx1ZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8
IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVm
KGEpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIERlcml2ZWRSZWZMb2dnZXI+IHB0
cigmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkEsIFJlZkxvZ2dlcj4gcHRyMihX
VEZNb3ZlKHB0cikpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIERlcml2ZWRS
ZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQSwgUmVm
TG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBw
dHIuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0KCkpOwogICAgIH0KICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+
IGRlcml2ZWRSZWZlcmVuY2UoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxv
Z2dlcj4gYmFzZVJlZmVyZW5jZShwYXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYo
KSkpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IGRl
cml2ZWRSZWZlcmVuY2UoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQywgUmVmTG9n
Z2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZlcmVuY2UuY29weVJlZigp
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgZGVyaXZlZFJlZmVyZW5jZS5wdHIoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgYmFzZVJlZmVyZW5jZS5wdHIoKSk7CiAgICAgfQpAQCAtMTY2LDEy
ICsxOTEsMTQgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFJldHVyblZhbHVlKQogCiBURVNUKFdU
Rl9Qb2lzb25lZFJlZiwgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAg
UmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogCiAgICAgewotICAgICAg
ICBQb2lzb25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKGEpOwotICAgICAgICBQb2lzb25l
ZFJlZjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBQb2lzb25lZFJlZjxnX3Bv
aXNvbkQsIFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRSwg
UmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMS5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOwpAQCAt
MTgzLDggKzIxMCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigp
LmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dn
ZXI+IHAxKGEpOwotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25BLCBSZWZMb2dnZXI+IHAyKGIp
OworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CisgICAg
ICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQSwgUmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9n
KCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYiwgcDIucHRyKCkpOwpAQCAtMTk2LDcgKzIyMyw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYo
YSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJl
ZjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHAy
KGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0
cigpKTsKQEAgLTIwOSw3ICsyMzYsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRh
a2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29u
RiwgUmVmTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25GLCBSZWZM
b2dnZXI+IHAxKGEpOwogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9n
KCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CkBAIC0yMjMsNyAr
MjUwLDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiB9CiAKIHN0cnVjdCBQb2lzb25l
ZFJlZkNoZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKLSAgICB1c2luZyBSZWYgPSBQb2lz
b25lZFJlZjxQb2lzb25CLCBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyPjsKKyAgICB1c2lu
ZyBSZWYgPSBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dn
ZXI+OwogCiAgICAgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1l
KTsKICAgICB2b2lkIHJlZigpOwpAQCAtMjYxLDYgKzI4OCw4IEBAIERlcml2ZWRQb2lzb25lZFJl
ZkNoZWNraW5nUmVmTG9nZ2VyOjpEZXIKIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbkJl
Zm9yZURlcmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUG9p
c29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZDaGVja2lu
Z1JlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dn
ZXIgYygiYyIpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRS
ZWZQdHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bv
aXNvbmVkUmVmUHRyLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNp
bmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUG9pc29uZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzMsMjIg
KzM0LDQyIEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVp
bnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9
IDB4YmJiYjsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGlj
IGNvbnN0IHVpbnQzMl90IFBvaXNvbkQgPSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3Qg
UG9pc29uRSA9IDB4ZWVlZTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZm
OworbmFtZXNwYWNlIHsKKwordWludHB0cl90IGdfcG9pc29uQTsKK3VpbnRwdHJfdCBnX3BvaXNv
bkI7Cit1aW50cHRyX3QgZ19wb2lzb25DOwordWludHB0cl90IGdfcG9pc29uRDsKK3VpbnRwdHJf
dCBnX3BvaXNvbkU7Cit1aW50cHRyX3QgZ19wb2lzb25GOworCitzdGF0aWMgdm9pZCBpbml0aWFs
aXplUG9pc29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNl
RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAg
ICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAg
ICBnX3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9pc29uQiA9IG1ha2VQb2lz
b24oKTsKKyAgICAgICAgZ19wb2lzb25DID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNv
bkQgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKKyAg
ICAgICAgZ19wb2lzb25GID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQorCit9IC8vIG5hbWVz
cGFjZSBhbm9ueW1vdXMKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEJhc2ljKQogeworICAg
IGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAot
ICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkEsIFJlZkxvZ2dlcj4gZW1wdHk7CisgICAgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25BLCBSZWZMb2dnZXI+IGVtcHR5OwogICAgIEVYUEVDVF9FUShudWxs
cHRyLCBlbXB0eS5nZXQoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25C
LCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1l
LCAmcHRyLT5uYW1lKTsKQEAgLTU3LDcwICs3OCw3MCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0
ciwgQmFzaWMpCiAgICAgICAgIHVpbnRwdHJfdCBwdHJCaXRzOwogICAgICAgICBzdGQ6Om1lbWNw
eSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMpKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
cHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PigmYSkpOwotICAgICAgICBBU1NFUlRf
RVEocHRyQml0cywgKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+KCZhKS5i
aXRzKCkpKTsKKyAgICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChQb2lzb25lZDxnX3BvaXNvbkIs
IFJlZkxvZ2dlcio+KCZhKS5iaXRzKCkpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0g
ICAgICAgIEFTU0VSVF9UUlVFKChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIq
Pjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWQ8
Z19wb2lzb25CLCBSZWZMb2dnZXIqPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlmCiAj
ZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHB0ciA9ICZhOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyID0gJmE7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIocDEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3Bv
aXNvbkQsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lz
b25FLCBSZWZMb2dnZXI+IHAyKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7
CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+
IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDIg
PSBwMTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHAxID0g
JmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBwMiA9IHAx
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJl
ZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAg
ICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxn
X3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBFWFBFQ1RfRVEo
bnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAg
ICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNf
c3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBEZXJpdmVk
UmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZM
b2dnZXI+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgRGVyaXZl
ZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBS
ZWZMb2dnZXI+IHAyID0gcDE7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dl
cj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBw
MiA9IFdURk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIERlcml2
ZWRSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwg
UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
cDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwog
CiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHB0cigm
YSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEp
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIHB0ciA9IG51bGxw
dHI7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwpAQCAtMTMwLDEwICsx
NTEsMTIgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEJhc2ljKQogCiBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQXNzaWduUGFzc1JlZlRvUG9pc29uZWRSZWZQdHIpCiB7CisgICAgaW5pdGlh
bGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIHsKICAg
ICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CkBAIC0xNDEsMTMg
KzE2NCwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWduUGFzc1JlZlRvCiAKIFRF
U1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBZG9wdCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygp
OworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKLSAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25DLCBSZWZMb2dnZXI+IGVtcHR5OworICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywg
UmVmTG9nZ2VyPiBlbXB0eTsKICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgZW1wdHkuZ2V0KCkpOwog
CiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHB0cihh
ZG9wdFJlZigmYSkpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dl
cj4gcHRyKGFkb3B0UmVmKCZhKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCAmKnB0cik7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1l
LCAmcHRyLT5uYW1lKTsKQEAgLTE1NSw3ICsxODAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0
ciwgQWRvcHQpCiAgICAgRVhQRUNUX1NUUkVRKCJkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dl
cj4gcHRyID0gYWRvcHRSZWYoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUs
IFJlZkxvZ2dlcj4gcHRyID0gYWRvcHRSZWYoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0
ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0
cigpLmNfc3RyKCkpOwpAQCAtMTYzLDEzICsxODgsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQ
dHIsIEFkb3B0KQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKIHsKKyAg
ICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcDIoJmIpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CiAg
ICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0xODEsNyArMjA4LDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwg
cmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+
IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBw
dHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygp
IDw8ICJ8ICI7CiAgICAgICAgIHB0ciA9ICZiOwpAQCAtMTkxLDcgKzIxOCw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwg
cmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHB0cigmYSk7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwdHIoJmEpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7
CiAgICAgICAgIHB0ciA9IGFkb3B0UmVmKCZiKTsKQEAgLTIwMSw3ICsyMjgsNyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8
IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewot
ICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHB0cigmYSk7CisgICAg
ICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAg
ICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIHB0ciA9IG51bGxwdHI7CiAgICAg
ICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0KCkpOwpAQCAtMjA5LDggKzIzNiw4IEBAIFRF
U1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDIoJmIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAx
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygp
IDw8ICJ8ICI7CkBAIC0yMjIsOCArMjQ5LDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFz
c2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgZGVyZWYoYSkgfCBk
ZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25FLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uRSwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAg
ICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0yMzUsNyArMjYyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRS
ZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgcmVm
KGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHB0
cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIo
JmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8
ICJ8ICI7CiAgICAgICAgIHB0ciA9ICZjOwpAQCAtMjQ1LDcgKzI3Miw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVm
KGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHB0cigmYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAg
ICAgICAgIHB0ciA9IGFkb3B0UmVmKCZjKTsKQEAgLTI1NSw4ICsyODIsOCBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRl
cmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0
KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMjY4LDcgKzI5NSw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJl
ZihjKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHB0cigmYSk7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOwog
ICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7
CiAgICAgICAgIHB0ciA9IHB0cjsKQEAgLTI3OCw3ICszMDUsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihhKSBk
ZXJlZihhKSB8IGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKQEAgLTI5NiwxMiArMzIzLDE0IEBAIFRFU1QoV1RGX1BvaXNv
bmVkUmVmUHRyLCBBc3NpZ25tZW50KQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkK
IHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUmVmTG9nZ2VyIGEoImEiKTsKICAg
ICBSZWZMb2dnZXIgYigiYiIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywg
UmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVm
TG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9n
Z2VyPiBwMigmYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKQEAgLTMxMyw4
ICszNDIsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkKICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9n
Z2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4g
cDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDEo
JmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIp
OwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgp
KTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CkBAIC0zMjgsMTEgKzM1NywxMyBA
QCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgU3dhcCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQ
dHIsIFJlbGVhc2VOb25OdWxsKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBS
ZWZMb2dnZXIgYSgiYSIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25G
LCBSZWZMb2dnZXI+IHJlZlB0ciA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25C
LCBSZWZMb2dnZXI+IHJlZiA9IHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiByZWYgPSByZWZQdHIucmVsZWFzZU5v
bk51bGwoKTsKICAgICB9CiAKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CkBAIC0zNDAsMzcgKzM3MSwzOSBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgUmVsZWFzZU5vbk51bGwpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBS
ZWxlYXNlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9n
Z2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZMb2dnZXIg
YygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dn
ZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4g
cDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZM
b2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9n
Z2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAmYTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUo
cDEpKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUo
cDEpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVy
ZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdf
cG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9p
c29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkp
OwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwg
IjsKQEAgLTM4Miw4ICs0MTUsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZSkK
ICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19w
b2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lz
b25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEu
Z2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkg
PDwgInwgIjsKQEAgLTM5NSwxMyArNDI4LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBS
ZWxlYXNlKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8IGRlcmVmKGEpIHwgZGVy
ZWYoYykgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCi1zdGF0aWMgUG9pc29uZWRSZWZQ
dHI8UG9pc29uQywgUmVmTG9nZ2VyPiBmMShSZWZMb2dnZXImIGxvZ2dlcikKK3N0YXRpYyBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCiB7
Ci0gICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4oJmxvZ2dlcik7
CisgICAgcmV0dXJuIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPigmbG9nZ2Vy
KTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJldHVyblZhbHVlKQogeworICAgIGlu
aXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAogICAg
IHsKQEAgLTQzMiwyMCArNDY3LDIyIEBAIHN0YXRpYyBDb25zdFJlZkNvdW50ZWQmIHJldHVyblJl
ZkNvdW50ZWQKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIENvbnN0KQogeworICAgIGluaXRp
YWxpemVQb2lzb25zKCk7CisKICAgICAvLyBUaGlzIHRlc3QgcGFzc2VzIGlmIGl0IGNvbXBpbGVz
IHdpdGhvdXQgYW4gZXJyb3IuCiAgICAgYXV0byBhID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUo
KTsKICAgICBSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBiID0gV1RGTW92ZShhKTsKLSAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25ELCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigp
OworICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBj
ID0gYi5wdHIoKTsKICAgICBSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBkID0gcmV0dXJuQ29u
c3RSZWZDb3VudGVkUmVmKCk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgY29uc3QgQ29u
c3RSZWZDb3VudGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOwotICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkYsIENvbnN0UmVmQ291bnRlZD4gZiA9IENvbnN0UmVmQ291bnRlZDo6
Y3JlYXRlKCk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgY29uc3QgQ29uc3RSZWZDb3Vu
dGVkPiBnID0gZjsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBjb25zdCBDb25zdFJlZkNv
dW50ZWQ+IGgoZik7CisgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBjb25zdCBDb25zdFJl
ZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVkUmVmKCk7CisgICAgUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25GLCBDb25zdFJlZkNvdW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNy
ZWF0ZSgpOworICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgY29uc3QgQ29uc3RSZWZDb3Vu
dGVkPiBnID0gZjsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIGNvbnN0IENvbnN0UmVm
Q291bnRlZD4gaChmKTsKICAgICBSZWY8Y29uc3QgQ29uc3RSZWZDb3VudGVkPiBpKHJldHVyblJl
ZkNvdW50ZWRSZWYoKSk7CiB9CiAKIHN0cnVjdCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9n
Z2VyIDogUmVmTG9nZ2VyIHsKLSAgICB1c2luZyBSZWYgPSBQb2lzb25lZFJlZlB0cjxQb2lzb25E
LCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPjsKKyAgICB1c2luZyBSZWYgPSBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkQsIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+Owog
CiAgICAgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsK
ICAgICB2b2lkIHJlZigpOwpAQCAtNDc5LDYgKzUxNiw4IEBAIHZvaWQgUG9pc29uZWRSZWZQdHJD
aGVja2luZ1JlZkxvZ2dlcjo6ZGUKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbkJl
Zm9yZURlcmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBQb2lzb25lZFJl
ZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKICAgICBQb2lzb25lZFJlZlB0ckNoZWNraW5n
UmVmTG9nZ2VyIGIoImIiKTsKIApAQCAtNTQzLDYgKzU4Miw4IEBAIFRFU1QoV1RGX1BvaXNvbmVk
UmVmUHRyLCBBc3NpZ25CZWZvcmVEZXIKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVh
c2VOb25OdWxsQmVmb3JlRGVyZWYpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAg
IFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOwogCiAgICAgewpJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRy
LmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UG9pc29uZWRVbmlxdWVQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNCArMjUsMjYgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3Rm
L1BvaXNvbmVkVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogbmFt
ZXNwYWNlIHsKIAotY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLWNvbnN0IHVpbnQz
Ml90IFBvaXNvbkIgPSAweGJiYmI7Cit1aW50cHRyX3QgZ19wb2lzb25BOwordWludHB0cl90IGdf
cG9pc29uQjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbnMoKQoreworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
aW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgMiBk
aWZmZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ19wb2lzb25BID0gbWFrZVBvaXNvbigp
OworICAgICAgICB3aGlsZSAoIWdfcG9pc29uQiB8fCBnX3BvaXNvbkIgPT0gZ19wb2lzb25BKQor
ICAgICAgICAgICAgZ19wb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQogCiBzdHJ1
Y3QgTG9nZ2VyIHsKICAgICBMb2dnZXIoY29uc3QgY2hhciogbmFtZSwgaW50JiBkZXN0cnVjdENv
dW50KQpAQCAtNjEsMTMgKzczLDE1IEBAIHN0cnVjdCBPdGhlciB7CiAKIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAg
ewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IGVtcHR5OworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gZW1wdHk7CiAgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRf
RVEoMHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBlbXB0eShudWxscHRyKTsKKyAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IGVtcHR5KG51bGxwdHIpOwogICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1
LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KQEAgLTc2LDcgKzkwLDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAg
ICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihh
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIo
YSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsICYqcHRyKTsKQEAgLTg3LDcgKzEwMSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRy
LCBCYXNpYykKICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2Yo
cHRyQml0cykpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nh
c3Q8dWludHB0cl90PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj46OmlzUG9p
c29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgog
I2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgICAgIH0KQEAgLTk2LDcgKzExMCw3IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGJEZXN0cnVjdENv
dW50ID0gMDsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJi
IiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihiKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwg
YkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsICYqcHRyKTsKQEAgLTEwOSw3ICsxMjMsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1
Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcHRyID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyPiBwdHIgPSBhOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgfQpAQCAtMTE4LDcgKzEzMiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBC
YXNpYykKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgRGVyaXZlZExv
Z2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9
IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRy
ID0gYjsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIH0KQEAgLTEyOSw3
ICsxNDMsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwog
ICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj46OmNyZWF0ZShhTmFtZSwg
YURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXI+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPjo6Y3Jl
YXRlKGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFtZSk7CkBA
IC0xMzksNyArMTUzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAg
ICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBiTmFtZSA9
ICJiIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2VyPjo6
Y3JlYXRlKGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBEZXJpdmVkTG9nZ2VyPjo6Y3JlYXRlKGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShi
TmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xNTEsNyArMTY1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAg
ICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9p
c29uQSwgTG9nZ2VyPihhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxn
X3BvaXNvbkEsIExvZ2dlcj4oYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxs
cHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCAm
cHRyLT5uYW1lKTsKQEAgLTE2MSw3ICsxNzUsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGJOYW1lID0gImIiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBE
ZXJpdmVkTG9nZ2VyPihiTmFtZSwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxn
X3BvaXNvbkEsIERlcml2ZWRMb2dnZXI+KGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShi
TmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xNzEsNyArMTg1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgdW5pcXVlRGVzdHJ1Y3RDb3VudCA9IDA7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIHVuaXF1ZU5hbWUgPSAidW5pcXVlIjsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVOYW1lLCB1bmlxdWVEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgRGVyaXZl
ZExvZ2dlcj4gcHRyID0gc3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVOYW1l
LCB1bmlxdWVEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCB1bmlxdWVE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEodW5pcXVlTmFtZSwgJnB0ci0+bmFt
ZSk7CkBAIC0xODEsNyArMTk1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2lj
KQogICAgICAgICBpbnQgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBj
b25zdCBjaGFyKiB1bmlxdWVEZXJpdmVkTmFtZSA9ICJ1bmlxdWUgZGVyaXZlZCI7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxEZXJpdmVkTG9nZ2VyPih1bmlxdWVEZXJpdmVkTmFtZSwgdW5pcXVl
RGVyaXZlZERlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBMb2dnZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4odW5p
cXVlRGVyaXZlZE5hbWUsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCB1bmlxdWVEZXJpdmVkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKHVuaXF1ZURlcml2ZWROYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE5NSwxNSArMjA5LDE1
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgTG9nZ2VyKiBh
ID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0g
bmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyID0gV1RGTW92
ZShwMSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5w
b2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dn
ZXI+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0y
MTksMTUgKzIzMywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAg
ICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3Zl
KHAxKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4g
cDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+
IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkIsIExvZ2dlcj4gcDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMo
KSk7CkBAIC0yNDMsMTUgKzI1NywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFz
aWMpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGEgPSBuZXcgRGVyaXZlZExvZ2dlcigiYSIsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9n
Z2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
MS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAK
LSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdURk1v
dmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+
IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2Vy
PiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50
LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yNjcsMTUgKzI4MSwxNSBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGEg
PSBuZXcgRGVyaXZlZExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZl
ZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAx
ID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIo
V1RGTW92ZShwMSkpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBM
b2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0
Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkIsIExvZ2dlcj4gcDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAz
LnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAg
LTI4OSw3ICszMDMsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAg
ICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dn
ZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ci5jbGVhcigpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMzAyLDEzICszMTYsMTUg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogCiBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAg
ICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBpbnQgYkRlc3Ry
dWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3Ry
dWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0
Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTMyNSw3ICszNDEsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgaW50IGFEZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIHB0ciA9IG51bGxwdHI7CkBAIC0zNDUsOCArMzYxLDggQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIExvZ2dlciogYyA9IG5ldyBMb2dn
ZXIoImMiLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogZCA9IG5ldyBMb2dnZXIo
ImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEoYSk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyKGIpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKQEAgLTM1Nyw4ICsz
NzMsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAg
ICAgIEFTU0VSVF9FUShiLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KG51bGxwdHIsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMoYyk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25CLCBMb2dnZXI+IHA0KGQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXI+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25CLCBMb2dnZXI+IHA0KGQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGNEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKQEAgLTM4MSw3ICszOTcs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgRGVy
aXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtNDA0LDggKzQyMCw4IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBEZXJpdmVk
TG9nZ2VyKiBjID0gbmV3IERlcml2ZWRMb2dnZXIoImMiLCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIERlcml2ZWRMb2dnZXIqIGQgPSBuZXcgRGVyaXZlZExvZ2dlcigiZCIsIGREZXN0cnVjdENv
dW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIERl
cml2ZWRMb2dnZXI+IHAyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBMb2dnZXI+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBEZXJpdmVkTG9nZ2VyPiBwMihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CkBAIC00MTYsOCArNDMy
LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHAzKGMpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQiwgRGVyaXZlZExvZ2dlcj4gcDQoZCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMoYyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKQEAg
LTQzOCw3ICs0NTQsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkK
ICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3
IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ciA9IGE7CkBAIC00NTIsNyArNDY4LDcgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIGludCBhRGVz
dHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAj
aWYgQ09NUElMRVIoQ0xBTkcpCkBAIC00NzMsMTQgKzQ4OSwxNiBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3
YXApCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgaW50IGFE
ZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
TG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMjsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUoIXAyLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgp
KTsKQEAgLTQ5MCw4ICs1MDgsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC01MTEsOCArNTI5LDggQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCiAgICAgICAgIExvZ2dlciogYSA9IG5l
dyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBM
b2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDI7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC01MjIsOCArNTQw
LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51
bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExv
Z2dlcj4gcDQ7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dn
ZXI+IHA0OwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtNTM4LDEzICs1NTYsMTUgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHIsIFN3YXApCiAgICAgfQogfQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGxvZ2dlcikKK3N0YXRpYyBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcG9pc29uZWRQdHJGb28oTG9nZ2Vy
KiBsb2dnZXIpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4obG9nZ2VyKTsKKyAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dn
ZXI+KGxvZ2dlcik7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBSZXR1cm5WYWx1
ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBpbnQgYURl
c3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURl
c3RydWN0Q291bnQpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29u
ZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxNCArMjUs
MjYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVk
ZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogbmFtZXNwYWNlIHsKIAotY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLWNvbnN0
IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7Cit1aW50cHRyX3QgZ19wb2lzb25BOwordWludHB0
cl90IGdfcG9pc29uQjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbnMoKQoreworICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxs
X29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBn
ZXQgMiBkaWZmZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ19wb2lzb25BID0gbWFrZVBv
aXNvbigpOworICAgICAgICB3aGlsZSAoIWdfcG9pc29uQiB8fCBnX3BvaXNvbkIgPT0gZ19wb2lz
b25BKQorICAgICAgICAgICAgZ19wb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQog
CiBzdHJ1Y3QgTG9nZ2VyIHsKICAgICBMb2dnZXIoKSB7IH0KQEAgLTYyLDggKzc0LDEwIEBAIGNv
bnN0IGludCBhcnJheVNpemUgPSA1OwogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5v
blRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBv
aXNvbnMoKTsKKwogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyW10+IGVtcHR5OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cltdPiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQo
KSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CkBAIC03Miw3
ICs4Niw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAg
ICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
JipwdHIpOwpAQCAtODQsNyArOTgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5v
blRyaXZpYWxsCiAgICAgICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9m
KHB0ckJpdHMpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4oYSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT46Omlz
UG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2Vu
ZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICAgICAgfQpAQCAtOTUsNyArMTA5LDcg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQg
YURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2Vy
PihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gYTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IGE7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBp
IDwgYXJyYXlTaXplOyArK2kpCkBAIC0xMDgsNyArMTIyLDcgQEAgVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwog
ICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPjo6Y3JlYXRlKGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
W10+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+OjpjcmVhdGUo
YXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0g
cHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJh
eVNpemU7ICsraSkKQEAgLTEyMSw3ICsxMzUsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPFBv
aXNvbkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtl
UG9pc29uZWRVbmlxdWU8Z19wb2lzb25BLCBMb2dnZXJbXT4oYXJyYXlTaXplLCBhTmFtZSwgYURl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTEzNCw3
ICsxNDgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAg
ICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0g
ImEiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXJbXT4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPFBvaXNvbkEsIExvZ2dlcltdPihhcnJh
eVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8Z19wb2lz
b25BLCBMb2dnZXJbXT4oYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9U
UlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBmb3IgKGF1dG8g
aSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTE0OSwxNSArMTYzLDE1IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFr
ZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
TG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENv
dW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0
cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92
ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltd
PiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dl
cltdPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwpAQCAtMTczLDE1ICsxODcs
MTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBM
b2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJi
IiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
USgwdSwgcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVk
KCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+
IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTE5
NywxNSArMjExLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwK
ICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJy
YXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBX
VEZNb3ZlKHAxKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9p
c29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dn
ZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAgLTIy
MSwxNSArMjM1LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwK
ICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJy
YXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZN
b3ZlKHAxKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNv
bmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJb
XT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2Vy
W10+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQiwgTG9nZ2VyW10+IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShiRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lz
b25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOwpAQCAtMjQzLDcg
KzI1Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAg
ICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAg
IHB0ci5jbGVhcigpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkp
OwpAQCAtMjU2LDEzICsyNzAsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25U
cml2aWFsbAogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3Ry
dWN0aWJsZUFycmF5cywgQXNzaWdubWVudCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOwor
CiAgICAgewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBpbnQgYkRl
c3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihh
cnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtl
QXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRy
KGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0yNzksNyArMjk1LDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAw
OwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgICAgIHB0ciA9IG51bGxwdHI7CkBAIC0yOTksOCArMzE1LDggQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGMg
PSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJjIiwgY0Rlc3RydWN0Q291bnQpOwogICAg
ICAgICBMb2dnZXIqIGQgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJkIiwgZERlc3Ry
dWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXJbXT4gcDEoYSk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXJbXT4gcDIoYik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcltdPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHAyKGIpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKQEAgLTMxMSw4ICszMjcs
OCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgICAg
ICBBU1NFUlRfRVEoYiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMoYyk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoZCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMyhjKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0KGQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKQEAgLTMzMyw3
ICszNDksNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAg
ICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gYTsKQEAg
LTM0Nyw3ICszNjMsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxs
CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1h
a2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIo
YSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBw
dHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogI2lmIENPTVBJTEVSKENMQU5H
KQpAQCAtMzY4LDE0ICszODQsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25U
cml2aWFsbAogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3Ry
dWN0aWJsZUFycmF5cywgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAg
ewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBpbnQgYkRlc3RydWN0
Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8
TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDI7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29u
ZWQoKSk7CkBAIC0zODUsOCArNDAzLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNDsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0OwogICAgICAgICAgICAg
QVNTRVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDQuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOwpA
QCAtNDA2LDggKzQyNCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIs
IGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4o
YXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwpA
QCAtNDE3LDggKzQzNSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQ7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcltdPiBwNDsKICAgICAgICAgICAgIEFTU0VSVF9F
UShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTQzMywx
MyArNDUxLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAg
ICB9CiB9CiAKLXN0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcG9p
c29uZWRQdHJGb28oTG9nZ2VyKiBhcnJheSkKK3N0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcltdPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGFycmF5KQogewotICAgIHJl
dHVybiBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4oYXJyYXkpOworICAgIHJl
dHVybiBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPihhcnJheSk7CiB9CiAK
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJy
YXlzLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewog
ICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtl
QXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlE
ZXN0cnVjdGlibGVBcnJheXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlz
LmNwcAkocmV2aXNpb24gMjI2Nzg0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lu
Y2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3Rm
L1BvaXNvbmVkVW5pcXVlUHRyLmg+CiAKQEAgLTMyLDggKzMzLDE5IEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogbmFtZXNwYWNlIHsKIAotY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4
YWFhYTsKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7Cit1aW50cHRyX3QgZ19wb2lz
b25BOwordWludHB0cl90IGdfcG9pc29uQjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVBvaXNv
bnMoKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7Cisg
ICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1h
a2Ugc3VyZSB3ZSBnZXQgMiBkaWZmZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ19wb2lz
b25BID0gbWFrZVBvaXNvbigpOworICAgICAgICB3aGlsZSAoIWdfcG9pc29uQiB8fCBnX3BvaXNv
bkIgPT0gZ19wb2lzb25BKQorICAgICAgICAgICAgZ19wb2lzb25CID0gbWFrZVBvaXNvbigpOwor
ICAgIH0pOworfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgZmlsbEFycmF5
KFQmIGFycmF5LCBpbnQgc2l6ZSkKQEAgLTQ4LDEzICs2MCwxNSBAQCBzdGF0aWMgY29uc3QgaW50
IGFycmF5U2l6ZSA9IDU7CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5
RGVzdHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOwor
CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gZW1wdHk7
CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IGVtcHR5OwogICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNT
RVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBlbXB0eShudWxscHRyKTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gZW1wdHkobnVsbHB0cik7CiAgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEo
MHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQpAQCAtNjMsNyArNzcsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2Fy
cmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKGEsICYqcHRyKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5
U2l6ZTsgKytpKQpAQCAtNzQsNyArODgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZv
clRyaXZpYWxseURlCiAgICAgICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6
ZW9mKHB0ckJpdHMpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oYSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAg
ICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT46Omlz
UG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOwogI2VuZGlm
CiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICAgICAgfQpAQCAtODQsNyArOTgsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEg
PSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwog
Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIgPSBhOworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIgPSBhOwogICAgICAg
ICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCAm
KnB0cik7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAt
OTIsNyArMTA2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQog
ICAgIH0KIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+
IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPjo6Y3JlYXRlKGFycmF5U2l6
ZSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0ciA9IFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+OjpjcmVhdGUoYXJyYXlTaXplKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ZmlsbEFycmF5KHB0ciwgYXJyYXlTaXplKTsKICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwg
YXJyYXlTaXplOyArK2kpCkBAIC0xMDUsMTYgKzExOSwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6
ZV07CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMSA9IGE7CisgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgaW50W10+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJp
dHMoKSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBm
b3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKICAgICAgICAgICAgIEFTU0VSVF9F
UShhW2ldLCBwMltpXSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50
W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0
ID0gV1RGTW92ZShwMyk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50
W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBpbnRbXT4g
cDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKICAgICAgICAgQVNTRVJU
X0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CkBAIC0xMjgsMTYgKzE0MiwxNiBAQCBURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGIgPSBuZXcgaW50
W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwogCi0gICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBB
U1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1
LCBwMS5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCiAgICAgICAgICAgICBB
U1NFUlRfRVEoYVtpXSwgcDJbaV0pOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIGludFtdPiBwMyA9IGI7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGlu
dFtdPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgaW50W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBp
bnRbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwogICAgICAgICBB
U1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKQEAgLTE0OSw3ICsxNjMsNyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcg
aW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogCi0gICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJU
X0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIuY2xlYXIoKTsKICAgICAgICAg
QVNTRVJUX1RSVUUoIXB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTU5LDEzICsxNzMsMTUgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogCiBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgQXNzaWdubWVudCkKIHsK
KyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3
IGludFthcnJheVNpemVdOwogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwog
ICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFy
cmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0
cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEp
OwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9
IGI7CiAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTE3NSw3ICsx
OTEsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAg
IGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJh
eVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIo
YSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsK
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBu
dWxscHRyOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CkBA
IC0xOTEsMTYgKzIwNywxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxs
eURlCiAgICAgICAgIGZpbGxBcnJheShjLCBhcnJheVNpemUpOwogICAgICAgICBmaWxsQXJyYXko
ZCwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRb
XT4gcDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMihi
KTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDEoYSk7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAyKGIpOwogICAgICAg
ICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGIsIHAy
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAgIEFTU0VS
VF9FUShiLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIu
dW5wb2lzb25lZCgpKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRb
XT4gcDMoYyk7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNChk
KTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMoYyk7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgaW50W10+IHA0KGQpOwogICAgICAg
ICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKGQsIHA0
LnVucG9pc29uZWQoKSk7CiAgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CkBAIC0yMTIsNyArMjI4
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBh
dXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlT
aXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEp
OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAg
ICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyID0gYTsK
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMjIyLDcgKzIzOCw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0
byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6
ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsK
KyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAg
ICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcp
CiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApAQCAtMjM5LDE0ICsyNTUsMTYgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogCiBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgU3dhcCkKIHsKKyAgICBp
bml0aWFsaXplUG9pc29ucygpOworCiAgICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGludFth
cnJheVNpemVdOwogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAg
ICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6
ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMSA9IGE7CisgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAyOwogICAgICAgICBBU1NFUlRfRVEocDEu
dW5wb2lzb25lZCgpLCBhKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtMjU1LDggKzI3Myw4IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgQVNTRVJUX1RS
VUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShwMi51bnBvaXNvbmVkKCks
IGEpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyA9IGI7
Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNDsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNDsKICAgICAgICAgQVNTRVJUX0VRKHAz
LnVucG9pc29uZWQoKSwgYik7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAg
ICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTI3Miw4ICsyOTAsOCBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGZpbGxBcnJh
eShhLCBhcnJheVNpemUpOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDI7CisgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBpbnRbXT4gcDI7CiAgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVk
KCksIGEpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC0yODIsOCArMzAwLDggQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQiwgaW50W10+IHA0OwogICAgICAgICBBU1NFUlRfRVEocDMudW5wb2lzb25l
ZCgpLCBiKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgIEFTU0VS
VF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtMjk0LDEzICszMTIsMTUgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgIH0KIH0KIAotc3RhdGljIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwb2lzb25lZFB0ckZvbyhpbnQqIHB0cikKK3N0
YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwb2lzb25lZFB0ckZvbyhp
bnQqIHB0cikKIHsKLSAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+
KHB0cik7CisgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+KHB0
cik7CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3Rp
YmxlQXJyYXlzLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAg
ICAgewogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxs
QXJyYXkoYSwgYXJyYXlTaXplKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331258</attachid>
            <date>2018-01-12 17:15:36 -0800</date>
            <delta_ts>2018-01-13 02:26:59 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-181542.patch</filename>
            <type>text/plain</type>
            <size>185630</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2OTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDE4LTAxLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIGFsbCB1c2Ugb2YgQ29uc3RFeHByUG9pc29uZWQgd2l0aCBQb2lzb25lZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTU0MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzY0NDIxMzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgMS4gQWxsIEpTQyBwb2lzb25zIGFyZSBub3cgZGVmaW5lZCBp
biBKU0NQb2lzb24uaC4KKworICAgICAgICAyLiBDaGFuZ2UgYWxsIGNsaWVudHMgdG8gdXNlIHRo
ZSBuZXcgcG9pc29uIHZhbHVlcyB2aWEgdGhlIFBPSVNPTigpIG1hY3JvLgorCisgICAgICAgIDMu
IFRoZSBMTEludCBjb2RlIGhhcyBiZWVuIHVwZGF0ZWQgdG8gaGFuZGxlIENvZGVCbG9jayBwb2lz
b24uICBTb21lIG9mIHRoaXMgY29kZQorICAgICAgICAgICB1c2VzIHRoZSB0NSB0ZW1wIHJlZ2lz
dGVyLCB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoZSBXaW5kb3dzIHBvcnQuCisgICAgICAg
ICAgIEZvcnR1bmF0ZWx5LCB3ZSBkb24ndCBjdXJyZW50bHkgZG8gcG9pc29uaW5nIG9uIHRoZSBX
aW5kb3dzIHBvcnQgeWV0LiAgU28sCisgICAgICAgICAgIGl0IHdpbGwganVzdCB3b3JrIGZvciBu
b3cuCisKKyAgICAgICAgICAgV2hlbiBwb2lzb25pbmcgaXMgZW5hYmxlZCBmb3IgdGhlIFdpbmRv
d3MgcG9ydCwgdGhpcyBMTEludCBjb2RlIHdpbGwgbmVlZCBhCisgICAgICAgICAgIFdpbmRvd3Mg
c3BlY2lmaWMgaW1wbGVtZW50YXRpb24gdG8gd29ya2Fyb3VuZCBpdHMgbGFjayBvZiBhIHQ1IHJl
Z2lzdGVyLgorCisgICAgICAgICogQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oOgorICAgICAgICAq
IEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVj
dC5oOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmVtcHR5
VmFsdWUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmRlbGV0ZWRWYWx1
ZSk6CisgICAgICAgICogYjMvQjNMb3dlck1hY3Jvcy5jcHA6CisgICAgICAgICogYjMvdGVzdGIz
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RJbnRlcnByZXRlcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5zdHJ1Y3Rpb25z
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlvbnMgY29uc3QpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6Om1ha2VQb2lzb25lZFVuaXF1ZSk6CisgICAgICAgICogZGZnL0RG
R09TUkV4aXRDb21waWxlckNvbW1vbi5oOgorICAgICAgICAoSlNDOjpERkc6OmFkanVzdEZyYW1l
QW5kU3RhY2tJbk9TUkV4aXRDb21waWxlclRodW5rKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2hlY2tTdWJDbGFzcyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRT
d2l0Y2hJbnRKdW1wKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3ViQ2xhc3MpOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoK
KyAgICAgICAgKEpTQzo6dmlydHVhbFRodW5rRm9yKToKKyAgICAgICAgKEpTQzo6bmF0aXZlRm9y
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Ym91bmRUaGlzTm9BcmdzRnVuY3Rpb25DYWxsR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL1VubGlua2VkU291
cmNlQ29kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuaDoKKyAgICAgICAg
KiBydW50aW1lL0N1c3RvbUdldHRlclNldHRlci5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUlu
c3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAg
ICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0NQb2lzb24u
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25l
ZFB0ci5jcHAuCisgICAgICAgIChKU0M6OmluaXRpYWxpemVQb2lzb24pOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDUG9pc29uLmg6CisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNDUG9pc29uZWRQdHIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNDUG9p
c29uZWRQdHIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYWtlUG9pc29uZWRVbmlxdWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTU2NyaXB0RmV0Y2hlci5oOgorICAgICAgICAqIHJ1bnRpbWUvTmF0aXZlRXhlY3V0YWJs
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmg6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6bWFwIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjp3ZWFrSW1wbCBjb25zdCk6CisgICAgICAg
ICogcnVudGltZS9Xcml0ZUJhcnJpZXIuaDoKKyAgICAgICAgKEpTQzo6V3JpdGVCYXJyaWVyOjpw
b2lzb24pOgorICAgICAgICAqIHdhc20vanMvSlNUb1dhc20uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3Nl
bWJseUNvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2s6
OkpTV2ViQXNzZW1ibHlDb2RlQmxvY2spOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJs
eUNvZGVCbG9jay5oOgorICAgICAgICAqIHdhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmg6
CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5Lmg6CisgICAgICAgICogd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5VGFibGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoKKyAgICAgICAgKEpT
Qzo6V2FzbTo6aGFuZGxlQmFkSTY0VXNlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMp
OgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaDoKKyAgICAgICAg
KiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmg6CisgICAgICAgICogd2FzbS9qcy9X
ZWJBc3NlbWJseVRvSlNDYWxsZWUuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uLmg6CisKIDIwMTgtMDEtMTIgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVyCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc3OSw3ICs3NzksNyBAQCBydW50aW1l
L0pTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNCaWdJbnQuY3BwCiBydW50
aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKLXJ1bnRpbWUv
SlNDUG9pc29uZWRQdHIuY3BwCitydW50aW1lL0pTQ1BvaXNvbi5jcHAKIHJ1bnRpbWUvSlNDYWxs
ZWUuY3BwCiBydW50aW1lL0pTQ2VsbC5jcHAKIHJ1bnRpbWUvSlNDdXN0b21HZXR0ZXJTZXR0ZXJG
dW5jdGlvbi5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVy
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdy
YXBwZXJPYmplY3QuaAkocmV2aXNpb24gMjI2OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiAK
IHByaXZhdGU6Ci0gICAgQ29uc3RFeHByUG9pc29uZWQ8SlNBUElXcmFwcGVyT2JqZWN0UG9pc29u
LCB2b2lkKj4gbV93cmFwcGVkT2JqZWN0OworICAgIFBvaXNvbmVkPFBPSVNPTihKU0FQSVdyYXBw
ZXJPYmplY3QpLCB2b2lkKj4gbV93cmFwcGVkT2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0
aW9uLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIEpTQ2FsbGJhY2tGdW5jdGlvbl9oCiAKICNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgi
CisjaW5jbHVkZSAiSlNDUG9pc29uLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC01Myw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBKU09iamVjdENh
bGxBc0Z1bmN0aW9uQ2FsbGJhY2sgZnVuY3Rpb25DYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJh
Y2sudW5wb2lzb25lZCgpOyB9CiAKLSAgICBQb2lzb25lZDxnX25hdGl2ZUNvZGVQb2lzb24sIEpT
T2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBQb2lzb25lZDxQ
T0lTT04oTmF0aXZlQ29kZSksIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjaz4gbV9jYWxs
YmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw2IEBACiAjZGVmaW5lIEpTQ2FsbGJhY2tPYmplY3RfaAogCiAjaW5jbHVkZSAi
SlNDUG9pc29uLmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uZWRQdHIuaCIKICNpbmNsdWRlICJKU09i
amVjdFJlZi5oIgogI2luY2x1ZGUgIkpTVmFsdWVSZWYuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgpAQCAtMjM1LDcgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IHN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpOwogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsYmFja0dldHRlcihFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKIAotICAgIFdURjo6UG9pc29uZWRV
bmlxdWVQdHI8SlNDYWxsYmFja09iamVjdFBvaXNvbiwgSlNDYWxsYmFja09iamVjdERhdGE+IG1f
Y2FsbGJhY2tPYmplY3REYXRhOworICAgIFdURjo6UG9pc29uZWRVbmlxdWVQdHI8UE9JU09OKEpT
Q2FsbGJhY2tPYmplY3QpLCBKU0NhbGxiYWNrT2JqZWN0RGF0YT4gbV9jYWxsYmFja09iamVjdERh
dGE7CiAgICAgUG9pc29uZWRDbGFzc0luZm9QdHIgbV9jbGFzc0luZm87CiB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI2OTI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE3MzIsNyArMTczMiw2IEBACiAJCUZFMUMwRkZEMUIxOTNFOTgwMEI1
M0ZDQSAvKiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTIwQ0U5RTE1RjA0
QTk1MDBERjM0MzAgLyogTExJbnRDTG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3Au
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTJB
ODc2MDFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkE4NzVGMUYwMjM4MTYw
MEVCMzFCMiAvKiBNaW5pbXVtUmVzZXJ2ZWRab25lU2l6ZS5oICovOyB9OwotCQlGRTJCMEI2OTFG
RDIyN0UwMDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkIwQjY3MUZEMEQyOTYwMDc1REE1RiAvKiBKU0NQ
b2lzb25lZFB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUZFMkIwQjczMUZEOUVGNzAwMDc1REE1RiAvKiBKU0NQb2lzb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMkIwQjcwMUZEOEM0NjMwMDc1
REE1RiAvKiBKU0NQb2lzb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlGRTMwMjJEMzFFM0Q3M0E1MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFs
eXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUz
MDIyRDExRTNENzM5NjAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTMwMjJENzFFNDI4NTcz
MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5o
ICovOyB9OwpAQCAtNDYyOSw4ICs0NjI4LDcgQEAKIAkJRkUyMENFOUIxNUYwNEE5NTAwREYzNDMw
IC8qIExMSW50Q0xvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TExJbnRDTG9vcC5jcHA7IHBhdGggPSBsbGludC9MTEludENMb29wLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkUyMENFOUMxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3Au
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDTG9vcC5oOyBwYXRoID0g
bGxpbnQvTExJbnRDTG9vcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTJBODc1
RjFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVkWm9uZVNpemUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWluaW11bVJlc2VydmVkWm9uZVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRkUyQjBCNjcxRkQwRDI5NjAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVkUHRyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1BvaXNvbmVkUHRyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY4MUZEMEQyOTcwMDc1REE1RiAvKiBKU0NQb2lzb25l
ZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NQb2lzb25l
ZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMkIwQjY4MUZEMEQyOTcw
MDc1REE1RiAvKiBKU0NQb2lzb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDUG9pc29uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyQjBC
NzAxRkQ4QzQ2MzAwNzVEQTVGIC8qIEpTQ1BvaXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0NQb2lzb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUy
RTZBN0ExRDZFQTVGRTAwNjBGODk2IC8qIFRocm93U2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGhyb3dTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZFMzAyMkQwMUUzRDczOTYwMEJBQzQ5MyAvKiBTaWdpbGxDcmFzaEFuYWx5emVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ2lsbENyYXNoQW5h
bHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU5MCw4ICs2NTg4LDcg
QEAKIAkJCQkxNEFCQjM2RTA5OUMwNzY0MDBFMkEyNEYgLyogSlNDSlNWYWx1ZS5oICovLAogCQkJ
CTg2NUEzMEYwMTM1MDA3RTEwMENEQjQ5RSAvKiBKU0NKU1ZhbHVlSW5saW5lcy5oICovLAogCQkJ
CUZFMkIwQjcwMUZEOEM0NjMwMDc1REE1RiAvKiBKU0NQb2lzb24uaCAqLywKLQkJCQlGRTJCMEI2
ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuY3BwICovLAotCQkJCUZFMkIwQjY3
MUZEMEQyOTYwMDc1REE1RiAvKiBKU0NQb2lzb25lZFB0ci5oICovLAorCQkJCUZFMkIwQjY4MUZE
MEQyOTcwMDc1REE1RiAvKiBKU0NQb2lzb24uY3BwICovLAogCQkJCTcyQUFGN0NCMUQwRDMxOEIw
MDVFNjBCRSAvKiBKU0N1c3RvbUdldHRlclNldHRlckZ1bmN0aW9uLmNwcCAqLywKIAkJCQk3MkFB
RjdDQzFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJTZXR0ZXJGdW5jdGlvbi5oICov
LAogCQkJCTBGMkI2NkJEMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmNwcCAqLywKQEAg
LTg4ODgsNyArODg4NSw2IEBACiAJCQkJQTVEMkU2NjUxOTVFMTc0MDAwQTUxOEU3IC8qIEpTQ29u
dGV4dFJlZkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDhDRDFEODEwOENGOTAyMDA4
MTYzQzYgLyogSlNDb250ZXh0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUyQjBC
NzMxRkQ5RUY3MDAwNzVEQTVGIC8qIEpTQ1BvaXNvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkUy
QjBCNjkxRkQyMjdFMDAwNzVEQTVGIC8qIEpTQ1BvaXNvbmVkUHRyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzIwMjhCODE3OTc2MDFFMDA5ODAyOEMgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3MkFBRjdDRTFEMEQzMUIzMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0
ZXJTZXR0ZXJGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RUMxN0I2QjVBQjAw
QTdBRTNGIC8qIEpTRGF0YVZpZXcuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
CShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCi0jaW5jbHVk
ZSAiSlNDUG9pc29uZWRQdHIuaCIKKyNpbmNsdWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRlIDx3
dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTM4OSw4ICszODksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyBQb2lzb25lZE1hc21QdHIgZW1w
dHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigxKTsgfQotICAgIHN0YXRpYyBQb2lz
b25lZE1hc21QdHIgZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gUG9pc29uZWRNYXNtUHRyKDIpOyB9
CisgICAgc3RhdGljIFBvaXNvbmVkTWFzbVB0ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4gUG9pc29u
ZWRNYXNtUHRyKFByZVBvaXNvbmVkLCAxKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1hc21QdHIg
ZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gUG9pc29uZWRNYXNtUHRyKFByZVBvaXNvbmVkLCAyKTsg
fQogCiAgICAgUG9pc29uZWRNYXNtUHRyIG1fdmFsdWU7CiB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0xvd2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjI2OTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTA3LDcgKzUwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJS
ZWcgc2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBHUFJSZWcgcG9pc29uU2NyYXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfaml0
Q29kZVBvaXNvbiksIHBvaXNvblNjcmF0Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoUE9JU09OKEpJVENvZGUpKSwgcG9pc29u
U2NyYXRjaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgc2NyYXRjaCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBqaXQubG9hZDY0KENDYWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBD
Q2FsbEhlbHBlcnM6OnRpbWVzUHRyKCkpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC54b3I2NChwb2lzb25TY3JhdGNoLCBzY3JhdGNoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy90ZXN0YjMuY3BwCShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvdGVzdGIzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMDMzLDcgKzEzMDMzLDcg
QEAgdm9pZCB0ZXN0SW50ZXJwcmV0ZXIoKQogICAgICAgICAgICAgR1BSUmVnIHBvaXNvblNjcmF0
Y2ggPSBwYXJhbXMuZ3BTY3JhdGNoKDEpOwogCiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhYmxlKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX2ppdENvZGVQb2lzb24pLCBwb2lz
b25TY3JhdGNoKTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTY0KFBPSVNPTihKSVRDb2RlKSksIHBvaXNvblNjcmF0Y2gpOwogICAgICAgICAgICAgaml0Lmxv
YWQ2NChDQ2FsbEhlbHBlcnM6OkJhc2VJbmRleChzY3JhdGNoLCBwYXJhbXNbMF0uZ3ByKCksIEND
YWxsSGVscGVyczo6dGltZXNQdHIoKSksIHNjcmF0Y2gpOwogICAgICAgICAgICAgaml0LnhvcjY0
KHBvaXNvblNjcmF0Y2gsIHNjcmF0Y2gpOwogICAgICAgICAgICAgaml0Lmp1bXAoc2NyYXRjaCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyMCwxMSArMzIwLDExIEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICB0eXBlZGVmIEpTQzo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247Ci0gICAgdHlwZWRlZiBQ
b2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiYgVW5w
YWNrZWRJbnN0cnVjdGlvbnM7CisgICAgdHlwZWRlZiBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxQ
T0lTT04oQ29kZUJsb2NrKSwgSW5zdHJ1Y3Rpb24+JiBVbnBhY2tlZEluc3RydWN0aW9uczsKIAog
ICAgIHVuc2lnbmVkIG51bWJlck9mSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0
cnVjdGlvbnMuc2l6ZSgpOyB9Ci0gICAgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8Q29kZUJsb2Nr
UG9pc29uLCBJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zOyB9Ci0gICAgY29uc3QgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8Q29kZUJsb2NrUG9pc29u
LCBJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zOyB9CisgICAgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8UE9JU09OKENvZGVCbG9jayksIElu
c3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKyAg
ICBjb25zdCBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxQT0lTT04oQ29kZUJsb2NrKSwgSW5zdHJ1
Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQog
CiAgICAgc2l6ZV90IHByZWRpY3RlZE1hY2hpbmVDb2RlU2l6ZSgpOwogCkBAIC05MDcsOCArOTA3
LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNUYWlsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBt
X3VubGlua2VkQ29kZS0+aGFzVGFpbENhbGxzKCk7IH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludHB0cl90IHNfcG9pc29uID0gbWFrZUNvbnN0RXhwclBvaXNvbihDb2RlQmxvY2tQb2lzb24p
OwotCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCk7CiAg
ICAgdm9pZCBmaW5hbGl6ZUJhc2VsaW5lSklUSW5saW5lQ2FjaGVzKCk7CkBAIC05NjksOSArOTY3
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9y
Qnl0ZWNvZGVPZmZzZXRTbG93KHVuc2lnbmVkKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lLi4uIEFyZ3VtZW50cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KLSAgICBzdGF0
aWMgUG9pc29uZWRVbmlxdWVQdHI8Q29kZUJsb2NrUG9pc29uLCBUPiBtYWtlUG9pc29uZWRVbmlx
dWUoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgIHN0YXRpYyBQb2lzb25lZFVuaXF1ZVB0
cjxQT0lTT04oQ29kZUJsb2NrKSwgVD4gbWFrZVBvaXNvbmVkVW5pcXVlKEFyZ3VtZW50cyYmLi4u
IGFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6Om1ha2VQb2lzb25lZFVuaXF1
ZTxDb2RlQmxvY2tQb2lzb24sIFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pOworICAgICAgICByZXR1cm4gV1RGOjptYWtlUG9pc29uZWRVbmlxdWU8UE9JU09OKENvZGVC
bG9jayksIFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgIH0K
IAogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENvZGU7CkBA
IC05ODcsMzAgKzk4NSwzMCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgV3JpdGVCYXJyaWVyPEV4
ZWN1dGFibGVCYXNlPiBtX293bmVyRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0
YWJsZVRvQ29kZUJsb2NrRWRnZT4gbV9vd25lckVkZ2U7Ci0gICAgQ29uc3RFeHByUG9pc29uZWQ8
Q29kZUJsb2NrUG9pc29uLCBWTSo+IG1fcG9pc29uZWRWTTsKKyAgICBQb2lzb25lZDxQT0lTT04o
Q29kZUJsb2NrKSwgVk0qPiBtX3BvaXNvbmVkVk07CiAKLSAgICBQb2lzb25lZFJlZkNvdW50ZWRB
cnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiBtX2luc3RydWN0aW9uczsKKyAgICBQ
b2lzb25lZFJlZkNvdW50ZWRBcnJheTxQT0lTT04oQ29kZUJsb2NrKSwgSW5zdHJ1Y3Rpb24+IG1f
aW5zdHJ1Y3Rpb25zOwogICAgIFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgbV9zY29wZVJlZ2lzdGVyOwogICAgIG11dGFibGUgQ29kZUJsb2NrSGFz
aCBtX2hhc2g7CiAKLSAgICBQb2lzb25lZFJlZlB0cjxDb2RlQmxvY2tQb2lzb24sIFNvdXJjZVBy
b3ZpZGVyPiBtX3NvdXJjZTsKKyAgICBQb2lzb25lZFJlZlB0cjxQT0lTT04oQ29kZUJsb2NrKSwg
U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0Owog
ICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lQ29sdW1uT2Zmc2V0OwogCiAgICAgUmVmQ291bnRlZEFy
cmF5PExMSW50Q2FsbExpbmtJbmZvPiBtX2xsaW50Q2FsbExpbmtJbmZvczsKICAgICBTZW50aW5l
bExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50
Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAgICAgU3RydWN0dXJlV2F0Y2hw
b2ludE1hcCBtX2xsaW50R2V0QnlJZFdhdGNocG9pbnRNYXA7Ci0gICAgUG9pc29uZWRSZWZQdHI8
Q29kZUJsb2NrUG9pc29uLCBKSVRDb2RlPiBtX2ppdENvZGU7CisgICAgUG9pc29uZWRSZWZQdHI8
UE9JU09OKENvZGVCbG9jayksIEpJVENvZGU+IG1faml0Q29kZTsKICNpZiBFTkFCTEUoSklUKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gbV9jYWxsZWVTYXZlUmVn
aXN0ZXJzOwotICAgIFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgU3RydWN0dXJlU3R1Yklu
Zm8+IG1fc3R1YkluZm9zOwotICAgIFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgSklUQWRk
SUM+IG1fYWRkSUNzOwotICAgIFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgSklUTXVsSUM+
IG1fbXVsSUNzOwotICAgIFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgSklUTmVnSUM+IG1f
bmVnSUNzOwotICAgIFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgSklUU3ViSUM+IG1fc3Vi
SUNzOwotICAgIFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgQnlWYWxJbmZvPiBtX2J5VmFs
SW5mb3M7Ci0gICAgUG9pc29uZWRCYWc8Q29kZUJsb2NrUG9pc29uLCBDYWxsTGlua0luZm8+IG1f
Y2FsbExpbmtJbmZvczsKKyAgICBQb2lzb25lZEJhZzxQT0lTT04oQ29kZUJsb2NrKSwgU3RydWN0
dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOworICAgIFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxv
Y2spLCBKSVRBZGRJQz4gbV9hZGRJQ3M7CisgICAgUG9pc29uZWRCYWc8UE9JU09OKENvZGVCbG9j
ayksIEpJVE11bElDPiBtX211bElDczsKKyAgICBQb2lzb25lZEJhZzxQT0lTT04oQ29kZUJsb2Nr
KSwgSklUTmVnSUM+IG1fbmVnSUNzOworICAgIFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxvY2sp
LCBKSVRTdWJJQz4gbV9zdWJJQ3M7CisgICAgUG9pc29uZWRCYWc8UE9JU09OKENvZGVCbG9jayks
IEJ5VmFsSW5mbz4gbV9ieVZhbEluZm9zOworICAgIFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxv
Y2spLCBDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKICAgICBTZW50aW5lbExpbmtlZExp
c3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+PiBtX2lu
Y29taW5nQ2FsbHM7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFBvbHltb3JwaGljQ2FsbE5vZGUs
IEJhc2ljUmF3U2VudGluZWxOb2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+PiBtX2luY29taW5nUG9s
eW1vcnBoaWNDYWxsczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UENUb0NvZGVPcmlnaW5NYXA+IG1f
cGNUb0NvZGVPcmlnaW5NYXA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlckNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JF
eGl0Q29tcGlsZQogICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4g
Y2FzZSBvZiBhbiBleGNlcHRpb24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7
CiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAs
IENvZGVCbG9jazo6aml0Q29kZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54
b3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiks
IEdQUkluZm86OnJlZ1QwKTsKKyAgICBqaXQueG9yUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKFBPSVNPTihDb2RlQmxvY2spKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5hZGRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKSVRDb2RlVHlwZTo6Y29tbW9uRGF0YU9m
ZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvbW1vbkRhdGE6OmZyYW1lUmVnaXN0ZXJDb3VudE9m
ZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIC8vIFRoaXMgZG9lcyB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChmcmFtZVJlZ2lzdGVyQ291bnQgLSAxKSpzaXplb2YoUmVnaXN0ZXIpIHdoZXJl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjYyLDcgKzg2NjIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdWJDbGFzCiAgICAgICAgIG1faml0LmVt
aXRMb2FkU3RydWN0dXJlKCptX2ppdC52bSgpLCBiYXNlR1BSLCBvdGhlckdQUiwgc3BlY2lmaWVk
R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3RoZXJH
UFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBvdGhlckdQUik7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChn
X2dsb2JhbERhdGFQb2lzb24pLCBzcGVjaWZpZWRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFBPSVNPTihHbG9iYWxEYXRhKSksIHNwZWNpZmllZEdQ
Uik7CiAgICAgICAgIG1faml0LnhvcjY0KHNwZWNpZmllZEdQUiwgb3RoZXJHUFIpOwogI2VuZGlm
CiAgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG5vZGUtPmNs
YXNzSW5mbygpKSwgc3BlY2lmaWVkR1BSKTsKQEAgLTk3NzgsNyArOTc3OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1wKAogICAgICAgICBkYXRhLT5mYWxsVGhyb3Vn
aC5ibG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKHBvaXNvblNjcmF0Y2gpOyAvLyBQbGFjYXRlIHRo
ZSAzMi1iaXQgYnVpbGQuCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW02NChnX2ppdENvZGVQb2lzb24pLCBwb2lzb25TY3JhdGNoKTsKKyAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW02NChQT0lTT04oSklUQ29kZSkpLCBwb2lzb25TY3JhdGNoKTsKICNlbmRpZgog
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmJlZ2luKCkpLCBz
Y3JhdGNoKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoc2NyYXRj
aCwgdmFsdWUsIEpJVENvbXBpbGVyOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAy
MjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNDAwLDcgKzExNDAwLDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvYWRTdHJ1Y3R1cmUoY2VsbCk7CiAgICAgICAgICAg
ICBMVmFsdWUgcG9pc29uZWRDbGFzc0luZm8gPSBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9o
ZWFwcy5TdHJ1Y3R1cmVfY2xhc3NJbmZvKTsKLSAgICAgICAgICAgIExWYWx1ZSBjbGFzc0luZm8g
PSBtX291dC5iaXRYb3IocG9pc29uZWRDbGFzc0luZm8sIG1fb3V0LmNvbnN0SW50NjQoZ19nbG9i
YWxEYXRhUG9pc29uKSk7CisgICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0
WG9yKHBvaXNvbmVkQ2xhc3NJbmZvLCBtX291dC5jb25zdEludDY0KFBPSVNPTihHbG9iYWxEYXRh
KSkpOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3RoZXJBdFN0YXJ0ID0gbV9vdXQuYW5j
aG9yKGNsYXNzSW5mbyk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGxvb3ApOwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTkwNCw3ICs5MDQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKIAotICAg
ICAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9u
PiBtX2luc3RydWN0aW9uczsKKyAgICAgICAgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8UE9JU09O
KENvZGVCbG9jayksIEluc3RydWN0aW9uPiBtX2luc3RydWN0aW9uczsKIAogICAgICAgICBWZWN0
b3I8Q2FsbFJlY29yZD4gbV9jYWxsczsKICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVsczsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJ
KHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIxNCw3ICsyMTQsNyBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgdmlydHVhbFRodW5rRm9yKFZNCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3
ZSBoYXZlIGEgQ29kZUJsb2NrLCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QK
ICAgICAvLyBjYWxsLgogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tNjQoZ19qaXRDb2RlUG9pc29uKSwgR1BSSW5mbzo6cmVnVDEpOworICAg
IGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFBPSVNPTihKSVRDb2RlKSksIEdQ
UkluZm86OnJlZ1QxKTsKICAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJl
Z1Q0KTsKICNlbmRpZgogCkBAIC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZiBuYXRpdmVGb3JHZQogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6
QWRkcmVzcyhYODZSZWdpc3RlcnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIFg4
NlJlZ2lzdGVyczo6cjkpOwogICAgIH0gZWxzZQogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVy
ZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3RlcnM6OmVzaSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zm
c2V0T2ZOYXRpdmVGdW5jdGlvbkZvcihraW5kKSksIFg4NlJlZ2lzdGVyczo6cjkpOwotICAgIGpp
dC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoZ19uYXRpdmVDb2RlUG9pc29uKSwg
WDg2UmVnaXN0ZXJzOjplc2kpOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVk
SW1tNjQoUE9JU09OKE5hdGl2ZUNvZGUpKSwgWDg2UmVnaXN0ZXJzOjplc2kpOwogICAgIGppdC54
b3I2NChYODZSZWdpc3RlcnM6OmVzaSwgWDg2UmVnaXN0ZXJzOjpyOSk7CiAgICAgaml0LmNhbGwo
WDg2UmVnaXN0ZXJzOjpyOSk7CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIG5hdGl2ZUZvckdlCiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNl
SklUOjpBZGRyZXNzKEFSTTY0UmVnaXN0ZXJzOjp4MiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rp
b24pLCBBUk02NFJlZ2lzdGVyczo6eDIpOwogICAgIH0gZWxzZQogICAgICAgICBqaXQubG9hZFB0
cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDEsIEludGVybmFsRnVu
Y3Rpb246Om9mZnNldE9mTmF0aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBBUk02NFJlZ2lzdGVyczo6
eDIpOwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoZ19uYXRpdmVD
b2RlUG9pc29uKSwgQVJNNjRSZWdpc3RlcnM6OngxKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFj
ZUpJVDo6VHJ1c3RlZEltbTY0KFBPSVNPTihOYXRpdmVDb2RlKSksIEFSTTY0UmVnaXN0ZXJzOjp4
MSk7CiAgICAgaml0LnhvcjY0KEFSTTY0UmVnaXN0ZXJzOjp4MSwgQVJNNjRSZWdpc3RlcnM6Ongy
KTsKICAgICBqaXQuY2FsbChBUk02NFJlZ2lzdGVyczo6eDIpOwogCkBAIC0xMTcxLDcgKzExNzEs
NyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wIG5vQ29kZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgR1BSSW5mbzo6cmVnVDApOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoZ19qaXRDb2RlUG9pc29uKSwgR1BSSW5mbzo6
cmVnVDEpOworICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFBPSVNPTihK
SVRDb2RlKSksIEdQUkluZm86OnJlZ1QxKTsKICAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEs
IEdQUkluZm86OnJlZ1QwKTsKICNlbmRpZgogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQs
IEdQUkluZm86OnJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyMjY5Mjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjUzMCw3ICsyNTMwLDcgQEAgX2xsaW50X29wX3Byb2Zp
bGVfdHlwZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVucG9p
c29uKENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29u
LCB0MSwgdDIpCiAgICAgIyB0MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJv
ZmlsZXJMb2cuCiAgICAgbG9hZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20JKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0
NSw3IEBAIG1hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgdW5wb2lzb24oQ29k
ZUJsb2NrUG9pc29uLCBQQikKKyAgICB1bnBvaXNvbihfZ19Db2RlQmxvY2tQb2lzb24sIFBCLCB0
MSkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2Zy
LCB0MSwgOF0KICAgICB2YWx1ZVByb2ZpbGUocjAsIChDYWxsT3BDb2RlU2l6ZSAtIDEpLCB0MykK
QEAgLTQ4MCwyNiArNDgwLDE3IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwg
c2NyYXQKICAgICBzdG9yZXEgdmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hd
CiBlbmQKIAotbWFjcm8gc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVy
ZUlEVGhlblN0cnVjdHVyZSwgc2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVX
aXRoU2NyYXRjaChzdHJ1Y3R1cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQog
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoCiAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X3BvaXNvbmVkVk1bc2NyYXRjaF0sIHNjcmF0Y2gKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lz
b24sIHNjcmF0Y2gpCisgICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoLCBz
Y3JhdGNoMikKICAgICBsb2FkcCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSAr
IFN0cnVjdHVyZUlEVGFibGU6Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKICAgICBsb2FkcCBb
c2NyYXRjaCwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlLCA4XSwgc3RydWN0dXJlSURUaGVuU3Ry
dWN0dXJlCiBlbmQKIAotbWFjcm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVj
dHVyZSwgc2NyYXRjaCkKK21hY3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1
Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFtjZWxsXSwgc3RydWN0dXJlCi0gICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNo
KHN0cnVjdHVyZSwgc2NyYXRjaCkKLWVuZAotCi1tYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJl
ckZpcnN0QXJnKGNlbGwsIHN0cnVjdHVyZSkKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJl
SURbY2VsbF0sIHN0cnVjdHVyZQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCi0gICAg
bG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bY2VsbF0sIGNlbGwKLSAgICB1bnBvaXNvbihD
b2RlQmxvY2tQb2lzb24sIGNlbGwpCi0gICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVj
dHVyZUlEVGFibGUgKyBTdHJ1Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCi0gICAg
bG9hZHAgW2NlbGwsIHN0cnVjdHVyZSwgOF0sIHN0cnVjdHVyZQorICAgIHN0cnVjdHVyZUlEVG9T
dHJ1Y3R1cmVXaXRoU2NyYXRjaChzdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogZW5kCiAK
ICMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIuCkBAIC01NjIsNyArNTUzLDcgQEAg
bWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgc2xvdwogICAgICMgUmVsb2FkIENv
ZGVCbG9jayBhbmQgcmVzZXQgUEMsIHNpbmNlIHRoZSBzbG93X3BhdGggY2xvYmJlcmVkIHRoZW0u
CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2lu
c3RydWN0aW9uc1t0MV0sIFBCCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQikKKyAg
ICB1bnBvaXNvbihfZ19Db2RlQmxvY2tQb2lzb24sIFBCLCB0MikKICAgICBtb3ZlIDAsIFBDCiAg
ICAgam1wIGRvbmVMYWJlbAogZW5kCkBAIC02NDEsNyArNjMyLDcgQEAgX2xsaW50X29wX3RvX3Ro
aXM6CiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAu
b3BUb1RoaXNTbG93CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5
cGUsIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0
MikKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MiwgdDMpCiAgICAgbG9h
ZHBGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCiAgICAgYnBuZXEgdDEsIHQyLCAub3BUb1RoaXNTbG93
CiAgICAgZGlzcGF0Y2goY29uc3RleHByIG9wX3RvX3RoaXNfbGVuZ3RoKQpAQCAtNzI0LDcgKzcx
NSw3IEBAIG1hY3JvIGVxdWFsTnVsbENvbXBhcmlzb24oKQogICAgIG1vdmUgMCwgdDAKICAgICBq
bXAgLmRvbmUKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgotICAgIGxvYWRTdHJ1Y3R1cmVXaXRo
U2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIs
IHQxLCB0MykKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKICAgICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxP
YmplY3RbdDJdLCB0MCwgdDAKQEAgLTExNjMsNyArMTE1NCw3IEBAIF9sbGludF9vcF9pc191bmRl
ZmluZWQ6CiAgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaChjb25zdGV4
cHIgb3BfaXNfdW5kZWZpbmVkX2xlbmd0aCkKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgotICAg
IGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDMsIHQxKQorICAgIGxvYWRTdHJ1Y3R1cmVX
aXRoU2NyYXRjaCh0MCwgdDMsIHQxLCB0NSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
ICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDEKICAgICBjcGVxIFN0
cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDNdLCB0MSwgdDAKQEAgLTE0MzMsNyArMTQyNCw3IEBA
IF9sbGludF9vcF9wdXRfYnlfaWQ6CiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9y
W3QzXSwgdDMKICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiB0Mywgb2sgZW5kKQogCi0gICAg
c3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHQyLCB0MSkKKyAgICBzdHJ1Y3R1cmVJ
RFRvU3RydWN0dXJlV2l0aFNjcmF0Y2godDIsIHQxLCB0NSkKICAgICBsb2FkcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlW3QyXSwgdDIKICAgICBicWVxIHQyLCBWYWx1ZU51bGwsIC5vcFB1dEJ5SWRU
cmFuc2l0aW9uQ2hhaW5Eb25lCiAub3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluTG9vcDoKQEAgLTE3
NDAsNyArMTczMSw3IEBAIG1hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEK
ICAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAg
ICAgYnRxbnogdDAsIHRhZ01hc2ssIC5pbW1lZGlhdGUKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNj
cmF0Y2godDAsIHQyLCB0MSkKKyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0
MSwgdDMpCiAgICAgY2VsbEhhbmRsZXIodDIsIEpTQ2VsbDo6bV9mbGFnc1t0MF0sIC50YXJnZXQp
CiAgICAgZGlzcGF0Y2goMykKIApAQCAtMTk1NCw3ICsxOTQ1LDcgQEAgbWFjcm8gZG9DYWxsKHNs
b3dQYXRoLCBwcmVwYXJlQ2FsbCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXls
b2FkT2Zmc2V0W3QzXQogICAgIG1vdmUgdDMsIHNwCiAgICAgaWYgUE9JU09OCi0gICAgICAgIGxv
YWRwIF9nX2ppdENvZGVQb2lzb24sIHQyCisgICAgICAgIGxvYWRwIF9nX0pJVENvZGVQb2lzb24s
IHQyCiAgICAgICAgIHhvcnAgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3Qx
XSwgdDIKICAgICAgICAgcHJlcGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCiAgICAgICAgIGNhbGxU
YXJnZXRGdW5jdGlvbih0MikKQEAgLTIwMDcsNyArMTk5OCw3IEBAIF9sbGludF9vcF9jYXRjaDoK
IAogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNbUEJdLCBQQgotICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgUEIpCisg
ICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCBQQiwgdDIpCiAgICAgbG9hZHAgVk06OnRh
cmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwgUEMKICAgICBy
c2hpZnRwIDMsIFBDCkBAIC0yMDg0LDcgKzIwNzUsNyBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBv
bGluZShleGVjdXRhYmxlT2ZmCiAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3Qx
XSwgdDEKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkKICAg
ICBpZiBDX0xPT1AKLSAgICAgICAgbG9hZHAgX2dfbmF0aXZlQ29kZVBvaXNvbiwgdDIKKyAgICAg
ICAgbG9hZHAgX2dfTmF0aXZlQ29kZVBvaXNvbiwgdDIKICAgICAgICAgeG9ycCBleGVjdXRhYmxl
T2Zmc2V0VG9GdW5jdGlvblt0MV0sIHQyCiAgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSB0MgogICAg
IGVsc2UKQEAgLTIwOTMsNyArMjA4NCw3IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4
ZWN1dGFibGVPZmYKICAgICAgICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25b
dDFdCiAgICAgICAgICAgICBhZGRwIDMyLCBzcAogICAgICAgICBlbHNlCi0gICAgICAgICAgICBs
b2FkcCBfZ19uYXRpdmVDb2RlUG9pc29uLCB0MgorICAgICAgICAgICAgbG9hZHAgX2dfTmF0aXZl
Q29kZVBvaXNvbiwgdDIKICAgICAgICAgICAgIHhvcnAgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rp
b25bdDFdLCB0MgogICAgICAgICAgICAgY2FsbCB0MgogICAgICAgICBlbmQKQEAgLTIxMjcsNyAr
MjExOCw3IEBAIG1hY3JvIGludGVybmFsRnVuY3Rpb25DYWxsVHJhbXBvbGluZShvZmYKICAgICBs
b2FkcCBDYWxsZWVbY2ZyXSwgdDEKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0Mywg
MHhkZWFkMDAwMSkKICAgICBpZiBDX0xPT1AKLSAgICAgICAgbG9hZHAgX2dfbmF0aXZlQ29kZVBv
aXNvbiwgdDIKKyAgICAgICAgbG9hZHAgX2dfTmF0aXZlQ29kZVBvaXNvbiwgdDIKICAgICAgICAg
eG9ycCBvZmZzZXRPZkZ1bmN0aW9uW3QxXSwgdDIKICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIHQy
CiAgICAgZWxzZQpAQCAtMjEzNiw3ICsyMTI3LDcgQEAgbWFjcm8gaW50ZXJuYWxGdW5jdGlvbkNh
bGxUcmFtcG9saW5lKG9mZgogICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW3QxXQog
ICAgICAgICAgICAgYWRkcCAzMiwgc3AKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9hZHAg
X2dfbmF0aXZlQ29kZVBvaXNvbiwgdDIKKyAgICAgICAgICAgIGxvYWRwIF9nX05hdGl2ZUNvZGVQ
b2lzb24sIHQyCiAgICAgICAgICAgICB4b3JwIG9mZnNldE9mRnVuY3Rpb25bdDFdLCB0MgogICAg
ICAgICAgICAgY2FsbCB0MgogICAgICAgICBlbmQKQEAgLTIyNDcsNyArMjIzOCw3IEBAIF9sbGlu
dF9vcF9yZXNvbHZlX3Njb3BlOgogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5k
LCBzbG93UGF0aCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAg
bG9hZHEgW2NmciwgdDAsIDhdLCB0MAotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwg
dDIsIHQxKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxLCB0MykKICAg
ICBsb2FkcEZyb21JbnN0cnVjdGlvbig1LCB0MSkKICAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRo
CiBlbmQKQEAgLTI1MDAsNyArMjQ5MSw3IEBAIF9sbGludF9vcF9wcm9maWxlX3R5cGU6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRw
IENvZGVCbG9jazo6bV9wb2lzb25lZFZNW3QxXSwgdDEKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQ
b2lzb24sIHQxKQorICAgIHVucG9pc29uKF9nX0NvZGVCbG9ja1BvaXNvbiwgdDEsIHQzKQogICAg
ICMgdDEgaXMgaG9sZGluZyB0aGUgcG9pbnRlciB0byB0aGUgdHlwZVByb2ZpbGVyTG9nLgogICAg
IGxvYWRwIFZNOjptX3R5cGVQcm9maWxlckxvZ1t0MV0sIHQxCiAgICAgIyB0MiBpcyBob2xkaW5n
IHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGxvZyBlbnRyeS4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlz
aW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMjA0LDggKzIwNCw2IEBAIGVsc2UKICAgICBj
b25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKIGVuZAogCi1jb25zdCBDb2RlQmxvY2tQ
b2lzb24gPSBjb25zdGV4cHIgQ29kZUJsb2NrOjpzX3BvaXNvbgotCiAjIFB1dEJ5SWRGbGFncyBk
YXRhCiBjb25zdCBQdXRCeUlkUHJpbWFyeVR5cGVNYXNrID0gY29uc3RleHByIFB1dEJ5SWRQcmlt
YXJ5VHlwZU1hc2sKIGNvbnN0IFB1dEJ5SWRQcmltYXJ5VHlwZVNlY29uZGFyeSA9IGNvbnN0ZXhw
ciBQdXRCeUlkUHJpbWFyeVR5cGVTZWNvbmRhcnkKQEAgLTc1NCw5ICs3NTIsMTAgQEAgbWFjcm8g
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlcwogICAgIGVuZAogZW5kCiAKLW1hY3Jv
IHVucG9pc29uKHBvaXNvbiwgZmllbGQpCittYWNybyB1bnBvaXNvbihwb2lzb24sIGZpZWxkLCBz
Y3JhdGNoKQogICAgIGlmIFBPSVNPTgotICAgICAgICB4b3JwIHBvaXNvbiwgZmllbGQKKyAgICAg
ICAgbG9hZHAgcG9pc29uLCBzY3JhdGNoCisgICAgICAgIHhvcnAgc2NyYXRjaCwgZmllbGQKICAg
ICBlbmQKIGVuZAogCkBAIC0xMDI0LDcgKzEwMjMsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9jCiAgICAgIyBTZXQgdXAgdGhlIFBDLgogICAgIGlmIEpTVkFMVUU2
NAogICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIKLSAgICAg
ICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQikKKyAgICAgICAgdW5wb2lzb24oX2dfQ29k
ZUJsb2NrUG9pc29uLCBQQiwgdDMpCiAgICAgICAgIG1vdmUgMCwgUEMKICAgICBlbHNlCiAgICAg
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQwpAQCAtMTAzNSw3ICsx
MDM0LDcgQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvYwogICAgIHN1
YnAgY2ZyLCB0MCwgdDAKICAgICBicGEgdDAsIGNmciwgLm5lZWRTdGFja0NoZWNrCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MgotICAgIHVucG9pc29uKENvZGVCbG9j
a1BvaXNvbiwgdDIpCisgICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCB0MiwgdDMpCiAg
ICAgaWYgQ19MT09QCiAgICAgICAgIGJwYmVxIFZNOjptX2Nsb29wU3RhY2tMaW1pdFt0Ml0sIHQw
LCAuc3RhY2tIZWlnaHRPSwogICAgIGVsc2UKQEAgLTE2MjMsNyArMTYyMiw3IEBAIF9sbGludF9v
cF9jaGVja190cmFwczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAg
IHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oX2dfQ29kZUJsb2Nr
UG9pc29uLCB0MSwgdDIpCiAgICAgbG9hZGIgVk06Om1fdHJhcHMrVk1UcmFwczo6bV9uZWVkVHJh
cEhhbmRsaW5nW3QxXSwgdDAKICAgICBidHBueiB0MCwgLmhhbmRsZVRyYXBzCiAuYWZ0ZXJIYW5k
bGluZ1RyYXBzOgpAQCAtMTYzOSw3ICsxNjM4LDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgog
bWFjcm8gYWNxdWlyZVNoYWRvd0NoaWNrZW5QYWNrZXQoc2xvdykKICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0g
ICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCB0MSkKKyAgICB1bnBvaXNvbihfZ19Db2RlQmxv
Y2tQb2lzb24sIHQxLCB0MikKICAgICBsb2FkcCBWTTo6bV9zaGFkb3dDaGlja2VuW3QxXSwgdDIK
ICAgICBsb2FkcCBTaGFkb3dDaGlja2VuOjptX2xvZ0N1cnNvclt0Ml0sIHQwCiAgICAgYnBhZXEg
dDAsIFNoYWRvd0NoaWNrZW46Om1fbG9nRW5kW3QyXSwgc2xvdwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oCShyZXZpc2lvbiAy
MjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICAvLyBGSVhNRTogTWFrZSBpdCBQb2lzb25lZFJlZjxTb3Vy
Y2VQcm92aWRpZXI+LgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY4MzI1Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFVubGlua2VkU291cmNlQ29k
ZVBvaXNvbiwgU291cmNlUHJvdmlkZXI+IG1fcHJvdmlkZXI7CisgICAgICAgIFBvaXNvbmVkUmVm
UHRyPFBPSVNPTihVbmxpbmtlZFNvdXJjZUNvZGUpLCBTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRl
cjsKICAgICAgICAgaW50IG1fc3RhcnRPZmZzZXQ7CiAgICAgICAgIGludCBtX2VuZE9mZnNldDsK
ICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5oCShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2Miw4IEBAIHBy
b3RlY3RlZDoKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBiaXQgaXMgc2V0IGlmIGFueSB1c2VyIG1v
ZGlmaWVzIHRoZSBjb25zdHJ1Y3RvciBwcm9wZXJ0eSBBcnJheS5wcm90b3R5cGUuIFRoaXMgaXMg
dXNlZCB0byBvcHRpbWl6ZSBzcGVjaWVzIGNyZWF0aW9uIGZvciBKU0FycmF5cy4KICAgICBmcmll
bmQgQXJyYXlQcm90b3R5cGVBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OwotICAg
IFBvaXNvbmVkVW5pcXVlUHRyPEFycmF5UHJvdG90eXBlUG9pc29uLCBBcnJheVByb3RvdHlwZUFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+IG1fY29uc3RydWN0b3JXYXRjaHBvaW50
OwotICAgIFBvaXNvbmVkVW5pcXVlUHRyPEFycmF5UHJvdG90eXBlUG9pc29uLCBBcnJheVByb3Rv
dHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+IG1fY29uc3RydWN0b3JTcGVj
aWVzV2F0Y2hwb2ludDsKKyAgICBQb2lzb25lZFVuaXF1ZVB0cjxQT0lTT04oQXJyYXlQcm90b3R5
cGUpLCBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+IG1f
Y29uc3RydWN0b3JXYXRjaHBvaW50OworICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBPSVNPTihBcnJh
eVByb3RvdHlwZSksIEFycmF5UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hw
b2ludD4gbV9jb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50OwogfTsKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0
dGVyLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0N1c3RvbUdldHRlclNldHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkpTQ1BvaXNvbmVkUHRyLmgiCisjaW5jbHVkZSAi
SlNDUG9pc29uLmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90
LmgiCiAjaW5jbHVkZSAiUHV0UHJvcGVydHlTbG90LmgiCkBAIC02OCw3ICs2OCw3IEBAIHByb3Rl
Y3RlZDoKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHVzaW5nIFBv
aXNvbmVkQWNjZXNzb3IgPSBQb2lzb25lZDxnX25hdGl2ZUNvZGVQb2lzb24sIFQ+OworICAgIHVz
aW5nIFBvaXNvbmVkQWNjZXNzb3IgPSBQb2lzb25lZDxQT0lTT04oTmF0aXZlQ29kZSksIFQ+Owog
CiAgICAgUG9pc29uZWRBY2Nlc3NvcjxDdXN0b21HZXR0ZXI+IG1fZ2V0dGVyOwogICAgIFBvaXNv
bmVkQWNjZXNzb3I8Q3VzdG9tU2V0dGVyPiBtX3NldHRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5oCShyZXZpc2lvbiAyMjY5MjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0
IEdyZWdvcmlhbkRhdGVUaW1lKiBjYWxjdWxhdGVHcmVnb3JpYW5EYXRlVGltZShFeGVjU3RhdGUq
KSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSog
Y2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWVVVEMoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICBt
dXRhYmxlIFBvaXNvbmVkUmVmUHRyPERhdGVJbnN0YW5jZVBvaXNvbiwgRGF0ZUluc3RhbmNlRGF0
YT4gbV9kYXRhOworICAgIG11dGFibGUgUG9pc29uZWRSZWZQdHI8UE9JU09OKERhdGVJbnN0YW5j
ZSksIERhdGVJbnN0YW5jZURhdGE+IG1fZGF0YTsKIH07CiAKIERhdGVJbnN0YW5jZSogYXNEYXRl
SW5zdGFuY2UoSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRl
biAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJv
biBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHlyaWdodCAoQykgMjAw
NyBNYWtzIE9ybG92aWNoCiAgKgpAQCAtMjQsNyArMjQsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uZWRQ
dHIuaCIKKyNpbmNsdWRlICJKU0NQb2lzb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9i
amVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IH0KIAogcHJvdGVjdGVkOgotICAgIHVzaW5nIFBvaXNvbmVkTmF0aXZlRnVuY3Rpb24gPSBQb2lz
b25lZDxnX25hdGl2ZUNvZGVQb2lzb24sIE5hdGl2ZUZ1bmN0aW9uPjsKKyAgICB1c2luZyBQb2lz
b25lZE5hdGl2ZUZ1bmN0aW9uID0gUG9pc29uZWQ8UE9JU09OKE5hdGl2ZUNvZGUpLCBOYXRpdmVG
dW5jdGlvbj47CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKFZNJiwg
U3RydWN0dXJlKiwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb25Gb3JDYWxsLCBOYXRpdmVGdW5jdGlv
biBmdW5jdGlvbkZvckNvbnN0cnVjdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsNyArNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXpl
KEpTQ2VsbCopOwogCiBwcml2YXRlOgotICAgIENvbnN0RXhwclBvaXNvbmVkPEpTQXJyYXlCdWZm
ZXJQb2lzb24sIEFycmF5QnVmZmVyKj4gbV9pbXBsOworICAgIFBvaXNvbmVkPFBPSVNPTihKU0Fy
cmF5QnVmZmVyKSwgQXJyYXlCdWZmZXIqPiBtX2ltcGw7CiB9OwogCiBpbmxpbmUgQXJyYXlCdWZm
ZXIqIHRvUG9zc2libHlTaGFyZWRBcnJheUJ1ZmZlcihWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5jcHAJKHJldmlz
aW9uIDIyNjkyNykJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29u
ZWRQdHIuY3BwOjIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1Bv
aXNvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJKU0NQb2lzb25lZFB0ci5oIgorCisjaW5jbHVkZSA8bXV0ZXg+CisKK25hbWVzcGFjZSBK
U0MgeworCit1aW50cHRyX3QgZ19nbG9iYWxEYXRhUG9pc29uOwordWludHB0cl90IGdfaml0Q29k
ZVBvaXNvbjsKK3VpbnRwdHJfdCBnX25hdGl2ZUNvZGVQb2lzb247CisKK3ZvaWQgaW5pdGlhbGl6
ZVBvaXNvbigpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAg
Z19nbG9iYWxEYXRhUG9pc29uID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX2ppdENvZGVQb2lz
b24gPSBtYWtlUG9pc29uKCk7CisgICAgICAgIGdfbmF0aXZlQ29kZVBvaXNvbiA9IG1ha2VQb2lz
b24oKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmNwcAkocmV2aXNpb24gMjI2OTI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNCwyMyArMjQsMjYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSlNDUG9pc29uZWRQdHIuaCIKKyNpbmNsdWRlICJKU0NQb2lzb24uaCIKIAogI2luY2x1ZGUg
PG11dGV4PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi11
aW50cHRyX3QgZ19nbG9iYWxEYXRhUG9pc29uOwotdWludHB0cl90IGdfaml0Q29kZVBvaXNvbjsK
LXVpbnRwdHJfdCBnX25hdGl2ZUNvZGVQb2lzb247CisjZGVmaW5lIElOU1RBTlRJQVRFX1BPSVNP
Tihwb2lzb25JRCkgXAorICAgIHVpbnRwdHJfdCBQT0lTT04ocG9pc29uSUQpOworRk9SX0VBQ0hf
SlNDX1BPSVNPTihJTlNUQU5USUFURV9QT0lTT04pCiAKIHZvaWQgaW5pdGlhbGl6ZVBvaXNvbigp
CiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKICAgICBz
dGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKLSAgICAgICAgZ19nbG9iYWxE
YXRhUG9pc29uID0gbWFrZVBvaXNvbigpOwotICAgICAgICBnX2ppdENvZGVQb2lzb24gPSBtYWtl
UG9pc29uKCk7Ci0gICAgICAgIGdfbmF0aXZlQ29kZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKwor
I2RlZmluZSBJTklUSUFMSVpFX1BPSVNPTihwb2lzb25JRCkgXAorICAgIFBPSVNPTihwb2lzb25J
RCkgPSBtYWtlUG9pc29uKCk7CisKKyAgICAgICAgRk9SX0VBQ0hfSlNDX1BPSVNPTihJTklUSUFM
SVpFX1BPSVNPTikKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDUG9pc29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDUG9pc29uLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwzMyArMjksNDUg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVudW0gUG9pc29uIHsKLSAgICBOb3RQb2lzb25lZCA9
IDAsIC8vIFJlc2VydmVkIChhbmQgdW51c2VkKSBzbyB0aGF0IHBvaXNvbiBrZXlzIGFyZSBuZXZl
ciAwLgorLy8gTGV0J3Mga2VlcCB0aGUgZm9sbG93aW5nIGxpc3Qgb2YgcG9pc29ucyBpbiBhbHBo
YWJldGljYWwgb3JkZXIganVzdCBzbyBpdCdzIGVhc2llciB0byByZWFkLgorI2RlZmluZSBGT1Jf
RUFDSF9KU0NfUE9JU09OKHYpIFwKKyAgICB2KEFycmF5UHJvdG90eXBlKSBcCisgICAgdihDb2Rl
QmxvY2spIFwKKyAgICB2KERhdGVJbnN0YW5jZSkgXAorICAgIHYoR2xvYmFsRGF0YSkgXAorICAg
IHYoSklUQ29kZSkgXAorICAgIHYoSlNBUElXcmFwcGVyT2JqZWN0KSBcCisgICAgdihKU0FycmF5
QnVmZmVyKSBcCisgICAgdihKU0NhbGxiYWNrT2JqZWN0KSBcCisgICAgdihKU0dsb2JhbE9iamVj
dCkgXAorICAgIHYoSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMpIFwKKyAgICB2KEpTU2NyaXB0RmV0
Y2hlcikgXAorICAgIHYoSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgXAorICAgIHYoSlNXZWJBc3Nl
bWJseUluc3RhbmNlKSBcCisgICAgdihKU1dlYkFzc2VtYmx5TWVtb3J5KSBcCisgICAgdihKU1dl
YkFzc2VtYmx5TW9kdWxlKSBcCisgICAgdihKU1dlYkFzc2VtYmx5VGFibGUpIFwKKyAgICB2KE5h
dGl2ZUNvZGUpIFwKKyAgICB2KFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSkgXAorICAgIHYoVW5s
aW5rZWRTb3VyY2VDb2RlKSBcCisgICAgdihXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZSkgXAorICAg
IHYoV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQpIFwKKyAgICB2KFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZSkgXAorICAgIHYoV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24pIFwKIAotICAgIC8vIEFkZCBu
ZXcgcG9pc29uIGtleXMgYmVsb3cgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLiBUaGUgb3JkZXIgZG9l
c24ndCByZWFsbHkKLSAgICAvLyBtYXR0ZXIsIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGtlZXAgdGhl
bSBpbiBhbHBoYWJldGljYWxseSBvcmRlciBmb3IKLSAgICAvLyBncmVhdGVyIHJlYWRhYmlsaXR5
LgotICAgIEFycmF5UHJvdG90eXBlUG9pc29uLAotICAgIENvZGVCbG9ja1BvaXNvbiwKLSAgICBE
YXRlSW5zdGFuY2VQb2lzb24sCi0gICAgSlNBUElXcmFwcGVyT2JqZWN0UG9pc29uLAotICAgIEpT
QXJyYXlCdWZmZXJQb2lzb24sCi0gICAgSlNDYWxsYmFja09iamVjdFBvaXNvbiwKLSAgICBKU0ds
b2JhbE9iamVjdFBvaXNvbiwKLSAgICBKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1BvaXNvbiwKLSAg
ICBKU1NjcmlwdEZldGNoZXJQb2lzb24sCi0gICAgSlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNv
biwKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24sCi0gICAgSlNXZWJBc3NlbWJseU1l
bW9yeVBvaXNvbiwKLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlUG9pc29uLAotICAgIEpTV2ViQXNz
ZW1ibHlUYWJsZVBvaXNvbiwKLSAgICBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sCi0g
ICAgVW5saW5rZWRTb3VyY2VDb2RlUG9pc29uLAotICAgIFdlYkFzc2VtYmx5RnVuY3Rpb25CYXNl
UG9pc29uLAotICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkUG9pc29uLAotICAgIFdlYkFzc2Vt
Ymx5VG9KU0NhbGxlZVBvaXNvbiwKLSAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblBvaXNv
biwKLX07CisjZGVmaW5lIFBPSVNPTihfcG9pc29uSURfKSBnXyMjX3BvaXNvbklEXyMjUG9pc29u
CiAKLX0gLy8gbmFtZXNwYWNlIEpTQworI2RlZmluZSBERUNMQVJFX1BPSVNPTihfcG9pc29uSURf
KSBcCisgICAgZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBQT0lTT04oX3BvaXNv
bklEXyk7CisKK0ZPUl9FQUNIX0pTQ19QT0lTT04oREVDTEFSRV9QT0lTT04pCisjdW5kZWYgREVD
TEFSRV9QT0lTT04KKworc3RydWN0IENsYXNzSW5mbzsKIAordXNpbmcgUG9pc29uZWRDbGFzc0lu
Zm9QdHIgPSBQb2lzb25lZDxQT0lTT04oR2xvYmFsRGF0YSksIGNvbnN0IENsYXNzSW5mbyo+Owor
dXNpbmcgUG9pc29uZWRNYXNtUHRyID0gUG9pc29uZWQ8UE9JU09OKEpJVENvZGUpLCB2b2lkKj47
CisKK3ZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5jcHAJ
KHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1Bv
aXNvbmVkUHRyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSlNDUG9pc29uZWRQdHIuaCIKLQotI2luY2x1ZGUgPG11dGV4PgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotdWludHB0cl90IGdfZ2xvYmFsRGF0YVBvaXNvbjsKLXVpbnRwdHJfdCBnX2pp
dENvZGVQb2lzb247Ci11aW50cHRyX3QgZ19uYXRpdmVDb2RlUG9pc29uOwotCi12b2lkIGluaXRp
YWxpemVQb2lzb24oKQotewotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25j
ZUZsYWc7Ci0gICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7Ci0gICAg
ICAgIGdfZ2xvYmFsRGF0YVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKLSAgICAgICAgZ19qaXRDb2Rl
UG9pc29uID0gbWFrZVBvaXNvbigpOwotICAgICAgICBnX25hdGl2ZUNvZGVQb2lzb24gPSBtYWtl
UG9pc29uKCk7Ci0gICAgfSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb25lZFB0ci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmgJKHJldmlzaW9u
IDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRy
LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvUG9p
c29uZWQuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWV4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1
aW50cHRyX3QgZ19nbG9iYWxEYXRhUG9pc29uOwotZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVp
bnRwdHJfdCBnX2ppdENvZGVQb2lzb247Ci1leHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0
cl90IGdfbmF0aXZlQ29kZVBvaXNvbjsKLQotc3RydWN0IENsYXNzSW5mbzsKLQotdXNpbmcgUG9p
c29uZWRDbGFzc0luZm9QdHIgPSBQb2lzb25lZDxnX2dsb2JhbERhdGFQb2lzb24sIGNvbnN0IENs
YXNzSW5mbyo+OwotdXNpbmcgUG9pc29uZWRNYXNtUHRyID0gUG9pc29uZWQ8Z19qaXRDb2RlUG9p
c29uLCB2b2lkKj47Ci0KLXZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpOwotCi19IC8vIG5hbWVzcGFj
ZSBKU0MKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MDEsNyArNDAxLDcgQEAg
cHVibGljOgogCiAgICAgVk0mIG1fdm07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB1c2lu
ZyBQb2lzb25lZFVuaXF1ZVB0ciA9IFdURjo6UG9pc29uZWRVbmlxdWVQdHI8SlNHbG9iYWxPYmpl
Y3RQb2lzb24sIFQ+OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIFBvaXNvbmVkVW5p
cXVlUHRyID0gV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjxQT0lTT04oSlNHbG9iYWxPYmplY3QpLCBU
PjsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIFBvaXNvbmVkVW5pcXVlUHRy
PEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyPiBtX2luc3BlY3Rv
ckNvbnRyb2xsZXI7CkBAIC05MjMsNyArOTIzLDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHMsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+
CiAgICAgc3RhdGljIEpTR2xvYmFsT2JqZWN0OjpQb2lzb25lZFVuaXF1ZVB0cjxUPiBtYWtlUG9p
c29uZWRVbmlxdWUoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIFdURjo6bWFrZVBvaXNvbmVkVW5pcXVlPEpTR2xvYmFsT2JqZWN0UG9pc29uLCBUPihzdGQ6
OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVudHMpLi4uKTsKKyAgICAgICAgcmV0dXJuIFdURjo6
bWFrZVBvaXNvbmVkVW5pcXVlPFBPSVNPTihKU0dsb2JhbE9iamVjdCksIFQ+KHN0ZDo6Zm9yd2Fy
ZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgIH0KIAogICAgIGJvb2wgbV9uZWVkc1Np
dGVTcGVjaWZpY1F1aXJrcyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmgJKHJldmlzaW9u
IDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgUG9pc29uZWRSZWY8SlNTY3JpcHRGZXRjaFBhcmFtZXRlcnNQb2lz
b24sIFNjcmlwdEZldGNoUGFyYW1ldGVycz4gbV9wYXJhbWV0ZXJzOworICAgIFBvaXNvbmVkUmVm
PFBPSVNPTihKU1NjcmlwdEZldGNoUGFyYW1ldGVycyksIFNjcmlwdEZldGNoUGFyYW1ldGVycz4g
bV9wYXJhbWV0ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NjcmlwdEZldGNoZXIuaAkocmV2aXNpb24gMjI2
OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRGZXRjaGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgUG9pc29uZWRSZWZQdHI8SlNTY3JpcHRGZXRjaGVyUG9pc29uLCBTY3JpcHRGZXRjaGVy
PiBtX2ZldGNoZXI7CisgICAgUG9pc29uZWRSZWZQdHI8UE9JU09OKEpTU2NyaXB0RmV0Y2hlciks
IFNjcmlwdEZldGNoZXI+IG1fZmV0Y2hlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUV4ZWN1dGFibGUu
aAkocmV2aXNpb24gMjI2OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0
aXZlRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQmFzZS5oIgotI2luY2x1ZGUgIkpTQ1BvaXNv
bmVkUHRyLmgiCisjaW5jbHVkZSAiSlNDUG9pc29uLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogbmFt
ZXNwYWNlIERPTUpJVCB7CkBAIC05MCw3ICs5MCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgRXhlY3V0YWJsZUJhc2U7Ci0gICAgdXNpbmcgUG9pc29uZWROYXRp
dmVGdW5jdGlvbiA9IFBvaXNvbmVkPGdfbmF0aXZlQ29kZVBvaXNvbiwgTmF0aXZlRnVuY3Rpb24+
OworICAgIHVzaW5nIFBvaXNvbmVkTmF0aXZlRnVuY3Rpb24gPSBQb2lzb25lZDxQT0lTT04oTmF0
aXZlQ29kZSksIE5hdGl2ZUZ1bmN0aW9uPjsKIAogICAgIE5hdGl2ZUV4ZWN1dGFibGUoVk0mLCBO
YXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEludHJp
bnNpYywgY29uc3QgRE9NSklUOjpTaWduYXR1cmUqKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJ
KHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsOCArMTg3LDggQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaW5nbGVTbG90VHJhbnNpdGlv
bldlYWtPd25lcjsKLSAgICB1c2luZyBQb2lzb25lZFRyYW5zaXRpb25NYXBQdHIgPSBDb25zdEV4
cHJQb2lzb25lZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24sIFRyYW5zaXRpb25NYXAq
PjsKLSAgICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8U3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlUG9pc29uLCBXZWFrSW1wbCo+OworICAgIHVzaW5nIFBvaXNv
bmVkVHJhbnNpdGlvbk1hcFB0ciA9IFBvaXNvbmVkPFBPSVNPTihTdHJ1Y3R1cmVUcmFuc2l0aW9u
VGFibGUpLCBUcmFuc2l0aW9uTWFwKj47CisgICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9
IFBvaXNvbmVkPFBPSVNPTihTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUpLCBXZWFrSW1wbCo+Owog
CiAgICAgYm9vbCBpc1VzaW5nU2luZ2xlU2xvdCgpIGNvbnN0CiAgICAgewpAQCAtMTk4LDEzICsx
OTgsMTMgQEAgcHJpdmF0ZToKICAgICBUcmFuc2l0aW9uTWFwKiBtYXAoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAgICAgICAgcmV0dXJuIFBv
aXNvbmVkVHJhbnNpdGlvbk1hcFB0cihtX2RhdGEpLnVucG9pc29uZWQoKTsKKyAgICAgICAgcmV0
dXJuIFBvaXNvbmVkVHJhbnNpdGlvbk1hcFB0cihQcmVQb2lzb25lZCwgbV9kYXRhKS51bnBvaXNv
bmVkKCk7CiAgICAgfQogCiAgICAgV2Vha0ltcGwqIHdlYWtJbXBsKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIEFTU0VSVChpc1VzaW5nU2luZ2xlU2xvdCgpKTsKLSAgICAgICAgcmV0dXJuIFBvaXNv
bmVkV2Vha0ltcGxQdHIobV9kYXRhICYgflVzaW5nU2luZ2xlU2xvdEZsYWcpLnVucG9pc29uZWQo
KTsKKyAgICAgICAgcmV0dXJuIFBvaXNvbmVkV2Vha0ltcGxQdHIoUHJlUG9pc29uZWQsIG1fZGF0
YSAmIH5Vc2luZ1NpbmdsZVNsb3RGbGFnKS51bnBvaXNvbmVkKCk7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRNYXAoVHJhbnNpdGlvbk1hcCogbWFwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
OTUsNyArMTk1LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cyA9IAog
Y2xhc3MgV3JpdGVCYXJyaWVyIDogcHVibGljIFdyaXRlQmFycmllckJhc2U8VCwgVHJhaXRzPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHBvaXNvbiA9IFRyYWl0czo6cG9pc29uOworICAgIHN0YXRpYyBhdXRvIHBvaXNv
bigpIHsgcmV0dXJuIFRyYWl0czo6cG9pc29uKCk7IH0KIAogICAgIFdyaXRlQmFycmllcigpCiAg
ICAgewpAQCAtMjI1LDcgKzIyNSw3IEBAIHRlbXBsYXRlIDw+CiBjbGFzcyBXcml0ZUJhcnJpZXI8
VW5rbm93biwgRHVtYlZhbHVlVHJhaXRzPFVua25vd24+PiA6IHB1YmxpYyBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24sIER1bWJWYWx1ZVRyYWl0czxVbmtub3duPj4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBwb2lzb24g
PSBEdW1iVmFsdWVUcmFpdHM8VW5rbm93bj46OnBvaXNvbjsKKyAgICBzdGF0aWMgYXV0byBwb2lz
b24oKSB7IHJldHVybiBEdW1iVmFsdWVUcmFpdHM8VW5rbm93bj46OnBvaXNvbigpOyB9CiAKICAg
ICBXcml0ZUJhcnJpZXIoKQogICAgIHsKQEAgLTI1NCwxMiArMjU0LDEyIEBAIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgV3JpdGVCYXJyaWUKICAgICByZXR1cm4gbGhzLmdldCgpID09IHJo
cy5nZXQoKTsKIH0KIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCBjbGFzcyBUPgordGVtcGxhdGU8
dWludHB0cl90JiBrZXksIGNsYXNzIFQ+CiB1c2luZyBQb2lzb25lZFdyaXRlQmFycmllclRyYWl0
c1NlbGVjdCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19zYW1lPFQsIFVua25v
d24+Ojp2YWx1ZSwKLSAgICBXVEY6OkNvbnN0RXhwclBvaXNvbmVkVmFsdWVUcmFpdHM8a2V5LCBU
PiwgV1RGOjpDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+CisgICAgV1RGOjpQb2lz
b25lZFZhbHVlVHJhaXRzPGtleSwgVD4sIFdURjo6UG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPgog
Pjo6dHlwZTsKIAotdGVtcGxhdGUgPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KK3RlbXBsYXRl
IDx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KIHVzaW5nIFBvaXNvbmVkV3JpdGVCYXJyaWVy
ID0gV3JpdGVCYXJyaWVyPFQsIFBvaXNvbmVkV3JpdGVCYXJyaWVyVHJhaXRzU2VsZWN0PGtleSwg
VD4+OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTVG9XYXNtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1RvV2FzbS5jcHAJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzEx
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnRlcm5hbEZ1bmN0aW9uPiBjcmVhdGUKICAgICAgICAg
aWYgKCFDb250ZXh0Ojp1c2VGYXN0VExTKCkpIHsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwganNPZmZzZXQp
LCB3YXNtQ29udGV4dEluc3RhbmNlR1BSKTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dEluc3RhbmNlR1BSLCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6Om9mZnNldE9mUG9pc29uZWRJbnN0YW5jZSgpKSwgd2FzbUNvbnRleHRJbnN0YW5jZUdQ
Uik7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChtYWtl
Q29uc3RFeHByUG9pc29uKEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbikpLCBzY3JhdGNoUmVn
KTsKKyAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFBPSVNP
TihKU1dlYkFzc2VtYmx5SW5zdGFuY2UpKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgICAgICBqaXQu
eG9yNjQoc2NyYXRjaFJlZywgd2FzbUNvbnRleHRJbnN0YW5jZUdQUik7CiAgICAgICAgICAgICBq
c09mZnNldCArPSBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMjI2OTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcg
KzUxLDcgQEAgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6SlNXZWJBc3NlbWJseUNvZAogICAgIDog
QmFzZSh2bSwgdm0ud2ViQXNzZW1ibHlDb2RlQmxvY2tTdHJ1Y3R1cmUuZ2V0KCkpCiAgICAgLCBt
X2NvZGVCbG9jayhXVEZNb3ZlKGNvZGVCbG9jaykpCiB7Ci0gICAgbV91bmNvbmRpdGlvbmFsRmlu
YWxpemVyID0gUG9pc29uZWRVbmlxdWVQdHI8SlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiwg
VW5jb25kaXRpb25hbEZpbmFsaXplcj46OmNyZWF0ZSgqdGhpcyk7CisgICAgbV91bmNvbmRpdGlv
bmFsRmluYWxpemVyID0gUG9pc29uZWRVbmlxdWVQdHI8UE9JU09OKEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2spLCBVbmNvbmRpdGlvbmFsRmluYWxpemVyPjo6Y3JlYXRlKCp0aGlzKTsKIAogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gZG8gdGhpcyBzeW5jaHJvbm91c2x5LgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA1NjcKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL0pTV2ViQXNzZW1ibHlDb2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtOTcsOSAr
OTcsOSBAQCBwcml2YXRlOgogICAgICAgICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrJiBjb2RlQmxv
Y2s7CiAgICAgfTsKIAotICAgIFBvaXNvbmVkUmVmPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lz
b24sIFdhc206OkNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CisgICAgUG9pc29uZWRSZWY8UE9JU09O
KEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spLCBXYXNtOjpDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwog
ICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlckNvZGVSZWY+IG1fd2FzbVRvSlNFeGl0U3R1YnM7Ci0g
ICAgUG9pc29uZWRVbmlxdWVQdHI8SlNXZWJBc3NlbWJseUNvZGVCbG9ja1BvaXNvbiwgVW5jb25k
aXRpb25hbEZpbmFsaXplcj4gbV91bmNvbmRpdGlvbmFsRmluYWxpemVyOworICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBPSVNPTihKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSwgVW5jb25kaXRpb25hbEZp
bmFsaXplcj4gbV91bmNvbmRpdGlvbmFsRmluYWxpemVyOwogICAgIEJhZzxDYWxsTGlua0luZm8+
IG1fY2FsbExpbmtJbmZvczsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUlu
c3RhbmNlLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mUG9pc29uZWRDYWxsZWUoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNXZWJBc3NlbWJseUluc3RhbmNlLCBtX2NhbGxlZSk7
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdXNpbmcgUG9pc29uZWRCYXJyaWVy
ID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUluc3RhbmNlUG9pc29uLCBUPjsK
KyAgICB1c2luZyBQb2lzb25lZEJhcnJpZXIgPSBQb2lzb25lZFdyaXRlQmFycmllcjxQT0lTT04o
SlNXZWJBc3NlbWJseUluc3RhbmNlKSwgVD47CiAKIHByb3RlY3RlZDoKICAgICBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UoVk0mLCBTdHJ1Y3R1cmUqLCBSZWY8V2FzbTo6SW5zdGFuY2U+JiYpOwpAQCAt
OTEsNyArOTEsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEpTV2ViQXNzZW1ibHlNb2R1
bGUqIG1vZHVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlLmdldCgpOyB9CiAKLSAgICBQb2lz
b25lZFJlZjxKU1dlYkFzc2VtYmx5SW5zdGFuY2VQb2lzb24sIFdhc206Okluc3RhbmNlPiBtX2lu
c3RhbmNlOworICAgIFBvaXNvbmVkUmVmPFBPSVNPTihKU1dlYkFzc2VtYmx5SW5zdGFuY2UpLCBX
YXNtOjpJbnN0YW5jZT4gbV9pbnN0YW5jZTsKIAogICAgIFBvaXNvbmVkQmFycmllcjxKU1dlYkFz
c2VtYmx5TW9kdWxlPiBtX21vZHVsZTsKICAgICBQb2lzb25lZEJhcnJpZXI8SlNXZWJBc3NlbWJs
eUNvZGVCbG9jaz4gbV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCShyZXZpc2lvbiAyMjY5MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVtb3J5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAotICAgIFBvaXNvbmVkUmVmPEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lz
b24sIFdhc206Ok1lbW9yeT4gbV9tZW1vcnk7Ci0gICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8SlNX
ZWJBc3NlbWJseU1lbW9yeVBvaXNvbiwgSlNBcnJheUJ1ZmZlcj4gbV9idWZmZXJXcmFwcGVyOwot
ICAgIFBvaXNvbmVkUmVmUHRyPEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lzb24sIEFycmF5QnVmZmVy
PiBtX2J1ZmZlcjsKKyAgICBQb2lzb25lZFJlZjxQT0lTT04oSlNXZWJBc3NlbWJseU1lbW9yeSks
IFdhc206Ok1lbW9yeT4gbV9tZW1vcnk7CisgICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09O
KEpTV2ViQXNzZW1ibHlNZW1vcnkpLCBKU0FycmF5QnVmZmVyPiBtX2J1ZmZlcldyYXBwZXI7Cisg
ICAgUG9pc29uZWRSZWZQdHI8UE9JU09OKEpTV2ViQXNzZW1ibHlNZW1vcnkpLCBBcnJheUJ1ZmZl
cj4gbV9idWZmZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgJKHJldmlz
aW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1i
bHlNb2R1bGUuaAkod29ya2luZyBjb3B5KQpAQCAtODEsMTAgKzgxLDEwIEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICBQb2lzb25lZFJlZjxKU1dlYkFz
c2VtYmx5TW9kdWxlUG9pc29uLCBXYXNtOjpNb2R1bGU+IG1fbW9kdWxlOworICAgIFBvaXNvbmVk
UmVmPFBPSVNPTihKU1dlYkFzc2VtYmx5TW9kdWxlKSwgV2FzbTo6TW9kdWxlPiBtX21vZHVsZTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdXNpbmcgUG9pc29uZWRCYXJyaWVyID0g
UG9pc29uZWRXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseU1vZHVsZVBvaXNvbiwgVD47CisgICAg
dXNpbmcgUG9pc29uZWRCYXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09OKEpTV2Vi
QXNzZW1ibHlNb2R1bGUpLCBUPjsKIAogICAgIFBvaXNvbmVkQmFycmllcjxTeW1ib2xUYWJsZT4g
bV9leHBvcnRTeW1ib2xUYWJsZTsKICAgICBQb2lzb25lZEJhcnJpZXI8SlNXZWJBc3NlbWJseUNv
ZGVCbG9jaz4gbV9jb2RlQmxvY2tzW1dhc206Ok51bWJlck9mTWVtb3J5TW9kZXNdOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseVRhYmxl
LmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxMCArNjYsMTAgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAotICAgIFBvaXNvbmVkUmVm
PEpTV2ViQXNzZW1ibHlUYWJsZVBvaXNvbiwgV2FzbTo6VGFibGU+IG1fdGFibGU7CisgICAgUG9p
c29uZWRSZWY8UE9JU09OKEpTV2ViQXNzZW1ibHlUYWJsZSksIFdhc206OlRhYmxlPiBtX3RhYmxl
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB1c2luZyBQb2lzb25lZEJhcnJpZXIg
PSBQb2lzb25lZFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5VGFibGVQb2lzb24sIFQ+OworICAg
IHVzaW5nIFBvaXNvbmVkQmFycmllciA9IFBvaXNvbmVkV3JpdGVCYXJyaWVyPFBPSVNPTihKU1dl
YkFzc2VtYmx5VGFibGUpLCBUPjsKIAogICAgIE1hbGxvY1B0cjxQb2lzb25lZEJhcnJpZXI8SlNP
YmplY3Q+PiBtX2pzRnVuY3Rpb25zOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dhc21Ub0pTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XYXNtVG9KUy5jcHAJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYs
NyBAQCBzdGF0aWMgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLCBCCiAgICAgICAgIC8v
IFN0b3JlIENhbGxlZS4KICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OmFyZ3VtZW50R1BSMSwgSW5zdGFuY2U6Om9mZnNldE9mT3duZXIoKSksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjEsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0
T2ZQb2lzb25lZENhbGxlZSgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKLSAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJseUluc3RhbmNlOjpQ
b2lzb25lZEJhcnJpZXI8V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPjo6cG9pc29uKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIzKTsKKyAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNXZWJBc3NlbWJseUluc3RhbmNlOjpQb2lzb25lZEJhcnJpZXI8V2ViQXNzZW1ibHlUb0pT
Q2FsbGVlPjo6cG9pc29uKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjMpOwogICAgICAgICBqaXQu
eG9yNjQoR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAg
ICAgICBqaXQuc3RvcmVQdHIoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBKSVQ6OkFkZHJlc3MoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIApAQCAtMjkxLDcgKzI5MSw3IEBAIEV4cGVj
dGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZiwgQmluZGluZ0YKICAgICAgICAgaml0LmxvYWRXYXNt
Q29udGV4dEluc3RhbmNlKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIEluc3RhbmNl
OjpvZmZzZXRPZk93bmVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mUG9pc29uZWRDYWxsZWUoKSksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0Nh
bGxlZT46OnBvaXNvbiksIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAgICAgIGppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29u
ZWRCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT46OnBvaXNvbigpKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIzKTsKICAgICAgICAgaml0LnhvcjY0KEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJh
bWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAg
ICAgICAgIApAQCAtNDgzLDcgKzQ4Myw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZiwgQmluZGluZ0YKICAgICBqaXQubG9hZFdhc21Db250ZXh0SW5zdGFuY2UoR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBJbnN0YW5jZTo6b2Zmc2V0T2ZPd25lcigpKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mUG9pc29uZWRD
YWxsZWUoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7Ci0gICAgaml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tNjQoSlNXZWJBc3NlbWJseUluc3RhbmNlOjpQb2lzb25lZEJhcnJpZXI8
V2ViQXNzZW1ibHlUb0pTQ2FsbGVlPjo6cG9pc29uKSwgcG9pc29uKTsKKyAgICBqaXQubW92ZShD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OlBvaXNvbmVk
QmFycmllcjxXZWJBc3NlbWJseVRvSlNDYWxsZWU+Ojpwb2lzb24oKSksIHBvaXNvbik7CiAgICAg
aml0LnhvcjY0KHBvaXNvbiwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICBqaXQuc3RvcmVQ
dHIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBKSVQ6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbkJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oCShyZXZpc2lvbiAyMjY5MjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJiwgTmF0aXZlRXhlY3V0YWJsZSosIHVuc2lnbmVkIGxlbmd0aCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqKTsKICAgICBXZWJBc3NlbWJs
eUZ1bmN0aW9uQmFzZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKLSAgICBQ
b2lzb25lZFdyaXRlQmFycmllcjxXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZVBvaXNvbiwgSlNXZWJB
c3NlbWJseUluc3RhbmNlPiBtX2luc3RhbmNlOworICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVyPFBP
SVNPTihXZWJBc3NlbWJseUZ1bmN0aW9uQmFzZSksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4gbV9p
bnN0YW5jZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCShy
ZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseU1vZHVsZVJlY29yZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB1c2luZyBQb2lzb25lZEJhcnJpZXIg
PSBQb2lzb25lZFdyaXRlQmFycmllcjxXZWJBc3NlbWJseU1vZHVsZVJlY29yZFBvaXNvbiwgVD47
CisgICAgdXNpbmcgUG9pc29uZWRCYXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09O
KFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKSwgVD47CiAKICAgICBQb2lzb25lZEJhcnJpZXI8SlNX
ZWJBc3NlbWJseUluc3RhbmNlPiBtX2luc3RhbmNlOwogICAgIFBvaXNvbmVkQmFycmllcjxKU09i
amVjdD4gbV9zdGFydEZ1bmN0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlUb0pTQ2FsbGVlLmgJKHJldmlzaW9uIDIyNjkyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0NhbGxlZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTV2ViQXNzZW1ibHlNb2R1bGUqKTsKICAgICBXZWJBc3NlbWJseVRv
SlNDYWxsZWUoVk0mLCBTdHJ1Y3R1cmUqKTsKIAotICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVyPFdl
YkFzc2VtYmx5VG9KU0NhbGxlZVBvaXNvbiwgSlNXZWJBc3NlbWJseU1vZHVsZT4gbV9tb2R1bGU7
CisgICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09OKFdlYkFzc2VtYmx5VG9KU0NhbGxlZSks
IEpTV2ViQXNzZW1ibHlNb2R1bGU+IG1fbW9kdWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgJKHJldmlzaW9uIDIyNjkyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
V2FzbTo6Q2FsbGFibGVGdW5jdGlvbik7CiAKLSAgICBQb2lzb25lZFdyaXRlQmFycmllcjxXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvblBvaXNvbiwgSlNPYmplY3Q+IG1fZnVuY3Rpb247CisgICAg
UG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09OKFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKSwg
SlNPYmplY3Q+IG1fZnVuY3Rpb247CiAgICAgLy8gSXQncyBzYWZlIHRvIGp1c3QgaG9sZCB0aGUg
cmF3IENhbGxhYmxlRnVuY3Rpb24gYmVjYXVzZSB3ZSBoYXZlIGEgcmVmZXJlbmNlCiAgICAgLy8g
dG8gb3VyIEluc3RhbmNlLCB3aGljaCBwb2ludHMgdG8gdGhlIENvZGVCbG9jaywgd2hpY2ggcG9p
bnRzIHRvIHRoZSBNb2R1bGUKICAgICAvLyB0aGF0IGV4cG9ydGVkIHVzLCB3aGljaCBlbnN1cmVz
IHRoYXQgdGhlIGFjdHVhbCBTaWduYXR1cmUvY29kZSBkb2Vzbid0IGdldCBkZWFsbG9jYXRlZC4K
SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBACisyMDE4LTAxLTEyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGFsbCB1c2Ugb2YgQ29uc3RFeHByUG9pc29u
ZWQgd2l0aCBQb2lzb25lZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4MTU0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY0NDIxMzg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gUmVtb3ZlZCBD
b25zdEV4cHJQb2lzb25lZCBhbmQgaXRzIGFydGlmYWN0cy4KKworICAgICAgICAyLiBDb25zb2xp
ZGF0ZWQgUG9pc29uZWQgaW50byBQb2lzb25lZEltcGwuICBQb2lzb25lZEltcGwgaXMgbm90IG1v
cmUuCisKKyAgICAgICAgMy4gQ2hhbmdlZCBhbGwgY2xpZW50cyBvZiBDb25zdEV4cHJQb2lzb25l
ZCB0byB1c2UgUG9pc29uZWQgaW5zdGVhZC4KKworICAgICAgICA0LiBXb3JrZWQgYXJvdW5kIHRo
ZSBHQ0MgYW5kIENsYW5nIGNvbXBpbGVyIGJ1ZyB0aGF0IGNvbmZ1c2VzIGFuIGludHB0cl90Jgor
ICAgICAgICAgICB0ZW1wbGF0ZSBhcmcgd2l0aCBpbnRwdHJfdC4KKyAgICAgICAgICAgU2VlIHVz
ZSBvZiBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BvaXNvbmVkPiBpbiBQb2lzb25lZC5oLgor
CisgICAgICAgIDUuIFJlbW92ZWQgRU5BQkxFKE1JWEVEX1BPSVNPTikgc2luY2Ugd2Ugbm93IGhh
dmUgYSB3b3JrYXJvdW5kICgzKSB0aGF0IG1ha2VzIGl0CisgICAgICAgICAgIHBvc3NpYmxlIHRv
IHVzZSB0aGUgbWl4ZWQgcG9pc29uIGNvZGUuCisKKyAgICAgICAgKiB3dGYvQmFnLmg6CisgICAg
ICAgICogd3RmL0R1bWJQdHJUcmFpdHMuaDoKKyAgICAgICAgKFdURjo6RHVtYlB0clRyYWl0czo6
cG9pc29uKToKKyAgICAgICAgKiB3dGYvRHVtYlZhbHVlVHJhaXRzLmg6CisgICAgICAgIChXVEY6
OkR1bWJWYWx1ZVRyYWl0czo6cG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoKKyAg
ICAgICAgKFdURjo6UG9pc29uZWQ6OlBvaXNvbmVkKToKKyAgICAgICAgKFdURjo6UG9pc29uZWQ6
Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZDo6b3BlcmF0b3IhPSBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAg
ICAoV1RGOjpQb2lzb25lZDo6b3BlcmF0b3I8PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZDo6b3BlcmF0b3I+
PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V1RGOjpQb2lzb25lZDo6c3dhcCk6CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RG
OjpQb2lzb25lZFB0clRyYWl0czo6cG9pc29uKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRQdHJU
cmFpdHM6OnN3YXApOgorICAgICAgICAoV1RGOjpQb2lzb25lZFZhbHVlVHJhaXRzOjpwb2lzb24p
OgorICAgICAgICAoV1RGOjpQb2lzb25lZFZhbHVlVHJhaXRzOjpzd2FwKToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpQb2lzb25lZEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQ
b2lzb25lZEltcGw6OmFzc2VydElzUG9pc29uZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6OmFzc2VydElzTm90UG9pc29uZWQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OnVucG9pc29uZWQgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciogY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpQb2lzb25lZEltcGw6Om9wZXJhdG9yLT4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpQb2lzb25lZEltcGw6OmJpdHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQb2lz
b25lZEltcGw6Om9wZXJhdG9yISBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBvaXNv
bmVkSW1wbDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBv
aXNvbmVkSW1wbDo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBv
aXNvbmVkSW1wbDo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBv
aXNvbmVkSW1wbDo6b3BlcmF0b3I8IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpvcGVyYXRvcjw9IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpvcGVyYXRvcj4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQb2lz
b25lZEltcGw6Om9wZXJhdG9yPj0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQb2lz
b25lZEltcGw6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1w
bDo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6ZXhjaGFuZ2Up
OiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OnBvaXNvbik6IERlbGV0ZWQu
CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6dW5wb2lzb24pOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpjb25zdEV4cHJQb2lzb25SYW5kb20pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpt
YWtlQ29uc3RFeHByUG9pc29uKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Q29uc3RFeHByUG9p
c29uZWRQdHJUcmFpdHM6OmV4Y2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Q29uc3RF
eHByUG9pc29uZWRQdHJUcmFpdHM6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpDb25z
dEV4cHJQb2lzb25lZFB0clRyYWl0czo6dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
Q29uc3RFeHByUG9pc29uZWRWYWx1ZVRyYWl0czo6ZXhjaGFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpDb25zdEV4cHJQb2lzb25lZFZhbHVlVHJhaXRzOjpzd2FwKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdURjo6Q29uc3RFeHByUG9pc29uZWRWYWx1ZVRyYWl0czo6dW53cmFwKTogRGVsZXRl
ZC4KKyAgICAgICAgKiB3dGYvUG9pc29uZWRVbmlxdWVQdHIuaDoKKyAgICAgICAgKFdURjo6UG9p
c29uZWRVbmlxdWVQdHI6OlBvaXNvbmVkVW5pcXVlUHRyKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRVbmlxdWVQdHI6Om9wZXJhdG9yPSk6CisgICAgICAgICogd3RmL1JlZi5oOgorICAgICAgICAq
IHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpS
ZWZDb3VudGVkQXJyYXkpOgorICAgICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKiB3dGYv
V1RGQXNzZXJ0aW9ucy5jcHA6CisKIDIwMTgtMDEtMTIgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVyCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcuaAkocmV2aXNp
b24gMjI2OTI3KQorKysgU291cmNlL1dURi93dGYvQmFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
OSwxMCArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9yYWdl
VHlwZSBtX2hlYWQgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5
cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVp
bnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRl
bXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkQmFnID0gQmFn
PFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFnTm9kZTxUPj4+
OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZEJh
ZyA9IEJhZzxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFByaXZhdGU6OkJhZ05vZGU8VD4+PjsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0R1bWJQdHJUcmFp
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EdW1iUHRyVHJhaXRzLmgJKHJldmlz
aW9uIDIyNjkyNykKKysrIFNvdXJjZS9XVEYvd3RmL0R1bWJQdHJUcmFpdHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBzdHJ1Y3QgRHVtYlB0clRyYWl0cyB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50cHRyX3QgcG9pc29uID0gMDsKKyAgICBzdGF0aWMgdWludHB0cl90IHBvaXNvbigpIHsgcmV0
dXJuIDA7IH0KIAogICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gVCo7CiAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0R1bWJWYWx1ZVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0R1
bWJWYWx1ZVRyYWl0cy5oCShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvV1RGL3d0Zi9EdW1i
VmFsdWVUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBEdW1iVmFsdWVUcmFpdHMgewot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHBvaXNvbiA9IDA7CisgICAgc3RhdGljIHVp
bnRwdHJfdCBwb2lzb24oKSB7IHJldHVybiAwOyB9CiAKICAgICB1c2luZyBTdG9yYWdlVHlwZSA9
IFQ7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI2OTI3KQorKysgU291cmNlL1dURi93
dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDYgQEAKICNkZWZpbmUg
RU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKLS8vIE9s
ZGVyIHZlcnNpb25zIG9mIGdjYyBhbmQgY2xhbmcgaGF2ZSBhIGJ1ZyB3aGljaCByZXN1bHRzIGlu
IGJ1aWxkIGZhaWx1cmVzCi0vLyB3aGVuIHVzaW5nIHRlbXBsYXRlIG1ldGhvZHMgdGhhdCB0YWtl
IGFuIGFyZ3VtZW50IG9mIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPgotLy8gd2hlbiB0aGUgS2V5
VHlwZSBpcyBhIHVpbnRwdHJfdCAoaS5lLiB3aGVuIHdlJ3JlIHVzaW5nIHRoZSBQb2lzb25lZCB2
YXJpYW50Ci0vLyBvZiBQb2lzb25lZEltcGwpLiBUaGlzIGJ1ZyBkb2VzIG5vdCBtYW5pZmVzdCBm
b3IgdGhlIENvbnN0RXhwclBvaXNvbmVkIHZhcmlhbnQuCi0vLyBJbiBwcmFjdGljZSwgd2Ugd2ls
bCBsaWtlbHkgb25seSB1c2UgdGhlc2UgbWV0aG9kcyBmb3IgaW5zdGFudGlhdGlvbnMgb2YgdGhl
Ci0vLyBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LiBIZW5jZS4gdGhpcyBidWcgaXMgbm90IGEg
c2hvdyBzdG9wcGVyLgotLy8gVGhhdCBzYWlkLCB3ZSdsbCBkZWZpbmUgRU5BQkxFX01JWEVEX1BP
SVNPTiBhY2NvcmRpbmdseSBzbyB0aGF0IHdlIGNhbiB1c2UKLS8vIGl0IHRvIGRpc2FibGUgdGhl
IGFmZmVjdGVkIHRlc3RzIHdoZW4gYnVpbGRpbmcgd2l0aCBvbGQgY29tcGlsZXJzLgotCi0jaWYg
T1MoREFSV0lOKQotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2NsYW5nX21ham9yX18g
Pj0gOSkKLSNlbGlmIGRlZmluZWQoX19jbGFuZ19tYWpvcl9fKQotI2RlZmluZSBFTkFCTEVfTUlY
RURfUE9JU09OIChfX2NsYW5nX21ham9yX18gPj0gNCkKLSNlbGlmIGRlZmluZWQoX19HTlVDX18p
Ci0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiAoX19H
TlVDX1BSRVJFUSg3LCAyKSkKLSNlbmRpZiAvLyAhZGVmaW5lZChfX0dOVUNfXykKLQotI2lmbmRl
ZiBFTkFCTEVfTUlYRURfUE9JU09OCi0jZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gMCAvLyBE
aXNhYmxlIGZvciBldmVyeXRoaW5nIGVsc2UuCi0jZW5kaWYKLQogLy8gTm90IGN1cnJlbnRseSBz
dXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJlY2F1c2Ugb2YgbWlz
c2luZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2FibGVkLgogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCkBAIC04OCwzMCArNjYsMzMgQEAgYXNSZWZl
cmVuY2UoVCBwdHIpIHsgcmV0dXJuICpwdHI7IH0KIAogfSAvLyBuYW1lc3BhY2UgUG9pc29uZWRJ
bXBsSGVscGVyCiAKLS8vIEZJWE1FOiBvbmNlIHdlIGhhdmUgQysrMTcsIHdlIGNhbiBtYWtlIHRo
ZSBrZXkgb2YgdHlwZSBhdXRvIGFuZCByZW1vdmUgdGhlIG5lZWQgZm9yIEtleVR5cGUuCi10ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUg
PSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+PgotY2xhc3MgUG9p
c29uZWRJbXBsIHsKK2VudW0gUHJlUG9pc29uZWRUYWcgeyBQcmVQb2lzb25lZCB9OworCit0ZW1w
bGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9p
Zl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+PgorY2xhc3MgUG9pc29uZWQgewogcHVibGlj
OgotICAgIFBvaXNvbmVkSW1wbCgpIHsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1Bv
aXNvbmVkID0gdHJ1ZTsKIAotICAgIFBvaXNvbmVkSW1wbChzdGQ6Om51bGxwdHJfdCkgeyB9Cisg
ICAgUG9pc29uZWQoKSB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25l
ZChzdGQ6Om51bGxwdHJfdCkgeyB9CisKKyAgICBQb2lzb25lZChUIHB0cikKICAgICAgICAgOiBt
X3BvaXNvbmVkQml0cyhwb2lzb24ocHRyKSkKICAgICB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChj
b25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQoY29uc3QgUG9pc29u
ZWQmKSA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVu
YW1lIFQyPgotICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4m
IG90aGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5h
YmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVkKGNvbnN0IE90aGVyJiBv
dGhlcikKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb248VD4ob3RoZXIudW5wb2lzb25l
ZCgpKSkKICAgICB7IH0KIAotICAgIFBvaXNvbmVkSW1wbChQb2lzb25lZEltcGwmJiBvdGhlcikK
KyAgICBQb2lzb25lZChQb2lzb25lZCYmIG90aGVyKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRz
KFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQogICAgIHsgfQogCi0gICAgZXhwbGljaXQg
UG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCisgICAgZXhwbGljaXQgUG9p
c29uZWQoUHJlUG9pc29uZWRUYWcsIFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCiAgICAgICAg
IDogbV9wb2lzb25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQogCkBAIC0xNDMsMTIgKzEy
NCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9w
b2lzb25lZEJpdHM7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gISFtX3BvaXNvbmVkQml0czsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNv
bmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVk
Qml0czsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0
IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7IH0KLSAgICBib29s
IG9wZXJhdG9yPChjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29u
ZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQ
b2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDw9IGIubV9wb2lz
b25lZEJpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25lZEltcGwmIGIpIGNv
bnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
c29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID09IGIubV9wb2lz
b25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0
IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29s
IG9wZXJhdG9yPChjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJp
dHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvaXNv
bmVkJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8PSBiLm1fcG9pc29uZWRCaXRz
OyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJu
IG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBQb2lzb25lZCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPj0gYi5t
X3BvaXNvbmVkQml0czsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRv
cj09KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7IH0KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBv
aXNvbmVkPFU+KCkgIT0gYjsgfQpAQCAtMTU3LDMzICsxMzgsNDEgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29uc3QgeyByZXR1cm4gdW5w
b2lzb25lZDxVPigpID4gYjsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0
b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+PSBiOyB9CiAKLSAgICBQ
b2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICBQb2lzb25lZCYgb3BlcmF0b3I9KFQg
cHRyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24ocHRyKTsKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25z
dCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQmIG9wZXJhdG9yPShjb25z
dCBQb2lzb25lZCYpID0gZGVmYXVsdDsKKworICAgIFBvaXNvbmVkJiBvcGVyYXRvcj0oc3RkOjpu
dWxscHRyX3QpCisgICAgeworICAgICAgICBjbGVhcigpOworICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4K
LSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGw8SzIsIGsyLCBU
Mj4mIG90aGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6
ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVkJiBvcGVyYXRvcj0o
Y29uc3QgT3RoZXImIG90aGVyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lz
b248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IAotICAgIHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCisgICAgdm9pZCBzd2FwKFBvaXNvbmVk
JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywgby5tX3Bv
aXNvbmVkQml0cyk7CisgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywgb3RoZXIubV9w
b2lzb25lZEJpdHMpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwg
dHlwZW5hbWUgVDI+Ci0gICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgbykK
KyAgICB2b2lkIHN3YXAoc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQ
b2lzb25lZD4+CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhlcikKICAgICB7CiAgICAgICAgIFQg
dDEgPSB0aGlzLT51bnBvaXNvbmVkKCk7Ci0gICAgICAgIFQyIHQyID0gby51bnBvaXNvbmVkKCk7
CisgICAgICAgIFQgdDIgPSBvdGhlci51bnBvaXNvbmVkKCk7CiAgICAgICAgIHN0ZDo6c3dhcCh0
MSwgdDIpOwogICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7Ci0gICAgICAgIG8g
PSB0MjsKKyAgICAgICAgb3RoZXIubV9wb2lzb25lZEJpdHMgPSBPdGhlcjo6cG9pc29uKHQyKTsK
ICAgICB9CiAKICAgICB2b2lkIHN3YXAoVCYgdDIpCkBAIC0yMTYsODggKzIwNSw0OSBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJpdHMgeyAwIH07Ci19
OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBL
MiwgSzIgazIsIHR5cGVuYW1lIFQyPgotaW5saW5lIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEs
IGsxLCBUMT4mIGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikKLXsKLSAgICBhLnN3YXAo
Yik7Ci19CisgICAgdGVtcGxhdGU8dWludHB0cl90JiwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmll
bmQgY2xhc3MgUG9pc29uZWQ7Cit9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5
cGVuYW1lIFQxPgotaW5saW5lIHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEsIGsxLCBUMT4mIGEs
IFQxJiBiKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6
OmVuYWJsZV9pZl90PFQ6OmlzUG9pc29uZWQ+PgoraW5saW5lIHZvaWQgc3dhcChUJiBhLCBVJiBi
KQogewogICAgIGEuc3dhcChiKTsKIH0KIAogV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBt
YWtlUG9pc29uKCk7CiAKLSNpZiBFTkFCTEUoUE9JU09OKQotLy8gRklYTUU6IG9uY2Ugd2UgaGF2
ZSBDKysxNywgd2UgY2FuIG1ha2UgdGhpcyBhIGxhbWJkYSBpbiBtYWtlQ29uc3RFeHByUG9pc29u
KCkuCi1pbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBjb25zdEV4cHJQb2lzb25SYW5kb20odWlu
dHB0cl90IHNlZWQpCi17Ci0gICAgdWludHB0cl90IHJlc3VsdDEgPSBzZWVkICogNjkwNjk2OTA2
OSArIDEyMzQ1Njc7Ci0gICAgdWludHB0cl90IHJlc3VsdDIgPSBzZWVkICogODI1MzcyOSArIDIz
OTY0MDM7Ci0gICAgcmV0dXJuIChyZXN1bHQxIDw8IDMpIF4gKHJlc3VsdDIgPDwgMTYpOwotfQot
I2VuZGlmCi0KLWlubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VDb25zdEV4cHJQb2lzb24o
dWludDMyX3Qga2V5KQotewotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgdWludHB0cl90IHBvaXNv
biA9IGNvbnN0RXhwclBvaXNvblJhbmRvbShrZXkpOwotICAgIHBvaXNvbiAmPSB+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oMHhmZmZmKSA8PCA0OCk7IC8vIEVuc3VyZSB0aGF0IHBvaXNvbmVkIGJp
dHMgbG9vayBsaWtlIGEgcG9pbnRlci4KLSAgICBwb2lzb24gfD0gKDEgPDwgMik7IC8vIEVuc3Vy
ZSB0aGF0IHBvaXNvbmVkIGJpdHMgY2Fubm90IGJlIDAuCi0gICAgcmV0dXJuIHBvaXNvbjsKLSNl
bHNlCi0gICAgcmV0dXJuICh2b2lkKWtleSwgMDsKLSNlbmRpZgotfQotCiB0ZW1wbGF0ZTx1aW50
cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVp
bnRwdHJfdCYsIGtleSwgVD47Ci0KLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4K
LXVzaW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgbWFrZUNv
bnN0RXhwclBvaXNvbihrZXkpLCBUPjsKLQotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFt
ZSBUPgotc3RydWN0IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzIHsKLSAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gcG9pc29uID0gbWFrZUNvbnN0RXhwclBvaXNvbihrZXkpOworc3RydWN0IFBv
aXNvbmVkUHRyVHJhaXRzIHsKKyAgICBzdGF0aWMgYXV0byBwb2lzb24oKSB7IHJldHVybiBrZXk7
IH0KIAotICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj47
CisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBQb2lzb25lZDxrZXksIFQqPjsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIFU+IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFQqIGV4Y2hhbmdlKFN0b3JhZ2VUeXBl
JiBwdHIsIFUmJiBuZXdWYWx1ZSkgeyByZXR1cm4gcHRyLmV4Y2hhbmdlKG5ld1ZhbHVlKTsgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMT4KLSAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBU
MSYgYikgeyBhLnN3YXAoYik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwg
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgUG9p
c29uZWRJbXBsPEsyLCBrMiwgVDI+JiBiKSB7IGEuc3dhcChiKTsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE90aGVyPgorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25l
ZDxrZXksIFQqPiYgYSwgT3RoZXImIGIpIHsgYS5zd2FwKGIpOyB9CiAKICAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBUKiB1bndyYXAoY29uc3QgU3RvcmFnZVR5cGUmIHB0cikgeyByZXR1cm4gcHRy
LnVucG9pc29uZWQoKTsgfQogfTsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBU
Pgotc3RydWN0IENvbnN0RXhwclBvaXNvbmVkVmFsdWVUcmFpdHMgewotICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBwb2lzb24gPSBtYWtlQ29uc3RFeHByUG9pc29uKGtleSk7Cit0ZW1wbGF0ZTx1
aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3N0cnVjdCBQb2lzb25lZFZhbHVlVHJhaXRzIHsK
KyAgICBzdGF0aWMgYXV0byBwb2lzb24oKSB7IHJldHVybiBrZXk7IH0KIAotICAgIHVzaW5nIFN0
b3JhZ2VUeXBlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUPjsKKyAgICB1c2luZyBTdG9yYWdl
VHlwZSA9IFBvaXNvbmVkPGtleSwgVD47CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBzdGF0aWMg
QUxXQVlTX0lOTElORSBUIGV4Y2hhbmdlKFN0b3JhZ2VUeXBlJiB2YWwsIFUmJiBuZXdWYWx1ZSkg
eyByZXR1cm4gdmFsLmV4Y2hhbmdlKG5ld1ZhbHVlKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMT4KLSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lk
IHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBUMSYgYikgeyBhLnN3YXAoYik7IH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDEsIHR5cGVuYW1l
IEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBz
d2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+
JiBiKSB7IGEuc3dhcChiKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyPgorICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25lZDxrZXksIFQ+JiBhLCBPdGhlciYg
YikgeyBhLnN3YXAoYik7IH0KIAogICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIFQgdW53cmFwKGNv
bnN0IFN0b3JhZ2VUeXBlJiB2YWwpIHsgcmV0dXJuIHZhbC51bnBvaXNvbmVkKCk7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OkNvbnN0RXhwclBvaXNvbmVkOwordXNp
bmcgV1RGOjpQcmVQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWQ7CiB1c2luZyBXVEY6OlBv
aXNvbmVkQml0czsKLXVzaW5nIFdURjo6bWFrZUNvbnN0RXhwclBvaXNvbjsKIHVzaW5nIFdURjo6
bWFrZVBvaXNvbjsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWRVbmlxdWVQdHIuaAkocmV2aXNpb24g
MjI2OTI3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWRVbmlxdWVQdHIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMTEgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi10ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+Ci1jbGFzcyBQ
b2lzb25lZFVuaXF1ZVB0ciA6IHB1YmxpYyBDb25zdEV4cHJQb2lzb25lZDxrZXksIFQqPiB7Cit0
ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlID0gdm9p
ZD4KK2NsYXNzIFBvaXNvbmVkVW5pcXVlUHRyIDogcHVibGljIFBvaXNvbmVkPGtleSwgVCo+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICB1c2luZyBCYXNlID0gQ29uc3RFeHBy
UG9pc29uZWQ8a2V5LCBUKj47CisgICAgdXNpbmcgQmFzZSA9IFBvaXNvbmVkPGtleSwgVCo+Owog
cHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BvaXNvbmVkVW5pcXVlUHRyID0g
dHJ1ZTsKKyAgICB1c2luZyBWYWx1ZVR5cGUgPSBUOworCiAgICAgUG9pc29uZWRVbmlxdWVQdHIo
KSA9IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoc3RkOjpudWxscHRyX3QpIDogQmFz
ZSgpIHsgfQogICAgIFBvaXNvbmVkVW5pcXVlUHRyKFQqIHB0cikgOiBCYXNlKHB0cikgeyB9CkBA
IC00OCw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICAgICAgOiBCYXNlKHVuaXF1ZS5yZWxlYXNlKCkp
CiAgICAgeyB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+Ci0g
ICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxP
dGhlcjo6aXNQb2lzb25lZFVuaXF1ZVB0ciAmJiBzdGQ6OmlzX2Jhc2Vfb2Y8VCwgdHlwZW5hbWUg
T3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1ZVB0cihPdGhlciYm
IHB0cikKICAgICAgICAgOiBCYXNlKHB0ci51bnBvaXNvbmVkKCkpCiAgICAgewogICAgICAgICBw
dHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOwpAQCAtODksOCArOTIsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBrZXkyLCB0
eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPFQs
IFU+Ojp2YWx1ZT4+Ci0gICAgUG9pc29uZWRVbmlxdWVQdHImIG9wZXJhdG9yPShQb2lzb25lZFVu
aXF1ZVB0cjxrZXkyLCBVPiYmIHB0cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlw
ZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0
ZDo6aXNfYmFzZV9vZjxULCB0eXBlbmFtZSBPdGhlcjo6VmFsdWVUeXBlPjo6dmFsdWU+PgorICAg
IFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0oT3RoZXImJiBwdHIpCiAgICAgewogICAgICAg
ICBBU1NFUlQodGhpcyA9PSBzdGF0aWNfY2FzdDx2b2lkKj4oJnB0cikgfHwgdGhpcy0+dW5wb2lz
b25lZCgpICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBpZiAoTElLRUxZKHRoaXMgIT0g
c3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpKSkgewpAQCAtMTIyLDI4ICsxMjUsMzEgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY2xlYXJXaXRob3V0RGVzdHJveSgpIHsgQmFzZTo6Y2xlYXIoKTsgfQog
Ci0gICAgdGVtcGxhdGU8dWludDMyX3QsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNz
IFBvaXNvbmVkVW5pcXVlUHRyOworICAgIHRlbXBsYXRlPHVpbnRwdHJfdCYsIHR5cGVuYW1lLCB0
eXBlbmFtZT4gZnJpZW5kIGNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyOwogfTsKIAotdGVtcGxhdGU8
dWludDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHMsIHR5cGVuYW1l
IEVuYWJsZSA9IHZvaWQ+Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVCwgdHlw
ZW5hbWUuLi4gQXJndW1lbnRzLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgogUG9pc29uZWRVbmlx
dWVQdHI8a2V5LCBUPiBtYWtlUG9pc29uZWRVbmlxdWUoQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQogewogICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFQ+OjpjcmVhdGUoc3RkOjpm
b3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90
IGtleSwgdHlwZW5hbWUgVD4KLWNsYXNzIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1
YmxpYyBDb25zdEV4cHJQb2lzb25lZDxrZXksIFQqPiB7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtl
eSwgdHlwZW5hbWUgVD4KK2NsYXNzIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPiA6IHB1Ymxp
YyBQb2lzb25lZDxrZXksIFQqPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAg
dXNpbmcgQmFzZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+OworICAgIHVzaW5nIEJhc2Ug
PSBQb2lzb25lZDxrZXksIFQqPjsKIHB1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNQb2lzb25lZFVuaXF1ZVB0ciA9IHRydWU7CisgICAgdXNpbmcgVmFsdWVUeXBlID0gVFtdOwor
CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoKSA9IGRlZmF1bHQ7CiAgICAgUG9pc29uZWRVbmlxdWVQ
dHIoc3RkOjpudWxscHRyX3QpIDogQmFzZSgpIHsgfQogICAgIFBvaXNvbmVkVW5pcXVlUHRyKFQq
IHB0cikgOiBCYXNlKHB0cikgeyB9CiAgICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlx
dWVQdHImJiBwdHIpIDogQmFzZShXVEZNb3ZlKHB0cikpIHsgcHRyLmNsZWFyV2l0aG91dERlc3Ry
b3koKTsgfQogICAgIFBvaXNvbmVkVW5pcXVlUHRyKHN0ZDo6dW5pcXVlX3B0cjxUW10+JiYgdW5p
cXVlKSA6IFBvaXNvbmVkVW5pcXVlUHRyKHVuaXF1ZS5yZWxlYXNlKCkpIHsgfQogCi0gICAgdGVt
cGxhdGU8dWludDMyX3Qga2V5Mj4KLSAgICBQb2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1
ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3Rk
Ojppc19zYW1lPFRbXSwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQ
b2lzb25lZFVuaXF1ZVB0cihPdGhlciYmIHB0cikKICAgICAgICAgOiBCYXNlKHB0ci51bnBvaXNv
bmVkKCkpCiAgICAgewogICAgICAgICBwdHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOwpAQCAtMTc4
LDggKzE4NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHVpbnQzMl90IGtleTI+Ci0gICAgUG9pc29uZWRVbmlxdWVQdHImIG9wZXJhdG9y
PShQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWRV
bmlxdWVQdHIgJiYgc3RkOjppc19zYW1lPFRbXSwgdHlwZW5hbWUgT3RoZXI6OlZhbHVlVHlwZT46
OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KE90aGVyJiYgcHRyKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKHRoaXMgPT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8
IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgaWYgKExJ
S0VMWSh0aGlzICE9IHN0YXRpY19jYXN0PHZvaWQqPigmcHRyKSkpIHsKQEAgLTIxMSwxMCArMjE3
LDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6
OmNsZWFyKCk7IH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+
IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0ZW1wbGF0ZTx1aW50cHRyX3Qm
LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKIH07
CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJndW1l
bnRzPgordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPiBtYWtlUG9pc29uZWRVbmlxdWUo
c2l6ZV90IGNvdW50LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiB7CiAgICAgcmV0dXJuIFBv
aXNvbmVkVW5pcXVlUHRyPGtleSwgVFtdPjo6Y3JlYXRlKGNvdW50LCBzdGQ6OmZvcndhcmQ8QXJn
dW1lbnRzPihhcmd1bWVudHMpLi4uKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZi5oCShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9SZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1NiwxMCArMjU2LDEwIEBAIGlu
bGluZSBib29sIGlzKGNvbnN0IFJlZjxBcmdUeXBlLCBQdHJUcmEKICAgICByZXR1cm4gaXM8RXhw
ZWN0ZWRUeXBlPihzb3VyY2UuZ2V0KCkpOwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5
cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRlPHVp
bnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAKLXRl
bXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkUmVmID0gUmVm
PFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4+OwordGVtcGxhdGU8dWludHB0
cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25lZFJlZiA9IFJlZjxULCBQb2lzb25l
ZFB0clRyYWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1JlZkNvdW50ZWRBcnJheS5oCShyZXZpc2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvV1RGL3d0Zi9S
ZWZDb3VudGVkQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgUmVmQ291bnRlZEFycmF5KHNpemVfdCBzaXplKQogICAgIHsKICAgICAg
ICAgaWYgKCFzaXplKSB7Ci0gICAgICAgICAgICBtX2RhdGEgPSAwOworICAgICAgICAgICAgUHRy
VHJhaXRzOjpleGNoYW5nZShtX2RhdGEsIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlZkNv
dW50ZWRBcnJheShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4mIG90aGVyKQogICAgIHsKICAgICAgICAgaWYgKG90aGVyLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgbV9kYXRhID0gMDsKKyAgICAgICAgICAgIFB0clRyYWl0czo6ZXhjaGFuZ2UobV9kYXRh
LCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTIzOCwxMCArMjM4LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9y
YWdlVHlwZSBtX2RhdGEgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXks
IHR5cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRl
PHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAK
LXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkUmVmQ291
bnRlZEFycmF5ID0gUmVmQ291bnRlZEFycmF5PFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRz
PGtleSwgVD4+OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQ
b2lzb25lZFJlZkNvdW50ZWRBcnJheSA9IFJlZkNvdW50ZWRBcnJheTxULCBQb2lzb25lZFB0clRy
YWl0czxrZXksIFQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1JlZlB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCShyZXZp
c2lvbiAyMjY5MjcpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNzYs
MTAgKzI3NiwxMCBAQCBpbmxpbmUgYm9vbCBpcyhjb25zdCBSZWZQdHI8QXJnVHlwZSwgUHRyCiAg
ICAgcmV0dXJuIGlzPEV4cGVjdGVkVHlwZT4oc291cmNlLmdldCgpKTsKIH0KIAotdGVtcGxhdGU8
dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29uZWRQdHJUcmFp
dHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0IFBvaXNvbmVk
UHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQ
b2lzb25lZFJlZlB0ciA9IFJlZlB0cjxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXks
IFQ+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29u
ZWRSZWZQdHIgPSBSZWZQdHI8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAkocmV2aXNpb24g
MjI2OTI3KQorKysgU291cmNlL1dURi93dGYvV1RGQXNzZXJ0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDM5ICszNSw5IEBAIG5hbWVzcGFjZSBXVEYgewogCiBuYW1lc3BhY2Ugewogc3Ry
dWN0IER1bW15U3RydWN0IHsgfTsKLWNvbnN0IHVpbnQzMl90IGR1bW15UG9pc29uID0gMHhmZmZm
OwordWludHB0cl90IGR1bW15UG9pc29uID0gMDsKIH0KIAotI2lmIEVOQUJMRShQT0lTT04pCi1z
dGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxKSA+PiA0OCksICJwb2lzb25lZCBi
aXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxp
a2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAw
MCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsK
LXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSA+PiA0OCksICJwb2lz
b25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotc3RhdGljX2Fzc2VydCgh
KG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91
bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHBy
UG9pc29uKDB4ZmZmZmZmZmYpID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlr
ZSBhIHBvaW50ZXIuIik7Ci0KLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMSkg
Pj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBub3QgYmUgbm90IGNv
bXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSA+
PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29t
cGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSA+
PiAzMiksICJiaXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29t
cGxldGVseSAwLiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMCkg
Pj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBub3QgYmUgbm90IGNv
bXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDAw
MCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBub3QgYmUgbm90
IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMHhm
ZmZmZmZmZikgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRzIHNob3VsZCBub3Qg
YmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLQotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBv
aXNvbigxKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLXN0YXRpY19h
c3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3
YXlzIGJlIHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMCkg
JiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSAmIDB4NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJl
IHNldC4iKTsKLXN0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDAwMCkgJiAw
eDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtl
Q29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMg
YmUgc2V0LiIpOwotCi1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxKSAmIDB4
MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNl
IGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEw
MCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUg
Zm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBv
aXNvbigxMDAwKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2
YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29u
c3RFeHByUG9pc29uKDEwMDAwKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJp
dHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQo
IShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBh
bGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3Rh
dGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMHhmZmZmZmZmZikgJiAweDMpLCAiZW5z
dXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFn
IGJpdHMuIik7Ci0jZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKLQogc3RhdGljX2Fzc2VydChzaXpl
b2YoQmFnPER1bW15U3RydWN0PikgPT0gc2l6ZW9mKHZvaWQqKSwgIiIpOwogc3RhdGljX2Fzc2Vy
dChzaXplb2YoUG9pc29uZWRCYWc8ZHVtbXlQb2lzb24sIER1bW15U3RydWN0PikgPT0gc2l6ZW9m
KHZvaWQqKSwgIiIpOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY5MjkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxOC0wMS0xMiAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBhbGwgdXNlIG9mIENvbnN0RXhwclBvaXNv
bmVkIHdpdGggUG9pc29uZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODE1NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NDQyMTM4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjppbml0aWFsaXplVGVzdFBvaXNvbik6IERl
bGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWYuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpwYXNzV2l0aFJlZik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29u
ZWRSZWZQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpmMSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9p
c29uZWRVbmlxdWVQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpwb2lzb25lZFB0ckZvbyk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0
cnVjdGlibGVBcnJheXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIw
MTgtMDEtMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBIaXN0b3J5IHN0YXRlIHNob3VsZCBiZSB1cGRhdGVkIGR1cmluZyBjbGllbnQgcmVk
aXJlY3RzIHdpdGggYXN5bmNocm9ub3VzIHBvbGljeSBkZWNpc2lvbnMKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI2OTI3KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNiBAQCBzZXQo
VGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NoZWNr
ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKLSAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
VEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
VEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RlcXVl
LmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNjkyNykKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC03NjgsNyArNzY4LDYgQEAKIAkJRkUwNUZBRUMxRkRCNTEwQTAw
MDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVCMUZEQjUxMDIwMDA5MzIzMCAvKiBQb2lzb25lZFJlZi5j
cHAgKi87IH07CiAJCUZFMDVGQUVEMUZEQjUxMEUwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFF
QTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwICovOyB9OwogCQlGRTA1RkFF
RjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNv
bmVkLmNwcCAqLzsgfTsKLQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBv
aXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi87IH07
CiAJCUZFMDVGQjA2MUZFODRGQjcwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkIwNTFGRTg0
RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwICovOyB9OwogCQlGRUM4RjRFNzFG
RTlDOTA1MDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLzsgfTsKIAkJRkVDOEY0RUIxRkU5RjVBRjAwNTZG
RDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzhG
NEVBMUZFOUY1QTcwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURl
c3RydWN0aWJsZUFycmF5cy5jcHAgKi87IH07CkBAIC0xODg3LDcgKzE4ODYsNiBAQAogCQlGRTA1
RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRSZWZQdHIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTA1RkFFQjFGREI1MTAyMDAwOTMyMzAgLyogUG9pc29uZWRSZWYu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRSZWYuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAg
LyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9p
c29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTA1RkFGMDFGRTA4Q0NE
MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRTA1RkIwNTFGRTg0RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQ
dHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5
RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUM4RjRFNjFG
RTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29u
ZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjY2Myw3ICsyNjYxLDYgQEAKIAkJCQlBN0E5NjZEQTE0MEVD
Q0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkw
RjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovLAog
CQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBDb25kaXRpb24uY3BwICovLAotCQkJCUZF
MDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJ
NTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJ
MjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJB
MUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBAIC0zMjMwLDcgKzMyMjcsNiBA
QAogCQkJCTdDODNERUEwMUQwQTU5MEMwMEZFQkNGMyAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJh
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMENCNUMxRkNFMTc5NjAwNEI1MzIzIC8q
IENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUMzMUQw
QTU5MEMwMEZFQkNGMyAvKiBDb25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZB
RjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERUE2MUQwQTU5MEMwMEZFQkNGMyAvKiBDb3VudGVycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBDMDBGRUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREVBRDFEMEE1OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQ
b2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q29uc3RFeHByUG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjY5MjcpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQpAQCAt
MSwzODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCi0j
aW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQot
c3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWlu
dDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLQotLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEg
YmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNzLiBGb3IgdGhpcyBwdXJwb3NlLAotLy8gd2Ug
cmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZlZFJlZkxvZ2dlciBjbGFzc2VzLgotCi1URVNU
KFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMpCi17Ci0gICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7Ci0KLSAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0
eTsKLSAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKLQotICAgIHsK
LSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCAmKnB0cik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsK
LQotI2lmIEVOQUJMRShQT0lTT04pCi0gICAgICAgIHVpbnRwdHJfdCBwdHJCaXRzOwotICAgICAg
ICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PigmYSkpOwotI2lm
IEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJUX1RSVUUoKENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7Ci0jZW5k
aWYKLSNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyID0gJmE7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihwMSk7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQot
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0g
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0g
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92
ZShwMSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBv
aXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0K
LSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAx
ID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAy
KFdURk1vdmUocDEpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIu
Yml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDIgPSBwMTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDMgPSBwMTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAz
LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHAzID0gJmE7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0ci5jbGVhcigpOwot
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotfQot
Ci1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQXNzaWdubWVudCkKLXsKLSAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKLSAgICBSZWZMb2dnZXIgYigiYiIpOwotICAgIERlcml2ZWRSZWZM
b2dnZXIgYygiYyIpOwotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAx
ID0gcDI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAz
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkp
OwotICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyID0gJmI7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYiwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIgPSBudWxscHRyOwotICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgfQotCi0gICAg
ewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAxID0gV1RGTW92ZShwMik7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZi
LCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDQoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMg
PSBXVEZNb3ZlKHA0KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwot
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lz
b25lZCgpKTsKLSAgICAgICAgcDEgPSBwMjsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDMgPSBwNDsKLSAgICAgICAgQVNT
RVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgcHRyID0gJmM7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7Ci0g
ICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRS
ZWZMb2dnZXIqPiBwMigmYyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMSA9
IFdURk1vdmUocDIpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51
bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IFdURk1vdmUocDQpOwotICAgICAgICBBU1NFUlRf
RVEoJmMsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0g
ICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBw
dHIgPSBwdHI7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAg
fQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotI2lm
IENPTVBJTEVSKENMQU5HKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKLSNlbmRpZgotICAgICAgICBwdHIg
PSBXVEZNb3ZlKHB0cik7Ci0jaWYgQ09NUElMRVIoQ0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCi0jZW5kaWYKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgp
KTsKLSAgICB9Ci19Ci0KLVRFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBTd2FwKQotewotICAg
IFJlZkxvZ2dlciBhKCJhIik7Ci0gICAgUmVmTG9nZ2VyIGIoImIiKTsKLQotICAgIHsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Ci0gICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBw
Mi51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMS5zd2FwKHAyKTsKLSAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBw
NCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMy5zd2FwKHA0KTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9
IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkp
OwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIs
IHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHN3YXAocDEsIHAyKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIq
PiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBzd2FwKHAzLCBwNCk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJU
X0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSAhPSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7Ci0gICAg
ICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwot
ICAgICAgICBSZWZMb2dnZXIqIHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAyKTsKLSAgICAgICAgc3dhcChwMSwg
cDIpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihwMikpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwotICAgICAgICBSZWZMb2dn
ZXIqIHAyKCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAyKTsKLSAgICAgICAgcDEuc3dhcChwMik7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMik7
Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHAyKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCi17Ci0gICAgcmV0
dXJuIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIpOwotfQot
Ci1URVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgUmV0dXJuVmFsdWUpCi17Ci0gICAgRGVyaXZl
ZFJlZkxvZ2dlciBhKCJhIik7Ci0KLSAgICB7Ci0gICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQ
dHJGb28oYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOwotICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0
ci0+bmFtZSk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0KSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKHJldmlzaW9u
IDIyNjkyNykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKK25hbWVzcGFjZSB7CisKIHVpbnRwdHJfdCBnX3Rlc3RQb2lzb25BOwogdWludHB0cl90
IGdfdGVzdFBvaXNvbkI7CiAKQEAgLTQ1LDYgKzQ3LDggQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVRlc3RQb2lzb24oKQogICAgIH0pOwogfQogCit9IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKKwog
Ly8gRm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNs
YXNzLiBGb3IgdGhpcyBwdXJwb3NlLAogLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVy
aXZlZFJlZkxvZ2dlciBjbGFzc2VzLgogCkBAIC05MiwxMSArOTYsOSBAQCBURVNUKFdURl9Qb2lz
b25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUo
TUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIq
PiBwMyhwMSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAK
ICAgICB7CkBAIC0xMDYsMTEgKzEwOCw5IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CiAgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpICE9IHAzLmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0xMjAs
MTMgKzEyMCwxMSBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9F
USgmYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09
IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOwogICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5w
b2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7
Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0xMzYsMTYgKzEzNCwxMyBAQCBURVNUKFdURl9Q
b2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFC
TEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMyA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIq
PiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgp
KTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAotI2lmIEVO
QUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKQEAgLTE1Nyw5ICsxNTIsNyBAQCBURVNUKFdURl9Q
b2lzb25lZCwgQmFzaWMpCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CiAgICAgfQotI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgIHsKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CiAgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CkBAIC0xNzMs
NyArMTY2LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQogICAgICAgICBBU1NFUlRfRVEo
JmEsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBw
NC5iaXRzKCkpOwogICAgIH0KLSNlbmRpZgogCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwpAQCAtMjAwLDcgKzE5Miw2IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9p
c29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwog
Ci0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgp
KTsKQEAgLTIwOSw3ICsyMDAsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEo
JmIsIHA0LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBw
NC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMjM2LDcgKzIyNiw2IEBAIFRF
U1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25C
LCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKQEAgLTI0NSwxMCArMjM0LDggQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQp
CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkg
IT0gcDQuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04p
CiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgm
YSk7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBw
MigmYyk7CkBAIC0yNjgsNyArMjU1LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQp
CiAgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CiAgICAgfQotI2VuZGlmCiAKICAgICB7CiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CkBAIC0y
NzcsNyArMjYzLDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFT
U0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVE
X1BPSVNPTikKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAxKCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxv
Z2dlcio+IHAyKCZjKTsKQEAgLTI5Nyw3ICsyODIsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNz
aWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICB9Ci0jZW5kaWYKIAog
ICAgIHsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKQEAgLTMzOSw3ICszMjMsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKIAogICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhF
RF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAz
KCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIp
OwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zNTEsNyArMzM0
LDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMu
Yml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0j
ZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0zNTksMTcgKzM0MSwxMiBAQCBURVNUKFdURl9Qb2lz
b25lZCwgU3dhcCkKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09O
KQogICAgICAgICBzd2FwKHAxLCBwMik7Ci0jZWxzZQotICAgICAgICBzdGQ6OnN3YXAocDEsIHAy
KTsKLSNlbmRpZgogICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKIAogICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zODEsMTAgKzM1OCw4IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkLCBTd2FwKQogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQu
Yml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CiAg
ICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAg
fQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKICAgICAgICAgUmVmTG9nZ2VyKiBwMigm
Yik7CkBAIC00MDgsNyArMzgzLDYgQEAgVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAKICAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7
CiAgICAgfQotI2VuZGlmCiB9CiAKIHN0YXRpYyBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dlcikKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZi5jcHAJKHJldmlzaW9uIDIyNjky
NykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsMjQgKzI2LDQ1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNp
bmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvUG9p
c29uZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMg
Y29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQ
b2lzb25DID0gMHhjY2NjOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkQgPSAweGRkZGQ7
Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRSA9IDB4ZWVlZTsKLXN0YXRpYyBjb25zdCB1
aW50MzJfdCBQb2lzb25GID0gMHhmZmZmOworbmFtZXNwYWNlIHsKKwordWludHB0cl90IGdfcG9p
c29uQTsKK3VpbnRwdHJfdCBnX3BvaXNvbkI7Cit1aW50cHRyX3QgZ19wb2lzb25DOwordWludHB0
cl90IGdfcG9pc29uRDsKK3VpbnRwdHJfdCBnX3BvaXNvbkU7Cit1aW50cHRyX3QgZ19wb2lzb25G
OworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFs
aXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVu
dCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAg
ICAgIGdfcG9pc29uQiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19wb2lzb25DID0gbWFrZVBv
aXNvbigpOworICAgICAgICBnX3BvaXNvbkQgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIGdfcG9p
c29uRiA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19wb2lzb25GID0gbWFrZVBvaXNvbigpOwor
ICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKIAogVEVTVChXVEZfUG9pc29u
ZWRSZWYsIEJhc2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQSwg
UmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQSwgUmVmTG9n
Z2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5hbWUpOwogCkBAIC01MSwxNiArNzIsMTYgQEAgVEVT
VChXVEZfUG9pc29uZWRSZWYsIEJhc2ljKQogICAgICAgICB1aW50cHRyX3QgcHRyQml0czsKICAg
ICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZyZWYsIHNpemVvZihwdHJCaXRzKSk7CiAgICAg
ICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsK
LSAgICAgICAgQVNTRVJUX0VRKHB0ckJpdHMsIChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CisgICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoUG9p
c29uZWQ8Z19wb2lzb25BLCBSZWZMb2dnZXIqPigmYSkuYml0cygpKSk7CiAjaWYgRU5BQkxFKFBP
SVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRfVFJVRSgoQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoKFBvaXNvbmVkPGdfcG9pc29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0
cykpKTsKICNlbmRpZgogI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgfQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQiwgUmVmTG9nZ2VyPiByZWYoYWRvcHRSZWYo
YSkpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKGFkb3B0
UmVmKGEpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBFWFBF
Q1RfRVEoJmEubmFtZSwgJnJlZi0+bmFtZSk7CiAgICAgfQpAQCAtNjksMTIgKzkwLDE0IEBAIFRF
U1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2ln
bm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dn
ZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBj
KCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4g
cmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcmVmKGEp
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8
ICI7CiAgICAgICAgIHJlZiA9IGI7CkBAIC04NCw3ICsxMDcsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJl
ZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWY8UG9pc29uRCwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNv
bmVkUmVmPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gYzsK
QEAgLTk0LDcgKzExNyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgcmVmKGMpIGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25F
LCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25FLCBSZWZM
b2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAg
ICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBhZG9wdFJlZihiKTsKQEAgLTEwNCw3ICsx
MjcsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHJlZihh
KTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHJlZihhKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwog
ICAgICAgICByZWYgPSBhZG9wdFJlZihjKTsKQEAgLTExNCwyNSArMTM3LDI3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwgZGVy
ZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKLXN0YXRpYyBQ
b2lzb25lZFJlZjxQb2lzb25CLCBSZWZMb2dnZXI+IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPFBv
aXNvbkMsIFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCitzdGF0aWMgUG9pc29uZWRSZWY8Z19wb2lz
b25CLCBSZWZMb2dnZXI+IHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVmPGdfcG9pc29uQywgUmVmTG9n
Z2VyPiYmIHJlZmVyZW5jZSkKIHsKICAgICByZXR1cm4gV1RGTW92ZShyZWZlcmVuY2UpOwogfQog
CiBURVNUKFdURl9Qb2lzb25lZFJlZiwgUmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBv
aXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBi
KCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKHBhc3NXaXRoUmVmKFBvaXNvbmVkUmVm
PFBvaXNvbkMsIFJlZkxvZ2dlcj4oYSkpKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25C
LCBSZWZMb2dnZXI+IHJlZihwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxnX3BvaXNvbkMsIFJlZkxv
Z2dlcj4oYSkpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYucHRyKCkpOwogICAgIH0KICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEp
OworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAg
ICAgICAgIHJlZiA9IHBhc3NXaXRoUmVmKGIpOwpAQCAtMTQyLDIyICsxNjcsMjIgQEAgVEVTVChX
VEZfUG9pc29uZWRSZWYsIFJldHVyblZhbHVlKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHwg
cmVmKGIpIGRlcmVmKGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAg
ICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHB0cihwYXNz
V2l0aFJlZihhKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2Vy
PiBwdHIocGFzc1dpdGhSZWYoYSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7
CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIo
KS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgRGVy
aXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQSwg
UmVmTG9nZ2VyPiBwdHIyKFdURk1vdmUocHRyKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdf
cG9pc29uRiwgRGVyaXZlZFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8Z19wb2lzb25BLCBSZWZMb2dnZXI+IHB0cjIoV1RGTW92ZShwdHIpKTsKICAgICAgICAgRVhQ
RUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyMi5n
ZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VM
b2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uQiwg
RGVyaXZlZFJlZkxvZ2dlcj4gZGVyaXZlZFJlZmVyZW5jZShhKTsKLSAgICAgICAgUG9pc29uZWRS
ZWY8UG9pc29uQywgUmVmTG9nZ2VyPiBiYXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRS
ZWZlcmVuY2UuY29weVJlZigpKSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQiwgRGVy
aXZlZFJlZkxvZ2dlcj4gZGVyaXZlZFJlZmVyZW5jZShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8
Z19wb2lzb25DLCBSZWZMb2dnZXI+IGJhc2VSZWZlcmVuY2UocGFzc1dpdGhSZWYoZGVyaXZlZFJl
ZmVyZW5jZS5jb3B5UmVmKCkpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBkZXJpdmVkUmVmZXJl
bmNlLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBiYXNlUmVmZXJlbmNlLnB0cigpKTsK
ICAgICB9CkBAIC0xNjYsMTIgKzE5MSwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgUmV0dXJu
VmFsdWUpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICBSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoYSk7
Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIoYik7CisgICAgICAg
IFBvaXNvbmVkUmVmPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29u
ZWRSZWY8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAyKGIpOwogICAgICAgICBsb2coKSA8PCAifCAi
OwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZi
LCBwMi5wdHIoKSk7CkBAIC0xODMsOCArMjEwLDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3
YXApCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihi
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVm
PFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkEs
IFJlZkxvZ2dlcj4gcDIoYik7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRiwgUmVmTG9n
Z2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25BLCBSZWZMb2dnZXI+IHAy
KGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0
cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5wdHIoKSk7CkBAIC0xOTYsNyArMjIzLDcg
QEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
cmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAK
ICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMShhKTsKICAgICAgICAg
UmVmPFJlZkxvZ2dlcj4gcDIoYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEucHRyKCkpOwpAQCAtMjA5LDcgKzIzNiw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYo
YSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQ
b2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJl
ZjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHAy
KGIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0
cigpKTsKQEAgLTIyMyw3ICsyNTAsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKIH0K
IAogc3RydWN0IFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgewotICAg
IHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmPFBvaXNvbkIsIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZM
b2dnZXI+OworICAgIHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmPGdfcG9pc29uQiwgUG9pc29uZWRS
ZWZDaGVja2luZ1JlZkxvZ2dlcj47CiAKICAgICBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2Vy
KGNvbnN0IGNoYXIqIG5hbWUpOwogICAgIHZvaWQgcmVmKCk7CkBAIC0yNjEsNiArMjg4LDggQEAg
RGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI6OkRlcgogCiBURVNUKFdURl9Qb2lz
b25lZFJlZiwgQXNzaWduQmVmb3JlRGVyZWYpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsK
KwogICAgIERlcml2ZWRQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKICAgICBQ
b2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUG9pc29uZWRS
ZWZDaGVja2luZ1JlZkxvZ2dlciBjKCJjIik7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Qb2lzb25lZFJlZlB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3BwCShyZXZpc2lvbiAyMjY5MjcpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFJlZlB0ci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUg
IlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lzb25lZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC0zMywyMiArMzQsNDIgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLXN0YXRpYyBjb25zdCB1
aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOwotc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkMg
PSAweGNjY2M7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uRCA9IDB4ZGRkZDsKLXN0YXRp
YyBjb25zdCB1aW50MzJfdCBQb2lzb25FID0gMHhlZWVlOwotc3RhdGljIGNvbnN0IHVpbnQzMl90
IFBvaXNvbkYgPSAweGZmZmY7CituYW1lc3BhY2UgeworCit1aW50cHRyX3QgZ19wb2lzb25BOwor
dWludHB0cl90IGdfcG9pc29uQjsKK3VpbnRwdHJfdCBnX3BvaXNvbkM7Cit1aW50cHRyX3QgZ19w
b2lzb25EOwordWludHB0cl90IGdfcG9pc29uRTsKK3VpbnRwdHJfdCBnX3BvaXNvbkY7CisKK3N0
YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNl
RmxhZywgW10geworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZ2V0IDIgZGlmZmVyZW50IHBvaXNv
biB2YWx1ZXMuCisgICAgICAgIGdfcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19w
b2lzb25CID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkMgPSBtYWtlUG9pc29uKCk7
CisgICAgICAgIGdfcG9pc29uRCA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19wb2lzb25GID0g
bWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkYgPSBtYWtlUG9pc29uKCk7CisgICAgfSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIGFub255bW91cwogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0
ciwgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOwogCi0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQSwgUmVmTG9nZ2VyPiBl
bXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkEsIFJlZkxvZ2dlcj4gZW1wdHk7CiAg
ICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKIAogICAgIHsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOwpAQCAtNTcsNzAgKzc4LDcwIEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmUHRyLCBCYXNpYykKICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAg
ICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAg
ICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7
Ci0gICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOworICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBv
aXNvbmVkPGdfcG9pc29uQiwgUmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkpOwogI2lmIEVOQUJMRShQ
T0lTT05fQVNTRVJUUykKLSAgICAgICAgQVNTRVJUX1RSVUUoKENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkIsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKChQb2lzb25lZDxnX3BvaXNvbkIsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJp
dHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgIH0KICAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyID0gJmE7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMihwMSk7CisgICAgICAgIFBv
aXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcDIocDEpOwogICAgICAgICBFWFBFQ1Rf
RVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAg
fQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkYsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29u
QiwgUmVmTG9nZ2VyPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYs
IFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBS
ZWZMb2dnZXI+IHAyID0gcDE7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSA9
ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RG
TW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBw
MSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDIg
PSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAg
ICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAg
IFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CiAg
ICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgm
YSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVm
UHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBwMTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
Z19wb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJl
ZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBwMTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAg
ICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25E
LCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25FLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRy
PGdfcG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVY
UEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0
KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9n
U3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYs
IFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25GLCBS
ZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAg
ICAgICAgcHRyID0gbnVsbHB0cjsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQo
KSk7CkBAIC0xMzAsMTAgKzE1MSwxMiBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQmFzaWMp
CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25QYXNzUmVmVG9Qb2lzb25lZFJlZlB0
cikKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CiAgICAgewogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwYXNzUmVmKGEpOwotICAgICAg
ICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1Jl
Zik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIgPSBX
VEZNb3ZlKHBhc3NSZWYpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAg
fQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0
cigpKTsKQEAgLTE0MSwxMyArMTY0LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3Np
Z25QYXNzUmVmVG8KIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFkb3B0KQogeworICAgIGlu
aXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKIAotICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gZW1wdHk7CisgICAgUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IGVtcHR5OwogICAgIEVYUEVDVF9FUShudWxscHRy
LCBlbXB0eS5nZXQoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQs
IFJlZkxvZ2dlcj4gcHRyKGFkb3B0UmVmKCZhKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdf
cG9pc29uRCwgUmVmTG9nZ2VyPiBwdHIoYWRvcHRSZWYoJmEpKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsICYqcHRyKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTU1LDcgKzE4MCw3IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkUmVmUHRyLCBBZG9wdCkKICAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIgPSBhZG9wdFJlZigmYSk7CisgICAgICAgIFBvaXNvbmVk
UmVmUHRyPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIgPSBhZG9wdFJlZigmYSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJkZXJl
ZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CkBAIC0xNjMsMTMgKzE4OCwxNSBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBB
c3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZMb2dn
ZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZM
b2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2Vy
PiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBw
MSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBwMigm
Yik7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEo
JmIsIHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTE4MSw3ICsyMDgsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEo
InJlZihhKSByZWYoYikgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSBkZXJlZihiKSAiLCB0
YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkMsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lz
b25DLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gJmI7CkBAIC0xOTEsNyAr
MjE4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZM
b2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAg
ICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYWRvcHRSZWYoJmIpOwpAQCAtMjAxLDcg
KzIyOCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dl
cj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+
IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAgcHRy
ID0gbnVsbHB0cjsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHB0ci5nZXQoKSk7CkBAIC0y
MDksOCArMjM2LDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwog
CiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZh
KTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7Cisg
ICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAg
ICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgp
KTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTIyMiw4ICsyNDksOCBAQCBURVNUKFdURl9Q
b2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYo
YikgfCBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7
CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmMs
IHAyLmdldCgpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTIzNSw3ICsyNjIsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJl
ZihhKSByZWYoYykgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSBkZXJlZihjKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25G
LCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gJmM7CkBAIC0yNDUsNyArMjcy
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NU
UkVRKCJyZWYoYSkgfCByZWYoYykgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxv
Z2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dn
ZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAgICAg
bG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gYWRvcHRSZWYoJmMpOwpAQCAtMjU1LDggKzI4
Miw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4g
cDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2Vy
PiBwMigmYyk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBw
MSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgRGVyaXZlZFJlZkxvZ2dl
cj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBAIC0yNjgsNyAr
Mjk1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgcmVmKGMpIHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJl
ZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZM
b2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICAg
ICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcHRyID0gcHRyOwpAQCAtMjc4LDcgKzMwNSw3IEBA
IFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHwgcmVmKGEpIGRlcmVmKGEpIHwgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+
IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBw
dHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAjaWYgQ09NUElMRVIo
Q0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaApAQCAtMjk2LDEyICszMjMsMTQg
QEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAKIFRFU1QoV1RGX1BvaXNv
bmVkUmVmUHRyLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBSZWZM
b2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAKICAgICB7Ci0gICAgICAgIFBv
aXNvbmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25l
ZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
Z19wb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIu
Z2V0KCkpOwpAQCAtMzEzLDggKzM0Miw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBTd2Fw
KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikg
IiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0
cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRSwgUmVmTG9nZ2VyPiBwMigmYik7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29u
RCwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwg
UmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmIsIHAyLmdldCgpKTsKQEAg
LTMyOCwxMSArMzU3LDEzIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBTd2FwKQogCiBURVNU
KFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFzZU5vbk51bGwpCiB7CisgICAgaW5pdGlhbGl6ZVBv
aXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcmVmUHRyID0gJmE7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxs
KCk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiByZWZQdHIg
PSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHJlZiA9
IHJlZlB0ci5yZWxlYXNlTm9uTnVsbCgpOwogICAgIH0KIAogICAgIEVYUEVDVF9TVFJFUSgicmVm
KGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKQEAgLTM0MCwzNyArMzcxLDM5
IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNlTm9uTnVsbCkKIAogVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwog
ICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZkxvZ2dlciBiKCJiIik7CiAgICAg
RGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRy
PFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9p
c29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9F
UShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwog
ICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCku
Y19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxv
Z2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2Vy
PiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgUmVm
TG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxv
Z2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNU
X1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAg
ewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9
ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAyID0gV1RG
TW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgRGVyaXZlZFJlZkxv
Z2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dn
ZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAg
ICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAg
UG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNU
X0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAg
ICAgICBsb2coKSA8PCAifCAiOwpAQCAtMzgyLDggKzQxNSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVk
UmVmUHRyLCBSZWxlYXNlKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVm
KGEpIHwgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAg
ICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9p
c29uZWRSZWZQdHI8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lz
b25lZFJlZlB0cjxnX3BvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkp
OwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMzk1LDEzICs0MjgsMTUgQEAgVEVTVChXVEZf
UG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGMp
IHwgZGVyZWYoYSkgfCBkZXJlZihjKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiB9CiAKLXN0
YXRpYyBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9n
Z2VyKQorc3RhdGljIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBmMShSZWZM
b2dnZXImIGxvZ2dlcikKIHsKLSAgICByZXR1cm4gUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVm
TG9nZ2VyPigmbG9nZ2VyKTsKKyAgICByZXR1cm4gUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBS
ZWZMb2dnZXI+KCZsb2dnZXIpOwogfQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmV0dXJu
VmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dn
ZXIgYSgiYSIpOwogCiAgICAgewpAQCAtNDMyLDIwICs0NjcsMjIgQEAgc3RhdGljIENvbnN0UmVm
Q291bnRlZCYgcmV0dXJuUmVmQ291bnRlZAogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgQ29u
c3QpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIC8vIFRoaXMgdGVzdCBwYXNz
ZXMgaWYgaXQgY29tcGlsZXMgd2l0aG91dCBhbiBlcnJvci4KICAgICBhdXRvIGEgPSBDb25zdFJl
ZkNvdW50ZWQ6OmNyZWF0ZSgpOwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGIgPSBX
VEZNb3ZlKGEpOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIGNvbnN0IENvbnN0UmVmQ291
bnRlZD4gYyA9IGIucHRyKCk7CisgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBjb25zdCBD
b25zdFJlZkNvdW50ZWQ+IGMgPSBiLnB0cigpOwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNvdW50
ZWQ+IGQgPSByZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQ
b2lzb25FLCBjb25zdCBDb25zdFJlZkNvdW50ZWQ+IGUgPSAmcmV0dXJuQ29uc3RSZWZDb3VudGVk
UmVmKCk7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0g
Q29uc3RSZWZDb3VudGVkOjpjcmVhdGUoKTsKLSAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBj
b25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMs
IGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaChmKTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNv
bkUsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZSA9ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYo
KTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIENvbnN0UmVmQ291bnRlZD4gZiA9IENv
bnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CisgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25CLCBj
b25zdCBDb25zdFJlZkNvdW50ZWQ+IGcgPSBmOworICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29u
QywgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBoKGYpOwogICAgIFJlZjxjb25zdCBDb25zdFJlZkNv
dW50ZWQ+IGkocmV0dXJuUmVmQ291bnRlZFJlZigpKTsKIH0KIAogc3RydWN0IFBvaXNvbmVkUmVm
UHRyQ2hlY2tpbmdSZWZMb2dnZXIgOiBSZWZMb2dnZXIgewotICAgIHVzaW5nIFJlZiA9IFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkQsIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXI+OworICAg
IHVzaW5nIFJlZiA9IFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRCwgUG9pc29uZWRSZWZQdHJDaGVj
a2luZ1JlZkxvZ2dlcj47CiAKICAgICBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyKGNv
bnN0IGNoYXIqIG5hbWUpOwogICAgIHZvaWQgcmVmKCk7CkBAIC00NzksNiArNTE2LDggQEAgdm9p
ZCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyOjpkZQogCiBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgQXNzaWduQmVmb3JlRGVyZWYpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsK
KwogICAgIFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYSgiYSIpOwogICAgIFBvaXNv
bmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIgYigiYiIpOwogCkBAIC01NDMsNiArNTgyLDggQEAg
VEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbkJlZm9yZURlcgogCiBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgUmVsZWFzZU5vbk51bGxCZWZvcmVEZXJlZikKIHsKKyAgICBpbml0aWFsaXpl
UG9pc29ucygpOworCiAgICAgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7
CiAKICAgICB7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVu
aXF1ZVB0ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UG9pc29uZWRVbmlxdWVQdHIuY3BwCShyZXZpc2lvbiAyMjY5MjcpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDE0ICsyNSwyNiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlIDxtdXRl
eD4KICNpbmNsdWRlIDx3dGYvUG9pc29uZWRVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhh
YWFhOwotY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKK3VpbnRwdHJfdCBnX3BvaXNv
bkE7Cit1aW50cHRyX3QgZ19wb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9pc29u
cygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFr
ZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3BvaXNv
bkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIHdoaWxlICghZ19wb2lzb25CIHx8IGdfcG9pc29u
QiA9PSBnX3BvaXNvbkEpCisgICAgICAgICAgICBnX3BvaXNvbkIgPSBtYWtlUG9pc29uKCk7Cisg
ICAgfSk7Cit9CiAKIHN0cnVjdCBMb2dnZXIgewogICAgIExvZ2dlcihjb25zdCBjaGFyKiBuYW1l
LCBpbnQmIGRlc3RydWN0Q291bnQpCkBAIC02MSwxMyArNzMsMTUgQEAgc3RydWN0IE90aGVyIHsK
IAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
PiBlbXB0eTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7
CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CiAgICAgewotICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IGVtcHR5KG51bGxwdHIpOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gZW1wdHkobnVsbHB0
cik7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwogICAg
ICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQpAQCAtNzYsNyArOTAsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1
Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOwpAQCAtODcsNyArMTAxLDcgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJp
dHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJC
aXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGEpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FT
U0VSVFMpCi0gICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAgICAgQVNTRVJUX1RS
VUUoKFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPjo6aXNQb2lzb25lZChwdHJC
aXRzKSkpOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKICAgICAgICAgfQpAQCAt
OTYsNyArMTEwLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAg
ICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3
IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGIpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEo
YiwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgJipwdHIpOwpA
QCAtMTA5LDcgKzEyMyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAg
ICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExv
Z2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBhOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IGE7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51
bnBvaXNvbmVkKCkpOwogICAgICAgICB9CkBAIC0xMTgsNyArMTMyLDcgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwog
ICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcHRyID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyPiBwdHIgPSBiOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgfQpAQCAtMTI5LDcgKzE0Myw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBC
YXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hh
ciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
Pjo6Y3JlYXRlKGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lz
b25BLCBMb2dnZXI+OjpjcmVhdGUoYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShu
dWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1l
LCAmcHRyLT5uYW1lKTsKQEAgLTEzOSw3ICsxNTMsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1
ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGJOYW1lID0gImIiOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRMb2dnZXI+OjpjcmVhdGUoYk5hbWUsIGJEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE1MSw3ICsxNjUsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RD
b3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQ
b2lzb25lZFVuaXF1ZTxQb2lzb25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFr
ZVBvaXNvbmVkVW5pcXVlPGdfcG9pc29uQSwgTG9nZ2VyPihhTmFtZSwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYU5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTYxLDcgKzE3NSw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0g
MDsKICAgICAgICAgY29uc3QgY2hhciogYk5hbWUgPSAiYiI7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVk
VW5pcXVlPFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+KGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFr
ZVBvaXNvbmVkVW5pcXVlPGdfcG9pc29uQSwgRGVyaXZlZExvZ2dlcj4oYk5hbWUsIGJEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE3MSw3ICsxODUsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCB1bmlxdWVEZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogdW5pcXVlTmFtZSA9ICJ1bmlxdWUi
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJp
dmVkTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZU5h
bWUsIHVuaXF1ZURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBEZXJpdmVkTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRM
b2dnZXI+KHVuaXF1ZU5hbWUsIHVuaXF1ZURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDAsIHVuaXF1ZURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUo
bnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSh1bmlx
dWVOYW1lLCAmcHRyLT5uYW1lKTsKQEAgLTE4MSw3ICsxOTUsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCB1bmlxdWVEZXJpdmVkRGVzdHJ1Y3RDb3Vu
dCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIHVuaXF1ZURlcml2ZWROYW1lID0gInVuaXF1ZSBk
ZXJpdmVkIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZURl
cml2ZWROYW1lLCB1bmlxdWVEZXJpdmVkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyID0gc3RkOjptYWtlX3VuaXF1ZTxE
ZXJpdmVkTG9nZ2VyPih1bmlxdWVEZXJpdmVkTmFtZSwgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEodW5pcXVlRGVyaXZlZE5hbWUsICZwdHItPm5hbWUpOwpA
QCAtMTk1LDE1ICsyMDksMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQog
ICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0g
YTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBX
VEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9n
Z2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RD
b3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgp
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwg
cDMuYml0cygpKTsKQEAgLTIxOSwxNSArMjMzLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyLCBCYXNpYykKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENv
dW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMp
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTI0MywxNSArMjU3LDE1IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJp
dmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBi
ID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAx
ID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBw
MiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAw
KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIu
dW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBM
b2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoYkRlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9p
c29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAgLTI2Nywx
NSArMjgxLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAg
RGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMp
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAg
ICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwMy5iaXRzKCkpOwpAQCAtMjg5LDcgKzMwMyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9n
Z2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRy
LmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcHRyLnVucG9pc29uZWQoKSk7CkBA
IC0zMDIsMTMgKzMxNiwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAK
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAg
ICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBM
b2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dn
ZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAt
MzI1LDcgKzM0MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQog
ICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcg
TG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gbnVsbHB0cjsKQEAgLTM0NSw4ICszNjEs
OCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgTG9n
Z2VyKiBjID0gbmV3IExvZ2dlcigiYyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2Vy
KiBkID0gbmV3IExvZ2dlcigiZCIsIGREZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIoYik7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEoYSk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDIoYik7CiAgICAgICAgICAg
ICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVk
KCkpOwpAQCAtMzU3LDggKzM3Myw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3Np
Z25tZW50KQogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQoZCk7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDMoYyk7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQoZCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGRE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkp
OwpAQCAtMzgxLDcgKzM5Nyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25t
ZW50KQogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExv
Z2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBA
IC00MDQsOCArNDIwLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQp
CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGMgPSBuZXcgRGVyaXZlZExvZ2dlcigiYyIsIGNEZXN0
cnVjdENvdW50KTsKICAgICAgICAgRGVyaXZlZExvZ2dlciogZCA9IG5ldyBEZXJpdmVkTG9nZ2Vy
KCJkIiwgZERlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxKGEpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj4gcDIoYik7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEoYSk7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRMb2dnZXI+IHAyKGIpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBi
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgp
KTsKQEAgLTQxNiw4ICs0MzIsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdu
bWVudCkKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMoYyk7Ci0gICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBEZXJpdmVkTG9nZ2VyPiBwNChkKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgRGVyaXZlZExvZ2dlcj4gcDQoZCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDAsIGREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51
bnBvaXNvbmVkKCkpOwpAQCAtNDM4LDcgKzQ1NCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAg
ICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gYTsKQEAg
LTQ1Miw3ICs0NjgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkK
ICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3
IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIu
dW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKQEAgLTQ3MywxNCArNDg5LDE2IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogCiBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ciwgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAg
ewogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBpbnQgYkRlc3RydWN0
Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291
bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcj4gcDI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dn
ZXI+IHAyOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtNDkwLDggKzUwOCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBTd2FwKQogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0OworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyPiBwNDsKICAgICAgICAgICAgIEFT
U0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0
LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAg
LTUxMSw4ICs1MjksOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICAg
ICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAg
TG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMjsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUoIXAyLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgp
KTsKQEAgLTUyMiw4ICs1NDAsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNDsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5w
b2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC01MzgsMTMgKzU1NiwxNSBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKICAgICB9CiB9CiAKLXN0YXRpYyBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciog
bG9nZ2VyKQorc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwb2lz
b25lZFB0ckZvbyhMb2dnZXIqIGxvZ2dlcikKIHsKLSAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyPihsb2dnZXIpOworICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcj4obG9nZ2VyKTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHIsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7
CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5l
dyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFy
cmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9p
c29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCShyZXZp
c2lvbiAyMjY5MjcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVu
aXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDE0ICsyNSwyNiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvUG9pc29uZWRVbmlxdWVQdHIuaD4KIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCB1aW50MzJfdCBQb2lzb25B
ID0gMHhhYWFhOwotY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKK3VpbnRwdHJfdCBn
X3BvaXNvbkE7Cit1aW50cHRyX3QgZ19wb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXpl
UG9pc29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAg
Ly8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAgICBn
X3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIHdoaWxlICghZ19wb2lzb25CIHx8IGdf
cG9pc29uQiA9PSBnX3BvaXNvbkEpCisgICAgICAgICAgICBnX3BvaXNvbkIgPSBtYWtlUG9pc29u
KCk7CisgICAgfSk7Cit9CiAKIHN0cnVjdCBMb2dnZXIgewogICAgIExvZ2dlcigpIHsgfQpAQCAt
NjIsOCArNzQsMTAgQEAgY29uc3QgaW50IGFycmF5U2l6ZSA9IDU7CiAKIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKIHsK
KyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gZW1wdHk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyW10+IGVtcHR5OwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwg
ZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkp
OwogICAgIH0KQEAgLTcyLDcgKzg2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dn
ZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBM
b2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CkBAIC04NCw3ICs5OCw3IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJC
aXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUocHRy
Qml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9B
U1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcltdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAgICAgQVNTRVJU
X1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+Ojppc1BvaXNvbmVk
KHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgICAgICB9
CkBAIC05NSw3ICsxMDksNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZp
YWxsCiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9
IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
dHIgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJb
XT4gcHRyID0gYTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBm
b3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTEwOCw3ICsxMjIsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBhRGVz
dHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRy
ID0gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+OjpjcmVhdGUoYXJyYXlTaXpl
LCBhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBM
b2dnZXJbXT46OmNyZWF0ZShhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0
byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTIxLDcgKzEzNSw3IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENv
dW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtl
UG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0
cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9n
Z2VyW10+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxnX3BvaXNvbkEsIExvZ2dlcltdPihhcnJh
eVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwg
YURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6
ZTsgKytpKQpAQCAtMTM0LDcgKzE0OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29u
c3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29u
QSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IG1ha2VQb2lz
b25lZFVuaXF1ZTxnX3BvaXNvbkEsIExvZ2dlcltdPihhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQpAQCAtMTQ5LDE1ICsx
NjMsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAg
ICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUs
ICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdURk1vdmUo
cDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNT
RVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9p
c29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dn
ZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0ID0gV1RGTW92ZShwMyk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7
CkBAIC0xNzMsMTUgKzE4NywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRy
aXZpYWxsCiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwg
ImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEg
PSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4g
cDIoV1RGTW92ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBw
My5iaXRzKCkpOwpAQCAtMTk3LDE1ICsyMTEsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihh
cnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtl
QXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBh
OwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyID0g
V1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0
cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkp
OwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
My5iaXRzKCkpOwpAQCAtMjIxLDE1ICsyMzUsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihh
cnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBtYWtl
QXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBh
OwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyKFdU
Rk1vdmUocDEpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9n
Z2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1
Y3RDb3VudCwgMCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJp
dHMoKSk7CkBAIC0yNDMsNyArMjU3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dn
ZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBM
b2dnZXJbXT4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVk
KCkpOwogICAgICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cHRyLnVucG9pc29uZWQoKSk7CkBAIC0yNTYsMTMgKzI3MCwxNSBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBBc3NpZ25tZW50KQogeworICAgIGluaXRp
YWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7
CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1h
a2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAg
IExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcltdPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTI3OSw3ICsyOTUsNyBA
QCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGludCBh
RGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+
KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgcHRyID0gbnVsbHB0cjsKQEAgLTI5
OSw4ICszMTUsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgIExvZ2dlciogYyA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImMiLCBjRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogZCA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5
U2l6ZSwgImQiLCBkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxKGEpOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDIoYik7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkp
OwpAQCAtMzExLDggKzMyNyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGwKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyhjKTsKLSAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNChkKTsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAzKGMpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQoZCk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIGREZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNv
bmVkKCkpOwpAQCAtMzMzLDcgKzM0OSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9n
Z2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50
KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAg
ICAgICBwdHIgPSBhOwpAQCAtMzQ3LDcgKzM2Myw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAj
aWYgQ09NUElMRVIoQ0xBTkcpCkBAIC0zNjgsMTQgKzM4NCwxNiBAQCBURVNUKFdURl9Qb2lzb25l
ZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
Tm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBTd2FwKQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAg
ICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dl
ciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcDI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcltdPiBwMjsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTM4NSw4ICs0MDMsOCBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkp
OwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMg
PSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMg
PSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4g
cDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0
LnVucG9pc29uZWQoKSk7CkBAIC00MDYsOCArNDI0LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2Vy
PihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBt
YWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEg
PSBhOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAy
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEg
PSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4g
cDI7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAy
LnVucG9pc29uZWQoKSk7CkBAIC00MTcsOCArNDM1LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNDsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyW10+IHA0OwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNv
bmVkKCkpOwpAQCAtNDMzLDEzICs0NTEsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJG
b3JOb25Ucml2aWFsbAogICAgIH0KIH0KIAotc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcltdPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGFycmF5KQorc3RhdGljIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciog
YXJyYXkpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltd
PihhcnJheSk7CisgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
W10+KGFycmF5KTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFs
bHlEZXN0cnVjdGlibGVBcnJheXMsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lz
b25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAg
IExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RD
b3VudCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlE
ZXN0cnVjdGlibGVBcnJheXMuY3BwCShyZXZpc2lvbiAyMjY5MjcpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJs
ZUFycmF5cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCisjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KICNpbmNsdWRlIDx3dGYvUG9pc29uZWRVbmlxdWVQdHIuaD4KIApAQCAtMzIsOCArMzMsMTkg
QEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBuYW1lc3BhY2UgewogCi1jb25zdCB1aW50
MzJfdCBQb2lzb25BID0gMHhhYWFhOwotY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsK
K3VpbnRwdHJfdCBnX3BvaXNvbkE7Cit1aW50cHRyX3QgZ19wb2lzb25COworCitzdGF0aWMgdm9p
ZCBpbml0aWFsaXplUG9pc29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRp
YWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtd
IHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVz
LgorICAgICAgICBnX3BvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIHdoaWxlICghZ19w
b2lzb25CIHx8IGdfcG9pc29uQiA9PSBnX3BvaXNvbkEpCisgICAgICAgICAgICBnX3BvaXNvbkIg
PSBtYWtlUG9pc29uKCk7CisgICAgfSk7Cit9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0
aWMgdm9pZCBmaWxsQXJyYXkoVCYgYXJyYXksIGludCBzaXplKQpAQCAtNDgsMTMgKzYwLDE1IEBA
IHN0YXRpYyBjb25zdCBpbnQgYXJyYXlTaXplID0gNTsKIAogVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIEJhc2ljKQogeworICAgIGluaXRp
YWxpemVQb2lzb25zKCk7CisKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIGludFtdPiBlbXB0eTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBp
bnRbXT4gZW1wdHk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVk
KCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQogICAgIHsK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IGVtcHR5KG51bGxwdHIp
OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBlbXB0eShudWxs
cHRyKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAg
ICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CkBAIC02Myw3ICs3Nyw3
IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0
byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6
ZSk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGlu
dFtdPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGlu
dFtdPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOwogICAgICAgICAgICAgZm9yIChhdXRv
IGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC03NCw3ICs4OCw3IEBAIFRFU1QoV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgICAgIHN0ZDo6bWVtY3B5KCZw
dHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUo
cHRyQml0cyAhPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihhKSk7CiAjaWYgRU5BQkxFKFBPSVNP
Tl9BU1NFUlRTKQotICAgICAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIGludFtdPjo6aXNQb2lzb25lZChwdHJCaXRzKSkpOworICAgICAgICAgICAgQVNTRVJU
X1RSVUUoKFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+Ojppc1BvaXNvbmVkKHB0
ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQogICAgICAgICB9CkBA
IC04NCw3ICs5OCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUK
ICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5
KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50
W10+IHB0ciA9IGE7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+
IHB0ciA9IGE7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAg
ICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJy
YXlTaXplOyArK2kpCkBAIC05Miw3ICsxMDYsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ckZvclRyaXZpYWxseURlCiAgICAgfQogCiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+
OjpjcmVhdGUoYXJyYXlTaXplKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBpbnRbXT4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT46OmNyZWF0
ZShhcnJheVNpemUpOwogICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNv
bmVkKCkpOwogICAgICAgICBmaWxsQXJyYXkocHRyLCBhcnJheVNpemUpOwogICAgICAgICBmb3Ig
KGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTEwNSwxNiArMTE5LDE2IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byogYiA9
IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAK
LSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyID0gV1RGTW92ZShwMSk7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDIgPSBXVEZNb3ZlKHAxKTsK
ICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFT
U0VSVF9FUSgwdSwgcDEuYml0cygpKTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQogICAg
ICAgICAgICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ldKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25CLCBpbnRbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkIsIGludFtdPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkp
OwogICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKQEAgLTEyOCwxNiArMTQy
LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAg
YXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5
U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0g
YTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyKFdURk1vdmUo
cDEpKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDEgPSBh
OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMihXVEZNb3Zl
KHAxKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAg
ICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51
bnBvaXNvbmVkKCkpOwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsr
aSkKICAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwMltpXSk7CiAKLSAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgaW50W10+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgIEFTU0VSVF9F
UShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJp
dHMoKSk7CiAgICAgICAgIEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOwpAQCAtMTQ5LDcg
KzE2Myw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAg
ICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFy
cmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0
cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEp
OwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ci5j
bGVhcigpOwogICAgICAgICBBU1NFUlRfVFJVRSghcHRyLnVucG9pc29uZWQoKSk7CkBAIC0xNTks
MTMgKzE3MywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAK
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlz
LCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAg
ICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGF1dG8qIGIgPSBuZXcg
aW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogICAgICAg
ICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgp
KTsKICAgICAgICAgcHRyID0gYjsKICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVk
KCkpOwpAQCAtMTc1LDcgKzE5MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJp
dmlhbGx5RGUKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAg
ZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBpbnRbXT4gcHRyKGEpOwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgIHB0ciA9IG51bGxwdHI7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIu
dW5wb2lzb25lZCgpKTsKQEAgLTE5MSwxNiArMjA3LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgZmlsbEFycmF5KGMsIGFycmF5U2l6ZSk7CiAg
ICAgICAgIGZpbGxBcnJheShkLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPiBwMShhKTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IHAyKGIpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IGludFtdPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRb
XT4gcDIoYik7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBBU1NFUlRfRVEoYiwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcDEgPSBXVEZNb3ZlKHAy
KTsKICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPiBwMyhjKTsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQiwgaW50W10+IHA0KGQpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IGludFtdPiBwMyhjKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBpbnRb
XT4gcDQoZCk7CiAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAg
ICBBU1NFUlRfRVEoZCwgcDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgcDMgPSBXVEZNb3ZlKHA0
KTsKQEAgLTIxMiw3ICsyMjgsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZp
YWxseURlCiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZp
bGxBcnJheShhLCBhcnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
aW50W10+IHB0cihhKTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwog
ICAgICAgICBwdHIgPSBhOwogICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7
CkBAIC0yMjIsNyArMjM4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFs
bHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxs
QXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBpbnRbXT4gcHRyKGEpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGlu
dFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICNp
ZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCkBAIC0yMzks
MTQgKzI1NSwxNiBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAK
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlz
LCBTd2FwKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGF1
dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGF1dG8qIGIgPSBuZXcgaW50W2Fy
cmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwogICAgICAgICBmaWxs
QXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRb
XT4gcDI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAxID0g
YTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDI7CiAgICAg
ICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVkKCksIGEpOwogICAgICAgICBBU1NFUlRfVFJVRSgh
cDIuYml0cygpKTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBAIC0y
NTUsOCArMjczLDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQog
ICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VR
KHAyLnVucG9pc29uZWQoKSwgYSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgaW50W10+IHAzID0gYjsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50
W10+IHA0OworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMyA9
IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgaW50W10+IHA0OwogICAg
ICAgICBBU1NFUlRfRVEocDMudW5wb2lzb25lZCgpLCBiKTsKICAgICAgICAgQVNTRVJUX1RSVUUo
IXA0LmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAt
MjcyLDggKzI5MCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUK
ICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZpbGxBcnJheShiLCBh
cnJheVNpemUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBw
MSA9IGE7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMjsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMjsKICAgICAgICAgQVNTRVJU
X0VRKHAxLnVucG9pc29uZWQoKSwgYSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkp
OwogICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTI4Miw4ICszMDAs
OCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEocDIudW5wb2lz
b25lZCgpLCBhKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4g
cDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQ7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAzID0gYjsKKyAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBpbnRbXT4gcDQ7CiAgICAgICAgIEFTU0VS
VF9FUShwMy51bnBvaXNvbmVkKCksIGIpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygp
KTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC0yOTQsMTMgKzMx
MiwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgfQog
fQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHBvaXNvbmVkUHRy
Rm9vKGludCogcHRyKQorc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+
IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQogewotICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBpbnRbXT4ocHRyKTsKKyAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBpbnRbXT4ocHRyKTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JU
cml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6
ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwo=
</data>
<flag name="review"
          id="350228"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331281</attachid>
            <date>2018-01-13 02:26:59 -0800</date>
            <delta_ts>2018-01-13 22:12:00 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-181542.patch</filename>
            <type>text/plain</type>
            <size>196153</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDE4LTAxLTEzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXBsYWNlIGFsbCB1c2Ugb2YgQ29uc3RFeHByUG9pc29uZWQgd2l0aCBQb2lzb25lZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTU0MgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzY0NDIxMzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFz
dGllbi4KKworICAgICAgICAxLiBBbGwgSlNDIHBvaXNvbnMgYXJlIG5vdyBkZWZpbmVkIGluIEpT
Q1BvaXNvbi5oLgorCisgICAgICAgIDIuIENoYW5nZSBhbGwgY2xpZW50cyB0byB1c2UgdGhlIG5l
dyBwb2lzb24gdmFsdWVzIHZpYSB0aGUgUE9JU09OKCkgbWFjcm8uCisKKyAgICAgICAgMy4gVGhl
IExMSW50IGNvZGUgaGFzIGJlZW4gdXBkYXRlZCB0byBoYW5kbGUgQ29kZUJsb2NrIHBvaXNvbi4g
IFNvbWUgb2YgdGhpcyBjb2RlCisgICAgICAgICAgIHVzZXMgdGhlIHQ1IHRlbXAgcmVnaXN0ZXIs
IHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIFdpbmRvd3MgcG9ydC4KKyAgICAgICAgICAg
Rm9ydHVuYXRlbHksIHdlIGRvbid0IGN1cnJlbnRseSBkbyBwb2lzb25pbmcgb24gdGhlIFdpbmRv
d3MgcG9ydCB5ZXQuICBTbywKKyAgICAgICAgICAgaXQgd2lsbCBqdXN0IHdvcmsgZm9yIG5vdy4K
KworICAgICAgICAgICBXaGVuIHBvaXNvbmluZyBpcyBlbmFibGVkIGZvciB0aGUgV2luZG93cyBw
b3J0LCB0aGlzIExMSW50IGNvZGUgd2lsbCBuZWVkIGEKKyAgICAgICAgICAgV2luZG93cyBzcGVj
aWZpYyBpbXBsZW1lbnRhdGlvbiB0byB3b3JrYXJvdW5kIGl0cyBsYWNrIG9mIGEgdDUgcmVnaXN0
ZXIuCisKKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6CisgICAgICAgICogQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6ZW1wdHlWYWx1
ZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6ZGVsZXRlZFZhbHVlKToK
KyAgICAgICAgKiBiMy9CM0xvd2VyTWFjcm9zLmNwcDoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludGVycHJldGVyKToKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppbnN0cnVjdGlvbnMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omluc3RydWN0aW9ucyBjb25zdCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bWFrZVBvaXNvbmVkVW5pcXVlKToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdENvbXBpbGVyQ29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6YWRqdXN0RnJhbWVBbmRT
dGFja0luT1NSRXhpdENvbXBpbGVyVGh1bmspOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVj
a1N1YkNsYXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRj
aEludEp1bXApOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tTdWJDbGFzcyk6CisgICAg
ICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAg
ICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpib3VuZFRoaXNOb0FyZ3NGdW5jdGlvbkNhbGxHZW5lcmF0
b3IpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvVW5saW5rZWRTb3VyY2VD
b2RlLmg6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9EYXRlSW5zdGFu
Y2UuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXlCdWZmZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ1BvaXNvbi5jcHA6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRy
LmNwcC4KKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZVBvaXNvbik6CisgICAgICAgICogcnVudGlt
ZS9KU0NQb2lzb24uaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U0NQb2lzb25lZFB0ci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9KU0NQb2lzb25l
ZFB0ci5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1ha2VQb2lzb25lZFVuaXF1ZSk6CisgICAgICAg
ICogcnVudGltZS9KU1NjcmlwdEZldGNoUGFyYW1ldGVycy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNTY3JpcHRGZXRjaGVyLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmg6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaDoKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlOjptYXAgY29uc3QpOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OndlYWtJbXBsIGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL1dyaXRlQmFycmllci5oOgorICAgICAgICAoSlNDOjpXcml0ZUJhcnJpZXI6OnBvaXNv
bik6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseUNvZGVCbG9jazo6SlNX
ZWJBc3NlbWJseUNvZGVCbG9jayk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29k
ZUJsb2NrLmg6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAg
ICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaDoKKyAgICAgICAgKiB3YXNtL2pz
L0pTV2ViQXNzZW1ibHlNb2R1bGUuaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1ibHlU
YWJsZS5oOgorICAgICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpoYW5kbGVCYWRJNjRVc2UpOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9KUyk6Cisg
ICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uQmFzZS5oOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFz
c2VtYmx5VG9KU0NhbGxlZS5oOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uaDoKKwogMjAxOC0wMS0xMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBNb3ZlIEV4aXRQcm9maWxlIHRvIFVubGlua2VkQ29kZUJsb2NrIHNvIGl0
IGNhbiBiZSBzaGFyZWQgYW1vbmdzdCBDb2RlQmxvY2tzIGJhY2tlZCBieSB0aGUgc2FtZSBVbmxp
bmtlZENvZGVCbG9jawpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24g
MjI2OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03NzksNyArNzc5LDcgQEAgcnVudGltZS9KU0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24u
Y3BwCiBydW50aW1lL0pTQmlnSW50LmNwcAogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiBy
dW50aW1lL0pTQ0pTVmFsdWUuY3BwCi1ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAorcnVudGlt
ZS9KU0NQb2lzb24uY3BwCiBydW50aW1lL0pTQ2FsbGVlLmNwcAogcnVudGltZS9KU0NlbGwuY3Bw
CiBydW50aW1lL0pTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uY3BwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDIy
NjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDcgQEAgcHJvdGVjdGVkOgogICAgIEpTQVBJV3Jh
cHBlck9iamVjdChWTSYsIFN0cnVjdHVyZSopOwogCiBwcml2YXRlOgotICAgIENvbnN0RXhwclBv
aXNvbmVkPEpTQVBJV3JhcHBlck9iamVjdFBvaXNvbiwgdm9pZCo+IG1fd3JhcHBlZE9iamVjdDsK
KyAgICBQb2lzb25lZDxQT0lTT04oSlNBUElXcmFwcGVyT2JqZWN0KSwgdm9pZCo+IG1fd3JhcHBl
ZE9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyMjY5MzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBKU0NhbGxiYWNrRnVuY3Rpb25faAog
CiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTQ1BvaXNvbi5oIgog
I2luY2x1ZGUgIkpTT2JqZWN0UmVmLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTMsNyArNTQs
NyBAQCBwcml2YXRlOgogCiAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGZ1bmN0
aW9uQ2FsbGJhY2soKSB7IHJldHVybiBtX2NhbGxiYWNrLnVucG9pc29uZWQoKTsgfQogCi0gICAg
UG9pc29uZWQ8Z19uYXRpdmVDb2RlUG9pc29uLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJh
Y2s+IG1fY2FsbGJhY2s7CisgICAgUG9pc29uZWQ8UE9JU09OKE5hdGl2ZUNvZGUpLCBKU09iamVj
dENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dC5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogI2RlZmluZSBK
U0NhbGxiYWNrT2JqZWN0X2gKIAogI2luY2x1ZGUgIkpTQ1BvaXNvbi5oIgotI2luY2x1ZGUgIkpT
Q1BvaXNvbmVkUHRyLmgiCiAjaW5jbHVkZSAiSlNPYmplY3RSZWYuaCIKICNpbmNsdWRlICJKU1Zh
bHVlUmVmLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKQEAgLTIzNSw3ICsyMzQsNyBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzdGF0aWNGdW5jdGlvbkdldHRlcihFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKTsKICAgICBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgY2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFByb3Bl
cnR5TmFtZSk7CiAKLSAgICBXVEY6OlBvaXNvbmVkVW5pcXVlUHRyPEpTQ2FsbGJhY2tPYmplY3RQ
b2lzb24sIEpTQ2FsbGJhY2tPYmplY3REYXRhPiBtX2NhbGxiYWNrT2JqZWN0RGF0YTsKKyAgICBX
VEY6OlBvaXNvbmVkVW5pcXVlUHRyPFBPSVNPTihKU0NhbGxiYWNrT2JqZWN0KSwgSlNDYWxsYmFj
a09iamVjdERhdGE+IG1fY2FsbGJhY2tPYmplY3REYXRhOwogICAgIFBvaXNvbmVkQ2xhc3NJbmZv
UHRyIG1fY2xhc3NJbmZvOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIyNjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMyLDcgKzE3
MzIsNiBAQAogCQlGRTFDMEZGRDFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTFDMEZGQzFCMTkzRTk4
MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkUyMENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3Au
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMjBDRTlD
MTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUyQTg3NjAxRjAyMzgxNjAwRUIzMUIyIC8qIE1p
bmltdW1SZXNlcnZlZFpvbmVTaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTJBODc1RjFGMDIzODE2MDBFQjMxQjIgLyogTWluaW11bVJlc2VydmVk
Wm9uZVNpemUuaCAqLzsgfTsKLQkJRkUyQjBCNjkxRkQyMjdFMDAwNzVEQTVGIC8qIEpTQ1BvaXNv
bmVkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTJCMEI3MzFGRDlFRjcwMDA3
NURBNUYgLyogSlNDUG9pc29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTJCMEI3MDFGRDhDNDYzMDA3NURBNUYgLyogSlNDUG9pc29uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzMDIyRDMxRTNE
NzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQxMUUzRDczOTYwMEJBQzQ5MyAvKiBT
aWdpbGxDcmFzaEFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFF
NDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKQEAgLTQ2MjksOCArNDYyOCw3
IEBACiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0gbGxp
bnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMjBDRTlD
MTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExMSW50Q0xvb3AuaDsgcGF0aCA9IGxsaW50L0xMSW50Q0xvb3AuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUyQTg3NUYxRjAyMzgxNjAwRUIzMUIyIC8qIE1pbmlt
dW1SZXNlcnZlZFpvbmVTaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1pbmltdW1SZXNlcnZlZFpvbmVT
aXplLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMkIwQjY3MUZEMEQyOTYwMDc1
REE1RiAvKiBKU0NQb2lzb25lZFB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NQb2lzb25lZFB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTJCMEI2
ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDUG9pc29uZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNDUG9pc29uZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDUG9pc29uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1BvaXNvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMkIwQjcwMUZEOEM0NjMwMDc1REE1RiAvKiBKU0NQ
b2lzb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDUG9pc29uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMkU2QTdBMUQ2RUE1RkUwMDYwRjg5NiAvKiBU
aHJvd1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRocm93
U2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMwMjJEMDFFM0Q3Mzk2
MDBCQUM0OTMgLyogU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaWdpbGxDcmFzaEFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY1OTAsOCArNjU4OCw3IEBACiAJCQkJMTRBQkIzNkUwOTlDMDc2NDAw
RTJBMjRGIC8qIEpTQ0pTVmFsdWUuaCAqLywKIAkJCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUg
LyogSlNDSlNWYWx1ZUlubGluZXMuaCAqLywKIAkJCQlGRTJCMEI3MDFGRDhDNDYzMDA3NURBNUYg
LyogSlNDUG9pc29uLmggKi8sCi0JCQkJRkUyQjBCNjgxRkQwRDI5NzAwNzVEQTVGIC8qIEpTQ1Bv
aXNvbmVkUHRyLmNwcCAqLywKLQkJCQlGRTJCMEI2NzFGRDBEMjk2MDA3NURBNUYgLyogSlNDUG9p
c29uZWRQdHIuaCAqLywKKwkJCQlGRTJCMEI2ODFGRDBEMjk3MDA3NURBNUYgLyogSlNDUG9pc29u
LmNwcCAqLywKIAkJCQk3MkFBRjdDQjFEMEQzMThCMDA1RTYwQkUgLyogSlNDdXN0b21HZXR0ZXJT
ZXR0ZXJGdW5jdGlvbi5jcHAgKi8sCiAJCQkJNzJBQUY3Q0MxRDBEMzE4QjAwNUU2MEJFIC8qIEpT
Q3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCAqLywKIAkJCQkwRjJCNjZCRDE3QjZCNUFCMDBB
N0FFM0YgLyogSlNEYXRhVmlldy5jcHAgKi8sCkBAIC04ODg4LDcgKzg4ODUsNiBAQAogCQkJCUE1
RDJFNjY1MTk1RTE3NDAwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTQ4Q0QxRDgxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMkIwQjczMUZEOUVGNzAwMDc1REE1RiAvKiBKU0NQ
b2lzb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMkIwQjY5MUZEMjI3RTAwMDc1REE1RiAvKiBK
U0NQb2lzb25lZFB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTcyMDI4QjgxNzk3NjAxRTAwOTgw
MjhDIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzJBQUY3Q0Ux
RDBEMzFCMzAwNUU2MEJFIC8qIEpTQ3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkI2NkVDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0RhdGFWaWV3LmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24gMjI2OTM1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
RXhlY3V0YWJsZUFsbG9jYXRvci5oIgotI2luY2x1ZGUgIkpTQ1BvaXNvbmVkUHRyLmgiCisjaW5j
bHVkZSAiSlNDUG9pc29uLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zODksOCArMzg5
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGVtcHR5VmFsdWUoKSB7IHJldHVybiBQb2lzb25l
ZE1hc21QdHIoMSk7IH0KLSAgICBzdGF0aWMgUG9pc29uZWRNYXNtUHRyIGRlbGV0ZWRWYWx1ZSgp
IHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cigyKTsgfQorICAgIHN0YXRpYyBQb2lzb25lZE1hc21Q
dHIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFBvaXNvbmVkTWFzbVB0cihBbHJlYWR5UG9pc29uZWQs
IDEpOyB9CisgICAgc3RhdGljIFBvaXNvbmVkTWFzbVB0ciBkZWxldGVkVmFsdWUoKSB7IHJldHVy
biBQb2lzb25lZE1hc21QdHIoQWxyZWFkeVBvaXNvbmVkLCAyKTsgfQogCiAgICAgUG9pc29uZWRN
YXNtUHRyIG1fdmFsdWU7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93
ZXJNYWNyb3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyTWFjcm9zLmNwcAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJNYWNyb3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTA3LDcgKzUwNyw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHBhcmFt
cy5ncFNjcmF0Y2goMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgcG9pc29uU2Ny
YXRjaCA9IHBhcmFtcy5ncFNjcmF0Y2goMSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KGdfaml0Q29kZVBvaXNvbiksIHBvaXNv
blNjcmF0Y2gpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tNjQoUE9JU09OKEpJVENvZGUpKSwgcG9pc29uU2NyYXRjaCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVt
cFRhYmxlKSwgc2NyYXRjaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEND
YWxsSGVscGVyczo6QmFzZUluZGV4KHNjcmF0Y2gsIGluZGV4LCBDQ2FsbEhlbHBlcnM6OnRpbWVz
UHRyKCkpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC54b3I2NChwb2lz
b25TY3JhdGNoLCBzY3JhdGNoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3Bw
CShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMDMzLDcgKzEzMDMzLDcgQEAgdm9pZCB0ZXN0SW50ZXJw
cmV0ZXIoKQogICAgICAgICAgICAgR1BSUmVnIHBvaXNvblNjcmF0Y2ggPSBwYXJhbXMuZ3BTY3Jh
dGNoKDEpOwogCiAgICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoanVtcFRhYmxlKSwgc2NyYXRjaCk7Ci0gICAgICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW02NChnX2ppdENvZGVQb2lzb24pLCBwb2lzb25TY3JhdGNoKTsKKyAgICAg
ICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFBPSVNPTihKSVRDb2Rl
KSksIHBvaXNvblNjcmF0Y2gpOwogICAgICAgICAgICAgaml0LmxvYWQ2NChDQ2FsbEhlbHBlcnM6
OkJhc2VJbmRleChzY3JhdGNoLCBwYXJhbXNbMF0uZ3ByKCksIENDYWxsSGVscGVyczo6dGltZXNQ
dHIoKSksIHNjcmF0Y2gpOwogICAgICAgICAgICAgaml0LnhvcjY0KHBvaXNvblNjcmF0Y2gsIHNj
cmF0Y2gpOwogICAgICAgICAgICAgaml0Lmp1bXAoc2NyYXRjaCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxOSwxMSArMzE5LDExIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0eXBlZGVmIEpTQzo6
SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247Ci0gICAgdHlwZWRlZiBQb2lzb25lZFJlZkNvdW50ZWRB
cnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7
CisgICAgdHlwZWRlZiBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxQT0lTT04oQ29kZUJsb2NrKSwg
SW5zdHJ1Y3Rpb24+JiBVbnBhY2tlZEluc3RydWN0aW9uczsKIAogICAgIHVuc2lnbmVkIG51bWJl
ck9mSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyB9
Ci0gICAgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8Q29kZUJsb2NrUG9pc29uLCBJbnN0cnVjdGlv
bj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9Ci0gICAgY29uc3Qg
UG9pc29uZWRSZWZDb3VudGVkQXJyYXk8Q29kZUJsb2NrUG9pc29uLCBJbnN0cnVjdGlvbj4mIGlu
c3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CisgICAgUG9pc29u
ZWRSZWZDb3VudGVkQXJyYXk8UE9JU09OKENvZGVCbG9jayksIEluc3RydWN0aW9uPiYgaW5zdHJ1
Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKyAgICBjb25zdCBQb2lzb25lZFJl
ZkNvdW50ZWRBcnJheTxQT0lTT04oQ29kZUJsb2NrKSwgSW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogCiAgICAgc2l6ZV90IHByZWRp
Y3RlZE1hY2hpbmVDb2RlU2l6ZSgpOwogCkBAIC04ODcsOCArODg3LDYgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBoYXNUYWlsQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aGFz
VGFpbENhbGxzKCk7IH0KIAotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHNfcG9pc29u
ID0gbWFrZUNvbnN0RXhwclBvaXNvbihDb2RlQmxvY2tQb2lzb24pOwotCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCk7CiAgICAgdm9pZCBmaW5hbGl6ZUJh
c2VsaW5lSklUSW5saW5lQ2FjaGVzKCk7CkBAIC05NDksOSArOTQ3LDkgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGVuc3VyZUNhdGNoTGl2ZW5lc3NJc0NvbXB1dGVkRm9yQnl0ZWNvZGVPZmZzZXRTbG93
KHVuc2lnbmVkKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KLSAgICBzdGF0aWMgUG9pc29uZWRVbmlxdWVQ
dHI8Q29kZUJsb2NrUG9pc29uLCBUPiBtYWtlUG9pc29uZWRVbmlxdWUoQXJndW1lbnRzJiYuLi4g
YXJndW1lbnRzKQorICAgIHN0YXRpYyBQb2lzb25lZFVuaXF1ZVB0cjxQT0lTT04oQ29kZUJsb2Nr
KSwgVD4gbWFrZVBvaXNvbmVkVW5pcXVlKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7
Ci0gICAgICAgIHJldHVybiBXVEY6Om1ha2VQb2lzb25lZFVuaXF1ZTxDb2RlQmxvY2tQb2lzb24s
IFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOworICAgICAgICByZXR1
cm4gV1RGOjptYWtlUG9pc29uZWRVbmlxdWU8UE9JU09OKENvZGVCbG9jayksIFQ+KHN0ZDo6Zm9y
d2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOwogICAgIH0KIAogICAgIFdyaXRlQmFycmll
cjxVbmxpbmtlZENvZGVCbG9jaz4gbV91bmxpbmtlZENvZGU7CkBAIC05NjcsMzAgKzk2NSwzMCBA
QCBwcml2YXRlOgogICAgIH07CiAgICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVCYXNlPiBtX293
bmVyRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8RXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRn
ZT4gbV9vd25lckVkZ2U7Ci0gICAgQ29uc3RFeHByUG9pc29uZWQ8Q29kZUJsb2NrUG9pc29uLCBW
TSo+IG1fcG9pc29uZWRWTTsKKyAgICBQb2lzb25lZDxQT0lTT04oQ29kZUJsb2NrKSwgVk0qPiBt
X3BvaXNvbmVkVk07CiAKLSAgICBQb2lzb25lZFJlZkNvdW50ZWRBcnJheTxDb2RlQmxvY2tQb2lz
b24sIEluc3RydWN0aW9uPiBtX2luc3RydWN0aW9uczsKKyAgICBQb2lzb25lZFJlZkNvdW50ZWRB
cnJheTxQT0lTT04oQ29kZUJsb2NrKSwgSW5zdHJ1Y3Rpb24+IG1faW5zdHJ1Y3Rpb25zOwogICAg
IFZpcnR1YWxSZWdpc3RlciBtX3RoaXNSZWdpc3RlcjsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9z
Y29wZVJlZ2lzdGVyOwogICAgIG11dGFibGUgQ29kZUJsb2NrSGFzaCBtX2hhc2g7CiAKLSAgICBQ
b2lzb25lZFJlZlB0cjxDb2RlQmxvY2tQb2lzb24sIFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsK
KyAgICBQb2lzb25lZFJlZlB0cjxQT0lTT04oQ29kZUJsb2NrKSwgU291cmNlUHJvdmlkZXI+IG1f
c291cmNlOwogICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fZmly
c3RMaW5lQ29sdW1uT2Zmc2V0OwogCiAgICAgUmVmQ291bnRlZEFycmF5PExMSW50Q2FsbExpbmtJ
bmZvPiBtX2xsaW50Q2FsbExpbmtJbmZvczsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRD
YWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPj4gbV9p
bmNvbWluZ0xMSW50Q2FsbHM7CiAgICAgU3RydWN0dXJlV2F0Y2hwb2ludE1hcCBtX2xsaW50R2V0
QnlJZFdhdGNocG9pbnRNYXA7Ci0gICAgUG9pc29uZWRSZWZQdHI8Q29kZUJsb2NrUG9pc29uLCBK
SVRDb2RlPiBtX2ppdENvZGU7CisgICAgUG9pc29uZWRSZWZQdHI8UE9JU09OKENvZGVCbG9jayks
IEpJVENvZGU+IG1faml0Q29kZTsKICNpZiBFTkFCTEUoSklUKQogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZWdpc3RlckF0T2Zmc2V0TGlzdD4gbV9jYWxsZWVTYXZlUmVnaXN0ZXJzOwotICAgIFBvaXNv
bmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgU3RydWN0dXJlU3R1YkluZm8+IG1fc3R1YkluZm9zOwot
ICAgIFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgSklUQWRkSUM+IG1fYWRkSUNzOwotICAg
IFBvaXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgSklUTXVsSUM+IG1fbXVsSUNzOwotICAgIFBv
aXNvbmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgSklUTmVnSUM+IG1fbmVnSUNzOwotICAgIFBvaXNv
bmVkQmFnPENvZGVCbG9ja1BvaXNvbiwgSklUU3ViSUM+IG1fc3ViSUNzOwotICAgIFBvaXNvbmVk
QmFnPENvZGVCbG9ja1BvaXNvbiwgQnlWYWxJbmZvPiBtX2J5VmFsSW5mb3M7Ci0gICAgUG9pc29u
ZWRCYWc8Q29kZUJsb2NrUG9pc29uLCBDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJbmZvczsKKyAg
ICBQb2lzb25lZEJhZzxQT0lTT04oQ29kZUJsb2NrKSwgU3RydWN0dXJlU3R1YkluZm8+IG1fc3R1
YkluZm9zOworICAgIFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxvY2spLCBKSVRBZGRJQz4gbV9h
ZGRJQ3M7CisgICAgUG9pc29uZWRCYWc8UE9JU09OKENvZGVCbG9jayksIEpJVE11bElDPiBtX211
bElDczsKKyAgICBQb2lzb25lZEJhZzxQT0lTT04oQ29kZUJsb2NrKSwgSklUTmVnSUM+IG1fbmVn
SUNzOworICAgIFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxvY2spLCBKSVRTdWJJQz4gbV9zdWJJ
Q3M7CisgICAgUG9pc29uZWRCYWc8UE9JU09OKENvZGVCbG9jayksIEJ5VmFsSW5mbz4gbV9ieVZh
bEluZm9zOworICAgIFBvaXNvbmVkQmFnPFBPSVNPTihDb2RlQmxvY2spLCBDYWxsTGlua0luZm8+
IG1fY2FsbExpbmtJbmZvczsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+PiBtX2luY29taW5nQ2FsbHM7CiAgICAg
U2VudGluZWxMaW5rZWRMaXN0PFBvbHltb3JwaGljQ2FsbE5vZGUsIEJhc2ljUmF3U2VudGluZWxO
b2RlPFBvbHltb3JwaGljQ2FsbE5vZGU+PiBtX2luY29taW5nUG9seW1vcnBoaWNDYWxsczsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UENUb0NvZGVPcmlnaW5NYXA+IG1fcGNUb0NvZGVPcmlnaW5NYXA7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENv
bXBpbGVyQ29tbW9uLmgJKHJldmlzaW9uIDIyNjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDcg
Kzg3LDcgQEAgdm9pZCBhZGp1c3RGcmFtZUFuZFN0YWNrSW5PU1JFeGl0Q29tcGlsZQogICAgIC8v
IFdlIG5lZWQgdG8gbWFrZSBzdXJlIFNQIGlzIGNvcnJlY3QgaW4gY2FzZSBvZiBhbiBleGNlcHRp
b24uCiAgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayAqIHN0YXRpY19jYXN0PGlu
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgaml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6aml0Q29k
ZU9mZnNldCgpKSwgR1BSSW5mbzo6cmVnVDApOwotICAgIGppdC54b3JQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoQ29kZUJsb2NrOjpzX3BvaXNvbiksIEdQUkluZm86OnJlZ1QwKTsK
KyAgICBqaXQueG9yUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKFBPSVNPTihDb2Rl
QmxvY2spKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihKSVRDb2RlVHlwZTo6Y29tbW9uRGF0YU9mZnNldCgpKSwgR1BSSW5mbzo6
cmVnVDApOwogICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDAsIENvbW1vbkRhdGE6OmZyYW1lUmVnaXN0ZXJDb3VudE9mZnNldCgpKSwgR1BSSW5mbzo6
cmVnVDApOwogICAgIC8vIFRoaXMgZG9lcyB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChmcmFtZVJl
Z2lzdGVyQ291bnQgLSAxKSpzaXplb2YoUmVnaXN0ZXIpIHdoZXJlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIy
NjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NjYyLDcgKzg2NjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2hlY2tTdWJDbGFzCiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKCpt
X2ppdC52bSgpLCBiYXNlR1BSLCBvdGhlckdQUiwgc3BlY2lmaWVkR1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mob3RoZXJHUFIsIFN0cnVjdHVyZTo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBvdGhlckdQUik7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
bV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChnX2dsb2JhbERhdGFQb2lzb24p
LCBzcGVjaWZpZWRHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTY0KFBPSVNPTihHbG9iYWxEYXRhKSksIHNwZWNpZmllZEdQUik7CiAgICAgICAgIG1faml0
LnhvcjY0KHNwZWNpZmllZEdQUiwgb3RoZXJHUFIpOwogI2VuZGlmCiAgICAgICAgIG1faml0Lm1v
dmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG5vZGUtPmNsYXNzSW5mbygpKSwgc3BlY2lm
aWVkR1BSKTsKQEAgLTk3NzgsNyArOTc3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRT
d2l0Y2hJbnRKdW1wKAogICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgVU5V
U0VEX1BBUkFNKHBvaXNvblNjcmF0Y2gpOyAvLyBQbGFjYXRlIHRoZSAzMi1iaXQgYnVpbGQuCiAj
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChnX2ppdENvZGVQ
b2lzb24pLCBwb2lzb25TY3JhdGNoKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NChQT0lT
T04oSklUQ29kZSkpLCBwb2lzb25TY3JhdGNoKTsKICNlbmRpZgogICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbVB0cih0YWJsZS5jdGlPZmZzZXRzLmJlZ2luKCkpLCBzY3JhdGNoKTsKICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoc2NyYXRjaCwgdmFsdWUsIEpJVENvbXBp
bGVyOjp0aW1lc1B0cigpKSwgc2NyYXRjaCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNDAwLDcgKzExNDAwLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgTFZhbHVlIHN0cnVj
dHVyZSA9IGxvYWRTdHJ1Y3R1cmUoY2VsbCk7CiAgICAgICAgICAgICBMVmFsdWUgcG9pc29uZWRD
bGFzc0luZm8gPSBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfY2xh
c3NJbmZvKTsKLSAgICAgICAgICAgIExWYWx1ZSBjbGFzc0luZm8gPSBtX291dC5iaXRYb3IocG9p
c29uZWRDbGFzc0luZm8sIG1fb3V0LmNvbnN0SW50NjQoZ19nbG9iYWxEYXRhUG9pc29uKSk7Cisg
ICAgICAgICAgICBMVmFsdWUgY2xhc3NJbmZvID0gbV9vdXQuYml0WG9yKHBvaXNvbmVkQ2xhc3NJ
bmZvLCBtX291dC5jb25zdEludDY0KFBPSVNPTihHbG9iYWxEYXRhKSkpOwogICAgICAgICAgICAg
VmFsdWVGcm9tQmxvY2sgb3RoZXJBdFN0YXJ0ID0gbV9vdXQuYW5jaG9yKGNsYXNzSW5mbyk7CiAg
ICAgICAgICAgICBtX291dC5qdW1wKGxvb3ApOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIyNjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkwNCw3ICs5MDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBJbnRlcnByZXRlciogbV9pbnRlcnByZXRlcjsKIAotICAgICAgICBQb2lzb25lZFJlZkNv
dW50ZWRBcnJheTxDb2RlQmxvY2tQb2lzb24sIEluc3RydWN0aW9uPiBtX2luc3RydWN0aW9uczsK
KyAgICAgICAgUG9pc29uZWRSZWZDb3VudGVkQXJyYXk8UE9JU09OKENvZGVCbG9jayksIEluc3Ry
dWN0aW9uPiBtX2luc3RydWN0aW9uczsKIAogICAgICAgICBWZWN0b3I8Q2FsbFJlY29yZD4gbV9j
YWxsczsKICAgICAgICAgVmVjdG9yPExhYmVsPiBtX2xhYmVsczsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDIyNjkzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIxNCw3ICsyMTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgdmlydHVh
bFRodW5rRm9yKFZNCiAgICAgLy8gTm93IHdlIGtub3cgdGhhdCB3ZSBoYXZlIGEgQ29kZUJsb2Nr
LCBhbmQgd2UncmUgY29tbWl0dGVkIHRvIG1ha2luZyBhIGZhc3QKICAgICAvLyBjYWxsLgogI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQo
Z19qaXRDb2RlUG9pc29uKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5tb3ZlKENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KFBPSVNPTihKSVRDb2RlKSksIEdQUkluZm86OnJlZ1QxKTsKICAg
ICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1Q0KTsKICNlbmRpZgogCkBA
IC0zMTAsNyArMzEwLDcgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBuYXRpdmVGb3JH
ZQogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhYODZSZWdpc3Rl
cnM6OnI5LCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvbiksIFg4NlJlZ2lzdGVyczo6cjkpOwog
ICAgIH0gZWxzZQogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6QWRkcmVzcyhY
ODZSZWdpc3RlcnM6OmVzaSwgSW50ZXJuYWxGdW5jdGlvbjo6b2Zmc2V0T2ZOYXRpdmVGdW5jdGlv
bkZvcihraW5kKSksIFg4NlJlZ2lzdGVyczo6cjkpOwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNl
SklUOjpUcnVzdGVkSW1tNjQoZ19uYXRpdmVDb2RlUG9pc29uKSwgWDg2UmVnaXN0ZXJzOjplc2kp
OworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoUE9JU09OKE5hdGl2
ZUNvZGUpKSwgWDg2UmVnaXN0ZXJzOjplc2kpOwogICAgIGppdC54b3I2NChYODZSZWdpc3RlcnM6
OmVzaSwgWDg2UmVnaXN0ZXJzOjpyOSk7CiAgICAgaml0LmNhbGwoWDg2UmVnaXN0ZXJzOjpyOSk7
CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIG5hdGl2
ZUZvckdlCiAgICAgICAgIGppdC5sb2FkUHRyKEpTSW50ZXJmYWNlSklUOjpBZGRyZXNzKEFSTTY0
UmVnaXN0ZXJzOjp4MiwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb24pLCBBUk02NFJlZ2lzdGVy
czo6eDIpOwogICAgIH0gZWxzZQogICAgICAgICBqaXQubG9hZFB0cihKU0ludGVyZmFjZUpJVDo6
QWRkcmVzcyhBUk02NFJlZ2lzdGVyczo6eDEsIEludGVybmFsRnVuY3Rpb246Om9mZnNldE9mTmF0
aXZlRnVuY3Rpb25Gb3Ioa2luZCkpLCBBUk02NFJlZ2lzdGVyczo6eDIpOwotICAgIGppdC5tb3Zl
KEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoZ19uYXRpdmVDb2RlUG9pc29uKSwgQVJNNjRS
ZWdpc3RlcnM6OngxKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0
KFBPSVNPTihOYXRpdmVDb2RlKSksIEFSTTY0UmVnaXN0ZXJzOjp4MSk7CiAgICAgaml0LnhvcjY0
KEFSTTY0UmVnaXN0ZXJzOjp4MSwgQVJNNjRSZWdpc3RlcnM6OngyKTsKICAgICBqaXQuY2FsbChB
Uk02NFJlZ2lzdGVyczo6eDIpOwogCkBAIC0xMTcxLDcgKzExNzEsNyBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgYm91bmRUaGlzTm9BcmdzRnVuCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wIG5vQ29k
ZSA9IGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgR1BSSW5mbzo6cmVnVDAp
OwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tNjQoZ19qaXRDb2RlUG9pc29uKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIGppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KFBPSVNPTihKSVRDb2RlKSksIEdQUkluZm86
OnJlZ1QxKTsKICAgICBqaXQueG9yNjQoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwKTsK
ICNlbmRpZgogICAgIGVtaXRQb2ludGVyVmFsaWRhdGlvbihqaXQsIEdQUkluZm86OnJlZ1QwKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMjUzMCw3ICsyNTMwLDcgQEAgX2xsaW50X29wX3Byb2ZpbGVfdHlwZToKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNv
biwgdDEpCisgICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCB0MSwgdDIpCiAgICAgIyB0
MSBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRoZSB0eXBlUHJvZmlsZXJMb2cuCiAgICAgbG9h
ZHAgVk06Om1fdHlwZVByb2ZpbGVyTG9nW3QxXSwgdDEKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlz
aW9uIDIyNjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIG1hY3JvIGRpc3Bh
dGNoQWZ0ZXJDYWxsKCkKICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCiAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1tQQl0sIFBCCi0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQikK
KyAgICB1bnBvaXNvbihfZ19Db2RlQmxvY2tQb2lzb24sIFBCLCB0MSkKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHIwLCBbY2ZyLCB0MSwgOF0KICAgICB2YWx1
ZVByb2ZpbGUocjAsIChDYWxsT3BDb2RlU2l6ZSAtIDEpLCB0MykKQEAgLTQ4MCwyNiArNDgwLDE3
IEBAIG1hY3JvIHZhbHVlUHJvZmlsZSh2YWx1ZSwgb3BlcmFuZCwgc2NyYXQKICAgICBzdG9yZXEg
dmFsdWUsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzW3NjcmF0Y2hdCiBlbmQKIAotbWFjcm8gc3Ry
dWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZUlEVGhlblN0cnVjdHVyZSwg
c2NyYXRjaCkKK21hY3JvIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRjaChzdHJ1Y3R1
cmVJRFRoZW5TdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBzY3JhdGNoCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bc2NyYXRj
aF0sIHNjcmF0Y2gKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHNjcmF0Y2gpCisgICAg
dW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCBzY3JhdGNoLCBzY3JhdGNoMikKICAgICBsb2Fk
cCBWTTo6aGVhcCArIEhlYXA6Om1fc3RydWN0dXJlSURUYWJsZSArIFN0cnVjdHVyZUlEVGFibGU6
Om1fdGFibGVbc2NyYXRjaF0sIHNjcmF0Y2gKICAgICBsb2FkcCBbc2NyYXRjaCwgc3RydWN0dXJl
SURUaGVuU3RydWN0dXJlLCA4XSwgc3RydWN0dXJlSURUaGVuU3RydWN0dXJlCiBlbmQKIAotbWFj
cm8gbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKGNlbGwsIHN0cnVjdHVyZSwgc2NyYXRjaCkKK21h
Y3JvIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaChjZWxsLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNj
cmF0Y2gyKQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFtjZWxsXSwgc3RydWN0dXJl
Ci0gICAgc3RydWN0dXJlSURUb1N0cnVjdHVyZVdpdGhTY3JhdGNoKHN0cnVjdHVyZSwgc2NyYXRj
aCkKLWVuZAotCi1tYWNybyBsb2FkU3RydWN0dXJlQW5kQ2xvYmJlckZpcnN0QXJnKGNlbGwsIHN0
cnVjdHVyZSkKLSAgICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbY2VsbF0sIHN0cnVjdHVy
ZQotICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBjZWxsCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpt
X3BvaXNvbmVkVk1bY2VsbF0sIGNlbGwKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIGNl
bGwpCi0gICAgbG9hZHAgVk06OmhlYXAgKyBIZWFwOjptX3N0cnVjdHVyZUlEVGFibGUgKyBTdHJ1
Y3R1cmVJRFRhYmxlOjptX3RhYmxlW2NlbGxdLCBjZWxsCi0gICAgbG9hZHAgW2NlbGwsIHN0cnVj
dHVyZSwgOF0sIHN0cnVjdHVyZQorICAgIHN0cnVjdHVyZUlEVG9TdHJ1Y3R1cmVXaXRoU2NyYXRj
aChzdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNjcmF0Y2gyKQogZW5kCiAKICMgRW50cnlwb2ludHMgaW50
byB0aGUgaW50ZXJwcmV0ZXIuCkBAIC01NjIsNyArNTUzLDcgQEAgbWFjcm8gZnVuY3Rpb25Bcml0
eUNoZWNrKGRvbmVMYWJlbCwgc2xvdwogICAgICMgUmVsb2FkIENvZGVCbG9jayBhbmQgcmVzZXQg
UEMsIHNpbmNlIHRoZSBzbG93X3BhdGggY2xvYmJlcmVkIHRoZW0uCiAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQxCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIFBC
Ci0gICAgdW5wb2lzb24oQ29kZUJsb2NrUG9pc29uLCBQQikKKyAgICB1bnBvaXNvbihfZ19Db2Rl
QmxvY2tQb2lzb24sIFBCLCB0MikKICAgICBtb3ZlIDAsIFBDCiAgICAgam1wIGRvbmVMYWJlbAog
ZW5kCkBAIC02NDEsNyArNjMyLDcgQEAgX2xsaW50X29wX3RvX3RoaXM6CiAgICAgbG9hZHEgW2Nm
ciwgdDAsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BUb1RoaXNTbG93CiAgICAg
YmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cK
LSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MikKKyAgICBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MiwgdDMpCiAgICAgbG9hZHBGcm9tSW5zdHJ1Y3Rpb24o
MiwgdDIpCiAgICAgYnBuZXEgdDEsIHQyLCAub3BUb1RoaXNTbG93CiAgICAgZGlzcGF0Y2goY29u
c3RleHByIG9wX3RvX3RoaXNfbGVuZ3RoKQpAQCAtNzI0LDcgKzcxNSw3IEBAIG1hY3JvIGVxdWFs
TnVsbENvbXBhcmlzb24oKQogICAgIG1vdmUgMCwgdDAKICAgICBqbXAgLmRvbmUKIC5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkOgotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQx
KQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxLCB0MykKICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKICAgICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxPYmplY3RbdDJdLCB0MCwgdDAK
QEAgLTExNjMsNyArMTE1NCw3IEBAIF9sbGludF9vcF9pc191bmRlZmluZWQ6CiAgICAgc3RvcmVx
IHQxLCBbY2ZyLCB0MiwgOF0KICAgICBkaXNwYXRjaChjb25zdGV4cHIgb3BfaXNfdW5kZWZpbmVk
X2xlbmd0aCkKIC5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkOgotICAgIGxvYWRTdHJ1Y3R1cmVXaXRo
U2NyYXRjaCh0MCwgdDMsIHQxKQorICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDMs
IHQxLCB0NSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QxXSwgdDEKICAgICBjcGVxIFN0cnVjdHVyZTo6bV9nbG9iYWxP
YmplY3RbdDNdLCB0MSwgdDAKQEAgLTE0MzMsNyArMTQyNCw3IEBAIF9sbGludF9vcF9wdXRfYnlf
aWQ6CiAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QzXSwgdDMKICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiB0Mywgb2sgZW5kKQogCi0gICAgc3RydWN0dXJlSURUb1N0cnVj
dHVyZVdpdGhTY3JhdGNoKHQyLCB0MSkKKyAgICBzdHJ1Y3R1cmVJRFRvU3RydWN0dXJlV2l0aFNj
cmF0Y2godDIsIHQxLCB0NSkKICAgICBsb2FkcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlW3QyXSwg
dDIKICAgICBicWVxIHQyLCBWYWx1ZU51bGwsIC5vcFB1dEJ5SWRUcmFuc2l0aW9uQ2hhaW5Eb25l
CiAub3BQdXRCeUlkVHJhbnNpdGlvbkNoYWluTG9vcDoKQEAgLTE3NDAsNyArMTczMSw3IEBAIG1h
Y3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGEKICAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01h
c2ssIC5pbW1lZGlhdGUKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSkK
KyAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgY2VsbEhh
bmRsZXIodDIsIEpTQ2VsbDo6bV9mbGFnc1t0MF0sIC50YXJnZXQpCiAgICAgZGlzcGF0Y2goMykK
IApAQCAtMTk1NCw3ICsxOTQ1LDcgQEAgbWFjcm8gZG9DYWxsKHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAg
IG1vdmUgdDMsIHNwCiAgICAgaWYgUE9JU09OCi0gICAgICAgIGxvYWRwIF9nX2ppdENvZGVQb2lz
b24sIHQyCisgICAgICAgIGxvYWRwIF9nX0pJVENvZGVQb2lzb24sIHQyCiAgICAgICAgIHhvcnAg
TExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXSwgdDIKICAgICAgICAgcHJl
cGFyZUNhbGwodDIsIHQxLCB0MywgdDQpCiAgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbih0MikK
QEAgLTIwMDcsNyArMTk5OCw3IEBAIF9sbGludF9vcF9jYXRjaDoKIAogICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBQQgogICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbUEJdLCBQ
QgotICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgUEIpCisgICAgdW5wb2lzb24oX2dfQ29k
ZUJsb2NrUG9pc29uLCBQQiwgdDIpCiAgICAgbG9hZHAgVk06OnRhcmdldEludGVycHJldGVyUENG
b3JUaHJvd1t0M10sIFBDCiAgICAgc3VicCBQQiwgUEMKICAgICByc2hpZnRwIDMsIFBDCkBAIC0y
MDg0LDcgKzIwNzUsNyBAQCBtYWNybyBuYXRpdmVDYWxsVHJhbXBvbGluZShleGVjdXRhYmxlT2Zm
CiAgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEKICAgICBjaGVja1N0
YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkKICAgICBpZiBDX0xPT1AKLSAgICAg
ICAgbG9hZHAgX2dfbmF0aXZlQ29kZVBvaXNvbiwgdDIKKyAgICAgICAgbG9hZHAgX2dfTmF0aXZl
Q29kZVBvaXNvbiwgdDIKICAgICAgICAgeG9ycCBleGVjdXRhYmxlT2Zmc2V0VG9GdW5jdGlvblt0
MV0sIHQyCiAgICAgICAgIGNsb29wQ2FsbE5hdGl2ZSB0MgogICAgIGVsc2UKQEAgLTIwOTMsNyAr
MjA4NCw3IEBAIG1hY3JvIG5hdGl2ZUNhbGxUcmFtcG9saW5lKGV4ZWN1dGFibGVPZmYKICAgICAg
ICAgICAgIGNhbGwgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdCiAgICAgICAgICAgICBh
ZGRwIDMyLCBzcAogICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2FkcCBfZ19uYXRpdmVDb2Rl
UG9pc29uLCB0MgorICAgICAgICAgICAgbG9hZHAgX2dfTmF0aXZlQ29kZVBvaXNvbiwgdDIKICAg
ICAgICAgICAgIHhvcnAgZXhlY3V0YWJsZU9mZnNldFRvRnVuY3Rpb25bdDFdLCB0MgogICAgICAg
ICAgICAgY2FsbCB0MgogICAgICAgICBlbmQKQEAgLTIxMjcsNyArMjExOCw3IEBAIG1hY3JvIGlu
dGVybmFsRnVuY3Rpb25DYWxsVHJhbXBvbGluZShvZmYKICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwg
dDEKICAgICBjaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCh0MywgMHhkZWFkMDAwMSkKICAgICBp
ZiBDX0xPT1AKLSAgICAgICAgbG9hZHAgX2dfbmF0aXZlQ29kZVBvaXNvbiwgdDIKKyAgICAgICAg
bG9hZHAgX2dfTmF0aXZlQ29kZVBvaXNvbiwgdDIKICAgICAgICAgeG9ycCBvZmZzZXRPZkZ1bmN0
aW9uW3QxXSwgdDIKICAgICAgICAgY2xvb3BDYWxsTmF0aXZlIHQyCiAgICAgZWxzZQpAQCAtMjEz
Niw3ICsyMTI3LDcgQEAgbWFjcm8gaW50ZXJuYWxGdW5jdGlvbkNhbGxUcmFtcG9saW5lKG9mZgog
ICAgICAgICAgICAgY2FsbCBvZmZzZXRPZkZ1bmN0aW9uW3QxXQogICAgICAgICAgICAgYWRkcCAz
Miwgc3AKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9hZHAgX2dfbmF0aXZlQ29kZVBvaXNv
biwgdDIKKyAgICAgICAgICAgIGxvYWRwIF9nX05hdGl2ZUNvZGVQb2lzb24sIHQyCiAgICAgICAg
ICAgICB4b3JwIG9mZnNldE9mRnVuY3Rpb25bdDFdLCB0MgogICAgICAgICAgICAgY2FsbCB0Mgog
ICAgICAgICBlbmQKQEAgLTIyNDcsNyArMjIzOCw3IEBAIF9sbGludF9vcF9yZXNvbHZlX3Njb3Bl
OgogbWFjcm8gbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhvcGVyYW5kLCBzbG93UGF0aCkKICAgICBs
b2FkaXNGcm9tSW5zdHJ1Y3Rpb24ob3BlcmFuZCwgdDApCiAgICAgbG9hZHEgW2NmciwgdDAsIDhd
LCB0MAotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxKQorICAgIGxvYWRT
dHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDIsIHQxLCB0MykKICAgICBsb2FkcEZyb21JbnN0cnVj
dGlvbig1LCB0MSkKICAgICBicG5lcSB0MiwgdDEsIHNsb3dQYXRoCiBlbmQKQEAgLTI1MDAsNyAr
MjQ5MSw3IEBAIF9sbGludF9vcF9wcm9maWxlX3R5cGU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQogICAgIGxvYWRwIENvZGVCbG9jazo6bV9wb2lz
b25lZFZNW3QxXSwgdDEKLSAgICB1bnBvaXNvbihDb2RlQmxvY2tQb2lzb24sIHQxKQorICAgIHVu
cG9pc29uKF9nX0NvZGVCbG9ja1BvaXNvbiwgdDEsIHQzKQogICAgICMgdDEgaXMgaG9sZGluZyB0
aGUgcG9pbnRlciB0byB0aGUgdHlwZVByb2ZpbGVyTG9nLgogICAgIGxvYWRwIFZNOjptX3R5cGVQ
cm9maWxlckxvZ1t0MV0sIHQxCiAgICAgIyB0MiBpcyBob2xkaW5nIHRoZSBwb2ludGVyIHRvIHRo
ZSBjdXJyZW50IGxvZyBlbnRyeS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDIyNjkzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjA0LDggKzIwNCw2IEBAIGVsc2UKICAgICBjb25zdCBMb3dlc3RUYWcgPSBE
ZWxldGVkVmFsdWVUYWcKIGVuZAogCi1jb25zdCBDb2RlQmxvY2tQb2lzb24gPSBjb25zdGV4cHIg
Q29kZUJsb2NrOjpzX3BvaXNvbgotCiAjIFB1dEJ5SWRGbGFncyBkYXRhCiBjb25zdCBQdXRCeUlk
UHJpbWFyeVR5cGVNYXNrID0gY29uc3RleHByIFB1dEJ5SWRQcmltYXJ5VHlwZU1hc2sKIGNvbnN0
IFB1dEJ5SWRQcmltYXJ5VHlwZVNlY29uZGFyeSA9IGNvbnN0ZXhwciBQdXRCeUlkUHJpbWFyeVR5
cGVTZWNvbmRhcnkKQEAgLTc1NCw5ICs3NTIsMTAgQEAgbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKGRlcwogICAgIGVuZAogZW5kCiAKLW1hY3JvIHVucG9pc29uKHBvaXNvbiwg
ZmllbGQpCittYWNybyB1bnBvaXNvbihwb2lzb24sIGZpZWxkLCBzY3JhdGNoKQogICAgIGlmIFBP
SVNPTgotICAgICAgICB4b3JwIHBvaXNvbiwgZmllbGQKKyAgICAgICAgbG9hZHAgcG9pc29uLCBz
Y3JhdGNoCisgICAgICAgIHhvcnAgc2NyYXRjaCwgZmllbGQKICAgICBlbmQKIGVuZAogCkBAIC0x
MDI0LDcgKzEwMjMsNyBAQCBtYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9j
CiAgICAgIyBTZXQgdXAgdGhlIFBDLgogICAgIGlmIEpTVkFMVUU2NAogICAgICAgICBsb2FkcCBD
b2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgUEIKLSAgICAgICAgdW5wb2lzb24oQ29kZUJs
b2NrUG9pc29uLCBQQikKKyAgICAgICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCBQQiwg
dDMpCiAgICAgICAgIG1vdmUgMCwgUEMKICAgICBlbHNlCiAgICAgICAgIGxvYWRwIENvZGVCbG9j
azo6bV9pbnN0cnVjdGlvbnNbdDFdLCBQQwpAQCAtMTAzNSw3ICsxMDM0LDcgQEAgbWFjcm8gcHJv
bG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvYwogICAgIHN1YnAgY2ZyLCB0MCwgdDAKICAg
ICBicGEgdDAsIGNmciwgLm5lZWRTdGFja0NoZWNrCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3Bv
aXNvbmVkVk1bdDFdLCB0MgotICAgIHVucG9pc29uKENvZGVCbG9ja1BvaXNvbiwgdDIpCisgICAg
dW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCB0MiwgdDMpCiAgICAgaWYgQ19MT09QCiAgICAg
ICAgIGJwYmVxIFZNOjptX2Nsb29wU3RhY2tMaW1pdFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSwog
ICAgIGVsc2UKQEAgLTE2MjMsNyArMTYyMiw3IEBAIF9sbGludF9vcF9jaGVja190cmFwczoKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCiAgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX3BvaXNvbmVkVk1bdDFdLCB0MQotICAgIHVucG9pc29uKENvZGVCbG9j
a1BvaXNvbiwgdDEpCisgICAgdW5wb2lzb24oX2dfQ29kZUJsb2NrUG9pc29uLCB0MSwgdDIpCiAg
ICAgbG9hZGIgVk06Om1fdHJhcHMrVk1UcmFwczo6bV9uZWVkVHJhcEhhbmRsaW5nW3QxXSwgdDAK
ICAgICBidHBueiB0MCwgLmhhbmRsZVRyYXBzCiAuYWZ0ZXJIYW5kbGluZ1RyYXBzOgpAQCAtMTYz
OSw3ICsxNjM4LDcgQEAgX2xsaW50X29wX2NoZWNrX3RyYXBzOgogbWFjcm8gYWNxdWlyZVNoYWRv
d0NoaWNrZW5QYWNrZXQoc2xvdykKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKICAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fcG9pc29uZWRWTVt0MV0sIHQxCi0gICAgdW5wb2lzb24oQ29kZUJs
b2NrUG9pc29uLCB0MSkKKyAgICB1bnBvaXNvbihfZ19Db2RlQmxvY2tQb2lzb24sIHQxLCB0MikK
ICAgICBsb2FkcCBWTTo6bV9zaGFkb3dDaGlja2VuW3QxXSwgdDIKICAgICBsb2FkcCBTaGFkb3dD
aGlja2VuOjptX2xvZ0N1cnNvclt0Ml0sIHQwCiAgICAgYnBhZXEgdDAsIFNoYWRvd0NoaWNrZW46
Om1fbG9nRW5kW3QyXSwgc2xvdwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9V
bmxpbmtlZFNvdXJjZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsNyArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICAvLyBGSVhNRTogTWFrZSBpdCBQb2lzb25lZFJlZjxTb3VyY2VQcm92aWRpZXI+LgogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4MzI1Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFVubGlua2VkU291cmNlQ29kZVBvaXNvbiwgU291cmNlUHJv
dmlkZXI+IG1fcHJvdmlkZXI7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPFBPSVNPTihVbmxpbmtl
ZFNvdXJjZUNvZGUpLCBTb3VyY2VQcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAgICAgaW50IG1f
c3RhcnRPZmZzZXQ7CiAgICAgICAgIGludCBtX2VuZE9mZnNldDsKICAgICB9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lv
biAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2Miw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgLy8gVGhpcyBiaXQgaXMgc2V0IGlmIGFueSB1c2VyIG1vZGlmaWVzIHRoZSBjb25zdHJ1
Y3RvciBwcm9wZXJ0eSBBcnJheS5wcm90b3R5cGUuIFRoaXMgaXMgdXNlZCB0byBvcHRpbWl6ZSBz
cGVjaWVzIGNyZWF0aW9uIGZvciBKU0FycmF5cy4KICAgICBmcmllbmQgQXJyYXlQcm90b3R5cGVB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50OwotICAgIFBvaXNvbmVkVW5pcXVlUHRy
PEFycmF5UHJvdG90eXBlUG9pc29uLCBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVdhdGNocG9pbnQ+IG1fY29uc3RydWN0b3JXYXRjaHBvaW50OwotICAgIFBvaXNvbmVkVW5p
cXVlUHRyPEFycmF5UHJvdG90eXBlUG9pc29uLCBBcnJheVByb3RvdHlwZUFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVdhdGNocG9pbnQ+IG1fY29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludDsKKyAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQT0lTT04oQXJyYXlQcm90b3R5cGUpLCBBcnJheVByb3RvdHlw
ZUFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVdhdGNocG9pbnQ+IG1fY29uc3RydWN0b3JXYXRjaHBv
aW50OworICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBPSVNPTihBcnJheVByb3RvdHlwZSksIEFycmF5
UHJvdG90eXBlQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5V2F0Y2hwb2ludD4gbV9jb25zdHJ1Y3Rv
clNwZWNpZXNXYXRjaHBvaW50OwogfTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ3VzdG9tR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDIy
NjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0N1c3RvbUdldHRlclNldHRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAot
I2luY2x1ZGUgIkpTQ1BvaXNvbmVkUHRyLmgiCisjaW5jbHVkZSAiSlNDUG9pc29uLmgiCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCiAjaW5jbHVkZSAiUHV0
UHJvcGVydHlTbG90LmgiCkBAIC02OCw3ICs2OCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHVzaW5nIFBvaXNvbmVkQWNjZXNzb3IgPSBQ
b2lzb25lZDxnX25hdGl2ZUNvZGVQb2lzb24sIFQ+OworICAgIHVzaW5nIFBvaXNvbmVkQWNjZXNz
b3IgPSBQb2lzb25lZDxQT0lTT04oTmF0aXZlQ29kZSksIFQ+OwogCiAgICAgUG9pc29uZWRBY2Nl
c3NvcjxDdXN0b21HZXR0ZXI+IG1fZ2V0dGVyOwogICAgIFBvaXNvbmVkQWNjZXNzb3I8Q3VzdG9t
U2V0dGVyPiBtX3NldHRlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVJbnN0YW5jZS5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBA
QCBwcml2YXRlOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1l
KiBjYWxjdWxhdGVHcmVnb3JpYW5EYXRlVGltZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogY2FsY3VsYXRlR3JlZ29yaWFu
RGF0ZVRpbWVVVEMoRXhlY1N0YXRlKikgY29uc3Q7CiAKLSAgICBtdXRhYmxlIFBvaXNvbmVkUmVm
UHRyPERhdGVJbnN0YW5jZVBvaXNvbiwgRGF0ZUluc3RhbmNlRGF0YT4gbV9kYXRhOworICAgIG11
dGFibGUgUG9pc29uZWRSZWZQdHI8UE9JU09OKERhdGVJbnN0YW5jZSksIERhdGVJbnN0YW5jZURh
dGE+IG1fZGF0YTsKIH07CiAKIERhdGVJbnN0YW5jZSogYXNEYXRlSW5zdGFuY2UoSlNWYWx1ZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5j
dGlvbi5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJp
Y2hAdXdhdGVybG9vLmNhKQogICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCiAg
KgpAQCAtMjQsNyArMjQsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uZWRQdHIuaCIKKyNpbmNsdWRlICJK
U0NQb2lzb24uaCIKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgot
ICAgIHVzaW5nIFBvaXNvbmVkTmF0aXZlRnVuY3Rpb24gPSBQb2lzb25lZDxnX25hdGl2ZUNvZGVQ
b2lzb24sIE5hdGl2ZUZ1bmN0aW9uPjsKKyAgICB1c2luZyBQb2lzb25lZE5hdGl2ZUZ1bmN0aW9u
ID0gUG9pc29uZWQ8UE9JU09OKE5hdGl2ZUNvZGUpLCBOYXRpdmVGdW5jdGlvbj47CiAKICAgICBK
U19FWFBPUlRfUFJJVkFURSBJbnRlcm5hbEZ1bmN0aW9uKFZNJiwgU3RydWN0dXJlKiwgTmF0aXZl
RnVuY3Rpb24gZnVuY3Rpb25Gb3JDYWxsLCBOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbkZvckNvbnN0
cnVjdCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmgJKHJldmlzaW9uIDIyNjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIHNpemVfdCBlc3RpbWF0ZWRTaXplKEpTQ2VsbCopOwogCiBwcml2
YXRlOgotICAgIENvbnN0RXhwclBvaXNvbmVkPEpTQXJyYXlCdWZmZXJQb2lzb24sIEFycmF5QnVm
ZmVyKj4gbV9pbXBsOworICAgIFBvaXNvbmVkPFBPSVNPTihKU0FycmF5QnVmZmVyKSwgQXJyYXlC
dWZmZXIqPiBtX2ltcGw7CiB9OwogCiBpbmxpbmUgQXJyYXlCdWZmZXIqIHRvUG9zc2libHlTaGFy
ZWRBcnJheUJ1ZmZlcihWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5jcHAJKHJldmlzaW9uIDIyNjkzNSkJKGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwOjIyNjkzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NQb2lzb25lZFB0
ci5oIgorCisjaW5jbHVkZSA8bXV0ZXg+CisKK25hbWVzcGFjZSBKU0MgeworCit1aW50cHRyX3Qg
Z19nbG9iYWxEYXRhUG9pc29uOwordWludHB0cl90IGdfaml0Q29kZVBvaXNvbjsKK3VpbnRwdHJf
dCBnX25hdGl2ZUNvZGVQb2lzb247CisKK3ZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpCit7CisgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxf
b25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgZ19nbG9iYWxEYXRhUG9pc29u
ID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX2ppdENvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7
CisgICAgICAgIGdfbmF0aXZlQ29kZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ1BvaXNvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDUG9pc29uLmNwcAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwyMyArMjQsMjYg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uZWRQdHIu
aCIKKyNpbmNsdWRlICJKU0NQb2lzb24uaCIKIAogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi11aW50cHRyX3QgZ19nbG9iYWxE
YXRhUG9pc29uOwotdWludHB0cl90IGdfaml0Q29kZVBvaXNvbjsKLXVpbnRwdHJfdCBnX25hdGl2
ZUNvZGVQb2lzb247CisjZGVmaW5lIERFRklORV9QT0lTT04ocG9pc29uSUQpIFwKKyAgICB1aW50
cHRyX3QgUE9JU09OKHBvaXNvbklEKTsKK0ZPUl9FQUNIX0pTQ19QT0lTT04oREVGSU5FX1BPSVNP
TikKIAogdm9pZCBpbml0aWFsaXplUG9pc29uKCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgaW5pdGlhbGl6ZU9uY2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNl
RmxhZywgW10gewotICAgICAgICBnX2dsb2JhbERhdGFQb2lzb24gPSBtYWtlUG9pc29uKCk7Ci0g
ICAgICAgIGdfaml0Q29kZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKLSAgICAgICAgZ19uYXRpdmVD
b2RlUG9pc29uID0gbWFrZVBvaXNvbigpOworCisjZGVmaW5lIElOSVRJQUxJWkVfUE9JU09OKHBv
aXNvbklEKSBcCisgICAgUE9JU09OKHBvaXNvbklEKSA9IG1ha2VQb2lzb24oKTsKKworICAgICAg
ICBGT1JfRUFDSF9KU0NfUE9JU09OKElOSVRJQUxJWkVfUE9JU09OKQogICAgIH0pOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQb2lzb24uaAkocmV2aXNpb24g
MjI2OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDMzICsyOSw0NSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51
bSBQb2lzb24gewotICAgIE5vdFBvaXNvbmVkID0gMCwgLy8gUmVzZXJ2ZWQgKGFuZCB1bnVzZWQp
IHNvIHRoYXQgcG9pc29uIGtleXMgYXJlIG5ldmVyIDAuCisvLyBMZXQncyBrZWVwIHRoZSBmb2xs
b3dpbmcgbGlzdCBvZiBwb2lzb25zIGluIGFscGhhYmV0aWNhbCBvcmRlciBqdXN0IHNvIGl0J3Mg
ZWFzaWVyIHRvIHJlYWQuCisjZGVmaW5lIEZPUl9FQUNIX0pTQ19QT0lTT04odikgXAorICAgIHYo
QXJyYXlQcm90b3R5cGUpIFwKKyAgICB2KENvZGVCbG9jaykgXAorICAgIHYoRGF0ZUluc3RhbmNl
KSBcCisgICAgdihHbG9iYWxEYXRhKSBcCisgICAgdihKSVRDb2RlKSBcCisgICAgdihKU0FQSVdy
YXBwZXJPYmplY3QpIFwKKyAgICB2KEpTQXJyYXlCdWZmZXIpIFwKKyAgICB2KEpTQ2FsbGJhY2tP
YmplY3QpIFwKKyAgICB2KEpTR2xvYmFsT2JqZWN0KSBcCisgICAgdihKU1NjcmlwdEZldGNoUGFy
YW1ldGVycykgXAorICAgIHYoSlNTY3JpcHRGZXRjaGVyKSBcCisgICAgdihKU1dlYkFzc2VtYmx5
Q29kZUJsb2NrKSBcCisgICAgdihKU1dlYkFzc2VtYmx5SW5zdGFuY2UpIFwKKyAgICB2KEpTV2Vi
QXNzZW1ibHlNZW1vcnkpIFwKKyAgICB2KEpTV2ViQXNzZW1ibHlNb2R1bGUpIFwKKyAgICB2KEpT
V2ViQXNzZW1ibHlUYWJsZSkgXAorICAgIHYoTmF0aXZlQ29kZSkgXAorICAgIHYoU3RydWN0dXJl
VHJhbnNpdGlvblRhYmxlKSBcCisgICAgdihVbmxpbmtlZFNvdXJjZUNvZGUpIFwKKyAgICB2KFdl
YkFzc2VtYmx5RnVuY3Rpb25CYXNlKSBcCisgICAgdihXZWJBc3NlbWJseU1vZHVsZVJlY29yZCkg
XAorICAgIHYoV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKSBcCisgICAgdihXZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbikgXAogCi0gICAgLy8gQWRkIG5ldyBwb2lzb24ga2V5cyBiZWxvdyBpbiBhbHBo
YWJldGljYWwgb3JkZXIuIFRoZSBvcmRlciBkb2Vzbid0IHJlYWxseQotICAgIC8vIG1hdHRlciwg
YnV0IHdlIG1pZ2h0IGFzIHdlbGwga2VlcCB0aGVtIGluIGFscGhhYmV0aWNhbGx5IG9yZGVyIGZv
cgotICAgIC8vIGdyZWF0ZXIgcmVhZGFiaWxpdHkuCi0gICAgQXJyYXlQcm90b3R5cGVQb2lzb24s
Ci0gICAgQ29kZUJsb2NrUG9pc29uLAotICAgIERhdGVJbnN0YW5jZVBvaXNvbiwKLSAgICBKU0FQ
SVdyYXBwZXJPYmplY3RQb2lzb24sCi0gICAgSlNBcnJheUJ1ZmZlclBvaXNvbiwKLSAgICBKU0Nh
bGxiYWNrT2JqZWN0UG9pc29uLAotICAgIEpTR2xvYmFsT2JqZWN0UG9pc29uLAotICAgIEpTU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzUG9pc29uLAotICAgIEpTU2NyaXB0RmV0Y2hlclBvaXNvbiwKLSAg
ICBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uLAotICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZVBvaXNvbiwKLSAgICBKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLAotICAgIEpTV2ViQXNzZW1i
bHlNb2R1bGVQb2lzb24sCi0gICAgSlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLAotICAgIFN0cnVj
dHVyZVRyYW5zaXRpb25UYWJsZVBvaXNvbiwKLSAgICBVbmxpbmtlZFNvdXJjZUNvZGVQb2lzb24s
Ci0gICAgV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2VQb2lzb24sCi0gICAgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmRQb2lzb24sCi0gICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlUG9pc29uLAotICAgIFdl
YkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uUG9pc29uLAotfTsKKyNkZWZpbmUgUE9JU09OKF9wb2lz
b25JRF8pIGdfIyNfcG9pc29uSURfIyNQb2lzb24KIAotfSAvLyBuYW1lc3BhY2UgSlNDCisjZGVm
aW5lIERFQ0xBUkVfUE9JU09OKF9wb2lzb25JRF8pIFwKKyAgICBleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IFBPSVNPTihfcG9pc29uSURfKTsKKworRk9SX0VBQ0hfSlNDX1BPSVNP
TihERUNMQVJFX1BPSVNPTikKKyN1bmRlZiBERUNMQVJFX1BPSVNPTgorCitzdHJ1Y3QgQ2xhc3NJ
bmZvOwogCit1c2luZyBQb2lzb25lZENsYXNzSW5mb1B0ciA9IFBvaXNvbmVkPFBPSVNPTihHbG9i
YWxEYXRhKSwgY29uc3QgQ2xhc3NJbmZvKj47Cit1c2luZyBQb2lzb25lZE1hc21QdHIgPSBQb2lz
b25lZDxQT0lTT04oSklUQ29kZSksIHZvaWQqPjsKKwordm9pZCBpbml0aWFsaXplUG9pc29uKCk7
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUG9pc29uZWRQdHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCShub25leGlzdGVudCkK
QEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0NQb2lzb25lZFB0ci5oIgot
Ci0jaW5jbHVkZSA8bXV0ZXg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi11aW50cHRyX3QgZ19nbG9i
YWxEYXRhUG9pc29uOwotdWludHB0cl90IGdfaml0Q29kZVBvaXNvbjsKLXVpbnRwdHJfdCBnX25h
dGl2ZUNvZGVQb2lzb247Ci0KLXZvaWQgaW5pdGlhbGl6ZVBvaXNvbigpCi17Ci0gICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZUZsYWcsIFtdIHsKLSAgICAgICAgZ19nbG9iYWxEYXRhUG9pc29uID0gbWFr
ZVBvaXNvbigpOwotICAgICAgICBnX2ppdENvZGVQb2lzb24gPSBtYWtlUG9pc29uKCk7Ci0gICAg
ICAgIGdfbmF0aXZlQ29kZVBvaXNvbiA9IG1ha2VQb2lzb24oKTsKLSAgICB9KTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q1BvaXNvbmVkUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDUG9pc29uZWRQdHIuaAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9Qb2lzb25lZC5oPgotCi1uYW1lc3BhY2UgSlNDIHsK
LQotZXh0ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX2dsb2JhbERhdGFQb2lzb247
Ci1leHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IGdfaml0Q29kZVBvaXNvbjsKLWV4
dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ19uYXRpdmVDb2RlUG9pc29uOwotCi1z
dHJ1Y3QgQ2xhc3NJbmZvOwotCi11c2luZyBQb2lzb25lZENsYXNzSW5mb1B0ciA9IFBvaXNvbmVk
PGdfZ2xvYmFsRGF0YVBvaXNvbiwgY29uc3QgQ2xhc3NJbmZvKj47Ci11c2luZyBQb2lzb25lZE1h
c21QdHIgPSBQb2lzb25lZDxnX2ppdENvZGVQb2lzb24sIHZvaWQqPjsKLQotdm9pZCBpbml0aWFs
aXplUG9pc29uKCk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDIyNjkzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwMSw3ICs0MDEsNyBAQCBwdWJsaWM6CiAKICAgICBWTSYgbV92bTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHVzaW5nIFBvaXNvbmVkVW5pcXVlUHRyID0gV1RGOjpQ
b2lzb25lZFVuaXF1ZVB0cjxKU0dsb2JhbE9iamVjdFBvaXNvbiwgVD47CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdXNpbmcgUG9pc29uZWRVbmlxdWVQdHIgPSBXVEY6OlBvaXNvbmVkVW5pcXVl
UHRyPFBPSVNPTihKU0dsb2JhbE9iamVjdCksIFQ+OwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAgICAgUG9pc29uZWRVbmlxdWVQdHI8SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXI+IG1faW5zcGVjdG9yQ29udHJvbGxlcjsKQEAgLTkyMyw3ICs5MjMs
NyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3Vt
ZW50cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KICAgICBzdGF0aWMgSlNHbG9iYWxPYmplY3Q6
OlBvaXNvbmVkVW5pcXVlUHRyPFQ+IG1ha2VQb2lzb25lZFVuaXF1ZShBcmd1bWVudHMmJi4uLiBh
cmd1bWVudHMpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjptYWtlUG9pc29uZWRVbmlxdWU8
SlNHbG9iYWxPYmplY3RQb2lzb24sIFQ+KHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50
cykuLi4pOworICAgICAgICByZXR1cm4gV1RGOjptYWtlUG9pc29uZWRVbmlxdWU8UE9JU09OKEpT
R2xvYmFsT2JqZWN0KSwgVD4oc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7
CiAgICAgfQogCiAgICAgYm9vbCBtX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzIHsgZmFsc2UgfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQb2lzb25lZFJl
ZjxKU1NjcmlwdEZldGNoUGFyYW1ldGVyc1BvaXNvbiwgU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPiBt
X3BhcmFtZXRlcnM7CisgICAgUG9pc29uZWRSZWY8UE9JU09OKEpTU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzKSwgU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzPiBtX3BhcmFtZXRlcnM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NyaXB0
RmV0Y2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NyaXB0RmV0Y2hlci5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1NjcmlwdEZldGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBQb2lzb25lZFJlZlB0cjxKU1Njcmlw
dEZldGNoZXJQb2lzb24sIFNjcmlwdEZldGNoZXI+IG1fZmV0Y2hlcjsKKyAgICBQb2lzb25lZFJl
ZlB0cjxQT0lTT04oSlNTY3JpcHRGZXRjaGVyKSwgU2NyaXB0RmV0Y2hlcj4gbV9mZXRjaGVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkV4ZWN1dGFi
bGVCYXNlLmgiCi0jaW5jbHVkZSAiSlNDUG9pc29uZWRQdHIuaCIKKyNpbmNsdWRlICJKU0NQb2lz
b24uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgRE9NSklUIHsKQEAgLTkwLDcgKzkw
LDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKLSAgICB1c2luZyBQb2lzb25lZE5hdGl2ZUZ1bmN0aW9uID0gUG9pc29uZWQ8Z19uYXRp
dmVDb2RlUG9pc29uLCBOYXRpdmVGdW5jdGlvbj47CisgICAgdXNpbmcgUG9pc29uZWROYXRpdmVG
dW5jdGlvbiA9IFBvaXNvbmVkPFBPSVNPTihOYXRpdmVDb2RlKSwgTmF0aXZlRnVuY3Rpb24+Owog
CiAgICAgTmF0aXZlRXhlY3V0YWJsZShWTSYsIE5hdGl2ZUZ1bmN0aW9uIGZ1bmN0aW9uLCBOYXRp
dmVGdW5jdGlvbiBjb25zdHJ1Y3RvciwgSW50cmluc2ljLCBjb25zdCBET01KSVQ6OlNpZ25hdHVy
ZSopOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFu
c2l0aW9uVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE4Nyw4ICsxODcsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFNpbmdsZVNsb3RUcmFuc2l0aW9uV2Vha093bmVyOwotICAgIHVzaW5nIFBvaXNv
bmVkVHJhbnNpdGlvbk1hcFB0ciA9IENvbnN0RXhwclBvaXNvbmVkPFN0cnVjdHVyZVRyYW5zaXRp
b25UYWJsZVBvaXNvbiwgVHJhbnNpdGlvbk1hcCo+OwotICAgIHVzaW5nIFBvaXNvbmVkV2Vha0lt
cGxQdHIgPSBDb25zdEV4cHJQb2lzb25lZDxTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGVQb2lzb24s
IFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gUG9pc29u
ZWQ8UE9JU09OKFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZSksIFRyYW5zaXRpb25NYXAqPjsKKyAg
ICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gUG9pc29uZWQ8UE9JU09OKFN0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZSksIFdlYWtJbXBsKj47CiAKICAgICBib29sIGlzVXNpbmdTaW5nbGVTbG90
KCkgY29uc3QKICAgICB7CkBAIC0xOTgsMTMgKzE5OCwxMyBAQCBwcml2YXRlOgogICAgIFRyYW5z
aXRpb25NYXAqIG1hcCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoIWlzVXNpbmdTaW5n
bGVTbG90KCkpOwotICAgICAgICByZXR1cm4gUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyKG1fZGF0
YSkudW5wb2lzb25lZCgpOworICAgICAgICByZXR1cm4gUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRy
KEFscmVhZHlQb2lzb25lZCwgbV9kYXRhKS51bnBvaXNvbmVkKCk7CiAgICAgfQogCiAgICAgV2Vh
a0ltcGwqIHdlYWtJbXBsKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1VzaW5nU2lu
Z2xlU2xvdCgpKTsKLSAgICAgICAgcmV0dXJuIFBvaXNvbmVkV2Vha0ltcGxQdHIobV9kYXRhICYg
flVzaW5nU2luZ2xlU2xvdEZsYWcpLnVucG9pc29uZWQoKTsKKyAgICAgICAgcmV0dXJuIFBvaXNv
bmVkV2Vha0ltcGxQdHIoQWxyZWFkeVBvaXNvbmVkLCBtX2RhdGEgJiB+VXNpbmdTaW5nbGVTbG90
RmxhZykudW5wb2lzb25lZCgpOwogICAgIH0KIAogICAgIHZvaWQgc2V0TWFwKFRyYW5zaXRpb25N
YXAqIG1hcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmll
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFy
cmllci5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Xcml0ZUJhcnJpZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHMgPSAKIGNsYXNzIFdyaXRlQmFycmllciA6
IHB1YmxpYyBXcml0ZUJhcnJpZXJCYXNlPFQsIFRyYWl0cz4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBwb2lzb24gPSBU
cmFpdHM6OnBvaXNvbjsKKyAgICBzdGF0aWMgYXV0byBwb2lzb24oKSB7IHJldHVybiBUcmFpdHM6
OnBvaXNvbigpOyB9CiAKICAgICBXcml0ZUJhcnJpZXIoKQogICAgIHsKQEAgLTIyNSw3ICsyMjUs
NyBAQCB0ZW1wbGF0ZSA8PgogY2xhc3MgV3JpdGVCYXJyaWVyPFVua25vd24sIER1bWJWYWx1ZVRy
YWl0czxVbmtub3duPj4gOiBwdWJsaWMgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duLCBEdW1iVmFs
dWVUcmFpdHM8VW5rbm93bj4+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gcG9pc29uID0gRHVtYlZhbHVlVHJhaXRzPFVu
a25vd24+Ojpwb2lzb247CisgICAgc3RhdGljIGF1dG8gcG9pc29uKCkgeyByZXR1cm4gRHVtYlZh
bHVlVHJhaXRzPFVua25vd24+Ojpwb2lzb24oKTsgfQogCiAgICAgV3JpdGVCYXJyaWVyKCkKICAg
ICB7CkBAIC0yNTQsMTIgKzI1NCwxMiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdy
aXRlQmFycmllCiAgICAgcmV0dXJuIGxocy5nZXQoKSA9PSByaHMuZ2V0KCk7CiB9CiAKLXRlbXBs
YXRlPHVpbnQzMl90IGtleSwgY2xhc3MgVD4KK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCBjbGFz
cyBUPgogdXNpbmcgUG9pc29uZWRXcml0ZUJhcnJpZXJUcmFpdHNTZWxlY3QgPSB0eXBlbmFtZSBz
dGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZTxULCBVbmtub3duPjo6dmFsdWUsCi0gICAgV1RG
OjpDb25zdEV4cHJQb2lzb25lZFZhbHVlVHJhaXRzPGtleSwgVD4sIFdURjo6Q29uc3RFeHByUG9p
c29uZWRQdHJUcmFpdHM8a2V5LCBUPgorICAgIFdURjo6UG9pc29uZWRWYWx1ZVRyYWl0czxrZXks
IFQ+LCBXVEY6OlBvaXNvbmVkUHRyVHJhaXRzPGtleSwgVD4KID46OnR5cGU7CiAKLXRlbXBsYXRl
IDx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Cit0ZW1wbGF0ZSA8dWludHB0cl90JiBrZXksIHR5
cGVuYW1lIFQ+CiB1c2luZyBQb2lzb25lZFdyaXRlQmFycmllciA9IFdyaXRlQmFycmllcjxULCBQ
b2lzb25lZFdyaXRlQmFycmllclRyYWl0c1NlbGVjdDxrZXksIFQ+PjsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3Bw
CShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1Rv
V2FzbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW50ZXJuYWxGdW5jdGlvbj4gY3JlYXRlCiAgICAgICAgIGlmICghQ29udGV4dDo6dXNlRmFz
dFRMUygpKSB7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgd2FzbUNvbnRleHRJbnN0YW5j
ZUdQUik7CiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2Fz
bUNvbnRleHRJbnN0YW5jZUdQUiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZlBvaXNv
bmVkSW5zdGFuY2UoKSksIHdhc21Db250ZXh0SW5zdGFuY2VHUFIpOwotICAgICAgICAgICAgaml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQobWFrZUNvbnN0RXhwclBvaXNvbihKU1dl
YkFzc2VtYmx5SW5zdGFuY2VQb2lzb24pKSwgc2NyYXRjaFJlZyk7CisgICAgICAgICAgICBqaXQu
bW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChQT0lTT04oSlNXZWJBc3NlbWJseUluc3Rh
bmNlKSksIHNjcmF0Y2hSZWcpOwogICAgICAgICAgICAgaml0LnhvcjY0KHNjcmF0Y2hSZWcsIHdh
c21Db250ZXh0SW5zdGFuY2VHUFIpOwogICAgICAgICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDIyNjkzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlD
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2s6OkpTV2ViQXNzZW1ibHlDb2QKICAgICA6IEJhc2Uodm0sIHZtLndlYkFzc2Vt
Ymx5Q29kZUJsb2NrU3RydWN0dXJlLmdldCgpKQogICAgICwgbV9jb2RlQmxvY2soV1RGTW92ZShj
b2RlQmxvY2spKQogewotICAgIG1fdW5jb25kaXRpb25hbEZpbmFsaXplciA9IFBvaXNvbmVkVW5p
cXVlUHRyPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb24sIFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXI+OjpjcmVhdGUoKnRoaXMpOworICAgIG1fdW5jb25kaXRpb25hbEZpbmFsaXplciA9IFBvaXNv
bmVkVW5pcXVlUHRyPFBPSVNPTihKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSwgVW5jb25kaXRpb25h
bEZpbmFsaXplcj46OmNyZWF0ZSgqdGhpcyk7CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5v
dCBuZWVkIHRvIGRvIHRoaXMgc3luY2hyb25vdXNseS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNTY3CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5Q29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUNvZGVCbG9jay5oCShyZXZpc2lv
biAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDkgKzk3LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgSlNXZWJBc3NlbWJseUNvZGVCbG9jayYgY29kZUJsb2NrOwogICAgIH07CiAKLSAgICBQ
b2lzb25lZFJlZjxKU1dlYkFzc2VtYmx5Q29kZUJsb2NrUG9pc29uLCBXYXNtOjpDb2RlQmxvY2s+
IG1fY29kZUJsb2NrOworICAgIFBvaXNvbmVkUmVmPFBPSVNPTihKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrKSwgV2FzbTo6Q29kZUJsb2NrPiBtX2NvZGVCbG9jazsKICAgICBWZWN0b3I8TWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPiBtX3dhc21Ub0pTRXhpdFN0dWJzOwotICAgIFBvaXNvbmVkVW5pcXVlUHRy
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2tQb2lzb24sIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXI+IG1f
dW5jb25kaXRpb25hbEZpbmFsaXplcjsKKyAgICBQb2lzb25lZFVuaXF1ZVB0cjxQT0lTT04oSlNX
ZWJBc3NlbWJseUNvZGVCbG9jayksIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXI+IG1fdW5jb25kaXRp
b25hbEZpbmFsaXplcjsKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAg
ICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlJbnN0YW5jZS5oCShyZXZpc2lvbiAy
MjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHNpemVfdCBvZmZzZXRPZlBvaXNvbmVkQ2FsbGVlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEpTV2ViQXNzZW1ibHlJbnN0YW5jZSwgbV9jYWxsZWUpOyB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIHVzaW5nIFBvaXNvbmVkQmFycmllciA9IFBvaXNvbmVkV3JpdGVCYXJy
aWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZVBvaXNvbiwgVD47CisgICAgdXNpbmcgUG9pc29uZWRC
YXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJpZXI8UE9JU09OKEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSksIFQ+OwogCiBwcm90ZWN0ZWQ6CiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKFZNJiwgU3Ry
dWN0dXJlKiwgUmVmPFdhc206Okluc3RhbmNlPiYmKTsKQEAgLTkxLDcgKzkxLDcgQEAgcHJvdGVj
dGVkOgogcHJpdmF0ZToKICAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUoKSBjb25zdCB7
IHJldHVybiBtX21vZHVsZS5nZXQoKTsgfQogCi0gICAgUG9pc29uZWRSZWY8SlNXZWJBc3NlbWJs
eUluc3RhbmNlUG9pc29uLCBXYXNtOjpJbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBQb2lzb25l
ZFJlZjxQT0lTT04oSlNXZWJBc3NlbWJseUluc3RhbmNlKSwgV2FzbTo6SW5zdGFuY2U+IG1faW5z
dGFuY2U7CiAKICAgICBQb2lzb25lZEJhcnJpZXI8SlNXZWJBc3NlbWJseU1vZHVsZT4gbV9tb2R1
bGU7CiAgICAgUG9pc29uZWRCYXJyaWVyPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJs
b2NrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNZW1vcnkuaAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1lbW9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw5
ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKLSAg
ICBQb2lzb25lZFJlZjxKU1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLCBXYXNtOjpNZW1vcnk+IG1f
bWVtb3J5OwotICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1ibHlNZW1vcnlQb2lz
b24sIEpTQXJyYXlCdWZmZXI+IG1fYnVmZmVyV3JhcHBlcjsKLSAgICBQb2lzb25lZFJlZlB0cjxK
U1dlYkFzc2VtYmx5TWVtb3J5UG9pc29uLCBBcnJheUJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUG9p
c29uZWRSZWY8UE9JU09OKEpTV2ViQXNzZW1ibHlNZW1vcnkpLCBXYXNtOjpNZW1vcnk+IG1fbWVt
b3J5OworICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVyPFBPSVNPTihKU1dlYkFzc2VtYmx5TWVtb3J5
KSwgSlNBcnJheUJ1ZmZlcj4gbV9idWZmZXJXcmFwcGVyOworICAgIFBvaXNvbmVkUmVmUHRyPFBP
SVNPTihKU1dlYkFzc2VtYmx5TWVtb3J5KSwgQXJyYXlCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TW9kdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTgxLDEwICs4MSwxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCi0gICAgUG9pc29uZWRSZWY8SlNXZWJBc3NlbWJseU1vZHVsZVBvaXNvbiwg
V2FzbTo6TW9kdWxlPiBtX21vZHVsZTsKKyAgICBQb2lzb25lZFJlZjxQT0lTT04oSlNXZWJBc3Nl
bWJseU1vZHVsZSksIFdhc206Ok1vZHVsZT4gbV9tb2R1bGU7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotICAgIHVzaW5nIFBvaXNvbmVkQmFycmllciA9IFBvaXNvbmVkV3JpdGVCYXJyaWVy
PEpTV2ViQXNzZW1ibHlNb2R1bGVQb2lzb24sIFQ+OworICAgIHVzaW5nIFBvaXNvbmVkQmFycmll
ciA9IFBvaXNvbmVkV3JpdGVCYXJyaWVyPFBPSVNPTihKU1dlYkFzc2VtYmx5TW9kdWxlKSwgVD47
CiAKICAgICBQb2lzb25lZEJhcnJpZXI8U3ltYm9sVGFibGU+IG1fZXhwb3J0U3ltYm9sVGFibGU7
CiAgICAgUG9pc29uZWRCYXJyaWVyPEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+IG1fY29kZUJsb2Nr
c1tXYXNtOjpOdW1iZXJPZk1lbW9yeU1vZGVzXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlUYWJsZS5oCShyZXZpc2lvbiAyMjY5MzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5VGFibGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjYsMTAgKzY2LDEwIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKLSAgICBQb2lzb25lZFJlZjxKU1dlYkFzc2VtYmx5VGFibGVQ
b2lzb24sIFdhc206OlRhYmxlPiBtX3RhYmxlOworICAgIFBvaXNvbmVkUmVmPFBPSVNPTihKU1dl
YkFzc2VtYmx5VGFibGUpLCBXYXNtOjpUYWJsZT4gbV90YWJsZTsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgdXNpbmcgUG9pc29uZWRCYXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJp
ZXI8SlNXZWJBc3NlbWJseVRhYmxlUG9pc29uLCBUPjsKKyAgICB1c2luZyBQb2lzb25lZEJhcnJp
ZXIgPSBQb2lzb25lZFdyaXRlQmFycmllcjxQT0lTT04oSlNXZWJBc3NlbWJseVRhYmxlKSwgVD47
CiAKICAgICBNYWxsb2NQdHI8UG9pc29uZWRCYXJyaWVyPEpTT2JqZWN0Pj4gbV9qc0Z1bmN0aW9u
czsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3Bw
CShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNt
VG9KUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIEV4cGVjdGVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZiwgQgogICAgICAgICAvLyBTdG9yZSBDYWxsZWUuCiAgICAg
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQ
UjEsIEluc3RhbmNlOjpvZmZzZXRPZk93bmVyKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwog
ICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6YXJndW1l
bnRHUFIxLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mUG9pc29uZWRDYWxsZWUoKSks
IEdQUkluZm86OmFyZ3VtZW50R1BSMik7Ci0gICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPFdlYkFz
c2VtYmx5VG9KU0NhbGxlZT46OnBvaXNvbiksIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CisgICAg
ICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTV2ViQXNzZW1ibHlJbnN0
YW5jZTo6UG9pc29uZWRCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxlZT46OnBvaXNvbigpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKICAgICAgICAgaml0LnhvcjY0KEdQUkluZm86OmFyZ3Vt
ZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICAgICAgaml0LnN0b3JlUHRyKEdQ
UkluZm86OmFyZ3VtZW50R1BSMiwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBDYWxsRnJhbWVTbG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdp
c3RlcikpKSk7CiAKQEAgLTI5MSw3ICsyOTEsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYsIEJpbmRpbmdGCiAgICAgICAgIGppdC5sb2FkV2FzbUNvbnRleHRJbnN0YW5jZShHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBJbnN0YW5jZTo6b2Zmc2V0T2ZPd25lcigpKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpv
ZmZzZXRPZlBvaXNvbmVkQ2FsbGVlKCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAg
ICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U6OlBvaXNvbmVkQmFycmllcjxXZWJBc3NlbWJseVRvSlNDYWxsZWU+Ojpwb2lzb24pLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjMpOworICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW02NChKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OlBvaXNvbmVkQmFycmllcjxXZWJBc3NlbWJs
eVRvSlNDYWxsZWU+Ojpwb2lzb24oKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMyk7CiAgICAgICAg
IGppdC54b3I2NChHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CiAgICAgICAgIGppdC5zdG9yZVB0cihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEpJVDo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3Rh
dGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgICAgICAKQEAgLTQ4Myw3ICs0
ODMsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWYsIEJpbmRpbmdGCiAgICAgaml0
LmxvYWRXYXNtQ29udGV4dEluc3RhbmNlKEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSW5z
dGFuY2U6Om9mZnNldE9mT3duZXIoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZlBvaXNvbmVkQ2FsbGVlKCkpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApOwotICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6UG9pc29uZWRCYXJyaWVyPFdlYkFzc2VtYmx5VG9KU0NhbGxl
ZT46OnBvaXNvbiksIHBvaXNvbik7CisgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tNjQoSlNXZWJBc3NlbWJseUluc3RhbmNlOjpQb2lzb25lZEJhcnJpZXI8V2ViQXNzZW1ibHlU
b0pTQ2FsbGVlPjo6cG9pc29uKCkpLCBwb2lzb24pOwogICAgIGppdC54b3I2NChwb2lzb24sIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmFyZ3VtZW50
R1BSMCwgSklUOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWVT
bG90OjpjYWxsZWUgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb25CYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbkJhc2UuaAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIE5h
dGl2ZUV4ZWN1dGFibGUqLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKik7CiAgICAgV2ViQXNzZW1ibHlGdW5jdGlvbkJhc2UoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCi0gICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8
V2ViQXNzZW1ibHlGdW5jdGlvbkJhc2VQb2lzb24sIEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4gbV9p
bnN0YW5jZTsKKyAgICBQb2lzb25lZFdyaXRlQmFycmllcjxQT0lTT04oV2ViQXNzZW1ibHlGdW5j
dGlvbkJhc2UpLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U+IG1faW5zdGFuY2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAkocmV2aXNpb24gMjI2OTM1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci0gICAgdXNpbmcgUG9pc29uZWRCYXJyaWVyID0gUG9pc29uZWRXcml0ZUJhcnJp
ZXI8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmRQb2lzb24sIFQ+OworICAgIHVzaW5nIFBvaXNvbmVk
QmFycmllciA9IFBvaXNvbmVkV3JpdGVCYXJyaWVyPFBPSVNPTihXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZCksIFQ+OwogCiAgICAgUG9pc29uZWRCYXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4g
bV9pbnN0YW5jZTsKICAgICBQb2lzb25lZEJhcnJpZXI8SlNPYmplY3Q+IG1fc3RhcnRGdW5jdGlv
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5VG9KU0Nh
bGxlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5VG9KU0NhbGxlZS5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVRvSlNDYWxsZWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU1dl
YkFzc2VtYmx5TW9kdWxlKik7CiAgICAgV2ViQXNzZW1ibHlUb0pTQ2FsbGVlKFZNJiwgU3RydWN0
dXJlKik7CiAKLSAgICBQb2lzb25lZFdyaXRlQmFycmllcjxXZWJBc3NlbWJseVRvSlNDYWxsZWVQ
b2lzb24sIEpTV2ViQXNzZW1ibHlNb2R1bGU+IG1fbW9kdWxlOworICAgIFBvaXNvbmVkV3JpdGVC
YXJyaWVyPFBPSVNPTihXZWJBc3NlbWJseVRvSlNDYWxsZWUpLCBKU1dlYkFzc2VtYmx5TW9kdWxl
PiBtX21vZHVsZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbi5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24oVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFdhc206OkNhbGxhYmxlRnVuY3Rp
b24pOwogCi0gICAgUG9pc29uZWRXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b25Qb2lzb24sIEpTT2JqZWN0PiBtX2Z1bmN0aW9uOworICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVy
PFBPSVNPTihXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiksIEpTT2JqZWN0PiBtX2Z1bmN0aW9u
OwogICAgIC8vIEl0J3Mgc2FmZSB0byBqdXN0IGhvbGQgdGhlIHJhdyBDYWxsYWJsZUZ1bmN0aW9u
IGJlY2F1c2Ugd2UgaGF2ZSBhIHJlZmVyZW5jZQogICAgIC8vIHRvIG91ciBJbnN0YW5jZSwgd2hp
Y2ggcG9pbnRzIHRvIHRoZSBDb2RlQmxvY2ssIHdoaWNoIHBvaW50cyB0byB0aGUgTW9kdWxlCiAg
ICAgLy8gdGhhdCBleHBvcnRlZCB1cywgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZSBhY3R1YWwgU2ln
bmF0dXJlL2NvZGUgZG9lc24ndCBnZXQgZGVhbGxvY2F0ZWQuCkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2
OTM1KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4
NCBAQAorMjAxOC0wMS0xMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVwbGFjZSBhbGwgdXNlIG9mIENvbnN0RXhwclBvaXNvbmVkIHdpdGggUG9pc29uZWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE1NDIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2NDQyMTM4PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpG
IEJhc3RpZW4uCisKKyAgICAgICAgMS4gUmVtb3ZlZCBDb25zdEV4cHJQb2lzb25lZCBhbmQgaXRz
IGFydGlmYWN0cy4KKworICAgICAgICAyLiBDb25zb2xpZGF0ZWQgUG9pc29uZWQgaW50byBQb2lz
b25lZEltcGwuICBQb2lzb25lZEltcGwgaXMgbm90IG1vcmUuCisKKyAgICAgICAgMy4gQ2hhbmdl
ZCBhbGwgY2xpZW50cyBvZiBDb25zdEV4cHJQb2lzb25lZCB0byB1c2UgUG9pc29uZWQgaW5zdGVh
ZC4KKworICAgICAgICA0LiBXb3JrZWQgYXJvdW5kIHRoZSBHQ0MgYW5kIENsYW5nIGNvbXBpbGVy
IGJ1ZyB0aGF0IGNvbmZ1c2VzIGFuIGludHB0cl90JgorICAgICAgICAgICB0ZW1wbGF0ZSBhcmcg
d2l0aCBpbnRwdHJfdC4KKyAgICAgICAgICAgU2VlIHVzZSBvZiBzdGQ6OmVuYWJsZV9pZl90PE90
aGVyOjppc1BvaXNvbmVkPiBpbiBQb2lzb25lZC5oLgorCisgICAgICAgIDUuIFJlbW92ZWQgRU5B
QkxFKE1JWEVEX1BPSVNPTikgc2luY2Ugd2Ugbm93IGhhdmUgYSB3b3JrYXJvdW5kICgzKSB0aGF0
IG1ha2VzIGl0CisgICAgICAgICAgIHBvc3NpYmxlIHRvIHVzZSB0aGUgbWl4ZWQgcG9pc29uIGNv
ZGUuCisKKyAgICAgICAgNi4gQWxzbyBmaXhlZCBicm9rZW4gaW1wbGVtZW50YXRpb24gb2YgY29t
cGFyaXNvbiBvcGVyYXRvcnMgaW4gUG9pc29uZWQuCisKKyAgICAgICAgKiB3dGYvQmFnLmg6Cisg
ICAgICAgICogd3RmL0R1bWJQdHJUcmFpdHMuaDoKKyAgICAgICAgKFdURjo6RHVtYlB0clRyYWl0
czo6cG9pc29uKToKKyAgICAgICAgKiB3dGYvRHVtYlZhbHVlVHJhaXRzLmg6CisgICAgICAgIChX
VEY6OkR1bWJWYWx1ZVRyYWl0czo6cG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWQ6OlBvaXNvbmVkKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWQ6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZDo6b3BlcmF0b3Ih
PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkOjpvcGVyYXRvcjwgY29uc3QpOgorICAg
ICAgICAoV1RGOjpQb2lzb25lZDo6b3BlcmF0b3I8PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBv
aXNvbmVkOjpvcGVyYXRvcj4gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZDo6b3BlcmF0
b3I+PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkOjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV1RGOjpQb2lzb25lZDo6c3dhcCk6CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAo
V1RGOjpQb2lzb25lZFB0clRyYWl0czo6cG9pc29uKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRQ
dHJUcmFpdHM6OnN3YXApOgorICAgICAgICAoV1RGOjpQb2lzb25lZFZhbHVlVHJhaXRzOjpwb2lz
b24pOgorICAgICAgICAoV1RGOjpQb2lzb25lZFZhbHVlVHJhaXRzOjpzd2FwKToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpQb2lzb25lZEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjpQb2lzb25lZEltcGw6OmFzc2VydElzUG9pc29uZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjpQb2lzb25lZEltcGw6OmFzc2VydElzTm90UG9pc29uZWQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OnVucG9pc29uZWQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciogY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yLT4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6OmJpdHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQ
b2lzb25lZEltcGw6Om9wZXJhdG9yISBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBv
aXNvbmVkSW1wbDo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9PSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IhPSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6
OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I8IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
UG9pc29uZWRJbXBsOjpvcGVyYXRvcjw9IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6
UG9pc29uZWRJbXBsOjpvcGVyYXRvcj4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQ
b2lzb25lZEltcGw6Om9wZXJhdG9yPj0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQ
b2lzb25lZEltcGw6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBvaXNvbmVk
SW1wbDo6c3dhcCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6ZXhjaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OnBvaXNvbik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6dW5wb2lzb24pOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpjb25zdEV4cHJQb2lzb25SYW5kb20pOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjptYWtlQ29uc3RFeHByUG9pc29uKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Q29uc3RFeHBy
UG9pc29uZWRQdHJUcmFpdHM6OmV4Y2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6Q29u
c3RFeHByUG9pc29uZWRQdHJUcmFpdHM6OnN3YXApOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpD
b25zdEV4cHJQb2lzb25lZFB0clRyYWl0czo6dW53cmFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Rjo6Q29uc3RFeHByUG9pc29uZWRWYWx1ZVRyYWl0czo6ZXhjaGFuZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpDb25zdEV4cHJQb2lzb25lZFZhbHVlVHJhaXRzOjpzd2FwKTogRGVsZXRlZC4K
KyAgICAgICAgKFdURjo6Q29uc3RFeHByUG9pc29uZWRWYWx1ZVRyYWl0czo6dW53cmFwKTogRGVs
ZXRlZC4KKyAgICAgICAgKiB3dGYvUG9pc29uZWRVbmlxdWVQdHIuaDoKKyAgICAgICAgKFdURjo6
UG9pc29uZWRVbmlxdWVQdHI6OlBvaXNvbmVkVW5pcXVlUHRyKToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRVbmlxdWVQdHI6Om9wZXJhdG9yPSk6CisgICAgICAgICogd3RmL1JlZi5oOgorICAgICAg
ICAqIHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5
OjpSZWZDb3VudGVkQXJyYXkpOgorICAgICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKiB3
dGYvV1RGQXNzZXJ0aW9ucy5jcHA6CisKIDIwMTgtMDEtMTIgIEpGIEJhc3RpZW4gIDxqZmJhc3Rp
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFBvaXNvbmVkV3JpdGVCYXJyaWVyCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9CYWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CYWcuaAkocmV2
aXNpb24gMjI2OTM1KQorKysgU291cmNlL1dURi93dGYvQmFnLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0OSwxMCArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgUHRyVHJhaXRzOjpTdG9y
YWdlVHlwZSBtX2hlYWQgeyBudWxscHRyIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXks
IHR5cGVuYW1lIFQ+IHN0cnVjdCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czsKK3RlbXBsYXRl
PHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgUG9pc29uZWRQdHJUcmFpdHM7CiAK
LXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkQmFnID0g
QmFnPFQsIENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzPGtleSwgUHJpdmF0ZTo6QmFnTm9kZTxU
Pj4+OwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQb2lzb25l
ZEJhZyA9IEJhZzxULCBQb2lzb25lZFB0clRyYWl0czxrZXksIFByaXZhdGU6OkJhZ05vZGU8VD4+
PjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0R1bWJQdHJU
cmFpdHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9EdW1iUHRyVHJhaXRzLmgJKHJl
dmlzaW9uIDIyNjkzNSkKKysrIFNvdXJjZS9XVEYvd3RmL0R1bWJQdHJUcmFpdHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgRHVtYlB0clRyYWl0cyB7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50cHRyX3QgcG9pc29uID0gMDsKKyAgICBzdGF0aWMgdWludHB0cl90IHBvaXNvbigpIHsg
cmV0dXJuIDA7IH0KIAogICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gVCo7CiAKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL0R1bWJWYWx1ZVRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L0R1bWJWYWx1ZVRyYWl0cy5oCShyZXZpc2lvbiAyMjY5MzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9E
dW1iVmFsdWVUcmFpdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBEdW1iVmFsdWVUcmFpdHMg
ewotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHBvaXNvbiA9IDA7CisgICAgc3RhdGlj
IHVpbnRwdHJfdCBwb2lzb24oKSB7IHJldHVybiAwOyB9CiAKICAgICB1c2luZyBTdG9yYWdlVHlw
ZSA9IFQ7CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL1dU
Ri93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDYgQEAKICNkZWZp
bmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5lIEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKLS8v
IE9sZGVyIHZlcnNpb25zIG9mIGdjYyBhbmQgY2xhbmcgaGF2ZSBhIGJ1ZyB3aGljaCByZXN1bHRz
IGluIGJ1aWxkIGZhaWx1cmVzCi0vLyB3aGVuIHVzaW5nIHRlbXBsYXRlIG1ldGhvZHMgdGhhdCB0
YWtlIGFuIGFyZ3VtZW50IG9mIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPgotLy8gd2hlbiB0aGUg
S2V5VHlwZSBpcyBhIHVpbnRwdHJfdCAoaS5lLiB3aGVuIHdlJ3JlIHVzaW5nIHRoZSBQb2lzb25l
ZCB2YXJpYW50Ci0vLyBvZiBQb2lzb25lZEltcGwpLiBUaGlzIGJ1ZyBkb2VzIG5vdCBtYW5pZmVz
dCBmb3IgdGhlIENvbnN0RXhwclBvaXNvbmVkIHZhcmlhbnQuCi0vLyBJbiBwcmFjdGljZSwgd2Ug
d2lsbCBsaWtlbHkgb25seSB1c2UgdGhlc2UgbWV0aG9kcyBmb3IgaW5zdGFudGlhdGlvbnMgb2Yg
dGhlCi0vLyBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LiBIZW5jZS4gdGhpcyBidWcgaXMgbm90
IGEgc2hvdyBzdG9wcGVyLgotLy8gVGhhdCBzYWlkLCB3ZSdsbCBkZWZpbmUgRU5BQkxFX01JWEVE
X1BPSVNPTiBhY2NvcmRpbmdseSBzbyB0aGF0IHdlIGNhbiB1c2UKLS8vIGl0IHRvIGRpc2FibGUg
dGhlIGFmZmVjdGVkIHRlc3RzIHdoZW4gYnVpbGRpbmcgd2l0aCBvbGQgY29tcGlsZXJzLgotCi0j
aWYgT1MoREFSV0lOKQotI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIChfX2NsYW5nX21ham9y
X18gPj0gOSkKLSNlbGlmIGRlZmluZWQoX19jbGFuZ19tYWpvcl9fKQotI2RlZmluZSBFTkFCTEVf
TUlYRURfUE9JU09OIChfX2NsYW5nX21ham9yX18gPj0gNCkKLSNlbGlmIGRlZmluZWQoX19HTlVD
X18pCi0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiAo
X19HTlVDX1BSRVJFUSg3LCAyKSkKLSNlbmRpZiAvLyAhZGVmaW5lZChfX0dOVUNfXykKLQotI2lm
bmRlZiBFTkFCTEVfTUlYRURfUE9JU09OCi0jZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gMCAv
LyBEaXNhYmxlIGZvciBldmVyeXRoaW5nIGVsc2UuCi0jZW5kaWYKLQogLy8gTm90IGN1cnJlbnRs
eSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJlY2F1c2Ugb2Yg
bWlzc2luZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2FibGVkLgogI2lm
IFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCkBAIC04OCwzMCArNjYsMzEgQEAgYXNS
ZWZlcmVuY2UoVCBwdHIpIHsgcmV0dXJuICpwdHI7IH0KIAogfSAvLyBuYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyCiAKLS8vIEZJWE1FOiBvbmNlIHdlIGhhdmUgQysrMTcsIHdlIGNhbiBtYWtl
IHRoZSBrZXkgb2YgdHlwZSBhdXRvIGFuZCByZW1vdmUgdGhlIG5lZWQgZm9yIEtleVR5cGUuCi10
ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUgVCwgdHlwZW5h
bWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+PgotY2xhc3Mg
UG9pc29uZWRJbXBsIHsKK2VudW0gQWxyZWFkeVBvaXNvbmVkVGFnIHsgQWxyZWFkeVBvaXNvbmVk
IH07CisKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+CitjbGFzcyBQb2lzb25l
ZCB7CiBwdWJsaWM6Ci0gICAgUG9pc29uZWRJbXBsKCkgeyB9CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzUG9pc29uZWQgPSB0cnVlOworCisgICAgUG9pc29uZWQoKSB7IH0KIAotICAgIFBv
aXNvbmVkSW1wbChzdGQ6Om51bGxwdHJfdCkgeyB9CisgICAgUG9pc29uZWQoc3RkOjpudWxscHRy
X3QpIHsgfQogCi0gICAgUG9pc29uZWRJbXBsKFQgcHRyKQorICAgIFBvaXNvbmVkKFQgcHRyKQog
ICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbihwdHIpKQogICAgIHsgfQogCi0gICAgUG9p
c29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsKKyAgICBQb2lzb25lZChj
b25zdCBQb2lzb25lZCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBL
MiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbDxL
MiwgazIsIFQyPiYgb3RoZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1l
ID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZD4+CisgICAgUG9pc29uZWQoY29u
c3QgT3RoZXImIG90aGVyKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbjxUPihvdGhl
ci51bnBvaXNvbmVkKCkpKQogICAgIHsgfQogCi0gICAgUG9pc29uZWRJbXBsKFBvaXNvbmVkSW1w
bCYmIG90aGVyKQotICAgICAgICA6IG1fcG9pc29uZWRCaXRzKFdURk1vdmUob3RoZXIubV9wb2lz
b25lZEJpdHMpKQotICAgIHsgfQorICAgIFBvaXNvbmVkKFBvaXNvbmVkJiYpID0gZGVmYXVsdDsK
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKQor
ICAgIGV4cGxpY2l0IFBvaXNvbmVkKEFscmVhZHlQb2lzb25lZFRhZywgUG9pc29uZWRCaXRzIHBv
aXNvbmVkQml0cykKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb25lZEJpdHMpCiAgICAg
eyB9CiAKQEAgLTE0Myw0NyArMTIyLDUxIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX3BvaXNvbmVkQml0czsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcG9pc29uZWRCaXRzOyB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVk
Qml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBv
aXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgIT0gYi5tX3BvaXNv
bmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29u
c3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9Ci0gICAgYm9v
bCBvcGVyYXRvcjw9KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lz
b25lZEJpdHMgPD0gYi5tX3BvaXNvbmVkQml0czsgfQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0
IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPiBiLm1fcG9p
c29uZWRCaXRzOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikg
Y29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPj0gYi5tX3BvaXNvbmVkQml0czsgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUgYikgY29uc3QgeyByZXR1
cm4gdW5wb2lzb25lZDxVPigpID09IGI7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29s
IG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgIT0gYjsgfQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I8KFUgYikgY29uc3QgeyByZXR1
cm4gdW5wb2lzb25lZDxVPigpIDwgYjsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
b3BlcmF0b3I8PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA8PSBiOyB9Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj4oVSBiKSBjb25zdCB7IHJldHVy
biB1bnBvaXNvbmVkPFU+KCkgPiBiOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBv
cGVyYXRvcj49KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID49IGI7IH0KKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
c29uZWRCaXRzID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgUG9pc29uZWQmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lz
b25lZEJpdHM7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShUIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQoKSA9PSBiOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KFQgYikgY29uc3QgeyByZXR1
cm4gdW5wb2lzb25lZCgpICE9IGI7IH0KKyAgICBib29sIG9wZXJhdG9yPChUIGIpIGNvbnN0IHsg
cmV0dXJuIHVucG9pc29uZWQoKSA8IGI7IH0KKyAgICBib29sIG9wZXJhdG9yPD0oVCBiKSBjb25z
dCB7IHJldHVybiB1bnBvaXNvbmVkKCkgPD0gYjsgfQorICAgIGJvb2wgb3BlcmF0b3I+KFQgYikg
Y29uc3QgeyByZXR1cm4gdW5wb2lzb25lZCgpID4gYjsgfQorICAgIGJvb2wgb3BlcmF0b3I+PShU
IGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQoKSA+PSBiOyB9CiAKLSAgICBQb2lzb25lZElt
cGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICBQb2lzb25lZCYgb3BlcmF0b3I9KFQgcHRyKQogICAg
IHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24ocHRyKTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25l
ZEltcGwmKSA9IGRlZmF1bHQ7CisgICAgUG9pc29uZWQmIG9wZXJhdG9yPShjb25zdCBQb2lzb25l
ZCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5h
bWUgVDI+Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsPEsy
LCBrMiwgVDI+JiBvdGhlcikKKyAgICBQb2lzb25lZCYgb3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90
KQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lm
X3Q8T3RoZXI6OmlzUG9pc29uZWQ+PgorICAgIFBvaXNvbmVkJiBvcGVyYXRvcj0oY29uc3QgT3Ro
ZXImIG90aGVyKQogICAgIHsKICAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb248VD4ob3Ro
ZXIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHZv
aWQgc3dhcChQb2lzb25lZEltcGwmIG8pCisgICAgdm9pZCBzd2FwKFBvaXNvbmVkJiBvdGhlcikK
ICAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywgby5tX3BvaXNvbmVkQml0
cyk7CisgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywgb3RoZXIubV9wb2lzb25lZEJp
dHMpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUg
VDI+Ci0gICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgbykKKyAgICB2b2lk
IHN3YXAoc3RkOjpudWxscHRyX3QpIHsgY2xlYXIoKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6aXNQb2lzb25lZD4+
CisgICAgdm9pZCBzd2FwKE90aGVyJiBvdGhlcikKICAgICB7CiAgICAgICAgIFQgdDEgPSB0aGlz
LT51bnBvaXNvbmVkKCk7Ci0gICAgICAgIFQyIHQyID0gby51bnBvaXNvbmVkKCk7CisgICAgICAg
IFQgdDIgPSBvdGhlci51bnBvaXNvbmVkKCk7CiAgICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOwog
ICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7Ci0gICAgICAgIG8gPSB0MjsKKyAg
ICAgICAgb3RoZXIubV9wb2lzb25lZEJpdHMgPSBPdGhlcjo6cG9pc29uKHQyKTsKICAgICB9CiAK
ICAgICB2b2lkIHN3YXAoVCYgdDIpCkBAIC0yMTYsODggKzE5OSw2NyBAQCBwcml2YXRlOgogI2Vu
ZGlmCiAKICAgICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJpdHMgeyAwIH07CisKKyAgICB0ZW1w
bGF0ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25l
ZDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDEsIHR5cGVu
YW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgdm9pZCBzd2FwKFBvaXNvbmVkSW1w
bDxLMSwgazEsIFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBiKQotewotICAgIGEu
c3dhcChiKTsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDxUOjppc1BvaXNvbmVkICYmIFU6OmlzUG9pc29uZWQgJiYgIXN0ZDo6
aXNfc2FtZTxULCBVPjo6dmFsdWU+PgoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiBh
LCBjb25zdCBVJiBiKSB7IHJldHVybiBhLnVucG9pc29uZWQoKSA9PSBiLnVucG9pc29uZWQoKTsg
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1lIFQxPgotaW5saW5lIHZv
aWQgc3dhcChQb2lzb25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFQxJiBiKQotewotICAgIGEuc3dh
cChiKTsKLX0KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lID0gc3Rk
OjplbmFibGVfaWZfdDxUOjppc1BvaXNvbmVkICYmIFU6OmlzUG9pc29uZWQgJiYgIXN0ZDo6aXNf
c2FtZTxULCBVPjo6dmFsdWU+PgoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiBhLCBj
b25zdCBVJiBiKSB7IHJldHVybiBhLnVucG9pc29uZWQoKSAhPSBiLnVucG9pc29uZWQoKTsgfQog
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxUOjppc1Bv
aXNvbmVkICYmIFU6OmlzUG9pc29uZWQ+PgoraW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFQm
IGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIGEudW5wb2lzb25lZCgpIDwgYi51bnBvaXNvbmVkKCk7
IH0KIAotI2lmIEVOQUJMRShQT0lTT04pCi0vLyBGSVhNRTogb25jZSB3ZSBoYXZlIEMrKzE3LCB3
ZSBjYW4gbWFrZSB0aGlzIGEgbGFtYmRhIGluIG1ha2VDb25zdEV4cHJQb2lzb24oKS4KLWlubGlu
ZSBjb25zdGV4cHIgdWludHB0cl90IGNvbnN0RXhwclBvaXNvblJhbmRvbSh1aW50cHRyX3Qgc2Vl
ZCkKLXsKLSAgICB1aW50cHRyX3QgcmVzdWx0MSA9IHNlZWQgKiA2OTA2OTY5MDY5ICsgMTIzNDU2
NzsKLSAgICB1aW50cHRyX3QgcmVzdWx0MiA9IHNlZWQgKiA4MjUzNzI5ICsgMjM5NjQwMzsKLSAg
ICByZXR1cm4gKHJlc3VsdDEgPDwgMykgXiAocmVzdWx0MiA8PCAxNik7Ci19Ci0jZW5kaWYKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZf
dDxUOjppc1BvaXNvbmVkICYmIFU6OmlzUG9pc29uZWQ+PgoraW5saW5lIGJvb2wgb3BlcmF0b3I8
PShjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBhLnVucG9pc29uZWQoKSA8PSBiLnVu
cG9pc29uZWQoKTsgfQogCi1pbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBtYWtlQ29uc3RFeHBy
UG9pc29uKHVpbnQzMl90IGtleSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxUOjppc1BvaXNvbmVkICYmIFU6OmlzUG9pc29uZWQ+
PgoraW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJu
IGEudW5wb2lzb25lZCgpID4gYi51bnBvaXNvbmVkKCk7IH0KKwordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PFQ6OmlzUG9pc29uZWQg
JiYgVTo6aXNQb2lzb25lZD4+CitpbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIGEsIGNv
bnN0IFUmIGIpIHsgcmV0dXJuIGEudW5wb2lzb25lZCgpID49IGIudW5wb2lzb25lZCgpOyB9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVf
aWZfdDxUOjppc1BvaXNvbmVkPj4KK2lubGluZSB2b2lkIHN3YXAoVCYgYSwgVSYgYikKIHsKLSNp
ZiBFTkFCTEUoUE9JU09OKQotICAgIHVpbnRwdHJfdCBwb2lzb24gPSBjb25zdEV4cHJQb2lzb25S
YW5kb20oa2V5KTsKLSAgICBwb2lzb24gJj0gfihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ZmZm
ZikgPDwgNDgpOyAvLyBFbnN1cmUgdGhhdCBwb2lzb25lZCBiaXRzIGxvb2sgbGlrZSBhIHBvaW50
ZXIuCi0gICAgcG9pc29uIHw9ICgxIDw8IDIpOyAvLyBFbnN1cmUgdGhhdCBwb2lzb25lZCBiaXRz
IGNhbm5vdCBiZSAwLgotICAgIHJldHVybiBwb2lzb247Ci0jZWxzZQotICAgIHJldHVybiAodm9p
ZClrZXksIDA7Ci0jZW5kaWYKKyAgICBhLnN3YXAoYik7CiB9CiAKLXRlbXBsYXRlPHVpbnRwdHJf
dCYga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0
cl90Jiwga2V5LCBUPjsKLQotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotdXNp
bmcgQ29uc3RFeHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlQ29uc3RF
eHByUG9pc29uKGtleSksIFQ+OworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9p
c29uKCk7CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXN0cnVjdCBDb25z
dEV4cHJQb2lzb25lZFB0clRyYWl0cyB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIHBvaXNv
biA9IG1ha2VDb25zdEV4cHJQb2lzb24oa2V5KTsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPgorc3RydWN0IFBvaXNvbmVkUHRyVHJhaXRzIHsKKyAgICBzdGF0aWMgYXV0byBw
b2lzb24oKSB7IHJldHVybiBrZXk7IH0KIAotICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gQ29uc3RF
eHByUG9pc29uZWQ8a2V5LCBUKj47CisgICAgdXNpbmcgU3RvcmFnZVR5cGUgPSBQb2lzb25lZDxr
ZXksIFQqPjsKIAogICAgIHRlbXBsYXRlPGNsYXNzIFU+IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFQq
IGV4Y2hhbmdlKFN0b3JhZ2VUeXBlJiBwdHIsIFUmJiBuZXdWYWx1ZSkgeyByZXR1cm4gcHRyLmV4
Y2hhbmdlKG5ld1ZhbHVlKTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0
eXBlbmFtZSBUMT4KLSAgICBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAoUG9pc29uZWRJ
bXBsPEsxLCBrMSwgVDE+JiBhLCBUMSYgYikgeyBhLnN3YXAoYik7IH0KLQotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlw
ZW5hbWUgVDI+Ci0gICAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkSW1w
bDxLMSwgazEsIFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBiKSB7IGEuc3dhcChi
KTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyPgorICAgIHN0YXRpYyBBTFdBWVNfSU5M
SU5FIHZvaWQgc3dhcChQb2lzb25lZDxrZXksIFQqPiYgYSwgT3RoZXImIGIpIHsgYS5zd2FwKGIp
OyB9CiAKICAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBUKiB1bndyYXAoY29uc3QgU3RvcmFnZVR5
cGUmIHB0cikgeyByZXR1cm4gcHRyLnVucG9pc29uZWQoKTsgfQogfTsKIAotdGVtcGxhdGU8dWlu
dDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotc3RydWN0IENvbnN0RXhwclBvaXNvbmVkVmFsdWVUcmFp
dHMgewotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBwb2lzb24gPSBtYWtlQ29uc3RFeHByUG9p
c29uKGtleSk7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3N0cnVjdCBQ
b2lzb25lZFZhbHVlVHJhaXRzIHsKKyAgICBzdGF0aWMgYXV0byBwb2lzb24oKSB7IHJldHVybiBr
ZXk7IH0KIAotICAgIHVzaW5nIFN0b3JhZ2VUeXBlID0gQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBU
PjsKKyAgICB1c2luZyBTdG9yYWdlVHlwZSA9IFBvaXNvbmVkPGtleSwgVD47CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBVPiBzdGF0aWMgQUxXQVlTX0lOTElORSBUIGV4Y2hhbmdlKFN0b3JhZ2VUeXBl
JiB2YWwsIFUmJiBuZXdWYWx1ZSkgeyByZXR1cm4gdmFsLmV4Y2hhbmdlKG5ld1ZhbHVlKTsgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMT4KLSAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBU
MSYgYikgeyBhLnN3YXAoYik7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwg
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+Ci0gICAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgUG9p
c29uZWRJbXBsPEsyLCBrMiwgVDI+JiBiKSB7IGEuc3dhcChiKTsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE90aGVyPgorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgc3dhcChQb2lzb25l
ZDxrZXksIFQ+JiBhLCBPdGhlciYgYikgeyBhLnN3YXAoYik7IH0KIAogICAgIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIFQgdW53cmFwKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWwpIHsgcmV0dXJuIHZhbC51
bnBvaXNvbmVkKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCi11c2luZyBXVEY6OkNv
bnN0RXhwclBvaXNvbmVkOwordXNpbmcgV1RGOjpBbHJlYWR5UG9pc29uZWQ7CiB1c2luZyBXVEY6
OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZEJpdHM7Ci11c2luZyBXVEY6Om1ha2VDb25z
dEV4cHJQb2lzb247CiB1c2luZyBXVEY6Om1ha2VQb2lzb247CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BvaXNv
bmVkVW5pcXVlUHRyLmgJKHJldmlzaW9uIDIyNjkzNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNv
bmVkVW5pcXVlUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDExICszMiwxNCBAQAogCiBuYW1l
c3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFt
ZSBFbmFibGUgPSB2b2lkPgotY2xhc3MgUG9pc29uZWRVbmlxdWVQdHIgOiBwdWJsaWMgQ29uc3RF
eHByUG9pc29uZWQ8a2V5LCBUKj4gewordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitjbGFzcyBQb2lzb25lZFVuaXF1ZVB0ciA6IHB1
YmxpYyBQb2lzb25lZDxrZXksIFQqPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0g
ICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+OworICAgIHVzaW5nIEJh
c2UgPSBQb2lzb25lZDxrZXksIFQqPjsKIHB1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNQb2lzb25lZFVuaXF1ZVB0ciA9IHRydWU7CisgICAgdXNpbmcgVmFsdWVUeXBlID0gVDsK
KwogICAgIFBvaXNvbmVkVW5pcXVlUHRyKCkgPSBkZWZhdWx0OwogICAgIFBvaXNvbmVkVW5pcXVl
UHRyKHN0ZDo6bnVsbHB0cl90KSA6IEJhc2UoKSB7IH0KICAgICBQb2lzb25lZFVuaXF1ZVB0cihU
KiBwdHIpIDogQmFzZShwdHIpIHsgfQpAQCAtNDgsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAg
IDogQmFzZSh1bmlxdWUucmVsZWFzZSgpKQogICAgIHsgfQogCi0gICAgdGVtcGxhdGU8dWludDMy
X3Qga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
YmFzZV9vZjxULCBVPjo6dmFsdWU+PgotICAgIFBvaXNvbmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5p
cXVlUHRyPGtleTIsIFU+JiYgcHRyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyLCB0eXBl
bmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8T3RoZXI6OmlzUG9pc29uZWRVbmlxdWVQdHIgJiYgc3Rk
Ojppc19iYXNlX29mPFQsIHR5cGVuYW1lIE90aGVyOjpWYWx1ZVR5cGU+Ojp2YWx1ZT4+CisgICAg
UG9pc29uZWRVbmlxdWVQdHIoT3RoZXImJiBwdHIpCiAgICAgICAgIDogQmFzZShwdHIudW5wb2lz
b25lZCgpKQogICAgIHsKICAgICAgICAgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3koKTsKQEAgLTg5
LDggKzkyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dWludDMyX3Qga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJs
ZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+PgotICAgIFBvaXNvbmVkVW5pcXVl
UHRyJiBvcGVyYXRvcj0oUG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXIsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxPdGhlcjo6
aXNQb2lzb25lZFVuaXF1ZVB0ciAmJiBzdGQ6OmlzX2Jhc2Vfb2Y8VCwgdHlwZW5hbWUgT3RoZXI6
OlZhbHVlVHlwZT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KE90
aGVyJiYgcHRyKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRoaXMgPT0gc3RhdGljX2Nhc3Q8dm9p
ZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgaWYgKExJS0VMWSh0aGlzICE9IHN0YXRpY19jYXN0PHZvaWQqPigmcHRyKSkpIHsKQEAg
LTEyMiwyOCArMTI1LDMxIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNsZWFyV2l0aG91dERlc3Ry
b3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFt
ZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjsKKyAgICB0ZW1wbGF0
ZTx1aW50cHRyX3QmLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQb2lzb25lZFVu
aXF1ZVB0cjsKIH07CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVCwgdHlwZW5h
bWUuLi4gQXJndW1lbnRzLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPgordGVtcGxhdGU8dWludHB0
cl90JiBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cywgdHlwZW5hbWUgRW5h
YmxlID0gdm9pZD4KIFBvaXNvbmVkVW5pcXVlUHRyPGtleSwgVD4gbWFrZVBvaXNvbmVkVW5pcXVl
KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKIHsKICAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQ
dHI8a2V5LCBUPjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4p
OwogfQogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci1jbGFzcyBQb2lzb25l
ZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj4g
ewordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+CitjbGFzcyBQb2lzb25lZFVu
aXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgUG9pc29uZWQ8a2V5LCBUKj4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgIHVzaW5nIEJhc2UgPSBDb25zdEV4cHJQb2lzb25lZDxr
ZXksIFQqPjsKKyAgICB1c2luZyBCYXNlID0gUG9pc29uZWQ8a2V5LCBUKj47CiBwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzUG9pc29uZWRVbmlxdWVQdHIgPSB0cnVlOworICAg
IHVzaW5nIFZhbHVlVHlwZSA9IFRbXTsKKwogICAgIFBvaXNvbmVkVW5pcXVlUHRyKCkgPSBkZWZh
dWx0OwogICAgIFBvaXNvbmVkVW5pcXVlUHRyKHN0ZDo6bnVsbHB0cl90KSA6IEJhc2UoKSB7IH0K
ICAgICBQb2lzb25lZFVuaXF1ZVB0cihUKiBwdHIpIDogQmFzZShwdHIpIHsgfQogICAgIFBvaXNv
bmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyJiYgcHRyKSA6IEJhc2UoV1RGTW92ZShwdHIp
KSB7IHB0ci5jbGVhcldpdGhvdXREZXN0cm95KCk7IH0KICAgICBQb2lzb25lZFVuaXF1ZVB0cihz
dGQ6OnVuaXF1ZV9wdHI8VFtdPiYmIHVuaXF1ZSkgOiBQb2lzb25lZFVuaXF1ZVB0cih1bmlxdWUu
cmVsZWFzZSgpKSB7IH0KIAotICAgIHRlbXBsYXRlPHVpbnQzMl90IGtleTI+Ci0gICAgUG9pc29u
ZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVFtdPiYmIHB0cikKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PE90aGVyOjpp
c1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0ZDo6aXNfc2FtZTxUW10sIHR5cGVuYW1lIE90aGVyOjpW
YWx1ZVR5cGU+Ojp2YWx1ZT4+CisgICAgUG9pc29uZWRVbmlxdWVQdHIoT3RoZXImJiBwdHIpCiAg
ICAgICAgIDogQmFzZShwdHIudW5wb2lzb25lZCgpKQogICAgIHsKICAgICAgICAgcHRyLmNsZWFy
V2l0aG91dERlc3Ryb3koKTsKQEAgLTE3OCw4ICsxODQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50MzJfdCBrZXkyPgotICAgIFBv
aXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0oUG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVFtdPiYm
IHB0cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlciwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJs
ZV9pZl90PE90aGVyOjppc1BvaXNvbmVkVW5pcXVlUHRyICYmIHN0ZDo6aXNfc2FtZTxUW10sIHR5
cGVuYW1lIE90aGVyOjpWYWx1ZVR5cGU+Ojp2YWx1ZT4+CisgICAgUG9pc29uZWRVbmlxdWVQdHIm
IG9wZXJhdG9yPShPdGhlciYmIHB0cikKICAgICB7CiAgICAgICAgIEFTU0VSVCh0aGlzID09IHN0
YXRpY19jYXN0PHZvaWQqPigmcHRyKSB8fCB0aGlzLT51bnBvaXNvbmVkKCkgIT0gcHRyLnVucG9p
c29uZWQoKSk7CiAgICAgICAgIGlmIChMSUtFTFkodGhpcyAhPSBzdGF0aWNfY2FzdDx2b2lkKj4o
JnB0cikpKSB7CkBAIC0yMTEsMTAgKzIxNywxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVh
cldpdGhvdXREZXN0cm95KCkgeyBCYXNlOjpjbGVhcigpOyB9CiAKLSAgICB0ZW1wbGF0ZTx1aW50
MzJfdCwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI7
CisgICAgdGVtcGxhdGU8dWludHB0cl90JiwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xh
c3MgUG9pc29uZWRVbmlxdWVQdHI7CiB9OwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVu
YW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiBQb2lzb25lZFVuaXF1ZVB0cjxrZXks
IFRbXT4gbWFrZVBvaXNvbmVkVW5pcXVlKHNpemVfdCBjb3VudCwgQXJndW1lbnRzJiYuLi4gYXJn
dW1lbnRzKQogewogICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT46OmNyZWF0
ZShjb3VudCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9SZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWYuaAko
cmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL1dURi93dGYvUmVmLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yNTYsMTAgKzI1NiwxMCBAQCBpbmxpbmUgYm9vbCBpcyhjb25zdCBSZWY8QXJnVHlwZSwg
UHRyVHJhCiAgICAgcmV0dXJuIGlzPEV4cGVjdGVkVHlwZT4oc291cmNlLmdldCgpKTsKIH0KIAot
dGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9pc29u
ZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3RydWN0
IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+
Ci11c2luZyBQb2lzb25lZFJlZiA9IFJlZjxULCBDb25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxr
ZXksIFQ+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9p
c29uZWRSZWYgPSBSZWY8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaAkocmV2aXNpb24gMjI2
OTM1KQorKysgU291cmNlL1dURi93dGYvUmVmQ291bnRlZEFycmF5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShz
aXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIGlmICghc2l6ZSkgewotICAgICAgICAgICAgbV9k
YXRhID0gMDsKKyAgICAgICAgICAgIFB0clRyYWl0czo6ZXhjaGFuZ2UobV9kYXRhLCBudWxscHRy
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05MCw3ICs5MCw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJyYXkoY29uc3QgVmVjdG9yPFQsIGlubGlu
ZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKICAgICB7CiAgICAgICAgIGlmIChv
dGhlci5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIG1fZGF0YSA9IDA7CisgICAgICAgICAgICBQ
dHJUcmFpdHM6OmV4Y2hhbmdlKG1fZGF0YSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yMzgsMTAgKzIzOCwxMCBAQCBwcml2YXRlOgogICAg
IHR5cGVuYW1lIFB0clRyYWl0czo6U3RvcmFnZVR5cGUgbV9kYXRhIHsgbnVsbHB0ciB9OwogfTsK
IAotdGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29uc3RFeHByUG9p
c29uZWRQdHJUcmFpdHM7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4gc3Ry
dWN0IFBvaXNvbmVkUHRyVHJhaXRzOwogCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1l
IFQ+Ci11c2luZyBQb2lzb25lZFJlZkNvdW50ZWRBcnJheSA9IFJlZkNvdW50ZWRBcnJheTxULCBD
b25zdEV4cHJQb2lzb25lZFB0clRyYWl0czxrZXksIFQ+PjsKK3RlbXBsYXRlPHVpbnRwdHJfdCYg
a2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWRSZWZDb3VudGVkQXJyYXkgPSBSZWZDb3Vu
dGVkQXJyYXk8VCwgUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9SZWZQdHIuaAkocmV2aXNpb24gMjI2OTM1KQorKysgU291cmNlL1dURi93dGYv
UmVmUHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogIENvcHlyaWdo
dCAoQykgMjAwNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjc2LDEwICsyNzYsMTAgQEAgaW5saW5lIGJvb2wgaXMoY29u
c3QgUmVmUHRyPEFyZ1R5cGUsIFB0cgogICAgIHJldHVybiBpczxFeHBlY3RlZFR5cGU+KHNvdXJj
ZS5nZXQoKSk7CiB9CiAKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4gc3RydWN0
IENvbnN0RXhwclBvaXNvbmVkUHRyVHJhaXRzOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5
cGVuYW1lIFQ+IHN0cnVjdCBQb2lzb25lZFB0clRyYWl0czsKIAotdGVtcGxhdGU8dWludDMyX3Qg
a2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWRSZWZQdHIgPSBSZWZQdHI8VCwgQ29uc3RF
eHByUG9pc29uZWRQdHJUcmFpdHM8a2V5LCBUPj47Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwg
dHlwZW5hbWUgVD4KK3VzaW5nIFBvaXNvbmVkUmVmUHRyID0gUmVmUHRyPFQsIFBvaXNvbmVkUHRy
VHJhaXRzPGtleSwgVD4+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApJbmRleDogU291cmNlL1dU
Ri93dGYvV1RGQXNzZXJ0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RG
QXNzZXJ0aW9ucy5jcHAJKHJldmlzaW9uIDIyNjkzNSkKKysrIFNvdXJjZS9XVEYvd3RmL1dURkFz
c2VydGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwzOSArMzUsOSBAQCBuYW1lc3BhY2Ug
V1RGIHsKIAogbmFtZXNwYWNlIHsKIHN0cnVjdCBEdW1teVN0cnVjdCB7IH07Ci1jb25zdCB1aW50
MzJfdCBkdW1teVBvaXNvbiA9IDB4ZmZmZjsKK3VpbnRwdHJfdCBkdW1teVBvaXNvbiA9IDA7CiB9
CiAKLSNpZiBFTkFCTEUoUE9JU09OKQotc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lz
b24oMSkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4i
KTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMCkgPj4gNDgpLCAicG9p
c29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKLXN0YXRpY19hc3NlcnQo
IShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxk
IGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBv
aXNvbigxMDAwMCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9p
bnRlci4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApID4+
IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Ci1zdGF0
aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSA+PiA0OCksICJwb2lz
b25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOwotCi1zdGF0aWNfYXNzZXJ0
KChtYWtlQ29uc3RFeHByUG9pc29uKDEpID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQg
Yml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBi
aXRzIHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1h
a2VDb25zdEV4cHJQb2lzb24oMTAwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBi
aXRzIHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKLXN0YXRpY19hc3NlcnQoKG1h
a2VDb25zdEV4cHJQb2lzb24oMTAwMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQg
Yml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29u
ZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci1zdGF0aWNfYXNzZXJ0
KChtYWtlQ29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpID4+IDMyKSwgImJpdHMgMzItNDcgb2Yg
cG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7Ci0KLXN0YXRp
Y19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMSkgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFs
d2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMCkg
JiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUg
c2V0LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMCkgJiAweDQp
LCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7Ci1zdGF0aWNfYXNzZXJ0KChtYWtlQ29u
c3RFeHByUG9pc29uKDEwMDAwMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0
LiIpOwotc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSAmIDB4
NCksICJiaXQgMiBzaG91bGQgYWx3YXlzIGJlIHNldC4iKTsKLQotc3RhdGljX2Fzc2VydCghKG1h
a2VDb25zdEV4cHJQb2lzb24oMSkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBi
aXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0
KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDApICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGln
bm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotc3RhdGlj
X2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRv
bSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7
Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMCkgJiAweDMpLCAiZW5z
dXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBhcyBmbGFn
IGJpdHMuIik7Ci1zdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSAm
IDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3Ig
dXNlIGFzIGZsYWcgYml0cy4iKTsKLXN0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29u
KDB4ZmZmZmZmZmYpICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUg
YXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwotI2VuZGlmIC8vIEVOQUJMRShQT0lT
T04pCi0KIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEJhZzxEdW1teVN0cnVjdD4pID09IHNpemVvZih2
b2lkKiksICIiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkQmFnPGR1bW15UG9pc29u
LCBEdW1teVN0cnVjdD4pID09IHNpemVvZih2b2lkKiksICIiKTsKIApJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2OTM1KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTgt
MDEtMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2Ug
YWxsIHVzZSBvZiBDb25zdEV4cHJQb2lzb25lZCB3aXRoIFBvaXNvbmVkLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNTQyCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8zNjQ0MjEzOD4KKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgor
CisgICAgICAgIDEuIENvbnZlcnRlZCB0ZXN0cyB0byB1c2luZyBuZXcgdWludHB0cl90JiBwb2lz
b24gdHlwZS4KKyAgICAgICAgMi4gQWRkZWQgdGVzdHMgZm9yIFBvaXNvbmVkIGNvbXBhcmlzb24g
b3BlcmF0b3JzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25l
ZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29u
ZWQuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjppbml0aWFsaXplVGVzdFBvaXNvbik6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWYuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwYXNzV2l0aFJlZik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmMSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHIuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwb2lz
b25lZFB0ckZvbyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRV
bmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTgtMDEtMTIgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBUEkgdGVzdHMgQ2hh
bmdlQXR0YWNobWVudERhdGFVcGRhdGVzV2l0aEluUGxhY2VEaXNwbGF5IGFuZCBJblBsYWNlVmlk
ZW9BdHRhY2htZW50SW5zZXJ0aW9uV2l0aGluTGlzdCBhcmUgZmFpbGluZwpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjY5MzUpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw2IEBAIHNl
dChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ2hl
Y2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAotICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9EYXRlTWF0aC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGVx
dWUuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI2OTM1KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTc2OCw3ICs3NjgsNiBAQAogCQlGRTA1RkFFQzFGREI1MTBB
MDAwOTMyMzAgLyogUG9pc29uZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUIxRkRCNTEwMjAwMDkzMjMwIC8qIFBvaXNvbmVkUmVm
LmNwcCAqLzsgfTsKIAkJRkUwNUZBRUQxRkRCNTEwRTAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmUHRy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVG
QUVBMUZEQjUxMDEwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5jcHAgKi87IH07CiAJCUZFMDVG
QUVGMUZFMDY0NUIwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9p
c29uZWQuY3BwICovOyB9OwotCQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHBy
UG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsg
fTsKIAkJRkUwNUZCMDYxRkU4NEZCNzAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQjA1MUZF
ODRGQUUwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgKi87IH07CiAJCUZFQzhGNEU3
MUZFOUM5MDUwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0
aWJsZUFycmF5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUM4RjRFNjFGRTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2
aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwICovOyB9OwogCQlGRUM4RjRFQjFGRTlGNUFGMDA1
NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJh
eXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVD
OEY0RUExRkU5RjVBNzAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5
RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLzsgfTsKQEAgLTE4ODcsNyArMTg4Niw2IEBACiAJCUZF
MDVGQUVBMUZEQjUxMDEwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0ci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZFJlZlB0ci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFMDVGQUVCMUZEQjUxMDIwMDA5MzIzMCAvKiBQb2lzb25lZFJl
Zi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZFJlZi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMDVGQUVFMUZFMDY0M0QwMDA5MzIz
MCAvKiBQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
b2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZFMDVGQUYwMUZFMDhD
Q0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb25zdEV4cHJQb2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFMDVGQjA1MUZFODRGQUUwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZFVuaXF1
ZVB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQjZGNzRFMUIyQkE0NEUw
MDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOYWtlZFB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQzhGNEU2
MUZFOUM4REUwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0
aWJsZUFycmF5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lz
b25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjYzLDcgKzI2NjEsNiBAQAogCQkJCUE3QTk2NkRBMTQw
RUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJ
CTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8s
CiAJCQkJMEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCi0JCQkJ
RkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLywKIAkJ
CQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLywKIAkJ
CQkyNkEyQzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJN0FBMDIx
QkExQUIwOUVBNzAwNTI5NTNGIC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTMyMzAsNyArMzIyNyw2
IEBACiAJCQkJN0M4M0RFQTAxRDBBNTkwQzAwRkVCQ0YzIC8qIENoZWNrZWRBcml0aG1ldGljT3Bl
cmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMwQ0I1QzFGQ0UxNzk2MDA0QjUzMjMg
LyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFQzMx
RDBBNTkwQzAwRkVCQ0YzIC8qIENvbmRpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTA1
RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0RFQTYxRDBBNTkwQzAwRkVCQ0YzIC8qIENvdW50ZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERUE5MUQwQTU5MEMwMEZFQkNGMyAvKiBDU3RyaW5nLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUFEMUQwQTU5MEMwMEZFQkNGMyAvKiBEZXF1ZS5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhw
clBvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Db25zdEV4cHJQb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNjkzNSkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCkBA
IC0xLDM4NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJSZWZMb2dnZXIuaCIK
LSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewot
Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKLXN0YXRpYyBjb25zdCB1
aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOwotCi0vLyBGb3IgdGhlc2UgdGVzdHMsIHdlIG5lZWQg
YSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZvciB0aGlzIHB1cnBvc2UsCi0vLyB3
ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVmTG9nZ2VyIGNsYXNzZXMuCi0KLVRF
U1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBCYXNpYykKLXsKLSAgICBEZXJpdmVkUmVmTG9nZ2Vy
IGEoImEiKTsKLQotICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IGVt
cHR5OwotICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwotCi0gICAg
ewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsICYqcHRyKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUp
OwotCi0jaWYgRU5BQkxFKFBPSVNPTikKLSAgICAgICAgdWludHB0cl90IHB0ckJpdHM7Ci0gICAg
ICAgIHN0ZDo6bWVtY3B5KCZwdHJCaXRzLCAmcHRyLCBzaXplb2YocHRyQml0cykpOwotICAgICAg
ICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0j
aWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAgICBBU1NFUlRfVFJVRSgoQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKLSNl
bmRpZgotI2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCi0gICAgfQotCi0gICAgewotICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKLSAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOwotICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwot
Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMi51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOwotICAgIH0KLQotICAgIHsK
LSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsK
LSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZN
b3ZlKHAxKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVu
cG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0K
LQotICAgIHsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDEgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIoV1RGTW92ZShwMSkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOwotICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7Ci0gICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZh
LCBwNC51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBw
Mi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
LSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2
ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMiA9IHAxOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25C
LCBSZWZMb2dnZXIqPiBwMyA9IHAxOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0g
cDMuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDMgPSAmYTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0K
LSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFT
U0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotICAgIH0KLQotICAgIHsKLSAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcHRyLmNsZWFyKCk7
Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci19
Ci0KLVRFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3NpZ25tZW50KQotewotICAgIERlcml2
ZWRSZWZMb2dnZXIgYSgiYSIpOwotICAgIFJlZkxvZ2dlciBiKCJiIik7Ci0gICAgRGVyaXZlZFJl
ZkxvZ2dlciBjKCJjIik7Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
cDEgPSBwMjsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwg
cDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkp
OwotICAgICAgICBwMyA9IHA0OwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAgICAgICBwdHIgPSAmYjsKLSAgICAgICAgQVNT
RVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Ci0gICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHB0ciA9IG51bGxwdHI7Ci0g
ICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKLSAgICB9Ci0KLSAg
ICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZh
KTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIp
OwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEo
JmIsIHAyLnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25C
LCBSZWZMb2dnZXIqPiBwNCgmYik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBw
MyA9IFdURk1vdmUocDQpOwotICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7
Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMu
Yml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBv
aXNvbmVkKCkpOwotICAgICAgICBwMSA9IHAyOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKLQot
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Ci0g
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgm
Yyk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNT
RVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwotICAgICAgICBwMyA9IHA0OwotICAgICAgICBB
U1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDQu
dW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0
cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAg
fQotCi0gICAgewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBwdHIgPSAmYzsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25lZCgpKTsK
LSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAxKCZhKTsKLSAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZl
ZFJlZkxvZ2dlcio+IHAyKCZjKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAx
ID0gV1RGTW92ZShwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsK
LSAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOwotCi0gICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKLSAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmMsIHA0
LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzID0gV1RGTW92ZShwNCk7Ci0gICAgICAgIEFTU0VS
VF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKLSAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBv
aXNvbmVkKCkpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OwotICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0K
LSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0gICAgICAg
IHB0ciA9IHB0cjsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAg
ICB9Ci0KLSAgICB7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHB0cigmYSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Ci0j
aWYgQ09NUElMRVIoQ0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgotI2VuZGlmCi0gICAgICAgIHB0
ciA9IFdURk1vdmUocHRyKTsKLSNpZiBDT01QSUxFUihDTEFORykKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLSNlbmRpZgotICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVk
KCkpOwotICAgIH0KLX0KLQotVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFN3YXApCi17Ci0g
ICAgUmVmTG9nZ2VyIGEoImEiKTsKLSAgICBSZWZMb2dnZXIgYigiYiIpOwotCi0gICAgewotICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKLSAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmIs
IHAyLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAxLnN3YXAocDIpOwotICAgICAgICBBU1NFUlRf
RVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lz
b25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+
IHA0KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAg
ICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHAzLnN3YXAocDQpOwot
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9F
USgmYSwgcDQudW5wb2lzb25lZCgpKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
IT0gcDIuYml0cygpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwotICAgICAg
ICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSAgICB9Ci0KLSAgICB7Ci0g
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKLSAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwotICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgm
YiwgcDIudW5wb2lzb25lZCgpKTsKLSAgICAgICAgc3dhcChwMSwgcDIpOwotICAgICAgICBBU1NF
UlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKLQotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMygmYSk7Ci0gICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dl
cio+IHA0KCZiKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwotICAg
ICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Ci0gICAgICAgIHN3YXAocDMsIHA0
KTsKLSAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpICE9IHAyLmJpdHMoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5i
aXRzKCkpOwotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKLSAg
ICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0gICAgfQotCi0gICAg
ewotICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
Ci0gICAgICAgIFJlZkxvZ2dlciogcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDIpOwotICAgICAgICBzd2FwKHAx
LCBwMik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMik7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Ci0gICAgICAgIFJlZkxv
Z2dlciogcDIoJmIpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDIpOwotICAgICAgICBwMS5zd2FwKHAyKTsKLSAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwotICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
KTsKLQotICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4ocDIpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dlcikKLXsKLSAgICBy
ZXR1cm4gQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmxvZ2dlcik7Ci19
Ci0KLVRFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBSZXR1cm5WYWx1ZSkKLXsKLSAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKLQotICAgIHsKLSAgICAgICAgYXV0byBwdHIgPSBwb2lzb25l
ZFB0ckZvbyhhKTsKLSAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKLSAg
ICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7Ci0gICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAm
cHRyLT5uYW1lKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKLQpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAkocmV2aXNp
b24gMjI2OTM1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAorbmFtZXNwYWNlIHsKKwogdWludHB0cl90IGdfdGVzdFBvaXNvbkE7CiB1aW50cHRy
X3QgZ190ZXN0UG9pc29uQjsKIApAQCAtNDUsNiArNDcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplVGVzdFBvaXNvbigpCiAgICAgfSk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIGFub255bW91cwor
CiAvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQg
Y2xhc3MuIEZvciB0aGlzIHB1cnBvc2UsCiAvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBE
ZXJpdmVkUmVmTG9nZ2VyIGNsYXNzZXMuCiAKQEAgLTkwLDEzICs5NCwxMyBAQCBURVNUKFdURl9Q
b2lzb25lZCwgQmFzaWMpCiAKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkp
OwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAxID09IHAyKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJp
dHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEgPT0gcDMpOwogICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKLSNlbmRpZgogICAgIH0KIAogICAg
IHsKQEAgLTEwNCwxMyArMTA4LDEzIEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKICAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKICAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxID09IHAyKTsKICAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBFTkFCTEUoTUlYRURf
UE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9
IHAxOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAxID09IHAzKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAz
LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBAIC0xMTgsMTUgKzEyMiwxNSBAQCBU
RVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
dW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMSA9PSBwMik7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKICAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKICAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzID09IHA0KTsKICAgICAg
ICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAK
ICAgICB7CkBAIC0xMzQsNDYgKzEzOCw1MCBAQCBURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1vdmUocDEp
KTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NF
UlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxID09IHAy
KTsKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CiAKLSNpZiBF
TkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMyA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dn
ZXIqPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfVFJVRShwMyA9PSBwNCk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBw
NC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAg
ICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBw
MSA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9
IHAxOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEgPT0g
cDIpOworICAgICAgICBBU1NFUlRfVFJVRShwMiA9PSBwMSk7CiAgICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEgPT0gcDMpOworICAgICAgICBBU1NFUlRf
VFJVRShwMyA9PSBwMSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRz
KCkpOwogICAgIH0KLSNlbmRpZgogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7CiAg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZh
OwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1v
dmUocDEpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEg
PT0gcDIpOworICAgICAgICBBU1NFUlRfVFJVRShwMiA9PSBwMSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9ICZhOwogICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMgPT0gcDQpOworICAgICAgICBBU1NFUlRf
VFJVRShwNCA9PSBwMyk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRz
KCkpOwogICAgIH0KLSNlbmRpZgogCiAgICAgewogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwpAQCAtMTgxLDYgKzE4OSwxODAgQEAgVEVTVChXVEZf
UG9pc29uZWQsIEJhc2ljKQogICAgICAgICBwdHIuY2xlYXIoKTsKICAgICAgICAgQVNTRVJUX0VR
KG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgIH0KKworICAgIHsKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcEExMDAwYSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UmVmTG9nZ2VyKj4oMHgxMDAwKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcEIyMDAwYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UmVmTG9nZ2VyKj4oMHgyMDAw
KTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwQTEwMDBi
ID0gcmVpbnRlcnByZXRfY2FzdDxSZWZMb2dnZXIqPigweDEwMDApOworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwQTIwMDBiID0gcmVpbnRlcnByZXRfY2FzdDxS
ZWZMb2dnZXIqPigweDIwMDApOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHBCMTAwMGMgPSByZWludGVycHJldF9jYXN0PFJlZkxvZ2dlcio+KDB4MTAwMCk7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHBCMjAwMGMgPSBy
ZWludGVycHJldF9jYXN0PFJlZkxvZ2dlcio+KDB4MjAwMCk7CisKKworICAgICAgICBBU1NFUlRf
RVEocEExMDAwYSA9PSBwQTEwMDBhLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBBMTAwMGEg
PT0gcEExMDAwYiwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwQTEwMDBhID09IHBBMjAwMGIs
IGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBBMTAwMGEgPT0gcEIxMDAwYywgdHJ1ZSk7Cisg
ICAgICAgIEFTU0VSVF9FUShwQTEwMDBhID09IHBCMjAwMGMsIGZhbHNlKTsKKworICAgICAgICBB
U1NFUlRfRVEocEExMDAwYSAhPSBwQTEwMDBhLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShw
QTEwMDBhICE9IHBBMTAwMGIsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBBMTAwMGEgIT0g
cEEyMDAwYiwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwQTEwMDBhICE9IHBCMTAwMGMsIGZh
bHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBBMTAwMGEgIT0gcEIyMDAwYywgdHJ1ZSk7CisKKyAg
ICAgICAgQVNTRVJUX0VRKHBBMTAwMGEgPCBwQTEwMDBhLCBmYWxzZSk7CisgICAgICAgIEFTU0VS
VF9FUShwQTEwMDBhIDwgcEExMDAwYiwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocEExMDAw
YSA8IHBBMjAwMGIsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEocEExMDAwYSA8IHBCMTAwMGMs
IGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBBMTAwMGEgPCBwQjIwMDBjLCB0cnVlKTsKKwor
ICAgICAgICBBU1NFUlRfRVEocEIyMDAwYSA8IHBCMjAwMGEsIGZhbHNlKTsKKyAgICAgICAgQVNT
RVJUX0VRKHBCMjAwMGEgPCBwQTEwMDBiLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShwQjIw
MDBhIDwgcEEyMDAwYiwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocEIyMDAwYSA8IHBCMTAw
MGMsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBCMjAwMGEgPCBwQjIwMDBjLCBmYWxzZSk7
CisKKyAgICAgICAgQVNTRVJUX0VRKHBBMTAwMGEgPD0gcEExMDAwYSwgdHJ1ZSk7CisgICAgICAg
IEFTU0VSVF9FUShwQTEwMDBhIDw9IHBBMTAwMGIsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEo
cEExMDAwYSA8PSBwQTIwMDBiLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBBMTAwMGEgPD0g
cEIxMDAwYywgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwQTEwMDBhIDw9IHBCMjAwMGMsIHRy
dWUpOworCisgICAgICAgIEFTU0VSVF9FUShwQjIwMDBhIDw9IHBCMjAwMGEsIHRydWUpOworICAg
ICAgICBBU1NFUlRfRVEocEIyMDAwYSA8PSBwQTEwMDBiLCBmYWxzZSk7CisgICAgICAgIEFTU0VS
VF9FUShwQjIwMDBhIDw9IHBBMjAwMGIsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEocEIyMDAw
YSA8PSBwQjEwMDBjLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShwQjIwMDBhIDw9IHBCMjAw
MGMsIHRydWUpOworCisgICAgICAgIEFTU0VSVF9FUShwQTEwMDBhID4gcEExMDAwYSwgZmFsc2Up
OworICAgICAgICBBU1NFUlRfRVEocEExMDAwYSA+IHBBMTAwMGIsIGZhbHNlKTsKKyAgICAgICAg
QVNTRVJUX0VRKHBBMTAwMGEgPiBwQTIwMDBiLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShw
QTEwMDBhID4gcEIxMDAwYywgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocEExMDAwYSA+IHBC
MjAwMGMsIGZhbHNlKTsKKworICAgICAgICBBU1NFUlRfRVEocEIyMDAwYSA+IHBCMjAwMGEsIGZh
bHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBCMjAwMGEgPiBwQTEwMDBiLCB0cnVlKTsKKyAgICAg
ICAgQVNTRVJUX0VRKHBCMjAwMGEgPiBwQTIwMDBiLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9F
UShwQjIwMDBhID4gcEIxMDAwYywgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwQjIwMDBhID4g
cEIyMDAwYywgZmFsc2UpOworCisgICAgICAgIEFTU0VSVF9FUShwQTEwMDBhID49IHBBMTAwMGEs
IHRydWUpOworICAgICAgICBBU1NFUlRfRVEocEExMDAwYSA+PSBwQTEwMDBiLCB0cnVlKTsKKyAg
ICAgICAgQVNTRVJUX0VRKHBBMTAwMGEgPj0gcEEyMDAwYiwgZmFsc2UpOworICAgICAgICBBU1NF
UlRfRVEocEExMDAwYSA+PSBwQjEwMDBjLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBBMTAw
MGEgPj0gcEIyMDAwYywgZmFsc2UpOworCisgICAgICAgIEFTU0VSVF9FUShwQjIwMDBhID49IHBC
MjAwMGEsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEocEIyMDAwYSA+PSBwQTEwMDBiLCB0cnVl
KTsKKyAgICAgICAgQVNTRVJUX0VRKHBCMjAwMGEgPj0gcEEyMDAwYiwgdHJ1ZSk7CisgICAgICAg
IEFTU0VSVF9FUShwQjIwMDBhID49IHBCMTAwMGMsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEo
cEIyMDAwYSA+PSBwQjIwMDBjLCB0cnVlKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHByQTEwMDAgPSByZWludGVycHJldF9jYXN0
PERlcml2ZWRSZWZMb2dnZXIqPigweDEwMDApOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcGRBMTAwMCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGVyaXZl
ZFJlZkxvZ2dlcio+KDB4MTAwMCk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHByQjEwMDAgPSByZWludGVycHJldF9jYXN0PERlcml2ZWRSZWZMb2dnZXIqPigw
eDEwMDApOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2Vy
Kj4gcGRCMTAwMCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGVyaXZlZFJlZkxvZ2dlcio+KDB4MTAwMCk7
CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHJBMjAwMCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RGVyaXZlZFJlZkxvZ2dlcio+KDB4MjAwMCk7CisgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwZEEyMDAwID0gcmVpbnRl
cnByZXRfY2FzdDxEZXJpdmVkUmVmTG9nZ2VyKj4oMHgyMDAwKTsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcHJCMjAwMCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGVy
aXZlZFJlZkxvZ2dlcio+KDB4MjAwMCk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIs
IERlcml2ZWRSZWZMb2dnZXIqPiBwZEIyMDAwID0gcmVpbnRlcnByZXRfY2FzdDxEZXJpdmVkUmVm
TG9nZ2VyKj4oMHgyMDAwKTsKKworICAgICAgICBBU1NFUlRfRVEocHJBMTAwMCA9PSBwZEExMDAw
LCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHByQTEwMDAgPT0gcGRCMTAwMCwgdHJ1ZSk7Cisg
ICAgICAgIEFTU0VSVF9FUShwckExMDAwID09IHBkQTIwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNT
RVJUX0VRKHByQTEwMDAgPT0gcGRCMjAwMCwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocGRB
MTAwMCA9PSBwckExMDAwLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBkQTEwMDAgPT0gcHJC
MTAwMCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEExMDAwID09IHByQTIwMDAsIGZhbHNl
KTsKKyAgICAgICAgQVNTRVJUX0VRKHBkQTEwMDAgPT0gcHJCMjAwMCwgZmFsc2UpOworCisgICAg
ICAgIEFTU0VSVF9FUShwckExMDAwICE9IHBkQTEwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJU
X0VRKHByQTEwMDAgIT0gcGRCMTAwMCwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocHJBMTAw
MCAhPSBwZEEyMDAwLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHByQTEwMDAgIT0gcGRCMjAw
MCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEExMDAwICE9IHByQTEwMDAsIGZhbHNlKTsK
KyAgICAgICAgQVNTRVJUX0VRKHBkQTEwMDAgIT0gcHJCMTAwMCwgZmFsc2UpOworICAgICAgICBB
U1NFUlRfRVEocGRBMTAwMCAhPSBwckEyMDAwLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBk
QTEwMDAgIT0gcHJCMjAwMCwgdHJ1ZSk7CisKKyAgICAgICAgQVNTRVJUX0VRKHByQTEwMDAgPCBw
ZEExMDAwLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShwckExMDAwIDwgcGRCMTAwMCwgZmFs
c2UpOworICAgICAgICBBU1NFUlRfRVEocHJBMTAwMCA8IHBkQTIwMDAsIHRydWUpOworICAgICAg
ICBBU1NFUlRfRVEocHJBMTAwMCA8IHBkQjIwMDAsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEo
cGRBMTAwMCA8IHByQTEwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBkQTEwMDAgPCBw
ckIxMDAwLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEExMDAwIDwgcHJBMjAwMCwgdHJ1
ZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEExMDAwIDwgcHJCMjAwMCwgdHJ1ZSk7CisKKyAgICAg
ICAgQVNTRVJUX0VRKHByQTIwMDAgPCBwZEExMDAwLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9F
UShwckEyMDAwIDwgcGRCMTAwMCwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocHJBMjAwMCA8
IHBkQTIwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHByQTIwMDAgPCBwZEIyMDAwLCBm
YWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEEyMDAwIDwgcHJBMTAwMCwgZmFsc2UpOworICAg
ICAgICBBU1NFUlRfRVEocGRBMjAwMCA8IHByQjEwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJU
X0VRKHBkQTIwMDAgPCBwckEyMDAwLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEEyMDAw
IDwgcHJCMjAwMCwgZmFsc2UpOworCisgICAgICAgIEFTU0VSVF9FUShwckExMDAwIDw9IHBkQTEw
MDAsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEocHJBMTAwMCA8PSBwZEIxMDAwLCB0cnVlKTsK
KyAgICAgICAgQVNTRVJUX0VRKHByQTEwMDAgPD0gcGRBMjAwMCwgdHJ1ZSk7CisgICAgICAgIEFT
U0VSVF9FUShwckExMDAwIDw9IHBkQjIwMDAsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEocGRB
MTAwMCA8PSBwckExMDAwLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBkQTEwMDAgPD0gcHJC
MTAwMCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEExMDAwIDw9IHByQTIwMDAsIHRydWUp
OworICAgICAgICBBU1NFUlRfRVEocGRBMTAwMCA8PSBwckIyMDAwLCB0cnVlKTsKKworICAgICAg
ICBBU1NFUlRfRVEocHJBMjAwMCA8PSBwZEExMDAwLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9F
UShwckEyMDAwIDw9IHBkQjEwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHByQTIwMDAg
PD0gcGRBMjAwMCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwckEyMDAwIDw9IHBkQjIwMDAs
IHRydWUpOworICAgICAgICBBU1NFUlRfRVEocGRBMjAwMCA8PSBwckExMDAwLCBmYWxzZSk7Cisg
ICAgICAgIEFTU0VSVF9FUShwZEEyMDAwIDw9IHByQjEwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNT
RVJUX0VRKHBkQTIwMDAgPD0gcHJBMjAwMCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEEy
MDAwIDw9IHByQjIwMDAsIHRydWUpOworCisgICAgICAgIEFTU0VSVF9FUShwckExMDAwID4gcGRB
MTAwMCwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocHJBMTAwMCA+IHBkQjEwMDAsIGZhbHNl
KTsKKyAgICAgICAgQVNTRVJUX0VRKHByQTEwMDAgPiBwZEEyMDAwLCBmYWxzZSk7CisgICAgICAg
IEFTU0VSVF9FUShwckExMDAwID4gcGRCMjAwMCwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEo
cGRBMTAwMCA+IHByQTEwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBkQTEwMDAgPiBw
ckIxMDAwLCBmYWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEExMDAwID4gcHJBMjAwMCwgZmFs
c2UpOworICAgICAgICBBU1NFUlRfRVEocGRBMTAwMCA+IHByQjIwMDAsIGZhbHNlKTsKKworICAg
ICAgICBBU1NFUlRfRVEocHJBMjAwMCA+IHBkQTEwMDAsIHRydWUpOworICAgICAgICBBU1NFUlRf
RVEocHJBMjAwMCA+IHBkQjEwMDAsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEocHJBMjAwMCA+
IHBkQTIwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX0VRKHByQTIwMDAgPiBwZEIyMDAwLCBm
YWxzZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEEyMDAwID4gcHJBMTAwMCwgdHJ1ZSk7CisgICAg
ICAgIEFTU0VSVF9FUShwZEEyMDAwID4gcHJCMTAwMCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9F
UShwZEEyMDAwID4gcHJBMjAwMCwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocGRBMjAwMCA+
IHByQjIwMDAsIGZhbHNlKTsKKworICAgICAgICBBU1NFUlRfRVEocHJBMTAwMCA+PSBwZEExMDAw
LCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHByQTEwMDAgPj0gcGRCMTAwMCwgdHJ1ZSk7Cisg
ICAgICAgIEFTU0VSVF9FUShwckExMDAwID49IHBkQTIwMDAsIGZhbHNlKTsKKyAgICAgICAgQVNT
RVJUX0VRKHByQTEwMDAgPj0gcGRCMjAwMCwgZmFsc2UpOworICAgICAgICBBU1NFUlRfRVEocGRB
MTAwMCA+PSBwckExMDAwLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHBkQTEwMDAgPj0gcHJC
MTAwMCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwZEExMDAwID49IHByQTIwMDAsIGZhbHNl
KTsKKyAgICAgICAgQVNTRVJUX0VRKHBkQTEwMDAgPj0gcHJCMjAwMCwgZmFsc2UpOworCisgICAg
ICAgIEFTU0VSVF9FUShwckEyMDAwID49IHBkQTEwMDAsIHRydWUpOworICAgICAgICBBU1NFUlRf
RVEocHJBMjAwMCA+PSBwZEIxMDAwLCB0cnVlKTsKKyAgICAgICAgQVNTRVJUX0VRKHByQTIwMDAg
Pj0gcGRBMjAwMCwgdHJ1ZSk7CisgICAgICAgIEFTU0VSVF9FUShwckEyMDAwID49IHBkQjIwMDAs
IHRydWUpOworICAgICAgICBBU1NFUlRfRVEocGRBMjAwMCA+PSBwckExMDAwLCB0cnVlKTsKKyAg
ICAgICAgQVNTRVJUX0VRKHBkQTIwMDAgPj0gcHJCMTAwMCwgdHJ1ZSk7CisgICAgICAgIEFTU0VS
VF9FUShwZEEyMDAwID49IHByQTIwMDAsIHRydWUpOworICAgICAgICBBU1NFUlRfRVEocGRBMjAw
MCA+PSBwckIyMDAwLCB0cnVlKTsKKyAgICB9CiB9CiAKIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3Np
Z25tZW50KQpAQCAtMjAwLDcgKzM4Miw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50
KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNP
TikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwog
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKQEAgLTIwOSw3ICszOTAsNiBAQCBU
RVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51
bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CiAg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAg
fQogCiAgICAgewpAQCAtMjM2LDcgKzQxNiw2IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25t
ZW50KQogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwogCi0jaWYgRU5BQkxFKE1JWEVEX1BP
SVNPTikKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEp
OwogICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CiAg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKQEAgLTI0NSwxMCArNDI0LDgg
QEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkp
OwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKLSNlbmRpZgog
ICAgIH0KIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgewogICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CiAgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CkBAIC0yNjgsNyArNDQ1LDYg
QEAgVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywg
cDQudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJp
dHMoKSk7CiAgICAgfQotI2VuZGlmCiAKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CkBAIC0yNzcsNyArNDUzLDYgQEAgVEVTVChXVEZf
UG9pc29uZWQsIEFzc2lnbm1lbnQpCiAgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29u
ZWQoKSk7CiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKICAgICB7CiAgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKICAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKQEAgLTI5Nyw3
ICs0NzIsNiBAQCBURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKICAgICAgICAgQVNTRVJU
X0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkg
IT0gcDQuYml0cygpKTsKICAgICB9Ci0jZW5kaWYKIAogICAgIHsKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKQEAgLTMzOSw3ICs1MTMsNiBAQCBU
RVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKIAogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
IT0gcDIuYml0cygpKTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7CkBAIC0zNTEsNyArNTI0LDYgQEAgVEVTVChXVEZfUG9pc29uZWQs
IFN3YXApCiAgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwogICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICB7CkBA
IC0zNTksMTcgKzUzMSwxMiBAQCBURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKICAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOwogICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lz
b25lZCgpKTsKLSNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQogICAgICAgICBzd2FwKHAxLCBwMik7
Ci0jZWxzZQotICAgICAgICBzdGQ6OnN3YXAocDEsIHAyKTsKLSNlbmRpZgogICAgICAgICBBU1NF
UlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKIAogICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygp
KTsKIAotI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKICAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29u
ZWQoKSk7CkBAIC0zODEsMTAgKzU0OCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQogICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKICAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOwotI2VuZGlmCiAgICAgfQogCi0jaWYgRU5BQkxFKE1JWEVEX1BP
SVNPTikKICAgICB7CiAgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxKCZhKTsKICAgICAgICAgUmVmTG9nZ2VyKiBwMigmYik7CkBAIC00MDgsNyArNTczLDYgQEAg
VEVTVChXVEZfUG9pc29uZWQsIFN3YXApCiAKICAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHAyKSk7CiAgICAgfQotI2VuZGlmCiB9CiAKIHN0
YXRpYyBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhS
ZWZMb2dnZXImIGxvZ2dlcikKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Bv
aXNvbmVkUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Qb2lzb25lZFJlZi5jcHAJKHJldmlzaW9uIDIyNjkzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsMjQgKzI2
LDQ0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNp
bmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVp
bnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9
IDB4YmJiYjsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGlj
IGNvbnN0IHVpbnQzMl90IFBvaXNvbkQgPSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3Qg
UG9pc29uRSA9IDB4ZWVlZTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZm
OworbmFtZXNwYWNlIHsKKwordWludHB0cl90IGdfcG9pc29uQTsKK3VpbnRwdHJfdCBnX3BvaXNv
bkI7Cit1aW50cHRyX3QgZ19wb2lzb25DOwordWludHB0cl90IGdfcG9pc29uRDsKK3VpbnRwdHJf
dCBnX3BvaXNvbkU7Cit1aW50cHRyX3QgZ19wb2lzb25GOworCitzdGF0aWMgdm9pZCBpbml0aWFs
aXplUG9pc29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNl
RmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAg
ICAgZ19wb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkIgPSBtYWtlUG9p
c29uKCk7CisgICAgICAgIGdfcG9pc29uQyA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19wb2lz
b25EID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkYgPSBtYWtlUG9pc29uKCk7Cisg
ICAgICAgIGdfcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgYW5vbnltb3VzCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNpYykKIHsKKyAgICBp
bml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkEsIFJlZkxvZ2dlcj4gcmVmKGEpOworICAg
ICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkEsIFJlZkxvZ2dlcj4gcmVmKGEpOwogICAgICAgICBF
WFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYS5uYW1lLCAmcmVm
LT5uYW1lKTsKIApAQCAtNTEsMTYgKzcxLDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBCYXNp
YykKICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CiAgICAgICAgIHN0ZDo6bWVtY3B5KCZwdHJC
aXRzLCAmcmVmLCBzaXplb2YocHRyQml0cykpOwogICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRz
ICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KCZhKSk7Ci0gICAgICAgIEFTU0VSVF9FUShwdHJC
aXRzLCAoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmEpLmJpdHMoKSkp
OworICAgICAgICBBU1NFUlRfRVEocHRyQml0cywgKFBvaXNvbmVkPGdfcG9pc29uQSwgUmVmTG9n
Z2VyKj4oJmEpLmJpdHMoKSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAg
QVNTRVJUX1RSVUUoKENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+Ojppc1Bv
aXNvbmVkKHB0ckJpdHMpKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZDxnX3BvaXNv
bkEsIFJlZkxvZ2dlcio+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRpZiAv
LyBFTkFCTEUoUE9JU09OKQogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVm
PFBvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmKGFkb3B0UmVmKGEpKTsKKyAgICAgICAgUG9pc29uZWRS
ZWY8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHJlZihhZG9wdFJlZihhKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLm5hbWUsICZyZWYtPm5h
bWUpOwogICAgIH0KQEAgLTY5LDEyICs4OSwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQmFz
aWMpCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBBc3NpZ25tZW50KQogeworICAgIGluaXRpYWxp
emVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dn
ZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAg
ICBQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29u
ZWRSZWY8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCByZWYucHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBiOwpA
QCAtODQsNyArMTA2LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYikgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkQs
IFJlZkxvZ2dlcj4gcmVmKGEpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkQsIFJlZkxv
Z2dlcj4gcmVmKGEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHJlZi5wdHIoKSk7CiAgICAgICAg
IGxvZygpIDw8ICJ8ICI7CiAgICAgICAgIHJlZiA9IGM7CkBAIC05NCw3ICsxMTYsNyBAQCBURVNU
KFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8
IHJlZihjKSBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRSwgUmVmTG9nZ2VyPiByZWYoYSk7Cisg
ICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRSwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAg
IEVYUEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAg
ICAgcmVmID0gYWRvcHRSZWYoYik7CkBAIC0xMDQsNyArMTI2LDcgQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWYsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihhKSB8
IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9p
c29uZWRSZWY8UG9pc29uRiwgUmVmTG9nZ2VyPiByZWYoYSk7CisgICAgICAgIFBvaXNvbmVkUmVm
PGdfcG9pc29uRiwgUmVmTG9nZ2VyPiByZWYoYSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcmVm
LnB0cigpKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgcmVmID0gYWRvcHRSZWYo
Yyk7CkBAIC0xMTQsMjUgKzEzNiwyNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgQXNzaWdubWVu
dCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IGRlcmVmKGEpIHwgZGVyZWYoYykgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogfQogCi1zdGF0aWMgUG9pc29uZWRSZWY8UG9pc29uQiwgUmVm
TG9nZ2VyPiBwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+JiYgcmVm
ZXJlbmNlKQorc3RhdGljIFBvaXNvbmVkUmVmPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiBwYXNzV2l0
aFJlZihQb2lzb25lZFJlZjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4mJiByZWZlcmVuY2UpCiB7CiAg
ICAgcmV0dXJuIFdURk1vdmUocmVmZXJlbmNlKTsKIH0KIAogVEVTVChXVEZfUG9pc29uZWRSZWYs
IFJldHVyblZhbHVlKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogICAgIERlcml2ZWRSZWZM
b2dnZXIgYygiYyIpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25CLCBSZWZM
b2dnZXI+IHJlZihwYXNzV2l0aFJlZihQb2lzb25lZFJlZjxQb2lzb25DLCBSZWZMb2dnZXI+KGEp
KSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQiwgUmVmTG9nZ2VyPiByZWYocGFzc1dp
dGhSZWYoUG9pc29uZWRSZWY8Z19wb2lzb25DLCBSZWZMb2dnZXI+KGEpKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcmVmLnB0cigpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8
Z19wb2lzb25ELCBSZWZMb2dnZXI+IHJlZihhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCByZWYu
cHRyKCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICByZWYgPSBwYXNzV2l0aFJl
ZihiKTsKQEAgLTE0MiwyMiArMTY2LDIyIEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBSZXR1cm5W
YWx1ZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihiKSBkZXJlZihhKSB8IGRlcmVm
KGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIocGFzc1dpdGhSZWYoYSkpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKHBhc3NXaXRoUmVmKGEpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RS
RVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIERlcml2ZWRSZWZMb2dnZXI+IHB0cigmYSk7
Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkEsIFJlZkxvZ2dlcj4gcHRyMihXVEZNb3Zl
KHB0cikpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIERlcml2ZWRSZWZMb2dn
ZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQSwgUmVmTG9nZ2Vy
PiBwdHIyKFdURk1vdmUocHRyKSk7CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwdHIuZ2V0
KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0cjIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IGRlcml2
ZWRSZWZlcmVuY2UoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmPFBvaXNvbkMsIFJlZkxvZ2dlcj4g
YmFzZVJlZmVyZW5jZShwYXNzV2l0aFJlZihkZXJpdmVkUmVmZXJlbmNlLmNvcHlSZWYoKSkpOwor
ICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IGRlcml2ZWRS
ZWZlcmVuY2UoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uQywgUmVmTG9nZ2VyPiBi
YXNlUmVmZXJlbmNlKHBhc3NXaXRoUmVmKGRlcml2ZWRSZWZlcmVuY2UuY29weVJlZigpKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYSwgZGVyaXZlZFJlZmVyZW5jZS5wdHIoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgYmFzZVJlZmVyZW5jZS5wdHIoKSk7CiAgICAgfQpAQCAtMTY2LDEyICsxOTAs
MTQgQEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFJldHVyblZhbHVlKQogCiBURVNUKFdURl9Qb2lz
b25lZFJlZiwgU3dhcCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUmVmTG9n
Z2VyIGEoImEiKTsKICAgICBSZWZMb2dnZXIgYigiYiIpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKGEpOwotICAgICAgICBQb2lzb25lZFJlZjxQ
b2lzb25FLCBSZWZMb2dnZXI+IHAyKGIpOworICAgICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkQs
IFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkUmVmPGdfcG9pc29uRSwgUmVmTG9n
Z2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMS5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIucHRyKCkpOwpAQCAtMTgzLDgg
KzIwOSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmLCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgi
cmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVyZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3Ry
KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAx
KGEpOwotICAgICAgICBQb2lzb25lZFJlZjxQb2lzb25BLCBSZWZMb2dnZXI+IHAyKGIpOworICAg
ICAgICBQb2lzb25lZFJlZjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CisgICAgICAgIFBv
aXNvbmVkUmVmPGdfcG9pc29uQSwgUmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYiwgcDIucHRyKCkpOwpAQCAtMTk2LDcgKzIyMiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
LCBTd2FwKQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHwgZGVyZWYoYSkgZGVy
ZWYoYikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25l
ZFJlZjxQb2lzb25GLCBSZWZMb2dnZXI+IHAxKGEpOworICAgICAgICBQb2lzb25lZFJlZjxnX3Bv
aXNvbkYsIFJlZkxvZ2dlcj4gcDEoYSk7CiAgICAgICAgIFJlZjxSZWZMb2dnZXI+IHAyKGIpOwog
ICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLnB0cigpKTsK
QEAgLTIwOSw3ICsyMzUsNyBAQCBURVNUKFdURl9Qb2lzb25lZFJlZiwgU3dhcCkKICAgICBFWFBF
Q1RfU1RSRVEoInJlZihhKSByZWYoYikgfCB8IGRlcmVmKGEpIGRlcmVmKGIpICIsIHRha2VMb2dT
dHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWY8UG9pc29uRiwgUmVm
TG9nZ2VyPiBwMShhKTsKKyAgICAgICAgUG9pc29uZWRSZWY8Z19wb2lzb25GLCBSZWZMb2dnZXI+
IHAxKGEpOwogICAgICAgICBSZWY8UmVmTG9nZ2VyPiBwMihiKTsKICAgICAgICAgbG9nKCkgPDwg
InwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5wdHIoKSk7CkBAIC0yMjMsNyArMjQ5LDcg
QEAgVEVTVChXVEZfUG9pc29uZWRSZWYsIFN3YXApCiB9CiAKIHN0cnVjdCBQb2lzb25lZFJlZkNo
ZWNraW5nUmVmTG9nZ2VyIDogUmVmTG9nZ2VyIHsKLSAgICB1c2luZyBSZWYgPSBQb2lzb25lZFJl
ZjxQb2lzb25CLCBQb2lzb25lZFJlZkNoZWNraW5nUmVmTG9nZ2VyPjsKKyAgICB1c2luZyBSZWYg
PSBQb2lzb25lZFJlZjxnX3BvaXNvbkIsIFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXI+Owog
CiAgICAgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxvZ2dlcihjb25zdCBjaGFyKiBuYW1lKTsKICAg
ICB2b2lkIHJlZigpOwpAQCAtMjYxLDYgKzI4Nyw4IEBAIERlcml2ZWRQb2lzb25lZFJlZkNoZWNr
aW5nUmVmTG9nZ2VyOjpEZXIKIAogVEVTVChXVEZfUG9pc29uZWRSZWYsIEFzc2lnbkJlZm9yZURl
cmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBEZXJpdmVkUG9pc29uZWRS
ZWZDaGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZDaGVja2luZ1JlZkxv
Z2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFBvaXNvbmVkUmVmQ2hlY2tpbmdSZWZMb2dnZXIgYygi
YyIpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRSZWZQdHIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
UmVmUHRyLmNwcAkocmV2aXNpb24gMjI2OTM1KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUG9pc29uZWRSZWZQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UG9pc29uZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMzMsMjIgKzM0LDQx
IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIGNvbnN0IHVpbnQzMl90
IFBvaXNvbkEgPSAweGFhYWE7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJi
YjsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25DID0gMHhjY2NjOwotc3RhdGljIGNvbnN0
IHVpbnQzMl90IFBvaXNvbkQgPSAweGRkZGQ7Ci1zdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29u
RSA9IDB4ZWVlZTsKLXN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25GID0gMHhmZmZmOworbmFt
ZXNwYWNlIHsKKwordWludHB0cl90IGdfcG9pc29uQTsKK3VpbnRwdHJfdCBnX3BvaXNvbkI7Cit1
aW50cHRyX3QgZ19wb2lzb25DOwordWludHB0cl90IGdfcG9pc29uRDsKK3VpbnRwdHJfdCBnX3Bv
aXNvbkU7Cit1aW50cHRyX3QgZ19wb2lzb25GOworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplUG9p
c29ucygpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsK
KyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgZ19w
b2lzb25BID0gbWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkIgPSBtYWtlUG9pc29uKCk7
CisgICAgICAgIGdfcG9pc29uQyA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgZ19wb2lzb25EID0g
bWFrZVBvaXNvbigpOworICAgICAgICBnX3BvaXNvbkYgPSBtYWtlUG9pc29uKCk7CisgICAgICAg
IGdfcG9pc29uRiA9IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
YW5vbnltb3VzCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBCYXNpYykKIHsKKyAgICBpbml0
aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKLSAgICBQ
b2lzb25lZFJlZlB0cjxQb2lzb25BLCBSZWZMb2dnZXI+IGVtcHR5OworICAgIFBvaXNvbmVkUmVm
UHRyPGdfcG9pc29uQSwgUmVmTG9nZ2VyPiBlbXB0eTsKICAgICBFWFBFQ1RfRVEobnVsbHB0ciwg
ZW1wdHkuZ2V0KCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBS
ZWZMb2dnZXI+IHB0cigmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwgUmVm
TG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnB0
ci0+bmFtZSk7CkBAIC01Nyw3MCArNzcsNzAgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEJh
c2ljKQogICAgICAgICB1aW50cHRyX3QgcHRyQml0czsKICAgICAgICAgc3RkOjptZW1jcHkoJnB0
ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJp
dHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oJmEpKTsKLSAgICAgICAgQVNTRVJUX0VRKHB0
ckJpdHMsIChDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPigmYSkuYml0cygp
KSk7CisgICAgICAgIEFTU0VSVF9FUShwdHJCaXRzLCAoUG9pc29uZWQ8Z19wb2lzb25CLCBSZWZM
b2dnZXIqPigmYSkuYml0cygpKSk7CiAjaWYgRU5BQkxFKFBPSVNPTl9BU1NFUlRTKQotICAgICAg
ICBBU1NFUlRfVFJVRSgoQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj46Omlz
UG9pc29uZWQocHRyQml0cykpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoKFBvaXNvbmVkPGdfcG9p
c29uQiwgUmVmTG9nZ2VyKj46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2VuZGlm
IC8vIEVOQUJMRShQT0lTT04pCiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVm
KGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRS
ZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwdHIgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQ
dHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHB0ciA9ICZhOwogICAgICAgICBFWFBFQ1RfRVEoJmEs
IHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25FLCBSZWZMb2dnZXI+IHAyKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25E
LCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwg
UmVmTG9nZ2VyPiBwMihwMSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGEpIGRlcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwMSA9
ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAyID0gcDE7
CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMSA9ICZhOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcDIgPSBwMTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYSwgcDIu
Z2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYSkgZGVyZWYoYSkg
ZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lz
b25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVk
UmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNv
bmVkUmVmUHRyPGdfcG9pc29uRCwgUmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAg
ICBFWFBFQ1RfRVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAy
LmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFr
ZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lz
b25FLCBSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYs
IFJlZkxvZ2dlcj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3Bv
aXNvbkUsIFJlZkxvZ2dlcj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lz
b25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxw
dHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQog
ICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigp
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgRGVyaXZlZFJlZkxv
Z2dlcj4gcDEgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2Vy
PiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIERlcml2ZWRSZWZM
b2dnZXI+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9n
Z2VyPiBwMiA9IHAxOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEp
IHJlZihhKSBkZXJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAg
ICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+IHAx
ID0gJmE7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIFJlZkxvZ2dlcj4gcDIgPSBX
VEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBEZXJpdmVkUmVm
TG9nZ2VyPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxv
Z2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdl
dCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVD
VF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEpOwor
ICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBwdHIgPSBudWxscHRyOwog
ICAgICAgICBFWFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKQEAgLTEzMCwxMCArMTUwLDEy
IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBCYXNpYykKIAogVEVTVChXVEZfUG9pc29uZWRS
ZWZQdHIsIEFzc2lnblBhc3NSZWZUb1BvaXNvbmVkUmVmUHRyKQogeworICAgIGluaXRpYWxpemVQ
b2lzb25zKCk7CisKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKICAgICB7CiAgICAgICAg
IFJlZjxSZWZMb2dnZXI+IHBhc3NSZWYoYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkIsIFJlZkxvZ2dlcj4gcHRyID0gV1RGTW92ZShwYXNzUmVmKTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHB0ciA9IFdURk1vdmUocGFzc1JlZik7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgcHRyLmdldCgpKTsKICAgICB9CiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwpAQCAtMTQxLDEzICsxNjMs
MTUgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnblBhc3NSZWZUbwogCiBURVNUKFdU
Rl9Qb2lzb25lZFJlZlB0ciwgQWRvcHQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwog
ICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogCi0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29u
QywgUmVmTG9nZ2VyPiBlbXB0eTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxv
Z2dlcj4gZW1wdHk7CiAgICAgRVhQRUNUX0VRKG51bGxwdHIsIGVtcHR5LmdldCgpKTsKIAogICAg
IHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwdHIoYWRvcHRS
ZWYoJmEpKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHB0
cihhZG9wdFJlZigmYSkpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgmYSwgJipwdHIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEubmFtZSwgJnB0
ci0+bmFtZSk7CkBAIC0xNTUsNyArMTc5LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFk
b3B0KQogICAgIEVYUEVDVF9TVFJFUSgiZGVyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkp
OwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHB0
ciA9IGFkb3B0UmVmKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZM
b2dnZXI+IHB0ciA9IGFkb3B0UmVmKCZhKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0
KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoImRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5j
X3N0cigpKTsKQEAgLTE2MywxMyArMTg3LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBB
ZG9wdCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5p
dGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJl
ZkxvZ2dlciBiKCJiIik7CiAgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CiAKICAgICB7Ci0g
ICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAg
ICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25CLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAg
ICBsb2coKSA8PCAifCAiOwpAQCAtMTgxLDcgKzIwNyw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVm
UHRyLCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IHJlZihi
KSBkZXJlZihhKSB8IGRlcmVmKGIpIGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
IAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwdHIo
JmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcHRyKCZh
KTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwogICAgICAgICBwdHIgPSAmYjsKQEAgLTE5MSw3ICsyMTcsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihi
KSBkZXJlZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAg
ICAgICBwdHIgPSBhZG9wdFJlZigmYik7CkBAIC0yMDEsNyArMjI3LDcgQEAgVEVTVChXVEZfUG9p
c29uZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJl
ZihhKSB8IGRlcmVmKGIpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAg
ICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBQ
b2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAgRVhQ
RUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBwdHIgPSBudWxscHRyOwogICAgICAgICBF
WFBFQ1RfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKQEAgLTIwOSw4ICsyMzUsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBk
ZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkIsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8
Z19wb2lzb25CLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19w
b2lzb25DLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQo
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAi
fCAiOwpAQCAtMjIyLDggKzI0OCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25t
ZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihiKSB8IGRlcmVmKGEpIHwgZGVyZWYo
YikgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogCiAgICAgewotICAgICAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8
UG9pc29uRSwgRGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOworICAgICAgICBQb2lzb25lZFJlZlB0
cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxn
X3BvaXNvbkUsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKICAgICAgICAgRVhQRUNUX0VRKCZh
LCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAgICBs
b2coKSA8PCAifCAiOwpAQCAtMjM1LDcgKzI2MSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRy
LCBBc3NpZ25tZW50KQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihjKSB8IHJlZihjKSBk
ZXJlZihhKSB8IGRlcmVmKGMpIGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAog
ICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVmTG9nZ2VyPiBwdHIoJmEp
OworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAi
OwogICAgICAgICBwdHIgPSAmYzsKQEAgLTI0NSw3ICsyNzEsNyBAQCBURVNUKFdURl9Qb2lzb25l
ZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSB8IHJlZihjKSBk
ZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAgICAg
RVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAg
ICBwdHIgPSBhZG9wdFJlZigmYyk7CkBAIC0yNTUsOCArMjgxLDggQEAgVEVTVChXVEZfUG9pc29u
ZWRSZWZQdHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCBkZXJlZihh
KSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAg
UG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNv
bmVkUmVmUHRyPFBvaXNvbkQsIERlcml2ZWRSZWZMb2dnZXI+IHAyKCZjKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IHAxKCZhKTsKKyAgICAgICAgUG9pc29u
ZWRSZWZQdHI8Z19wb2lzb25ELCBEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CiAgICAgICAgIEVY
UEVDVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfRVEoJmMsIHAyLmdldCgpKTsK
ICAgICAgICAgbG9nKCkgPDwgInwgIjsKQEAgLTI2OCw3ICsyOTQsNyBAQCBURVNUKFdURl9Qb2lz
b25lZFJlZlB0ciwgQXNzaWdubWVudCkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykg
fCBkZXJlZihhKSB8IGRlcmVmKGMpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsK
LSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwdHIoJmEpOworICAg
ICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAgICAg
ICAgRVhQRUNUX0VRKCZhLCBwdHIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAg
ICAgICBwdHIgPSBwdHI7CkBAIC0yNzgsNyArMzA0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQ
dHIsIEFzc2lnbm1lbnQpCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgfCByZWYoYSkgZGVyZWYo
YSkgfCBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAg
IFBvaXNvbmVkUmVmUHRyPFBvaXNvbkYsIFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHB0cigmYSk7CiAgICAgICAgIEVYUEVD
VF9FUSgmYSwgcHRyLmdldCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCkBAIC0yOTYsMTIgKzMyMiwxNCBAQCBURVNUKFdURl9Qb2lzb25lZFJl
ZlB0ciwgQXNzaWdubWVudCkKIAogVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiB7Cisg
ICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIFJlZkxvZ2dlciBhKCJhIik7CiAgICAgUmVm
TG9nZ2VyIGIoImIiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwg
UmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkMsIFJlZkxv
Z2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dl
cj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4g
cDIoJmIpOwogICAgICAgICBsb2coKSA8PCAifCAiOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAx
LmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CkBAIC0zMTMsOCArMzQx
LDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiAgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGIpIHwgfCBkZXJlZihhKSBkZXJlZihiKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIo
KSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkQsIFJlZkxvZ2dlcj4g
cDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25FLCBSZWZMb2dnZXI+IHAyKCZi
KTsKKyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25ELCBSZWZMb2dnZXI+IHAxKCZhKTsK
KyAgICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAyKCZiKTsKICAg
ICAgICAgbG9nKCkgPDwgInwgIjsKICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMS5nZXQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgmYiwgcDIuZ2V0KCkpOwpAQCAtMzI4LDExICszNTYsMTMgQEAgVEVT
VChXVEZfUG9pc29uZWRSZWZQdHIsIFN3YXApCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBS
ZWxlYXNlTm9uTnVsbCkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUmVmTG9n
Z2VyIGEoImEiKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRiwgUmVm
TG9nZ2VyPiByZWZQdHIgPSAmYTsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQiwgUmVm
TG9nZ2VyPiByZWYgPSByZWZQdHIucmVsZWFzZU5vbk51bGwoKTsKKyAgICAgICAgUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25GLCBSZWZMb2dnZXI+IHJlZlB0ciA9ICZhOworICAgICAgICBQb2lzb25l
ZFJlZlB0cjxnX3BvaXNvbkIsIFJlZkxvZ2dlcj4gcmVmID0gcmVmUHRyLnJlbGVhc2VOb25OdWxs
KCk7CiAgICAgfQogCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYoYSkgIiwgdGFrZUxv
Z1N0cigpLmNfc3RyKCkpOwpAQCAtMzQwLDM3ICszNzAsMzkgQEAgVEVTVChXVEZfUG9pc29uZWRS
ZWZQdHIsIFJlbGVhc2VOb25OdWxsKQogCiBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFz
ZSkKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CiAgICAgUmVmTG9nZ2VyIGIoImIiKTsKICAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMi
KTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgUmVmTG9nZ2VyPiBw
MSA9ICZhOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25ELCBSZWZMb2dnZXI+IHAyID0g
V1RGTW92ZShwMSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQywgUmVmTG9nZ2Vy
PiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIFJlZkxvZ2dlcj4g
cDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsK
ICAgICAgICAgRVhQRUNUX0VRKCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJF
USgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRSZWZQdHI8UG9pc29uRSwgUmVmTG9nZ2VyPiBwMSA9ICZhOwotICAgICAg
ICBQb2lzb25lZFJlZlB0cjxQb2lzb25GLCBSZWZMb2dnZXI+IHAyKFdURk1vdmUocDEpKTsKKyAg
ICAgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25FLCBSZWZMb2dnZXI+IHAxID0gJmE7CisgICAg
ICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRiwgUmVmTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7
CiAgICAgICAgIEVYUEVDVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9F
USgmYSwgcDIuZ2V0KCkpOwogICAgIH0KICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVm
UHRyPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFBvaXNvbmVk
UmVmUHRyPFBvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9p
c29uZWRSZWZQdHI8Z19wb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyPiBwMSA9ICZhOworICAgICAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsK
ICAgICAgICAgRVhQRUNUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgRVhQRUNUX0VR
KCZhLCBwMi5nZXQoKSk7CiAgICAgfQogICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIAogICAgIHsKLSAgICAgICAgUG9pc29uZWRSZWZQ
dHI8UG9pc29uRCwgUmVmTG9nZ2VyPiBwMSgmYSk7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkUsIFJlZkxvZ2dlcj4gcDIoJmIpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNv
bkQsIFJlZkxvZ2dlcj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkUs
IFJlZkxvZ2dlcj4gcDIoJmIpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgpKTsKICAg
ICAgICAgRVhQRUNUX0VRKCZiLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8ICI7CkBA
IC0zODIsOCArNDE0LDggQEAgVEVTVChXVEZfUG9pc29uZWRSZWZQdHIsIFJlbGVhc2UpCiAgICAg
RVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGIpIHwgZGVyZWYoYSkgfCBkZXJlZihiKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNv
bkYsIFJlZkxvZ2dlcj4gcDEoJmEpOwotICAgICAgICBQb2lzb25lZFJlZlB0cjxQb2lzb25CLCBE
ZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29u
RiwgUmVmTG9nZ2VyPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uQiwg
RGVyaXZlZFJlZkxvZ2dlcj4gcDIoJmMpOwogICAgICAgICBFWFBFQ1RfRVEoJmEsIHAxLmdldCgp
KTsKICAgICAgICAgRVhQRUNUX0VRKCZjLCBwMi5nZXQoKSk7CiAgICAgICAgIGxvZygpIDw8ICJ8
ICI7CkBAIC0zOTUsMTMgKzQyNywxNSBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0ciwgUmVsZWFz
ZSkKICAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSByZWYoYykgfCBkZXJlZihhKSB8IGRlcmVmKGMp
ICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKIH0KIAotc3RhdGljIFBvaXNvbmVkUmVmUHRyPFBv
aXNvbkMsIFJlZkxvZ2dlcj4gZjEoUmVmTG9nZ2VyJiBsb2dnZXIpCitzdGF0aWMgUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25DLCBSZWZMb2dnZXI+IGYxKFJlZkxvZ2dlciYgbG9nZ2VyKQogewotICAg
IHJldHVybiBQb2lzb25lZFJlZlB0cjxQb2lzb25DLCBSZWZMb2dnZXI+KCZsb2dnZXIpOworICAg
IHJldHVybiBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkMsIFJlZkxvZ2dlcj4oJmxvZ2dlcik7CiB9
CiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZXR1cm5WYWx1ZSkKIHsKKyAgICBpbml0aWFs
aXplUG9pc29ucygpOworCiAgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CiAKICAgICB7CkBA
IC00MzIsMjAgKzQ2NiwyMiBAQCBzdGF0aWMgQ29uc3RSZWZDb3VudGVkJiByZXR1cm5SZWZDb3Vu
dGVkCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBDb25zdCkKIHsKKyAgICBpbml0aWFsaXpl
UG9pc29ucygpOworCiAgICAgLy8gVGhpcyB0ZXN0IHBhc3NlcyBpZiBpdCBjb21waWxlcyB3aXRo
b3V0IGFuIGVycm9yLgogICAgIGF1dG8gYSA9IENvbnN0UmVmQ291bnRlZDo6Y3JlYXRlKCk7CiAg
ICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYiA9IFdURk1vdmUoYSk7Ci0gICAgUG9pc29u
ZWRSZWZQdHI8UG9pc29uRCwgY29uc3QgQ29uc3RSZWZDb3VudGVkPiBjID0gYi5wdHIoKTsKKyAg
ICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkQsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4gYyA9IGIu
cHRyKCk7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gZCA9IHJldHVybkNvbnN0UmVm
Q291bnRlZFJlZigpOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkUsIGNvbnN0IENvbnN0UmVm
Q291bnRlZD4gZSA9ICZyZXR1cm5Db25zdFJlZkNvdW50ZWRSZWYoKTsKLSAgICBQb2lzb25lZFJl
ZlB0cjxQb2lzb25GLCBDb25zdFJlZkNvdW50ZWQ+IGYgPSBDb25zdFJlZkNvdW50ZWQ6OmNyZWF0
ZSgpOwotICAgIFBvaXNvbmVkUmVmUHRyPFBvaXNvbkIsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4g
ZyA9IGY7Ci0gICAgUG9pc29uZWRSZWZQdHI8UG9pc29uQywgY29uc3QgQ29uc3RSZWZDb3VudGVk
PiBoKGYpOworICAgIFBvaXNvbmVkUmVmUHRyPGdfcG9pc29uRSwgY29uc3QgQ29uc3RSZWZDb3Vu
dGVkPiBlID0gJnJldHVybkNvbnN0UmVmQ291bnRlZFJlZigpOworICAgIFBvaXNvbmVkUmVmUHRy
PGdfcG9pc29uRiwgQ29uc3RSZWZDb3VudGVkPiBmID0gQ29uc3RSZWZDb3VudGVkOjpjcmVhdGUo
KTsKKyAgICBQb2lzb25lZFJlZlB0cjxnX3BvaXNvbkIsIGNvbnN0IENvbnN0UmVmQ291bnRlZD4g
ZyA9IGY7CisgICAgUG9pc29uZWRSZWZQdHI8Z19wb2lzb25DLCBjb25zdCBDb25zdFJlZkNvdW50
ZWQ+IGgoZik7CiAgICAgUmVmPGNvbnN0IENvbnN0UmVmQ291bnRlZD4gaShyZXR1cm5SZWZDb3Vu
dGVkUmVmKCkpOwogfQogCiBzdHJ1Y3QgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlciA6
IFJlZkxvZ2dlciB7Ci0gICAgdXNpbmcgUmVmID0gUG9pc29uZWRSZWZQdHI8UG9pc29uRCwgUG9p
c29uZWRSZWZQdHJDaGVja2luZ1JlZkxvZ2dlcj47CisgICAgdXNpbmcgUmVmID0gUG9pc29uZWRS
ZWZQdHI8Z19wb2lzb25ELCBQb2lzb25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyPjsKIAogICAg
IFBvaXNvbmVkUmVmUHRyQ2hlY2tpbmdSZWZMb2dnZXIoY29uc3QgY2hhciogbmFtZSk7CiAgICAg
dm9pZCByZWYoKTsKQEAgLTQ3OSw2ICs1MTUsOCBAQCB2b2lkIFBvaXNvbmVkUmVmUHRyQ2hlY2tp
bmdSZWZMb2dnZXI6OmRlCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBBc3NpZ25CZWZvcmVE
ZXJlZikKIHsKKyAgICBpbml0aWFsaXplUG9pc29ucygpOworCiAgICAgUG9pc29uZWRSZWZQdHJD
aGVja2luZ1JlZkxvZ2dlciBhKCJhIik7CiAgICAgUG9pc29uZWRSZWZQdHJDaGVja2luZ1JlZkxv
Z2dlciBiKCJiIik7CiAKQEAgLTU0Myw2ICs1ODEsOCBAQCBURVNUKFdURl9Qb2lzb25lZFJlZlB0
ciwgQXNzaWduQmVmb3JlRGVyCiAKIFRFU1QoV1RGX1BvaXNvbmVkUmVmUHRyLCBSZWxlYXNlTm9u
TnVsbEJlZm9yZURlcmVmKQogeworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICBQb2lz
b25lZFJlZlB0ckNoZWNraW5nUmVmTG9nZ2VyIGEoImEiKTsKIAogICAgIHsKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAJ
KHJldmlzaW9uIDIyNjkzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNv
bmVkVW5pcXVlUHRyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTQgKzI1LDI2IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9Qb2lz
b25lZFVuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5hbWVzcGFj
ZSB7CiAKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1jb25zdCB1aW50MzJfdCBQ
b2lzb25CID0gMHhiYmJiOwordWludHB0cl90IGdfcG9pc29uQTsKK3VpbnRwdHJfdCBnX3BvaXNv
bkI7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkKK3sKKyAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVPbmNlRmxhZywgW10geworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZ2V0IDIgZGlmZmVy
ZW50IHBvaXNvbiB2YWx1ZXMuCisgICAgICAgIGdfcG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAg
ICAgICAgd2hpbGUgKCFnX3BvaXNvbkIgfHwgZ19wb2lzb25CID09IGdfcG9pc29uQSkKKyAgICAg
ICAgICAgIGdfcG9pc29uQiA9IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30KIAogc3RydWN0IExv
Z2dlciB7CiAgICAgTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUsIGludCYgZGVzdHJ1Y3RDb3VudCkK
QEAgLTYxLDEzICs3MywxNSBAQCBzdHJ1Y3QgT3RoZXIgewogCiBURVNUKFdURl9Qb2lzb25lZFVu
aXF1ZVB0ciwgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKLSAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBlbXB0eTsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IGVtcHR5OwogICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1
LCBlbXB0eS5iaXRzKCkpOwogICAgIH0KICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gZW1wdHkobnVsbHB0cik7CisgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBlbXB0eShudWxscHRyKTsKICAgICAgICAgQVNTRVJUX0VR
KG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1w
dHkuYml0cygpKTsKICAgICB9CkBAIC03Niw3ICs5MCw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAg
TG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCAm
KnB0cik7CkBAIC04Nyw3ICsxMDEsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFz
aWMpCiAgICAgICAgICAgICBzdGQ6Om1lbWNweSgmcHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJp
dHMpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4oYSkpOwogI2lmIEVOQUJMRShQT0lTT05fQVNTRVJUUykKLSAgICAgICAgICAgIEFT
U0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+Ojppc1BvaXNvbmVk
KHB0ckJpdHMpKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXI+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CiAjZW5kaWYKICNlbmRp
ZiAvLyBFTkFCTEUoUE9JU09OKQogICAgICAgICB9CkBAIC05Niw3ICsxMTAsNyBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9
IDA7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwdHIoYik7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIExvZ2dlcj4gcHRyKGIpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0
cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5wb2lzb25lZCgpKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUShiLCAmKnB0cik7CkBAIC0xMDksNyArMTIzLDcgQEAgVEVT
VChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYURlc3RydWN0Q291
bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHB0ciA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcj4gcHRyID0gYTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAg
IH0KQEAgLTExOCw3ICsxMzIsNyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMp
CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIERlcml2ZWRMb2dnZXIq
IGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewot
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBiOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IGI7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICB9CkBAIC0xMjksNyArMTQz
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBpbnQgYURl
c3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKICAgICAg
ICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIg
PSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+OjpjcmVhdGUoYU5hbWUsIGFEZXN0
cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9n
Z2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj46OmNyZWF0ZShh
TmFtZSwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYU5hbWUsICZwdHItPm5hbWUpOwpAQCAtMTM5
LDcgKzE1Myw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAgICAgICAg
aW50IGJEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3QgY2hhciogYk5hbWUgPSAiYiI7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj46OmNyZWF0
ZShiTmFtZSwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXI+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgRGVy
aXZlZExvZ2dlcj46OmNyZWF0ZShiTmFtZSwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51
bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYk5hbWUs
ICZwdHItPm5hbWUpOwpAQCAtMTUxLDcgKzE2NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyLCBCYXNpYykKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29u
c3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPFBvaXNvbkEs
IExvZ2dlcj4oYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8Z19wb2lz
b25BLCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAh
PSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+
bmFtZSk7CkBAIC0xNjEsNyArMTc1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJh
c2ljKQogICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFy
KiBiTmFtZSA9ICJiIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgRGVyaXZl
ZExvZ2dlcj4oYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8Z19wb2lz
b25BLCBEZXJpdmVkTG9nZ2VyPihiTmFtZSwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKG51
bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYk5hbWUs
ICZwdHItPm5hbWUpOwpAQCAtMTcxLDcgKzE4NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyLCBCYXNpYykKICAgICAgICAgaW50IHVuaXF1ZURlc3RydWN0Q291bnQgPSAwOwogICAgICAg
ICBjb25zdCBjaGFyKiB1bmlxdWVOYW1lID0gInVuaXF1ZSI7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+IHB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4odW5pcXVlTmFtZSwgdW5pcXVlRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIERlcml2ZWRMb2dn
ZXI+IHB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4odW5pcXVlTmFtZSwgdW5p
cXVlRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgdW5pcXVlRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNv
bmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKHVuaXF1ZU5hbWUsICZwdHItPm5hbWUpOwpA
QCAtMTgxLDcgKzE5NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKICAg
ICAgICAgaW50IHVuaXF1ZURlcml2ZWREZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgY29uc3Qg
Y2hhciogdW5pcXVlRGVyaXZlZE5hbWUgPSAidW5pcXVlIGRlcml2ZWQiOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IHN0ZDo6
bWFrZV91bmlxdWU8RGVyaXZlZExvZ2dlcj4odW5pcXVlRGVyaXZlZE5hbWUsIHVuaXF1ZURlcml2
ZWREZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPiBwdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPERlcml2ZWRMb2dnZXI+KHVuaXF1ZURl
cml2ZWROYW1lLCB1bmlxdWVEZXJpdmVkRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoMCwgdW5pcXVlRGVyaXZlZERlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
USh1bmlxdWVEZXJpdmVkTmFtZSwgJnB0ci0+bmFtZSk7CkBAIC0xOTUsMTUgKzIwOSwxNSBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFzaWMpCiAgICAgICAgIExvZ2dlciogYSA9IG5l
dyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG5ldyBM
b2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDB1LCBwMS5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29u
ZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4g
cDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBw
NCA9IFdURk1vdmUocDMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QiwgTG9nZ2VyPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNv
bmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwpAQCAtMjE5LDE1
ICsyMzMsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBM
b2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dn
ZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIoV1RGTW92ZShwMSkp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAxID0g
YTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMihX
VEZNb3ZlKHAxKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAg
ICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBw
My51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOwpA
QCAtMjQzLDE1ICsyNTcsMTUgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQog
ICAgICAgICBEZXJpdmVkTG9nZ2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigi
YiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJU
X1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0
cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZNb3ZlKHAz
KTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9
IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQg
PSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7
CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOwpAQCAtMjY3LDE1ICsyODEsMTUgQEAgVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBEZXJpdmVkTG9nZ2VyKiBhID0gbmV3
IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIERlcml2ZWRMb2dn
ZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAg
ewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7
Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKFdURk1v
dmUocDEpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2Vy
PiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dl
cj4gcDIoV1RGTW92ZShwMSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50
LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkIsIExvZ2dlcj4gcDQoV1RGTW92ZShwMykpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGJEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBv
aXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yODks
NyArMzAzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQogICAgICAgICBp
bnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJh
IiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIuY2xlYXIoKTsKICAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKQEAgLTMwMiwxMyArMzE2LDE1IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBCYXNpYykKIAogVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHIsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsK
ICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVjdENv
dW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENv
dW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50
KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwdHIoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcj4gcHRyKGEpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0zMjUsNyArMzQxLDcgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIGludCBhRGVzdHJ1Y3RD
b3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAg
ICAgICBwdHIgPSBudWxscHRyOwpAQCAtMzQ1LDggKzM2MSw4IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBMb2dnZXIqIGMgPSBuZXcgTG9nZ2VyKCJj
IiwgY0Rlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGQgPSBuZXcgTG9nZ2VyKCJkIiwg
ZERlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHAxKGEpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwMihiKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyPiBwMihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CkBAIC0zNTcsOCArMzczLDgg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgICAgICBB
U1NFUlRfRVEoYiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShudWxs
cHRyLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+IHAzKGMpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQiwgTG9nZ2VyPiBwNChkKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9p
c29uQiwgTG9nZ2VyPiBwNChkKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBjRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgZERlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zODEsNyArMzk3LDcgQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAgICAgIERlcml2ZWRM
b2dnZXIqIGEgPSBuZXcgRGVyaXZlZExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291
bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBM
b2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTQwNCw4ICs0MjAsOCBAQCBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQXNzaWdubWVudCkKICAgICAgICAgRGVyaXZlZExvZ2dl
ciogYyA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJjIiwgY0Rlc3RydWN0Q291bnQpOwogICAgICAgICBE
ZXJpdmVkTG9nZ2VyKiBkID0gbmV3IERlcml2ZWRMb2dnZXIoImQiLCBkRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDEoYSk7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVk
TG9nZ2VyPiBwMihiKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
TG9nZ2VyPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwg
RGVyaXZlZExvZ2dlcj4gcDIoYik7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKICAgICAg
ICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwpAQCAtNDE2LDggKzQzMiw4IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICAgICAgQVNT
RVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwMyhjKTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXI+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25CLCBEZXJpdmVkTG9nZ2VyPiBwNChkKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBjRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgZERlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CkBAIC00Mzgs
NyArNDU0LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIEFzc2lnbm1lbnQpCiAgICAg
ICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dn
ZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9p
c29uZWQoKSk7CiAgICAgICAgICAgICBwdHIgPSBhOwpAQCAtNDUyLDcgKzQ2OCw3IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQogICAgICAgICBpbnQgYURlc3RydWN0
Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0
Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29u
QSwgTG9nZ2VyPiBwdHIoYSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291
bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogI2lmIENP
TVBJTEVSKENMQU5HKQpAQCAtNDczLDE0ICs0ODksMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHIsIEFzc2lnbm1lbnQpCiAKIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQog
eworICAgIGluaXRpYWxpemVQb2lzb25zKCk7CisKICAgICB7CiAgICAgICAgIGludCBhRGVzdHJ1
Y3RDb3VudCA9IDA7CiAgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExv
Z2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dl
ciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOwotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMjsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDI7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
Mi5iaXRzKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CkBA
IC00OTAsOCArNTA4LDggQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkIsIExvZ2dlcj4gcDQ7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25CLCBMb2dnZXI+IHA0OwogICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOwpAQCAtNTExLDggKzUyOSw4IEBAIFRFU1Qo
V1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9n
Z2VyKCJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2Vy
KCJiIiwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXI+IHAyOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVu
cG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKICAgICAg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtNTIyLDggKzU0MCw4IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBTd2FwKQogICAgICAgICAgICAgQVNTRVJUX1RS
VUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lz
b25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
PiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+
IHA0OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHAz
ID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgTG9nZ2VyPiBw
NDsKICAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQu
dW5wb2lzb25lZCgpKTsKQEAgLTUzOCwxMyArNTU2LDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyLCBTd2FwKQogICAgIH0KIH0KIAotc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcG9pc29uZWRQdHJGb28oTG9nZ2VyKiBsb2dnZXIpCitzdGF0aWMgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXI+IHBvaXNvbmVkUHRyRm9vKExvZ2dlciogbG9n
Z2VyKQogewotICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+KGxv
Z2dlcik7CisgICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyPihs
b2dnZXIpOwogfQogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgUmV0dXJuVmFsdWUpCiB7
CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgaW50IGFEZXN0cnVj
dENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVj
dENvdW50KTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5p
cXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRy
aXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJKHJldmlzaW9uIDIyNjkzNSkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5
RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTQgKzI1LDI2IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0
Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIG5h
bWVzcGFjZSB7CiAKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Ci1jb25zdCB1aW50
MzJfdCBQb2lzb25CID0gMHhiYmJiOwordWludHB0cl90IGdfcG9pc29uQTsKK3VpbnRwdHJfdCBn
X3BvaXNvbkI7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkKK3sKKyAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNl
KGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZ2V0IDIg
ZGlmZmVyZW50IHBvaXNvbiB2YWx1ZXMuCisgICAgICAgIGdfcG9pc29uQSA9IG1ha2VQb2lzb24o
KTsKKyAgICAgICAgd2hpbGUgKCFnX3BvaXNvbkIgfHwgZ19wb2lzb25CID09IGdfcG9pc29uQSkK
KyAgICAgICAgICAgIGdfcG9pc29uQiA9IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30KIAogc3Ry
dWN0IExvZ2dlciB7CiAgICAgTG9nZ2VyKCkgeyB9CkBAIC02Miw4ICs3NCwxMCBAQCBjb25zdCBp
bnQgYXJyYXlTaXplID0gNTsKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIEJhc2ljKQogeworICAgIGluaXRpYWxpemVQb2lzb25z
KCk7CisKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltd
PiBlbXB0eTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4g
ZW1wdHk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwog
ICAgICAgICBBU1NFUlRfRVEoMHUsIGVtcHR5LmJpdHMoKSk7CiAgICAgfQpAQCAtNzIsNyArODYs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRy
KTsKQEAgLTg0LDcgKzk4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbAogICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJC
aXRzKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGEpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgICAgICBB
U1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+Ojppc1BvaXNv
bmVkKHB0ckJpdHMpKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgog
I2VuZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgICAgIH0KQEAgLTk1LDcgKzEwOSw3IEBAIFRF
U1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0
cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJy
YXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9p
c29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IGE7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBhOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUShh
LCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFy
cmF5U2l6ZTsgKytpKQpAQCAtMTA4LDcgKzEyMiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVl
UHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAg
ICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXJbXT46OmNyZWF0ZShhcnJheVNpemUsIGFOYW1lLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBw
dHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPjo6Y3JlYXRlKGFycmF5
U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBh
RGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51
bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXpl
OyArK2kpCkBAIC0xMjEsNyArMTM1LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JO
b25Ucml2aWFsbAogICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25z
dCBjaGFyKiBhTmFtZSA9ICJhIjsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25B
LCBMb2dnZXJbXT4oYXJyYXlTaXplLCBhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gbWFrZVBvaXNv
bmVkVW5pcXVlPGdfcG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVj
dENvdW50KTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAg
ICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xMzQsNyArMTQ4
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBp
bnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsK
ICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
W10+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25BLCBMb2dnZXJbXT4oYXJyYXlTaXpl
LCBhTmFtZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyID0gbWFrZVBvaXNvbmVkVW5pcXVlPGdfcG9pc29uQSwg
TG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShu
dWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAw
OyBpIDwgYXJyYXlTaXplOyArK2kpCkBAIC0xNDksMTUgKzE2MywxNSBAQCBURVNUKFdURl9Qb2lz
b25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dl
ciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgICAgICBBU1NF
UlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7
CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUocDMp
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMg
PSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4g
cDQgPSBXVEZNb3ZlKHAzKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3Vu
dCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKQEAgLTE3MywxNSArMTg3LDE1IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2Vy
KiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsK
ICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJE
ZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUs
IHAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsK
IAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0g
YjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNChX
VEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExv
Z2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIs
IExvZ2dlcltdPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRl
c3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CkBAIC0xOTcsMTUg
KzIxMSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAg
ICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6
ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyID0gV1RGTW92
ZShwMSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOwogICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDEuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVk
KCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+
IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3Bv
aXNvbkIsIExvZ2dlcltdPiBwNCA9IFdURk1vdmUocDMpOwogICAgICAgICAgICAgQVNTRVJUX0VR
KGJEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNv
bmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CkBAIC0yMjEsMTUg
KzIzNSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAg
ICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6
ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDIoV1RGTW92ZShw
MSkpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKICAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RS
VUUoIXAxLmJpdHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgp
KTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAz
ID0gYjsKLSAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBw
NChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEs
IExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkIsIExvZ2dlcltdPiBwNChXVEZNb3ZlKHAzKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYkRl
c3RydWN0Q291bnQsIDApOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQo
KSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMuYml0cygpKTsKQEAgLTI0Myw3ICsyNTcs
NyBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgICAgIGlu
dCBhRGVzdHJ1Y3RDb3VudCA9IDA7CiAgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CiAgICAg
ICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBwdHIu
Y2xlYXIoKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKQEAg
LTI1NiwxMyArMjcwLDE1IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMsIEFzc2lnbm1lbnQpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAg
IHsKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVj
dENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlT
aXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsK
ICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0
ci51bnBvaXNvbmVkKCkpOwpAQCAtMjc5LDcgKzI5NSw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAg
ICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0
cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7
CiAgICAgICAgICAgICBwdHIgPSBudWxscHRyOwpAQCAtMjk5LDggKzMxNSw4IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGwKICAgICAgICAgTG9nZ2VyKiBjID0gbWFr
ZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYyIsIGNEZXN0cnVjdENvdW50KTsKICAgICAgICAg
TG9nZ2VyKiBkID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiZCIsIGREZXN0cnVjdENv
dW50KTsKICAgICAgICAgewotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+IHAxKGEpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+IHAyKGIpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXJbXT4gcDEoYSk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNv
bkEsIExvZ2dlcltdPiBwMihiKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RD
b3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CkBAIC0zMTEsOCArMzI3LDggQEAg
VEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICAgICAgQVNT
RVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcDIudW5wb2lzb25lZCgpKTsKIAotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyW10+IHAzKGMpOwotICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQiwgTG9nZ2VyW10+IHA0KGQpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19w
b2lzb25BLCBMb2dnZXJbXT4gcDMoYyk7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkIsIExvZ2dlcltdPiBwNChkKTsKICAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBjRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgICAgICBBU1NFUlRfRVEoMCwgZERlc3RydWN0Q291bnQpOwog
ICAgICAgICAgICAgQVNTRVJUX0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CkBAIC0zMzMsNyArMzQ5
LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAgICAgICBp
bnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9n
Z2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0gICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwogICAg
ICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIHB0ciA9IGE7CkBAIC0zNDcs
NyArMzYzLDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbAogICAg
ICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOwogICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJy
YXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOwogICAgICAgICB7Ci0g
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEpOwor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcHRyKGEp
OwogICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgICAg
IEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICNpZiBDT01QSUxFUihDTEFORykKQEAg
LTM2OCwxNCArMzg0LDE2IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlh
bGwKIAogVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGli
bGVBcnJheXMsIFN3YXApCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAg
ICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgaW50IGJEZXN0cnVjdENvdW50
ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAi
YSIsIGFEZXN0cnVjdENvdW50KTsKICAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dl
cj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKICAgICAgICAgewotICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKLSAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgTG9nZ2VyW10+IHAyOwogICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJV
RSghcDIuYml0cygpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkp
OwpAQCAtMzg1LDggKzQwMyw4IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJp
dmlhbGwKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOwogICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQ7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIExvZ2dlcltdPiBwNDsKICAgICAgICAgICAgIEFTU0VS
VF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJp
dHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTQw
Niw4ICs0MjQsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CiAgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5
U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7Ci0gICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIExvZ2dlcltdPiBwMjsKICAgICAgICAgICAgIEFTU0VS
VF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOwogICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJp
dHMoKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTQx
Nyw4ICs0MzUsOCBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAg
ICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOwogCi0gICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOwotICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8Z19wb2lzb25CLCBMb2dnZXJbXT4gcDQ7CiAgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cDMudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwog
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC00MzMsMTMgKzQ1
MSwxNSBAQCBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxsCiAgICAgfQog
fQogCi1zdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHBvaXNvbmVk
UHRyRm9vKExvZ2dlciogYXJyYXkpCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25B
LCBMb2dnZXJbXT4gcG9pc29uZWRQdHJGb28oTG9nZ2VyKiBhcnJheSkKIHsKLSAgICByZXR1cm4g
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5KTsKKyAgICByZXR1cm4g
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBMb2dnZXJbXT4oYXJyYXkpOwogfQogCiBURVNU
KFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywg
UmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAg
ICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKICAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1
Y3RpYmxlQXJyYXlzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJ
KHJldmlzaW9uIDIyNjkzNSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNv
bmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Qb2lz
b25lZFVuaXF1ZVB0ci5oPgogCkBAIC0zMiw4ICszMywxOSBAQCBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKIG5hbWVzcGFjZSB7CiAKLWNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7
Ci1jb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOwordWludHB0cl90IGdfcG9pc29uQTsK
K3VpbnRwdHJfdCBnX3BvaXNvbkI7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVQb2lzb25zKCkK
K3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0
ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICAvLyBNYWtlIHN1
cmUgd2UgZ2V0IDIgZGlmZmVyZW50IHBvaXNvbiB2YWx1ZXMuCisgICAgICAgIGdfcG9pc29uQSA9
IG1ha2VQb2lzb24oKTsKKyAgICAgICAgd2hpbGUgKCFnX3BvaXNvbkIgfHwgZ19wb2lzb25CID09
IGdfcG9pc29uQSkKKyAgICAgICAgICAgIGdfcG9pc29uQiA9IG1ha2VQb2lzb24oKTsKKyAgICB9
KTsKK30KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGZpbGxBcnJheShUJiBh
cnJheSwgaW50IHNpemUpCkBAIC00OCwxMyArNjAsMTUgQEAgc3RhdGljIGNvbnN0IGludCBhcnJh
eVNpemUgPSA1OwogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3Ry
dWN0aWJsZUFycmF5cywgQmFzaWMpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAg
IHsKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IGVtcHR5OworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBlbXB0eTsKICAgICAgICAg
QVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9F
USgwdSwgZW1wdHkuYml0cygpKTsKICAgICB9CiAgICAgewotICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4gZW1wdHkobnVsbHB0cik7CisgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgaW50W10+IGVtcHR5KG51bGxwdHIpOwogICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBl
bXB0eS5iaXRzKCkpOwogICAgIH0KQEAgLTYzLDcgKzc3LDcgQEAgVEVTVChXVEZfUG9pc29uZWRV
bmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNp
emVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKICAgICAgICAgewotICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgICAgIEFTU0VSVF9F
UShhLCAmKnB0cik7CiAgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7
ICsraSkKQEAgLTc0LDcgKzg4LDcgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2
aWFsbHlEZQogICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihw
dHJCaXRzKSk7CiAgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KGEpKTsKICNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCi0gICAgICAgICAg
ICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+Ojppc1BvaXNv
bmVkKHB0ckJpdHMpKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBpbnRbXT46OmlzUG9pc29uZWQocHRyQml0cykpKTsKICNlbmRpZgogI2Vu
ZGlmIC8vIEVOQUJMRShQT0lTT04pCiAgICAgICAgIH0KQEAgLTg0LDcgKzk4LDcgQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3
IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gYTsKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyID0gYTsKICAgICAgICAgQVNT
RVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIp
OwogICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKQEAgLTkyLDcg
KzEwNiw3IEBAIFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICB9
CiAKICAgICB7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIg
PSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT46OmNyZWF0ZShhcnJheVNpemUpOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIgPSBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPjo6Y3JlYXRlKGFycmF5U2l6ZSk7CiAgICAgICAg
IEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIGZpbGxB
cnJheShwdHIsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5
U2l6ZTsgKytpKQpAQCAtMTA1LDE2ICsxMTksMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOwog
ICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBpbnRbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkEsIGludFtdPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkp
OwogICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKICAgICAgICAgZm9yIChh
dXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCiAgICAgICAgICAgICBBU1NFUlRfRVEoYVtp
XSwgcDJbaV0pOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBw
MyA9IGI7Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNCA9IFdU
Rk1vdmUocDMpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBw
MyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgaW50W10+IHA0ID0g
V1RGTW92ZShwMyk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkp
OwogICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9FUShi
LCBwNC51bnBvaXNvbmVkKCkpOwpAQCAtMTI4LDE2ICsxNDIsMTYgQEAgVEVTVChXVEZfUG9pc29u
ZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJh
eVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKIAotICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOwotICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMSA9IGE7CisgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAyKFdURk1vdmUocDEpKTsKICAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEu
Yml0cygpKTsKICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CiAgICAgICAg
IGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQogICAgICAgICAgICAgQVNTRVJU
X0VRKGFbaV0sIHAyW2ldKTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBp
bnRbXT4gcDMgPSBiOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4g
cDQoV1RGTW92ZShwMykpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGlu
dFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQiwgaW50W10+
IHA0KFdURk1vdmUocDMpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKICAgICAgICAgQVNTRVJU
X0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CkBAIC0xNDksNyArMTYzLDcgQEAgVEVTVChXVEZfUG9p
c29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRvKiBhID0gbmV3IGludFth
cnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKIAotICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAgICAgIEFTU0VSVF9FUShh
LCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyLmNsZWFyKCk7CiAgICAgICAgIEFTU0VS
VF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKQEAgLTE1OSwxMyArMTczLDE1IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKIAogVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIEFzc2lnbm1lbnQpCiB7CisgICAg
aW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRb
YXJyYXlTaXplXTsKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAg
ICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNp
emUpOwogCi0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7
CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKICAg
ICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogICAgICAgICBwdHIgPSBiOwog
ICAgICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CkBAIC0xNzUsNyArMTkxLDcg
QEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBhdXRv
KiBhID0gbmV3IGludFthcnJheVNpemVdOwogICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXpl
KTsKIAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOwor
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwdHIoYSk7CiAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKICAgICAgICAgcHRyID0gbnVsbHB0
cjsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwpAQCAtMTkx
LDE2ICsyMDcsMTYgQEAgVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQog
ICAgICAgICBmaWxsQXJyYXkoYywgYXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGQsIGFy
cmF5U2l6ZSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAx
KGEpOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIoYik7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAxKGEpOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMihiKTsKICAgICAgICAgQVNT
RVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShiLCBwMi51bnBv
aXNvbmVkKCkpOwogICAgICAgICBwMSA9IFdURk1vdmUocDIpOwogICAgICAgICBBU1NFUlRfRVEo
YiwgcDEudW5wb2lzb25lZCgpKTsKICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9p
c29uZWQoKSk7CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAz
KGMpOwotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQoZCk7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAzKGMpOworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkIsIGludFtdPiBwNChkKTsKICAgICAgICAgQVNT
RVJUX0VRKGMsIHAzLnVucG9pc29uZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShkLCBwNC51bnBv
aXNvbmVkKCkpOwogICAgICAgICBwMyA9IFdURk1vdmUocDQpOwpAQCAtMjEyLDcgKzIyOCw3IEBA
IFRFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgYXV0byog
YSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7
CiAKLSAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcHRyKGEpOwogICAgICAg
ICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CiAgICAgICAgIHB0ciA9IGE7CiAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKQEAgLTIyMiw3ICsyMzgsNyBAQCBU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIGF1dG8qIGEg
PSBuZXcgaW50W2FycmF5U2l6ZV07CiAgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOwog
Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHB0cihhKTsKICAgICAgICAg
QVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKQEAgLTIzOSwxNCArMjU1LDE2IEBAIFRFU1QoV1RG
X1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKIAogVEVTVChXVEZfUG9pc29uZWRVbmlx
dWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFN3YXApCiB7CisgICAgaW5pdGlh
bGl6ZVBvaXNvbnMoKTsKKwogICAgIHsKICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlT
aXplXTsKICAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmls
bEFycmF5KGEsIGFycmF5U2l6ZSk7CiAgICAgICAgIGZpbGxBcnJheShiLCBhcnJheVNpemUpOwog
Ci0gICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMSA9IGE7Ci0gICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMjsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPiBwMjsKICAgICAgICAgQVNTRVJUX0VRKHAxLnVucG9p
c29uZWQoKSwgYSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOwogICAgICAgICBB
U1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKQEAgLTI1NSw4ICsyNzMsOCBAQCBURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlCiAgICAgICAgIEFTU0VSVF9UUlVFKCFw
MS51bnBvaXNvbmVkKCkpOwogICAgICAgICBBU1NFUlRfRVEocDIudW5wb2lzb25lZCgpLCBhKTsK
IAotICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOwotICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQ7CisgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPGdfcG9pc29uQSwgaW50W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8Z19wb2lzb25CLCBpbnRbXT4gcDQ7CiAgICAgICAgIEFTU0VSVF9FUShwMy51bnBv
aXNvbmVkKCksIGIpOwogICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKICAgICAgICAg
QVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CkBAIC0yNzIsOCArMjkwLDggQEAgVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZQogICAgICAgICBmaWxsQXJyYXkoYSwg
YXJyYXlTaXplKTsKICAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CiAKLSAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKLSAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxnX3BvaXNvbkEsIGludFtdPiBwMSA9IGE7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPGdf
cG9pc29uQSwgaW50W10+IHAyOwogICAgICAgICBBU1NFUlRfRVEocDEudW5wb2lzb25lZCgpLCBh
KTsKICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVF
KCFwMi51bnBvaXNvbmVkKCkpOwpAQCAtMjgyLDggKzMwMCw4IEBAIFRFU1QoV1RGX1BvaXNvbmVk
VW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29u
ZWQoKSk7CiAgICAgICAgIEFTU0VSVF9FUShwMi51bnBvaXNvbmVkKCksIGEpOwogCi0gICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyA9IGI7Ci0gICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNDsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8Z19wb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxn
X3BvaXNvbkIsIGludFtdPiBwNDsKICAgICAgICAgQVNTRVJUX0VRKHAzLnVucG9pc29uZWQoKSwg
Yik7CiAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwogICAgICAgICBBU1NFUlRfVFJV
RSghcDQudW5wb2lzb25lZCgpKTsKQEAgLTI5NCwxMyArMzEyLDE1IEBAIFRFU1QoV1RGX1BvaXNv
bmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGUKICAgICB9CiB9CiAKLXN0YXRpYyBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcG9pc29uZWRQdHJGb28oaW50KiBwdHIpCitzdGF0aWMg
UG9pc29uZWRVbmlxdWVQdHI8Z19wb2lzb25BLCBpbnRbXT4gcG9pc29uZWRQdHJGb28oaW50KiBw
dHIpCiB7Ci0gICAgcmV0dXJuIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPihwdHIp
OworICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxnX3BvaXNvbkEsIGludFtdPihwdHIpOwog
fQogCiBURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFy
cmF5cywgUmV0dXJuVmFsdWUpCiB7CisgICAgaW5pdGlhbGl6ZVBvaXNvbnMoKTsKKwogICAgIHsK
ICAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKICAgICAgICAgZmlsbEFycmF5
KGEsIGFycmF5U2l6ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>